Wykłady i plan “maksimum” kursu. UWAGA: prowadząc kurs jeszcze raz po wykładzie 3 zrobiłbym wykład o algorytmach bazujących na wskaźnikach, może o unifikacji opartej o “union-find” (na tym wykładzie też wycieki pamięci).
- Wykład 1: Przegląd języka Object Pascal Δ na bazie implementacji Free Pascal.
- Wykład 2 Δ: Bazowe typy danych, typy wyliczeniowe i podzakresy. Instrukcje sterujące. Tablice. Typy rekordowe, rekordy z wariantami.
- Wykład 3 Δ: Zbiory. Wskaźniki, typy rekurencyjne.
ReadLn
. Biblioteka SDL
. Procedury i funkcje. Obiekty: typy object
. Moduł matrix
.
- Wykład 4 Δ: Typy
class
. Wyjątki. Kontrola wycieków pamięci: moduły HeapTrc
, lineinfo
. Moduł SysUtils
. Definiowanie modułów (unit
): interfejs i implementacja. Zakresy nazw. Przeciążanie funkcji i operatorów.
- Wykład 5 Δ: Pliki. Typy generyczne. Kontenery generyczne: moduł
fgl
. Moduł StrUtils
: proste operacje na stringach.
- Wykład 6 Δ: Dziedziczenie. Dostępność elementów klasy (
strict private
, private
, protected
, public
). Właściwości property
. Iteratory dla składni for…in
. Przykład: wprowadzenie do ray tracingu.
- Wykład 7: System Lazarus Δ. Programowanie interfejsu okienkowego, programy sterowane zdarzeniami. Przegląd komponentów Free Pascala i Lazarusa.
- Wykład 8 Δ: Polimorfizm poprzez interfejsy klas. Klasy ze zliczaniem dowiązań. Referencje klas i konstruktory wirtualne.
- Wykład 9 Δ: Typy proceduralne (w tym wskaźniki na metody
of object
i funkcje wewnętrzne is nested
). Wielowątkowość.
- Wykład 10 Δ: Łączenie się z zewnętrzną bazą danych (
sqldb
, fcl-db
). Wyświetlanie danych tabelarycznych (TStringGrid
, TDbGrid
).
- Debugowanie. Debugger w Lazarusie. (Opcjonalnie: bezpośrednio
gdb
.) Testy automatyczne fpcunit
. Tworzenie dokumentacji przez pasdoc
/ fpdoc
.
- Optymalizacja.
valgrind
: massif
— zużycie pamięci, callgrind
— graf wywołań, cachegrind
— optymalizacja cache. gprof
.
- Integracja z innymi językami programowania: używanie bibliotek z interfejsem w C, linkowanie/ładowanie bibliotek, łączenie kodu FPC z kodem w C.
Linki: