Zajęcia 1:
- Warunki zaliczenie
- Konsultacje
- Kontakt mailowy:
- 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 - Proszę w trakcie konwersacji mailowej na dany temat nie usuwać historii konwersacji
- Używając maila niezawierającego imienia i nazwiska, proszę się podpisać
- Proszę używać taga mailowego na początku tematu:
- Lista zapisanych osób
Zajęcia 2:
- Parę słów o środowiskach do C/C++
- Zapoznanie z Code:Blocks
- Witaj świecie w Code:Blocks
- Komentarze
- Eksperymenty z usuwaniem poszczególnych elementów programu witaj świecie i komunikatami o błędach
Zajęcia 3:
- Zmienne podstawowych typów
- Rozmiar poszczególnych typów
- Zakresy dla niektórych typów
- Różnice między typami
- Inicjalizacja zmiennych i co jeśli nie
- Wyświetlanie i wczytywanie z klawiatury zmiennych
- Definicja vs deklaracja
- Stałe czasu kompilacji i stałe preprocesora
Zajęcia 4:
- Stałe literałowe,
- Ciąg znaków
- Surowy ciąg znaków (C++11): R”delimiter(The String Data \ Stuff ” )delimiter”
- Ciąg wielo-linijkowy
- Operatory arytmetyczne
- Dzielenie intów
- Operacja modulo – co to jest
- Pre i post inkrementacja/dekrementacja -różnice
- Parę słów o priorytetach i co zapamiętać
- Operatory relacji
- Porównywanie liczby naturalnej z całkowitą
- Konwersja liczb na typ bool
- Operatory logiczne
- Lenistwo operatorów && i ||
Zajęcia 5 [26 X]:
- Instrukcja warunkowa if
- Łączenie warunków
- Zasięg działania instrukcji if-else
- Błąd z przypisaniem wewnątrz warunku
- Operator trój-argumentowy
- Instrukcja switch
- Uwaga na literówkę w default
- Teksty w stylu języka C
- Długość tekstu vs rozmiar tekstu (sizeof vs strlen)
Zajęcia 6 [9 XI]:
- Tablice statyczne
- Ich rozmiar, kiedy można go nie podawać
- Indeksowanie i dostęp
- Zbyt duże tablice -co wtedy
- Inicjalizacja
- Tablice wielowymiarowe
- Funkcje -pierwsze starcie
- Definicja i deklaracje
- Przekazywanie tablic do funkcji
- Zwracanie wartości z funkcji
- Pętla for
Zajęcia 7 [16 XI]:
- Funkcje
- Przekazywanie parametrów przez wartość
- Przeciążanie nazwy funkcji
- Argumenty funkcji main(int argc, char* argv[])
- *Funkcje ze zmienną liczbą argumentów
- Zasięg zmiennych
- Pętle
- while
- do-while
- break i continue
- Pętle nieskończone
- Obsługa cstringów: str(n)cpy, str(n)cmp, str(n)cat, strtok, st(r)rchr
Zajęcia 8 [23 XI]
- Przestrzenie nazw
- Domyślne argumenty funkcji *
- Użycie wielu plików *
- #error i #warning – wzmianka
- Argumenty uruchomienia programu
- 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]
- Referencje
- Stałe referencje
- Referencja do R-wartości -wzmianka
- Wskaźniki
- Pusty wskaźnik i NULL, nullptr, 0
- Wskaźnik ogólny: void*
- Niebezpieczeństwo wskaźników
- Adres do obiektu lokalnego
- Arytmetyka wskaźników
- Argumenty do funkcji przez referencje i przez wskaźnik
Zajęcia 10 [7 XII]
- Struktury proste
- Inicjalizacja, modyfikacja, odczyt
- Typ wyliczeniowy enum i wzmianka o enum class
- Obiekty anonimowe
Zajęcia 11 [14 XII]
- Tablice dynamiczne i alokacja pamięci
- Typedef
- Przeciążanie funkcji
- Unie
- 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
- Funkcje rekurencyjne
- Częste błędy wykonywania i używanie debuggera
- Przeładowanie nazw funkcji
- Zmienne lokalne, globalne i statyczne
- Struktury mające zmienne const/volatile lub static
- Wzmianka o makefile, git, kdiff3, częściowa bibliografia
Zajęcia 13 [4 I] KOLOKWIUM II
Zajęcia 14 [11 I]
- Klasy
- Proste klasy, co mają tylko typy wbudowane private, public
- Konstruktory, delegowanie ich, destruktor
- Lista inicjalizacyjna i czemu jej używać
- Metody definiowane z automatu
- Dostęp do składowych -enkapsulacja
- Wskaźnik *this
- Przyjaźń
- Przeciążanie operatorów
- arytmetycznych
- przeciążalnych jedynie w klasie (nie globalnych)
- strumieni
- globalne new i delete – tego nie robić na co dzień
- 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
- Dziedziczenie
- Różnicę między public, private, protected
- Przesłanianie
- Dziedziczenie wielobazowe
- Problem pierścienia, wieloznaczności
- Różne sposoby dziedziczenia, domyślne dziedziczenie dla klas i struktur
- Singleton Myersa
- Polimorfizm
- Wirtualny destruktor!!!
- Funkcje wirtualne
- Funkcje czysto wirtualne => klasa abstrakcyjna
- Jakie warunki muszą być spełnione aby działał polimorfizm
Nie zrealizowane, proszę przeczytać samodzielnie (najlepiej całe Opus Magnum)
- Pliki
- otwieranie/zamykanie
- odczyt/zapis strumieniowy
- sprawdzanie końca pliku i czy plik został otwarty
- Łatwe czytanie -getline -wzmianka
- Szablony
- szablony funkcji i klas
- szablony klas z parametrem int
- szablony funkcji i klas
- 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)