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ą

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

Adres:

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

16 maja 2012 r.

Ostatnie zadanie 12 na laboratorium:

Po długim namyśle w sprawie ostatniego zadania 12 doszedłem do przekonania, że powinno ono być, wzorem lat ubiegłych, zadaniem dodatkowym. Opublikowałem więc zadanie ostatnie jako dodatkowe. Jest ono dedykowane dla tych studentów, którym brakuje kilka punktów do zaliczenia przedmiotu na swoją wymarzona ocenę ;-)

18 kwietnia 2012 r.

Zadanie 8 na laboratorium:

Zadanie 8 nie jest łatwe do zaprogramowania ale bardzo ważne w procesie nauki programowania! Proszę spróbować porządnie zaprogramować to zadanie i oddać je w następnym tygodniu (wyjątkowo będę przyjmował to zadanie po terminie).

1 kwietnia 2012 r.

Punktacja w grupie PRz:

Zrobiłem statystykę uzyskanych punktów w mojej grupie (PRz).

7 marca 2012 r.

Odwołany wykład i laboratorium:

W przyszłym tygodniu 14 marca 2012 nie będzie wykładu - z pewnych powodów muszę przesunąć go na koniec senestru albo na początek sesji (tą kwestię ustalimy w późniejszym terminie). W konsekwencji zadanie 5 na laboratorium ma przesunięty o tydzień termin realizacji (na 21-22 marca 2012).

8 lutego 2012 r.

Pierwsze laboratorium:

Pierwsze laboratoria dla wszystkich grup odbędą się dopiero w przyszłym tygodniu 15-16 lutego.

8 lutego 2012 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.

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: środa 16-18 s.25 (Paweł Rzechonek)
  • laboratoria:
    środa 12-14 s.107 (Łukasz Piwowar)
    środa 18-20 s.7 (Paweł Rzechonek)
    czwartek 8-10 s.108 (Patryk Filipiak)
    czwartek 12-14 s.108 (Dariusz Jackowski)
    czwartek 14-16 s.7 (Hans de Nivelle)

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. 15-16.02.2012: odcinki na płaszczyźnie (pdf)
  2. 22-23.02.2012: stos liczb rzeczywistych (pdf)
  3. 29.02-1.03.2012: liczby pierwsze (pdf)
  4. 7.02-8.03.2012: tablica bitów (pdf)
  5. 21-22.03.2012: stos i kolejka (pdf)
  6. 28-29.03.2012: drzewa obliczeń (pdf)
  7. 11-12.04.2012: konwersje napisów (pdf)
  8. 18-19.04.2012: długie liczby (pdf)
  9. 25-26.04.2012: permutowanie i sortowanie tablic (pdf)
  10. 9-11.05.2012: zbiór asocjacyjny (pdf)
  11. 16-17.05.2012: manipulatory i bezpieczne pliki tekstowe (pdf)
  12. 23-24.05.2012 (dodatkowe): 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 9: biblioteki i przestrzenie nazw
10: szablony 11: szablony 12: strumienie
13: struktura STL 14: kolekcje i iteratory w STL 15: algorytmy i funktory w STL
8.02.2012 (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)

15.02.2012 (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)

22.02.2012 (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)

29.02.2012 (przeciążanie operatorów)

Omawiane zagadnienia:
        przeciążanie operatorów.

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

7.03.2012 (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)

21.03.2012 (polimorfizm)

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

Prezentacja:
        polimorfizm (ppt)

28.03.2012 (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)

4.04.2012 (konwersje)

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

Prezentacja:
        konwersje (ppt)

11.04.2012 (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)

18.04.2012 (szablony)

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

Prezentacja:
        szablony (ppt)

25.04.2012 (szablony)

Omawiane zagadnienia:
        specjalizacja szblonów, klasy szablonowe, składowe statyczne w szablonach, przyjaźń a szablony, dziedziczenie w przypadku szablonów.

Prezentacja:
        szablony (ppt)

9.05.2012 (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)

16.05.2012 (STL)

Omawiane zagadnienia:
        struktura STL, funkcje pomocnicze, przegląd kontenerów.

Prezentacja:
        STL (ppt)

Instytut Informatyki