Kontakt:

pokój: 339
telefon: +48 71 3757836
mail:
www: http://www.ii.uni.wroc.pl/~prz/

Konsultacje:

środa 12-14
pokój 339
proszę wcześniej uzgodnić dokładny termin konsultacji drogą mailową

Kurs C++ w semestrze letnim 2010/2011

Adres:

Instytut Informatyki
Uniwersytetu Wrocławskiego
ul. Joliot-Curie 15
50-383 Wrocław
OGŁOSZENIA

9 czerwca 2011 r.

Zadanie dodatkowe:

Przygotowałem zadanie dodatkowe (dotyczące kolekcji z STL w C++) dla tych studentów, którzy potrzebują dodatkowych punktów do uzyskania lepszej oceny klasyfikacyjnej. Punkty z tego zadania nie wliczają się do granicznej sumy występującej w rankingu.

2 czerwca 2011 r.

Ostatnie laboratorium:

W tym roku będzie 11 list z zadaniami do realizacji na laboratorich. Ostatnie zadanie jest już podlinkowane na tej stronie (patrz niżej).

26 maja 2011 r.

Laboratorium w grupie PRz:

Dzisiejsze (26 maja) laboratorium w mojej grupie zostaje przesunięte na następny tydzień. Powodem przesunięcia zajęć jest odbywający się w tym samym terminie wykład zaproszonego gościa dr Marka Wrońskiego (zapraszam do sali 25). Marek Wroński od kilkunastu lat z wielkim zaangażowaniem zajmuje się tropieniem nierzetelności naukowej, przede wszystkim plagiatów. Opisał ponad sto przypadków, często występując przeciwko władzom uczelni, które chciały sprawy plagiatów zlekceważyć lub utajnić.

2 maja 2011 r.

Wirtualny wykład:

Podlinkowałem materiały dotyczące bibliotek i przestrzeni nazw - dość prosta treść, która była zaplanowana na wirtualny wykład 28 kwietnia. Do tego materiału dopisałem zadanie (trzeba umieścić jakieś definicje w przestrzeni nazw i zrobić z tego bibliotekę).

21 kwietnia 2011 r.

Wykład po Świętach:

Zaraz po Świętach, 28 kwietnia, wykład z C++ nie odbędzie się fizycznie - odędzie sie w sposób wirtualny (polimorficzny ;) tj. zrobię notatki uzupełniające dzisiejszy wykład o wyjątkach, dopiszę coś o przestrzeniach nazw i podlinkuję na stronie.

21 marca 2011 r.

Trzecie laboratorium:

Doprecyzowałem zadanie trzecie.

12 marca 2011 r.

Drugie laboratorium:

Zadanie na drugie laboratorium opublikuję w wobotę 12 marca około godziny 12:00.

3 marca 2011 r.

Pierwsze laboratorium:

Pierwsze laboratoria dla wszystkich grup odbędą się dopiero w przyszłym tygodniu 7-11 marca.

24 lutego 2011 r.

Punkt informacyjny:

To właśnie w tym miejscu będą się pojawiać ważne ogłoszenia dotyczące organizacji zajęć związanych z tym przedmiotem. Proszę zaglądać do tych ogłoszń, szczególnie przed wykładem i przed laboratorium.

C++ to obiektowo zorientowany język programowania. Został on zaprojektowany przez B.Stroustrupa z myślą o programowaniu systemowym oraz do zaawansowanych obliczeń matematycznych. Świadome używanie C++ do rozwiązywania problemów algorytmicznych daje dużo satysfakcji doświadczonym programistom, zwłaszcza dlatego, że generowany przez kompilator kod jest bardzo efektywny.

Kurs ten jest Celem kursu jest zapoznanie studentów z bogatą składnią języka C++, najważniejszymi technikami stosowanymi w programowaniu z wykorzystaniem tego języka oraz z obszernymi fragmentami biblioteki standardowej STL.

Wymagane przygotowanie

  • Umiejętność programowania strukturalnego w języku ANSI C.
  • Znajomość podstawowych struktur danych (tablice, listy, drzewa, grafy).

