Wymagane przygotowanie studentów

  • dobra znajomość języka programowania C
  • operowanie podstawowymi strukturami danych (tablice, listy, drzewa, grafy)

Literatura

papierowa:
  • B.Stroustrup: Język C++. WNT, Warszawa 2000, ISBN 83-204-2375-9.
elektroniczna:

Organizacja pracowni

  1. ogólnie
    W ciągu semestru będzie kilkanaście zadań do zaprogramowania (jedno zadanie na każdą pracownię). Zadania będą raczej proste, a terminy ich realizacji dość krótkie (kilka dni). Za każde poprawnie zaprogramowane zadanie i oddane w terminie można będzie dostać określoną liczbę punktów (6, 9, 15 lub 21, zależnie od stopnia trudności zadania).
  2. terminy
    Zadanie należy zaprogramować na wyznaczony termin (następny tydzień po opublikowaniu zadania). Można się spóźniać, ale to kosztuje utratę punktów: jeden tydzień spóźnienia to obcięcie punktów do 2/3 z maksa, a dwa tygodnie spóźnienia, to obcięcie do 1/3 z maksa; po trzech tygodniach zadanie przeterminowuje się.
  3. prezentacje
    Programy należy prezentować osobiście w czasie pracowni (proszę nie wysyłać programów pocztą elektroniczną, ani nie przekazywać dyskietek poprzez kolegów/koleżanki). W trakcie prezentacji programu trzeba się liczyć z pytamiami dotyczącymi zadania, jego rozwiązania, oraz zastosowanych konstrukcji językowych.
  4. zaliczenia
    Aby uzskać zaliczenie z pracowni na ocenę dostateczną trzeba do końca semestru zdobyć 50% z wszystkich możliwych do uzyskania punktów; na ocenę bardzo dobra trzba będzie zgromadzić 90% punktów; oceny pośrednie pozostją w liniowej zależności od przedstawionych wymagań granicznych.

Zadania

dla studentów dziennych:
  • zadanie 1 (dvi / ps / pdf): 6 punktów (termin realizacji: 28.02.2005) - miesiące w roku
  • zadanie 2 (dvi / ps / pdf): 9 punktów (termin realizacji: 7.03.2005) - punkty współliniowe
  • zadanie 3 (dvi / ps / pdf): 15 punktów (termin realizacji: 14.03.2005) - kalendarz gregoriański
  • zadanie 4 (dvi / ps / pdf): 9 punktów (termin realizacji: 21.03.2005) - sortowanie przybliżone
  • zadanie 5 (dvi / ps / pdf): 15 punktów (termin realizacji: 4.04.2005) - tablice bitowe
  • zadanie 6 (dvi / ps / pdf): 21 punktów (termin realizacji: 11.04.2005) - arytmetyka długich liczb
  • zadanie 7 (dvi / ps / pdf): 21 punktów (termin realizacji: 18.04.2005) - drzewa AVL
  • zadanie 8 (dvi / ps / pdf): 15 punktów (termin realizacji: 25.04.2005) - dowolnie indeksowane tablice
  • zadanie 9 (dvi / ps / pdf): 21 punktów (termin realizacji: 9.05.2005) - kolekcja z iteratorem
  • zadanie 10 (dvi / ps / pdf): 15 punktów (termin realizacji: 16.05.2005) - szyfrowanie i deszyfrowanie
  • zadanie 11 (dvi / ps / pdf): 21 punktów (termin realizacji: 23.05.2005) - kalkulator ONP
  • zadanie 12 (dvi / ps / pdf): 21 punktów (termin realizacji: 6.06.2005) - automaty skończone
  • - koniec (189) -
