Języki i paradygmaty programowania II, dr Michał
Transkrypt
Języki i paradygmaty programowania II, dr Michał
Sylabus WYDZIAŁ FIZYKI Uniwersytet im. Adama Mickiewicza w Poznaniu Instytut Zakład Fizyki Kwantowej Stopień/tytuł naukowy Imię Nazwisko dr Michał Mucha Kierunek studiów Specjalność Fizyka Informatyka Stosowana Nazwa przedmiotu Rodzaj zajęć Języki i paradygmaty programowania II Wykład kursowy Liczba godzin Rok studiów/tryb Semestr 30 letni 2 Punkty ECTS Założenia i cele: Doskonalenie umiejętności programowania w C++. Opanowanie korzystania: z obsługi wyjątków, zasobów biblioteki STL, tworzenia i korzystania z dynamicznych bibliotek, umiejętności wywołania API systemu operacyjnego, tworzenia programów wielowątkowych. Tematyka zajęć (słowa kluczowe)/ Odsetek czasu zajęć 1. 1. 2. 3. 4. 5. 6. 7. 8. 9. 2. 1. Templates – szablony Szablony funkcji Przykrywanie (overriding) funkcji szablonu Niejawne i jawne szablony funkcji Szablony klas Argumenty szablonów Nawiasy ostre w szablonach Listy generyczne bezpieczne ze względu na typy danych Definicja klasy generycznej listy bezpiecznej ze względu na typy danych Eliminacja wskaźników w szablonach Podstawy STL. Standard Template Library Motywacja powstania biblioteki. 2. 3. 4. 5. 6. 7. 8. 9. 1. 2. 3. Historia STL. STL a Standard C++ ANSI/ISO. Klasy Nice Obiekty funkcyjne Statyczne sprawdzanie typów. Szablony jako metody klas Specjalizacja szablonów Przegląd STL Kontenery – containers Vector – wektor Iteratory 1. Iteratory wejścia i iteratory wyjścia 2. Iteratory jednokierunkowe 3. Iteratory dwukierunkowe 4. Iteratory o dostępie swobodnym 4. Algorytmy i obiekty funkcyjne 1. Jak utworzyć algorytm generyczny? 2. Algorytmy STL 3. Grupa 1 i 2 4. Grupa 3 5. Grupa 4 6. Przykład słownika do sprawdzania pisowni 5. Klasy dopasowujące – adaptors 1. Klasy dopasowujące dla kontenerów 2. Stos - stack. 3. Kolejka - queue. 4. Kolejka z priorytetami -- priority queue. 6. Iteratory dopasowujące -- Iterator Adaptors 1. Iteratory wsteczne -- Reverse Iterators 2. Iteratory wstawiające -- Insert Iterators 3. Iteratory pamięci -- Raw Storage Iterator 7. Funkcje dopasowujące -- Function Adaptors 1. Funkcje negujące – Negators 2. Funkcje wiążące – Binders 3. Funkcje dopasowujące dla wskaźników do funkcji -- Adaptors for pointers to functions 8. Alokatory i wykorzystanie pamięci 9. Pozostałe komponenty STL 10. Współdziałanie komponentów 11. Wektor – Vector 12. Lista – List 13. Kolejka dwukierunkowa – Deque 14. Znaczniki iteratorów - Iterator Tags 15. Kontenery skojarzeniowe -- Associative Containers 3. Wybrane zagadnienia i przykłady 1. Typ bool 2. Rozróżnienie typu statycznego i dynamicznego 3. Wskaźniki i referencje (odniesienia) 4. Rzutowanie 5. Polimorfizm bywa zdradliwy 6. Biblioteki dll 7. Konstruktory domyślne 8. Windows API FindFirstFile 9. Funkcje przekształcające typy danych 10. Konstruktory jednoargumentowe 11. Windows API SHFileOperation 12. Operatory inkrementacji i dekrementacji w postaci przedrostkowej i przyrostkowej 13. Zmiany definicji operatorów: &&, || i , 14. Uruchamianie innych programów z własnego 15. Operatory new i delete 1. Operator new 2. Umieszczający operator new 3. Operator delete 16. Tablice 17. Wyjątki 18. Pominięte wywołania destruktorów 19. Wyjątki przy wywołaniu konstruktorów 20. Mutex 21. Inteligentne wskaźniki - smart pointers 22. Wątki API Windows Threads 1. Wątek uruchomiony bezpośrednio za pomocą funkcji API 2. Wątek uruchomiony za pomocą klas VCL 3. Synchronizacja wątków w VCL 4. Wątek o podwyższonym priorytecie 5. Wątek zawierający sekcję krytyczną 23. Wyszukiwanie katalogu z pomocą funkcji Shell'a 24. Wininet API 25. Telephony API Sposoby oceny pracy studenta Udział w ocenie końcowej ocena ciągła (bieżące przygotowanie do zajęć i aktywność) śródsemestralne kolokwia pisemne/ustne końcowe zaliczenie pisemne/ustne egzamin pisemny egzamin ustny 55% kontrola obecności Praca końcowa semestralna/roczna 45% inne: Literatura obowiązkowa 1. Stroustrup, Bjarne „Język C++ wydanie 4” WNT Warszawa 1998. Oryginał „The C++ programming language -- 2nd ed.” Addison-Wesley 1993 2. Eckel Bruce, „Thinking in C++. Edycja polska.” Helion. Gliwice. Na stronie internetowej http://www.ibiblio.org/pub/docs/books/eckel/ dostępne są (za darmo) oryginalne wersje tej oraz innych książek autora „Thinking in C.”, „Thinking in Java”. 3. Vandevoorde David, Josuttis Nicolai M., „C++ Szablony.” Helion Gliwice 2003. Oryginał “C++ templates: The complete Guide.” Pearson Education Inc. część Addison Wesley 2003. 4. Meyers Scott, „Język C++ bardziej efektywny” Wydawnictwa Naukowo-Techniczne, Warszawa1998. Oryginał „More Effective C++. 35 New Ways to Improve Your Programs and Designs” Addison-Wesley 1996. 5. Josuttis Nicolai M., „C++ biblioteka standardowa. Podręcznik programisty.” Helion Gliwice 2003. Oryginał „The C++ Standard Library: A Tutorial and Reference” Pearson Education Inc. część Addison-Wesley 1999. 6. Andrew Koenig, Barbara E. Moo, „Accelerated C++. Practical Programing by Example”, Pearson Education część Addison-Wesley Professional 2000. Polskie tłumaczenie „C++ potęga języka” Helion Gliwice 2004 Literatura dodatkowa 1. Grębosz Jerzy, „Symfonia C++” tomy 1 -- 3, Oficyna Kallimach. Oraz inne książki tego autora poświęcone językom C i C++. 2. Hansen Tony, „C++ zadania i odpowiedzi” wydanie drugie WNT Warszawa 1994. Oryginał „The C++ Answer Book” Addison-Wesley 1990 3. Plauger P. J., „Biblioteka standardowa C++” WNT Warszawa 1997. Oryginał „The Standard C++ Library” Prentice Hall, Inc. 4. Lee Meng, Stepanov Alexander “The Standard Template Library” HP Labaratories, 1501 Page Mill Road, Palo Alto, CA 94304 February 1995