Program zajęć PK: Wstęp do programowania

Zajęcia 1:

  1. Warunki zaliczenie
  2. Konsultacje
  3. Kontakt mailowy:
    1. Proszę używać taga mailowego na początku tematu:
      [wdp]
      dzięki temu żaden mail mi nie zginie, ani nie pomyli mi się z innymi zajęciami
    2. Proszę w trakcie konwersacji mailowej na dany temat nie usuwać historii konwersacji
    3. Używając maila niezawierającego imienia i nazwiska, proszę się podpisać
  4. Lista zapisanych osób

Zajęcia 2:

  1. Parę słów o środowiskach do C/C++
  2. Zapoznanie z Code:Blocks
  3. Witaj świecie w Code:Blocks
  4. Komentarze
  5. Eksperymenty z usuwaniem poszczególnych elementów programu witaj świecie i komunikatami o błędach

Zajęcia 3:

  1. Zmienne podstawowych typów
    1. Rozmiar poszczególnych typów
    2. Zakresy dla niektórych typów
    3. Różnice między typami
  2. Inicjalizacja zmiennych i co jeśli nie
  3. Wyświetlanie i wczytywanie z klawiatury zmiennych
  4. Definicja vs deklaracja
  5. Stałe czasu kompilacji i stałe preprocesora

Zajęcia 4:

  1. Stałe literałowe,
    1. Ciąg znaków
    2. Surowy ciąg znaków (C++11): R”delimiter(The String Data \ Stuff ” )delimiter”
    3. Ciąg wielo-linijkowy
  2. Operatory arytmetyczne
    1. Dzielenie intów
    2. Operacja modulo – co to jest
    3. Pre i post inkrementacja/dekrementacja -różnice
    4. Parę słów o priorytetach i co zapamiętać
  3. Operatory relacji
    1. Porównywanie liczby naturalnej z całkowitą
    2. Konwersja liczb na typ bool
  4. Operatory logiczne
    1. Lenistwo operatorów && i ||

Zajęcia 5 [26 X]:

  1. Instrukcja warunkowa if
    1. Łączenie warunków
    2. Zasięg działania instrukcji if-else
    3. Błąd z przypisaniem wewnątrz warunku
    4. Operator trój-argumentowy
  2. Instrukcja switch
    1. Uwaga na literówkę w default
  3. Teksty w stylu języka C
    1. Długość tekstu vs rozmiar tekstu (sizeof vs strlen)

Zajęcia 6 [9 XI]:

  1. Tablice statyczne
    1. Ich rozmiar, kiedy można go nie podawać
    2. Indeksowanie i dostęp
    3. Zbyt duże tablice -co wtedy
    4. Inicjalizacja
    5. Tablice wielowymiarowe
  2. Funkcje -pierwsze starcie
    1. Definicja i deklaracje
    2. Przekazywanie tablic do funkcji
    3. Zwracanie wartości z funkcji
  3. Pętla for

Zajęcia 7 [16 XI]:

  1. Funkcje
    1. Przekazywanie parametrów przez wartość
    2. Przeciążanie nazwy funkcji
    3. Argumenty funkcji main(int argc, char* argv[])
    4. *Funkcje ze zmienną liczbą argumentów
  2. Zasięg zmiennych
  3. Pętle
    1. while
    2. do-while
    3. break i continue
    4. Pętle nieskończone
  4. Obsługa cstringów: str(n)cpy, str(n)cmp, str(n)cat, strtok, st(r)rchr

Zajęcia 8 [23 XI]

  1. Przestrzenie nazw
  2. Domyślne argumenty funkcji *
  3. Użycie wielu plików *
  4. #error i #warning – wzmianka
  5. Argumenty uruchomienia programu
  6. static_assert

KOLOKWIUM 1: Do kolokwium z książki Opus Magnum: 2 -cały, 3.1-11, 4.1-2, 6.1-12,
8 i 9


