Kontakt:

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

Konsultacje (pokój 339):

  • poniedziałek 12-13
  • środa 12-13

Proszę wcześniej uzgodnić dokładny termin konsultacji drogą mailową.

Język C++ (semestr letni 2012/2013)

Adres:

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

26 kwietnia 2013 r.

Laboratorium w mojej grupie nie odbędzie się:

Najbliższe wtorkowe laboratorium z C++ (30.04.2013) w mojej grupie (prz) nie odbędzie się. Zadanie 8 (grafy) jest oczywiście do oddania w następnym terminie (7.05.2013), zadanie 9 (konwersje napisów) tydzień później (14.05.2013).

17 kwietnia 2013 r.

Wykład nie odbędzie się:

Jutrzejszy (18.04.2013) wykład z języka C++ nie odbędzie się. Powodem są ogłoszone godziny rektorskie.

3 kwietnia 2013 r.

Wykład przesunięty o godzinę:

Jutrzejszy (4.04.2013) wykład z języka C++ rozpocznie się dopiero o 9:15. Wiem, że informacja o tym terminie zostaje bardzo późno ogłoszona - z góry przepraszam osoby, które przyjdą godzinę wcześniej.

24 marca 2013 r.

Zadanie piąte:

W mijającym tygodniu nie podlinkowałem kolejnego, piątego zadania programistycznego - zrobiłem to dopiero przed chwilą. Oddanie go w późniejszym niż zaplanowałem terminie nie będzie miało negatywnych skutków punktowych (we wszystkich grupach zostanie to indywidualnie ustalone).

Zadanie piąte będzie do oddania po Świętach Wielkanocnych w terminie 3-9.04.2013.

21 lutego 2013 r.

Szybki kurs programowania w C/C++:

Studentom, którzy słabo znają język C, polecam weekendowy sprint po tym kursie.

21 lutego 2013 r.

Pierwsze laboratorium:

Pierwsze laboratoria dla wszystkich grup odbędą się dopiero w przyszłym tygodniu 25 lutego - 1 marca 2013.

21 lutego 2013 r.

Punkt informacyjny:

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.

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 8-10 s.119 (Paweł Rzechonek)
  • laboratoria:
    wtorek 8-10 s.7 (Hans de Nivelle)
    wtorek 16-18 s.108 (Patryk Filipiak)
    wtorek 18-20 s.107 (Paweł Rzechonek)
    środa 16-18 s.110 (Błażej Chęciński)
    czwartek 12-14 s.137 (Hans de Nivelle)
    piątek 8-10 s.7 (Łukasz Piwowar)

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. 25.02-1.03.2013: punkty i koła na płaszczyźnie (pdf)
  2. 4-8.03.2013: stos liczb rzeczywistych (pdf)
  3. 11-15.03.2013: daty w kalendarzu gregoriańskim (pdf)
  4. 18-22.03.2013: wielomiany (pdf)
  5. 3-9.04.2013: kolejka dat (pdf)
  6. 10-16.04.2013: wyrażenia (pdf)
  7. 17-23.04.2013: macierze (pdf)
  8. 24-30.04.2013: grafy (pdf)
  9. 7-17.05.2013: konwersje napisów (pdf)
  10. 21-24.05.2013: mieszanie i sortowanie (pdf)
  11. 28.05-7.06.2013: manipulatory i bezpieczne pliki tekstowe (pdf)
  12. 11-14.06.2013: kalkulator ONP (pdf)

Ranking

Wykład

Materiał omawiany na wykładach

Spis wykładów:

1: wprowadzenie do C++ 2: klasy i obiekty 3: składowe statyczne
4: przeładowywanie operatorów 5: dziedziczenie 6: polimorfizm
7: wyjątki 8: konwersje, przestrzenie nazw 9: szablony
10: strumienie 11: własne biblioteki, struktura STL, kolekcje i iteratory 12: obiekty funkcyjne, lambdy, algorytmy STL
13: programowanie współbieżne
21.02.2013 (sprawy organizacyjne)
Omawiane zagadnienia:
zakres materiału przedstawiany na wykładzie, zadania laboratoryjne i zasady zaliczania przedmiotu, kontakt z wykładowcą, literatura, historia C++, najważniejsze cechy języka.
Prezentacja:
sprawy organizacyjne (ppt)
21.02.2013 (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)
Programy z wykładu:
program powitalny (cpp)
program przeliczający milimetry na cale (cpp)
28.02.2013 (klasy i obiekty)
Omawiane zagadnienia:
klasy i obiekty, pola i metody składowe, ukrywanie składowych, przeciążanie funkcji i metod, konstruktory i destruktor, pola i metody stałe, zgłaszanie błędów poprzez wyjątki.
Prezentacja:
klasy i obiekty (ppt)
Programy z wykładu:
klasa Punkt i jej implementacja (cpp)
7.03.2013 (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)
14.03.2013 (przeciążanie operatorów)
Omawiane zagadnienia:
przeciążanie operatorów, operatory składowe i zaprzyjaźnione, operatory zwiększania ++ i zmniejszania --, operator przypisania kopiującego =, operator wywołania funkcji (), operator indeksowania [], operator dostępu do składowych ->, statyczne operatory składowe new i delete, zaprzyjaźnione operatory czytania z i pisania do strumienia >> i <<.
Prezentacja:
przeciążanie operatorów (ppt)
Programy z wykładu:
lzesp.hpp / lzesp.cpp / lzespmain.cpp
21.03.2013 (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)
4.04.2013 (polimorfizm)
Omawiane zagadnienia:
funkcje wirtualne, implementacja wywołań polimorficznych, wczesne i późne wiązanie, klasy abstrakcyjne.
Prezentacja:
polimorfizm (ppt)
11.04.2013 (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)
25.04.2013 (konwersje, przestrzenie nazw)
Omawiane zagadnienia:
wskaźniki do składowych, operatory konwersji w klasie, konstruktory konwertujące, konwersje w tradycyjnym stylu, nowoczesne operatory konwersji, RTTI; przestrzenie nazw, deklaracja i dyrektywa użycia, standardowa przestrzeń nazw.
Prezentacja:
konwersje, przestrzenie nazw (ppt)
16.05.2013 (szablony)
Omawiane zagadnienia:
definicja szablonu, funkcje i klasy szablonowe, przeciążanie szablonów funkcji, specyfikowanie strategii za pomocą parametrów szablonu, parametry domyślne w szablonach, specjalizacja szblonów, klasy szablonowe, składowe statyczne w szablonach, przyjaźń a szablony, dziedziczenie w przypadku szablonów.
Prezentacja:
szablony (ppt)
23.05.2013 (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)
29.05.2013 (własne biblioteki, struktura STL)
Omawiane zagadnienia:
modularyzacja kodu, tworzenie bibliotek; struktura STL, funkcje pomocnicze, przegląd kontenerów i iteratorów.
Prezentacja:
własne biblioteki, struktura STL, kolekcje i iteratory (ppt)
6.06.2013 (obiekty funkcyjne, lambdy, algorytmy STL)
Omawiane zagadnienia:
obiekty funkcyjne, lambdy, algorytmy.
13.06.2013 (programowanie współbieżne)
Omawiane zagadnienia:
pojęcie wątku w procesie, uruchamianie wątków w C++, synchronizacja wątków, muteksy i semafory, zmienne warunkowe.
Materiały pomocnicze:
N.M.Josuttis: The C++ Standard Library. Tutorial and Reference. Second Edition. (pdf) - hasło: literatura

Instytut Informatyki