dla studentów wieczorowych:
  • zadanie 1 (dvi / ps / pdf): 6 punktów (termin realizacji: 23.02.2005) - dni tygodnia
  • zadanie 2 (dvi / ps / pdf): 6 punktów (termin realizacji: 2.03.2005) - nazwa-wartość
  • zadanie 3 (dvi / ps / pdf): 15 punktów (termin realizacji: 9.03.2005) - kalendarz gregoriański
  • zadanie 4 (dvi / ps / pdf): 9 punktów (termin realizacji: 16.03.2005) - sortowanie przybliżone
  • zadanie 5 (dvi / ps / pdf): 9 punktów (termin realizacji: 23.03.2005) - liczby zespolone
  • zadanie 6 (dvi / ps / pdf): 12 punktów (termin realizacji: 30.03.2005) - wielomiany zespolone
  • zadanie 7 (dvi / ps / pdf): 12 punktów (termin realizacji: 6.04.2005) - elementy obliczalne
  • zadanie 8 (dvi / ps / pdf): 15 punktów (termin realizacji: 20.04.2005) - lista asocjacyjna
  • zadanie 9 (dvi / ps / pdf): 15 punktów (termin realizacji: 27.04.2005) - dowolnie indeksowane tablice
  • zadanie 10 (dvi / ps / pdf): 9 punktów (termin realizacji: 4.05.2005) - funkcje porównujące
  • zadanie 11 (dvi / ps / pdf): 15 punktów (termin realizacji: 11.05.2005) - lista, stos, kolejka
  • zadanie 12 (dvi / ps / pdf): 21 punktów (termin realizacji: 25.05.2005) - kalkulator ONP
  • - koniec (144) -

Wykłady (streszczenie)

22.02.2005:
  • Ogólne cechy języka programowania C++.
  • Typ wyliczeniowy (enum).
  • Łańcuchy znakowe (string).
  • Standardowe wejście i wyjście (cin, cout, cerr).
  • Referencje i stałe referencje.
  • Obiekty stałe (const), stałe wskaźniki i wskaźniki do stałych.
  • Operatory przydzielania (new) i zwalniania (delete) pamięci wolnej.
1.03.2005:
  • Funkcje wbudowane (inline).
  • Przeładowanie funkcji.
  • Parametry domyślne funkcji.
  • Klasy i obiekty.
  • Pola i metody.
  • Ukrywanie implementacji.
8.03.2005:
  • Metody wbudowane (inline).
  • Pola i metody statyczne (static).
  • Metody stałe (const).
  • Lista inicjalizacyjna w konstruktorze.
  • Pola stałe (const) i pola zawsze modyfikowalne (mutable).
  • Pola ulotne i metody ostrożne (volatile).
  • Konstruktor domyślny.
  • Konstruktor kopiujący.
15.03.2005:
  • Funkcje zaprzyjaźnione.
  • Przeciążanie operatorów.
22.03.2005:
  • Dziedziczenie.
  • Dostęp do składowych klasy bazowej i udostępnianie wybiórcze.
  • Konstrukcja i destrukcja obiektów w klasach pochodnych.
  • Standardowe konwersje wskaźników i referencji przy dziedziczeniu.
  • Metody polimorficzne (virtual).
  • Destruktor wirtualny w klasach polimorficznych.
29.03.2005:
  • Wczesne i późne wiązanie.
  • Metody czysto wirtualne i klasy abstrakcyjne.
  • Dziedziczenie wielobazowe.
  • Dziedziczenie wirtualne.
5.04.2005:
  • Zgłaszanie wyjątków (instrukcja throw).
  • Łapanie wyjątków (instrukcja try-catch).
  • Dopasowywanie wyjątków.
  • Specyfikacja wyjątków.
  • Specyfikacja wyjątków w metodach polimorficznych.
12.04.2005:
  • Zwijanie stosu.
  • Mechanizm lotu wyjątków.
  • Wyjątki zgłaszane w kontruktorach.
  • Kiedy nie wolno zgłaszać wyjątków.
  • Zdobywanie zasobów poprzez inicjalizację.
  • Hierarchia wyjątków w STL.
  • Wyjątki związane z operatorem new.
  • Inteligentne wskaźniki (auto_ptr).
19.04.2005:
  • Niewyłapane wyjątki.
  • Przestrzenie nazw.
  • Wzorce - wstęp.
26.04.2005:
  • Szablony funkcji.
3.05.2005:
  • Szablony klas.
10.05.2005:
  • Strumienie i manipulatory w STL.
17.05.2005:
  • Kolekcje i iteratory w STL.
24.05.2005:
  • Obiekty funkcyjne i adaptatory w STL.
31.05.2005:
  • Algorytmy w STL.