Zajęcia 9 [30 XI]

  1. Referencje
    1. Stałe referencje
    2. Referencja do R-wartości -wzmianka
  2. Wskaźniki
    1. Pusty wskaźnik i NULL, nullptr, 0
    2. Wskaźnik ogólny: void*
    3. Niebezpieczeństwo wskaźników
    4. Adres do obiektu lokalnego
    5. Arytmetyka wskaźników
  3. Argumenty do funkcji przez referencje i przez wskaźnik

Zajęcia 10 [7 XII]

  1. Struktury proste
    1. Inicjalizacja, modyfikacja, odczyt
  2. Typ wyliczeniowy enum i wzmianka o enum class
  3. Obiekty anonimowe

Zajęcia 11 [14 XII]

  1. Tablice dynamiczne i alokacja pamięci
  2. Typedef
  3. Przeciążanie funkcji
  4. Unie
  5. Operatory rzutowania

Z książki Opus Magnum do tych zajęć włącznie materiał (całe rozdziały): 2, 3, 4, 6, 8, 9, 11, 12, 13, 15, 16.1-8 (mieliśmy struktury, ale od klasy się struktura różni jednym drobiazgiem)


Zajęcia 12 [21 XII] -przed Bożym Narodzeniem dodatki i uzupełnienia

  1. Funkcje rekurencyjne
  2. Częste błędy wykonywania i używanie debuggera
  3. Przeładowanie nazw funkcji
  4. Zmienne lokalne, globalne i statyczne
  5. Struktury mające zmienne const/volatile lub static
  6. Wzmianka o makefile, git, kdiff3, częściowa bibliografia

Zajęcia 13 [4 I] KOLOKWIUM II

Zajęcia 14 [11 I]

  1. Klasy
    1. Proste klasy, co mają tylko typy wbudowane private, public
    2. Konstruktory, delegowanie ich, destruktor
    3. Lista inicjalizacyjna i czemu jej używać
    4. Metody definiowane z automatu
    5. Dostęp do składowych -enkapsulacja
    6. Wskaźnik *this
    7. Przyjaźń
    8. Przeciążanie operatorów
      1. arytmetycznych
      2. przeciążalnych jedynie w klasie (nie globalnych)
      3. strumieni
      4. globalne new i delete – tego nie robić na co dzień
  2. Najprostsze wyrzucenie wyjątku w formie:
    throw std::exception()

Z książki Opus Magnum do tych zajęć obowiązuje materiał (całe rozdziały): 16.1-10 (chociaż lepiej cały), 18, 21.1-6, 26 (najlepiej cały)


Zajęcia 15 [18 I] KOLOKWIUM III


Zajęcia 16 [25 I] -zajęcia dodatkowe po kolokwium poprawkowym dla wszystkich

  1. Dziedziczenie
    1. Różnicę między public, private, protected
    2. Przesłanianie
    3. Dziedziczenie wielobazowe
      1. Problem pierścienia, wieloznaczności
    4. Różne sposoby dziedziczenia, domyślne dziedziczenie dla klas i struktur
    5. Singleton Myersa
  2. Polimorfizm
    1. Wirtualny destruktor!!!
    2. Funkcje wirtualne
      1. Funkcje czysto wirtualne => klasa abstrakcyjna
    3. Jakie warunki muszą być spełnione aby działał polimorfizm

Nie zrealizowane, proszę przeczytać samodzielnie (najlepiej całe Opus Magnum)

  1.   Pliki
    1. otwieranie/zamykanie
    2. odczyt/zapis strumieniowy
    3. sprawdzanie końca pliku i czy plik został otwarty
    4. Łatwe czytanie -getline -wzmianka
  2. Szablony
    1. szablony funkcji i klas
      1. szablony klas z parametrem int
  3. Wyjątki

Egzaminy z WDP będą:
I termin – 1 lutego, godzina 9-10:30, sala A2
II termin – 14 lutego, godzina 9-10:30, sala A2

Dla nudzących się na zajęciach (tzn. bardziej zaawansowanych niż reszta)