Paweł Rzechonek

Zainteresowania zawodowe: programowanie (C++, Java, C#, F#), technologie webowe, szeroko rozumiana algorytmika, metematyka klasyczna.

C++17 i STL
kurs zaawansowany

data ostatniej modyfikacji dokumentu

Data ostatniej modyfikacji tego dokumentu (cpp2018.phtml) to czwartek 18 października 2018 roku (o godzinie 6:47).

ogłoszenia
1 października 2018 r.
pierwsze laboratorium:
W pierwszym tygodniu nauki laboratoria nie odbywają się. Pierwsze laboratorium zaplanowałem dopiero na przyszły tydzień: 8-12 października 2018 r.

1 października 2018 r.
punkt informacyjny:
W tym miejscu będą się pojawiać ważne ogłoszenia dotyczące organizacji wszystkich zajęć związanych z tym przedmiotem. Proszę czytać te ogłosznia na bieżąco.
terminarz
wykład:
poniedziałek 17-18 s.25 (Paweł Rzechonek)

laboratoria:
poniedziałek 18-20 s.137 (Paweł Rzechonek)
wtorek 18-20 s.107 (Marek Szykuła)
licznik wejść na stronę

2 dzisiaj
303 w obecnym miesiącu
4738 w bieżącym roku
4738 od powstania strony

o przedmiocie

Kurs C++17 i STL

C++17 to najnowsza wersja języka C++. Język C++ prawdza się, gdy chcemy zapewnić wysoką wydajność programu. Język ten jest stale rozwijany a kolejne jego specyfikacje, czyli C++11, C++14 i C++17, przyniosły wiele udogodnień. Aby w pełni wykorzystać potencjał języka C++ należy go używać wraz z biblioteką standardową STL. C++ wraz z STL to doskonałe narzędzie do implementowania oprogramowania wysokiej jakości.

Wymagane przygotowanie
  •   Umiejętność programowania obiektowego w języku C++98.
  •   Podstawowa znajomość algorytmiki.
  •   Umiejętność czytania dokumentacji technicznej w języku angielskim.
Cel kursu
  •   Nauka programowania w języku C++17.
  •   Poznanie obszernych fragmentów biblioteki STL.

literatura

Literatura papierowa
  •   N.M.Josuttis: C++. Biblioteka standardowa. Podręcznik programisty. Wydanie 2. Wydawnictwo Helion, Gliwice 2014.
  •   B.Stroustrup: Język C++. Kompendium wiedzy. Wydanie 4. Wydawnictwo Helion, Gliwice 2014.
  •   J.Galowicz: C++17 STL. Receptury. Wydawnictwo Helion, Gliwice 2018.
Literatura elektroniczna

laboratorium

Zasady zaliczenia przedmiotu
Ogólnie:
W semestrze będzie opublikowanych (na tej stronie) kilkanaście prostych zadań do zaprogramowania. Za każde samodzielnie 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 innych studentów). W trakcie prezentacji programu trzeba się liczyć z pytamiami dotyczącymi zadania: metoda rozwiązania, zastosowane konstrukcje językowe, wykorzystane technologie, itp.
Rozwiązania:
Kody źródłowe własnych programów należy zapisywać na SKOS, ponieważ tylko wtedy rozwiązania zadań będą podlegały weryfikacji autorskiej i ocenie.
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.
Zadania laboratoryjne
  1. sprytne wskaźniki
  2. 22, 23 października 2018: czasomierze
  3. Przepraszam, że tak późno, ale za to zadanie jest proste.

    Zdefiniuj klasę dla macierzy kwadratowej zawierającej liczby rzeczywiste. Należy umożliwić dostęp porzez referencję do poszczególnych elementów macierzy (do odczytu i zapisu). W klasie tej zdefiniuj statyczną operację mnożenia macierzy o takim samym rozmiarze (argumenty przekaż jako referencje do stałych macierzy).

    Dalej w programie testowym stwórz macierze o rozmiarach odpowiednio 10×10, 100×100, 1000×1000 i 10000×10000 i wypełnij je losowymi wartościami z zakrsu od 0.5 do 2.0. Następnie podnieś do kwadratu każdą z tych macierzy mierząc czas wykonania tych operacji za pomocą obiektu duration. Dla małych macierzy powtórz tą operację wielokrotnie a potem zmierzony czas podziel przez tą wielokrotność. Do pomiaru czasu urzyj czasomierzy opartych na zegarze high_resolution_clock.

wykłady

8 października 2018 r: sprytne wskaźniki

organizacja zajęć

sprytne wskaźniki:

  • sprytne wskaźniki shared_ptr
  • sprytne wskaźniki weak_ptr
  • sprytne wskaźniki unique_ptr

slajdy: cpp17stl-1.pdf