Literatura

Literatura papierowa polskojęzyczna:

  • B.Stroustrup: Język C++. WNT, Warszawa 2000.
  • N.M.Josuttis: C++. Biblioteka standardowa. Podręcznik programisty. Wydawnictwo Helion, Gliwice 2003.
  • J.Grębosz: Symfonia C++ (tom 1, 2, 3). Oficyna Kallimach, Kraków 2002.
  • J.Grębosz: Pasja C++ (tom 1, 2). Oficyna Kallimach, Kraków 2003.
  • S.B.Lippman, J.Lajoie: Podstawy języka C++. WNT, Warszawa 2001.
  • C.L.Tondo, B.P.Leung: Podstawy języka C++. Ćwiczenia i rozwiązania. WNT, Warszawa 2001.

Literatura elektroniczna anglojęzyczna:

Terminarz

  • wykład: czwartek 14-16 s.25 (Paweł Rzechonek)
  • laboratoria:
    poniedziałek 14-16 s.107 (Łukasz Piwowar)
    środa 12-14 s.108 (Rafał Nowak)
    środa 16-18 s.108 (Andrzej Łukaszewski)
    czwartek 10-12 s.110 (Patryk Filipiak)
    czwartek 16-18 s.110 (Paweł Rzechonek)

Laboratorium

Zasady zaliczenia przedmiotu

Ogólnie:
W semestrze będzie opublikowanych (na tej stronie) kilkanaście prostych zadań do zaprogramowania. Za każde poprawnie zaprogramowane zadanie i oddane w terminie można będzie dostać do 10 punktów (chociaż zadania będą różnej trudności).
Terminy:
Zadania do zaprogramowania będą ogłaszane w tygodniu poprzedzającym termin ich realizacji. Zadania należy oddawać w wyznaczonym terminie. Spóźnienia nie będą tolerowane, za wyjątkiem uzasadnionych sytuacji życiowych: choroba potwierdzona zwolnieniem lekarskim, wezwanie do Sądu, itp.
Prezentacje:
Programy należy prezentować osobiście w czasie pracowni (proszę nie wysyłać programów pocztą elektroniczną, ani nie przekazywać ich poprzez kolegów czy koleżanki). W trakcie prezentacji programu trzeba się liczyć z pytamiami dotyczącymi zadania: metoda rozwiązania, zastosowane konstrukcje językowe, wykorzystane techniki, itp.
Oceny:
Aby zaliczyć laboratorium na ocenę dostateczną trzeba do końca semestru zdobyć 50% z wszystkich możliwych do uzyskania punktów; na ocenę bardzo dobrą trzeba będzie zgromadzić 90% punktów; oceny pośrednie pozostją w liniowej zależności od przedstawionych wymagań granicznych.

Lista zadań laboratoryjnych

  1. 7-10.03.2011: prosta na płaszczyźnie (pdf)
  2. 14-17.03.2011: stos liczb rzeczywistych (pdf)
  3. 21-24.03.2011: daty w kalendarzu gregoriańskim (pdf)
  4. 28-31.03.2011: tablica bitów (pdf)
  5. 4-7.04.2011: lista, stos, kolejka (pdf)
  6. 11-14.04.2011: drzewa obliczeń (pdf)
  7. 18-21.04.2011: konwersje napisów (pdf)
  8. 5-11.05.2011: długie liczby (pdf)
  9. 16-19.05.2011: liczby wymierne (pdf)
  10. 23-26.05.2011: sortowanie tablic (pdf)
  11. 6-9.06.2011: manipulatory i bezpieczne pliki tekstowe (pdf)
  12. 13-16.06.2011 (zadanie dodatkowe): kalkulator ONP (pdf)

Ranking

Wykład

Materiał omawiany na wykładach

Spis wykładów:

