Programowanie C++ R 1100-2Ind09
Celem zajęć jest zapoznanie słuchaczy z programowaniem w języku C++ w środowisku systemu UNIX.
Program:
1. Rodzaje języków programowania. C++ na tle innych języków. Warsztat pracy: zapisanie programu, kompilacja, wykonanie. Biblioteki standardowe. Rola systemu operacyjnego. Śledzenie pracy programu. Program make.
2. Proste programy składające się z kilku kolejnych instrukcji. Wypisywanie i odczytywanie danych. Podstawowe typy danych.
3. Wyrażenia i operatory. Biblioteka matematyczna. Kontrola przepływu sterowania.
4. Dokładność obliczeń. Wskaźniki. Operacje na napisach.
5. Funkcje (metody). Definicja i deklaracja funkcji. Argumenty domyślne. Wywołanie funkcji. Argumenty funkcji jako zmienne. Stos. Wskaźniki do funkcji. Przeciążanie nazwy funkcji. Funkcje sparametryzowane (szablony). Funkcje rozwijane w miejscu wywołania. Rekurencja.
6. Preprocesor. Komentarze. Definiowanie własnych symboli. Składnia języka C++. Biblioteka strumieni. Stan strumienia. Zapis formatujący i bezpośredni. Bufor strumienia.
7. Biblioteka STL. Złożoność obliczeniowa. Porządkowanie i wyszukiwanie. Podstawowe struktury danych: wektor, lista, drzewo binarne, zbiór, słownik. Iteratory i ich hierarchia. Przykłady algorytmów.
8. Koncepcja klasy na przykładzie biblioteki STL. Składowe klasy: pola i metody. Konstruktory i destruktory. Funkcje i klasy zaprzyjaźnione.
9. Dziedziczenie klas. Polimorfizm. Metody i klasy abstrakcyjne. Pola i metody statyczne.
10. Obsługa sytuacji wyjątkowych. Kategorie błędów. Zatrzymanie programu. Sposób zgłoszenia błędu i reakcja na błąd. Hierarchia klas wyjątków. Ponowne zgłoszenie wyjątku. Nieobsłużone wyjątki. Zajmowanie i zwalnianie zasobów. Wyjątki w destruktorach. Zastosowanie wyjątków w bibliotece standardowej. Błędy zaokrągleń na przykładzie zbioru Mandelbrota. Przygotowanie animacji.
11. Wielowątkowość. Tworzenie nowego wątku. Sterowanie w programie wielowątkowym. Synchronizacja i wyłączny dostęp do zasobu. Sygnały - komunikacja pomiędzy wątkami
12. Graficzny interfejs użytkownika. Tworzenie i dostosowanie obiektów graficznych. Programowanie zdarzeniowe. Schemat model-view-controller. Biblioteka Qt jako przykład biblioteki graficznej. Narzędzia wspomagające tworzenie elementów graficznych.
13. Język C++ na tle innych języków obiektowych. Język Objective-C: notacja, dynamiczna kontrola zgodności typów, refleksja. Język Java: pakiety, śmieciarka.
Zaliczenie opiera się na wynikach kolokwiów realizowanych podczas ćwiczeń oraz testu końcowego.
Opis sporządził Paweł Klimczewski, maj 2008.
Literatura
1. Bruce Eckel, "Thinking in C++", Wydawnictwo Helion
2. Bjarne Stroustrup, "Język C++", WNT
3. Jerzy Grębosz, "Symfonia C++", Wydawnictwo Edition 2000
4. Stanley Lipmann, "Podstawy języka C++", WNT
5. Nicolai M. Josuttis, "C++. Biblioteka Standardowa. Podręcznik programisty.", Wydawnictwo Helion
6. Paweł Klimczewski, "Programowanie w języku C++ w środowisku systemu UNIX", Wydawnictwa Uniwersytetu Warszawskiego
Więcej informacji
Dodatkowe informacje (np. o kalendarzu rejestracji, prowadzących zajęcia, lokalizacji i terminach zajęć) mogą być dostępne w serwisie USOSweb: