Programowanie w języku C++

Opis kursu:

Kurs składa się z ok. 30-tu zajęć wykładowych oraz ok. 60-ciu zajęć laboratoryjnych, na których zostaną przedstawiony następujące zagadnienia (jest to zasadniczy podział, godziny moga ulec lekkim przesunięciom):
  • Część 1 : składnia i struktura programu, typy liczbowe i dokładność ich reprezentacji, typy łańcuchowe, typy logiczne,operatory liczbowe i logiczne, preprocesor (wstęp), podstawy zarządzania pamięcią, instrukcje warunkowe, instrukcja pętli iteracyjnej, dwa typy pętli warunkowych, debugowanie kodu
  • Część 2 : ogólna konstrukcja funcji, istota stosu w strukturze pamięci programu, typy wskaźnikowe, alokacja pamięci na stercie, zwalnianie pamięci, ogólna konstrukcja kontenerów iterowanych o dowolnym wymiarze (w szczególności tablic jedno i dwuwymiarowych), konwersja typów i rzutowanie, typy std::vector i std::string
  • Część 3 : przeładowanie nazwy funkcji, wskaźniki do funkcji, pierwszy projekt
  • Część 4 : operacje na plikach tekstowych, obsługa błędów, konstrukcja klas (konstruktor, konstruktor kopiujący, przeciążanie operatorów) i hierarchia dostępu do ich składowych, drugi projekt
  • Część 5 : operacje na plikach binarnych, serializacja danych, testowanie porawności kodu (testy automatyczne), trzeci projekt
  • Część 6 : zagadnienia dla chętnych: szablony i wzorce projektowe (najpopularniejsze), budowa interfejsów graficznych (biblioteka Qt)

Cele kursu:

Język C++ ze względu na swoją specyfikę umożliwia głębokie zrozumienie wielu koncepcji dotyczących programowania komputerów. Prezentowany kurs jest ukierunkowany przede wszystkim na nabycie kompetencji w programowaniu obiektowym i opcjonalnie uogólnionym (szablony). Niemniej rozpoczyna się od dokładnego przeprogramownia modelu proceduralnego. Zawiera on zatem dość dużą ilość wiedzy pojęciowej, wzbogaconej sporą ilością ćwiczeń uzupełniających czysto językowy charakter kursu o aspekty algorytmiki różnego typu, programowania współbieżnego i in. Z tego względu część omawianych na kursie zagadnień będzie opcjonalna (dla chętnych) - szczegóły możliwych scenariuszy zaliczenia są podane w menu 'Informacje ogólne/Organizacja'. Dobre poznanie nowoczesnego standardu C++ (co najmniej C++11) powoduje, że uczenie się kolejnych, porównywalnie silnych, języków (C#, Java) nie wymaga większego wysiłku - są to języki bardzo podobne składniowo do C++, ale ze względu na raczej 'produkcyjny' ich charakter są znacznie mniej efektywne w edukacji podstaw programowania.

Pozycje referencyjne:

  1. Jerzy Grębosz, Opus magnum C++11. Programowanie w języku C++ (komplet), Helion 2017.
  2. Stephen Prata, Język C++. Szkoła programowania, Wydanie VI., Helion 2012.
  3. Alex Allain, C++. Przewodnik dla początkujących, Helion 2014.
  4. Andrzej Stasiewicz, C++. Ćwiczenia praktyczne, Wydanie III (ebook), Helion 2011.
  5. Wisnu Anggoro, C++. Struktury danych i algorytmy, Helion 2019.