1: łagodne wprowadzenie do C++ 2: klasy i obiekty 3: składowe statyczne
4: przeładowywanie operatorów 5: dziedziczenie 6: polimorfizm
7: konwersje 8: wyjątki 9: biblioteki i przestrzenie nazw
10: szablony 11: szablony 12: strumienie
13: strumienie 14: STL 15: STL
3.03.2011 (łagodne wprowadzenie do C++)

Omawiane zagadnienia:
        historia języka C++, pierwsze programy, struktura programu (pliki źródłowe i nagłówkowe), referencje, napisy, klasa jako nowy typ danych, składowe w klasie, tworzenie i usuwanie obiektów na stosie i na stercie, konstruktor, standardowe wejście i wyjście.

Prezentacja:
        łagodne wprowadzenie do C++ (ppt)

10.03.2011 (klasy i obiekty)

Omawiane zagadnienia:
        klasy i obiekty, pola i metody składowe, ukrywanie składowych, przeciążanie funkcji i metod, konstruktory i destruktor, stałość, zgłaszanie błędów poprzez wyjątki.

Prezentacja:
        klasy i obiekty (ppt)

17.03.2011 (składowe statyczne)

Omawiane zagadnienia:
        składowe statyczne, funkcje i metody wbudowane, argumenty domyślne, funkcje i klasy zaprzyjaźnione.

Prezentacja:
        składowe statyczne (ppt)

24.03.2011 (przeciążanie operatorów)

Omawiane zagadnienia:
        przeciążanie operatorów.

Prezentacja:
        przeciążanie operatorów (ppt)

31.03.2011 (dziedziczenie)

Omawiane zagadnienia:
        istota dziedziczenia, dostęp do odziedziczonych składników, projektowanie hierarchii klas, dziedziczenie wielobazowe, dziedziczenie wirtualne, konwersje standardowe wskaźników i referencji.

Prezentacja:
        dziedziczenie (ppt)

7.04.2011 (polimorfizm)

Omawiane zagadnienia:
        funkcje wirtualne, implementacja wywołań polimorficznych, wczesne i późne wiązanie, klasy abstrakcyjne.

Prezentacja:
        polimorfizm (ppt)

14.04.2011 (konwersje)

Omawiane zagadnienia:
        wskaźniki do składowych, operatory konwersji w klasie, konstruktory konwertujące, konwersje w tradycyjnym stylu, składowe wrażliwe, nowoczesne operatory konwersji.

Prezentacja:
        ... (ppt)

21.04.2011 (wyjątki)

Omawiane zagadnienia:
        obsługa błędów, zgłaszanie i łapanie wyjątków, grupowanie wyjątków, dopasowywanie wyjątków, zdobywanie zasobów poprzez inicjalizację, wyjątki w konstruktorach i w destruktorach, specyfikacja wyjątków, wyjątki standardowe, definiowanie własnych wyjątków.

Prezentacja:
        wyjątki (ppt)

28.04.2011 (biblioteki i przestrzenie nazw)

Omawiane zagadnienia:
        modularyzacja kodu, tworzenie bibliotek, przestrzenie nazw, deklaracja i dyrektywa użycia, standardowa przestrzeń nazw.

Prezentacja:
        biblioteki i przestrzenie nazw (ppt)

5/19.05.2011 (szablony)

Omawiane zagadnienia:
        definicja szablonu, funkcje i klasy szablonowe, przeciążanie szablonów, specyfikowanie strategii za pomocą parametrów szablonu, parametry domyślne, specjalizacja.

Prezentacja:
        szablony (ppt)

26.05/2.06.2011 (strumienie)

Omawiane zagadnienia:
        strumienie w bibliotece standardowej, operatory >> i << do operacji formatowanych, sterowanie formatem, manipulatory, nieformatowane operacje na strumieniach, błędy w strumieniach, strumienie związane z plikami, strumienie związane z łańcuchami, synchronizacja strumieni.

Prezentacja:
        strumienie (ppt)

9/16.06.2011 (STL)

Omawiane zagadnienia:
        struktura STL, kontenery, iteratory, obiekty funkcyjne, algorytmy.

Prezentacja:
        ... (ppt)

Instytut Informatyki