Techniki i języki programowania 1

RSS

Cel przedmiotu

Zapoznanie studentów z językiem C++ oraz nauka programowania w C++ z uwzględnieniem technik programowania zorientowanego obiektowo i uogólnionego. Przedstawienie mechanizmów abstrakcji w C++, zasad konstrukcji programów, technik programowania z uwzględnieniem efektywności czasowej i pamięciowej, możliwości pielęgnacji oraz niezawodności tworzonego kodu.

Program wykładu

Historia języka C. Elementy składni języka C: typy podstawowe, klasy zmiennych: lokalne, globalne, automatyczne, statyczne, stałe, ulotne, instrukcje sterujące, inicjalizacja a przypisanie. Wyrażenia: operatory, priorytet, zmienne tymczasowe, konwersje typów, rzutowanie. Typy złożone: wskaźniki, referencje, tablice, struktury, unie. Funkcje: deklaracja i definicja, funkcje rozwijane, argumenty domyślne, wskaźniki do funkcji, elipsa, funkcje przeciążone, rozstrzyganie przeciążenia. Struktura programu: preprocesor i makra, pliki nagłówkowe i źródłowe, konsolidacja, jednostka translacji, zakres widoczności obiektu, kompilacja warunkowa, przestrzenie nazw. Podstawowe wsparcie programowania obiektowego: klasy, dostęp do składowych, konstruktory, destruktory, składowe statyczne, cykl życia obiektu, obiekty tymczasowe, const-correctness. Hierarchie klas i polimorfizm: dziedziczenie, funkcje wirtualne, destruktor wirtualny, interfejsy, nadpisywanie i zasłanianie metod, wielokrotne dziedziczenie, wirtualne klasy bazowe, konwersje wskaźników i referencji, konwersje jawne, RTTI. Wyjątki: mechanizm wyjątków, idiom RIIA, inteligentne wskaźniki. Przeciążanie operatorów: składnia, zagadnienia efektywności, friend name injection, OL, ADL. Szablony: szablony funkcji i klas, konkretyzacja, specjalizacja, szablony a dziedziczenie. Programowanie uogólnione: koncepty, typy stowarzyszone, metaprogramowanie, idiom CRTP. Biblioteka standardowa: strumienie, stringi, kontenery, iteratory, algorytmy, alokatory, funkcje numeryczne. Ewolucja: biblioteka Boost, Technical Report 1, propozycja standardu C++0x.

Charakterystyka pozostałych zajęć

W ramach laboratorium realizowana jest implementacja prostych programów w językach C i C++ do rozwiązywania różnego typu problemów, w oparciu o wybrane paradygmaty i techniki programistyczne. Studenci zapoznawani są z wykorzystaniem szeregu narzędzi programistycznych związanych z projektowaniem, kompilacją, optymalizacją, testowaniem i dokumentowaniem programów, jak również z użyciem przykładowych bibliotek programistycznych. Ćwiczenia ugruntowują zagadnienia przedstawiane podczas wykładu. W ich trakcie rozwiązywane są konkretne problemy z zastosowaniem technik strukturalnych, obiektowych i uogólnionych, szczegółowo omawiane są zalety i wady poszczególnych, a stworzony kod wyjaśniany i analizowany.

Bibliografia

1. Brian Kernighan, Denis Ritchie – Język ANSI C, WNT, 2004, s. 358.
2. Bjarne Stroustrup – Język C++ wydanie VII, WNT, 2004, s. 976.
3. Bruce Eckel – Thinking in C++ edycja polska. Wydawnictwo Helion, 2002, s. 642.
4. Bruce Eckel, Chuck Allison – Thinking in C++ edycja polska tom II. Wydawnictwo Helion, 2004, s. 687.
5. E. Gamma, R. Helm, R. Johnson, J. Vlissides – Wzorce projektowe. Elementy oprogramowania obiektowego wielokrotnego użytku, WNT, 2008, s. 456.

Wszelkie prawa zastrzeżone © 2010 Katedra Informatyki   |   Akademia Górniczno-Hutnicza   |   Realizacja Creative Bastards