Szczegółowe cele kształcenia

W wyniku procesu kształcenia uczeń/słuchacz powinien umieć:  zastosować zasady bezpiecznej pracy z komputerem,
scharakteryzować budowę i zasadę działania programu komputerowego,
wyjaśnić podstawowe pojęcia związane z programowaniem,
zastosować podstawowe algorytmy i sposoby ich zapisu,
posłużyć się edytorem, kompilatorem,
zastosować czytelny styl programowania i opracować dokumentację programu,
zlokalizować i usunąć błędy w programach, przetestować programy,
zastosować podstawowe typy danych, stałe, zmienne i funkcje,
zaprojektować wyrażenia z operatorami arytmetycznymi, logicznymi oraz relacji,
zastosować w programach instrukcje: proste, złożone, sterujące oraz iteracyjne,
posłużyć się podprogramami: własnymi i standardowymi z biblioteki,
zaplanować podział zadania/problemu na moduły,
zastosować strukturalne typy danych: tablice, pliki, zbiory, rekordy,
posłużyć się wskaźnikami do budowy dynamicznych struktur danych: stosów, kolejek, list, drzew, grafów,
wykorzystać w programach dźwięki, grafikę, animacje,
zaprojektować programy współpracujące z systemem operacyjnym,
zaprojektować programy odporne na błędne dane,
wyjaśnić różnice pomiędzy programowaniem strukturalnym i obiektowym,
scharakteryzować pojęcia dotyczące programowania obiektowego:
obiekt, klasa, metoda, atrybut,
zastosować podstawowe konstrukcje języka obiektowego,
zaprojektować klasy i moduły, zastosować hermetyzacje,
posłużyć się konstruktorem i destruktorem,
zastosować dziedziczenie, funkcje wirtualne, zaprzyjaźnione, operatorowe,
zaprojektować program o charakterze obliczeniowym, graficznym,
wyjaśnić przeznaczenie i właściwości apletów,
zaprojektować .aplikacje współbieżne, wielowątkowe,
wykonać złożony system informatyczny pracując w zespole,
zmodyfikować kod źródłowy zapisany w języku programowania,
skorzystać z informacji na temat programowania, zgromadzonych w sieci Internet oraz w innych źródłach,

Materiał nauczania

1. Wprowadzenie do programowania strukturalnego w Pascalu

Podstawowe pojęcia dotyczące programowania: program komputerowy, języki programowania, kompilator, interpretator, konsolidator. Algorytmy i sposoby ich zapisu. Etapy tworzenia programu: planowanie, pisanie, kompilacja, konsolidacja, testowanie i optymalizacja. Zasady programowania strukturalnego. Edytor środowiska systemu Pascal. Podstawy zapisywania programu w języku Pascal: słowa kluczowe, identyfikatory, liczby, symbole podstawowe, komentarze, stałe logiczne. Typy danych: całkowity, rzeczywisty, znakowy, łańcuchowy, logiczny, okrojony, wyliczeniowy. Struktura programu w języku Pascal. Instrukcje wejścia/wyjścia. Deklaracje zmiennych i stałych. Instrukcja przypisania. Wyrażenia i operatory. Standardowe funkcje i procedury. Instrukcje: warunkowe, iteracyjne, złożone.

Ćwiczenia

Dobieranie algorytmów do rozwiązania zadanych problemów.
Projektowanie algorytmu w formie opisowej.
Opisywanie algorytmów w postaci listy kroków.
Zapisywanie algorytmów w postaci schematów blokowych.
Praca w środowisku systemu Pascal: edycja, kompilacja, modyfikacja i uruchomienie przykładowego programu, zakończenie pracy.
Analizowanie przykładowych programów, wykrywanie błędów i ich usuwanie.
Porządkowanie trzech, czterech i pięciu liczb.
Projektowanie prostych programów obliczeniowych.
2. Podprogramy

Ogólna postać funkcji i procedury. Zmienne lokalne i globalne. Parametry formalne i aktualne. Przekazywanie parametrów przez wartość i przez zmienną. Wywoływanie funkcji i procedur. Rekurencja. Funkcje i procedury obsługi ekranu. Grafika w Pascalu. Moduły użytkownika - zasady budowy i korzystania z modułów.

Ćwiczenia

Dokonywanie podziału programu na podprogramy
Stosowanie różnych metod przekazywania parametrów do podprogramów.
Stosowanie algorytmów interacyjnych i rekurencyjnych, algorytmu
Euklidesa, obliczania potęgi, wyznaczania liczb Fibonacciego.
Prezentowanie graficzne wyników obliczeń.
Tworzenie modułów użytkownika.
Rozwiązywanie równania kwadratowego, liniowego, układu równań liniowych.
3. Typy strukturalne

Tablice. Pliki tekstowe i operacje na tekstach. Pliki elementowe. Operacje na plikach. Zbiory. Rekordy. Ogólne zasady budowy systemów informatycznych.

Ćwiczenia

Stosowanie tablic i wykonywanie podstawowych operacji na tablicach: sortowanie, wyszukiwanie.
Operowanie plikami tekstowymi i elementowymi.
Wykonywanie operacji na tekstach.
Korzystanie z podstawowych algorytmów umożliwiających wykonywanie operacji na zbiorach.
Wykorzystywanie rekordów do projektowania baz danych.
Wykorzystywanie plików do projektowania systemu informatycznego typu baza danych.

4. Dynamiczne struktury danych

Wskaźniki. Funkcje i procedury dynamicznego przydziału pamięci. Tworzenie i przetwarzanie dynamicznych struktur danych, stos, kolejka, listy, drzewa.

Ćwiczenia

Posługiwanie się wskaźnikami i zmiennymi dynamicznymi.
Opracowywanie biblioteki podprogramów do operowania listami, stosami, kolejkami, drzewami i grafami.

5. Wprowadzenie do programowania obiektowego w C++

Przypomnienie informacji o budowie i właściwościach języka programowania. Języki obiektowe. Kompilator i edytor środowiska programistycznego języka C++. Wielkie i małe litery. Struktura programu w języku C++. Komentarze. Słowa kluczowe. Funkcja return(). Dyrektywa #include. Zmienne i stałe. Funkcje wejścia/wyjścia. Operatory i wyrażenia. Instrukcje: pusta, warunkowe, iteracyjne, sterujące przebiegiem programu. Funkcje. Funkcje rekurencyjne. Tablice i wskaźniki. Zarządzanie pamięcią. Struktury, unie, pola bitowe.

Ćwiczenia

Instalowanie i konfigurowanie kompilatora języka C++.
Uruchamianie środowiska C++, edycja, modyfikacja, kompilacja i wykonanie zadanego programu.
Wykrywanie i analizowanie błędów w programach.
Dobieranie odpowiednich typów danych oraz deklarowanie stałych i zmiennych potrzebnych do rozwiązania zadanego problemu.
Korzystanie z podstawowych funkcji wejścia/wyjścia.
Posługiwanie się specyfikatorami formatowania.
Projektowanie prostych programów obliczeniowych.
Korzystanie z operatora warunkowego przy projektowaniu wyrażeń.
Stosowanie instrukcji warunkowych i wyboru w programach.
Stosowanie instrukcji iteracyjnych.
Stosowanie różnych metod przekazywania parametrów do funkcji.
Stosowanie zmiennych statycznych i automatycznych, globalnych i lokalnych.
Manipulowanie tablicami: zamiana wierszy i kolumn (tablice dwuwymiarowe).
Porządkowanie tablic, bąbelkowe, przez wybór, quicksort.
Wyszukiwanie danych w tablicach.
Wykonywanie operacji na łańcuchach.
Stosowanie arytmetyki wskaźników.
Deklarowanie struktur i unii oraz posługiwanie się zmiennymi typu strukturalnego.
Tworzenie, modyfikowanie i wykorzystywanie dynamicznych struktur danych do realizacji stosów, kolejek i drzew.

6. Klasy i obiekty

Różnice pomiędzy programowaniem strukturalnym i obiektowym. Definicja obiektu. Obiektowość jako podstawa naturalnego postrzegania świata. Przykłady odwzorowania rzeczywistości w kategoriach obiektów. Opracowanie obiektowego opisu przykładowego programu. Definiowanie klas. Składniki klasy. Definiowanie obiektów. Odwoływanie się do składowych obiektu. Hermetyzacja danych. Konstruktory i destruktory. Zagnieżdżona definicja klasy. Przeładowanie operatorów. Przeładowanie nazw funkcji. Definiowanie konwersji obiektów. Zaprzyjaźnione funkcje i klasy.

Ćwiczenia

Wskazywanie różnic pomiędzy podejściem strukturalnym i obiektowym do rozwiązania danego problemu.
Opisywanie otaczającej nas rzeczywistości w kategorii obiektów.
Analizowanie obiektowe przykładowych systemów.
Definiowanie klas przykładowych obiektów.
Deklarowanie składników klas będących funkcjami oraz obiektami.
Określanie dostępu do składników klasy.
Tworzenie obiektów danych klas.
Posługiwanie się funkcjami składowymi.
Stosowanie konstruktorów i destruktorów w klasach.
Korzystanie z przeładowania operatorów oraz nazw funkcji.
Stosowanie funkcji i klas zaprzyjaźnionych w programach.
Przekształcanie wcześniej opracowanych programów w programy obiektowe.

7. Dziedziczenie i polimorfizm

Opis pojęcia „dziedziczenie". Dziedziczenie elementarne. Dziedziczenie złożone. Funkcje wirtualne, polimorfizm. Klasy abstrakcyjne.

Ćwiczenia

Korzystanie w programach z różnego rodzaju dziedziczenia.
Przypisywanie i inicjalizacja obiektów w warunkach dziedziczenia.
Wykorzystywanie funkcji wirtualnych w programach.
Tworzenie biblioteki klas użytkownika.
Definiowanie klas do operacji na listach i drzewach.

8. Operacje wejścia/wyjściaStrumienie, operacje na strumieniach. Podstawowe operatory. Sterowanie formatem. Manipulatory.

Ćwiczenia

Opracowywanie przykładowego programu działającego na plikach.
Wybieranie miejsca czytania lub pisania w pliku.
Projektowanie i budowanie systemu do gromadzenia i przetwarzania danych.

9. Podstawy projektowania aplikacji dla środowiska graficznego

Tworzenie projektu oraz struktury aplikacji. Zasady projektowania okna aplikacji, ikona programu, przyciski maksymalizuj, minimalizuj. Dodawanie podstawowych obiektów kontrolnych do okna aplikacji. Ułożenie obiektów kontrolnych. Dołączanie zmiennych do obiektów kontrolnych. Przypisywanie obiektom kontrolnym zasad funkcjonowania, dodawanie do aplikacji kodu źródłowego. Predefiniowane okna dialogowe. Projektowanie własnych okien dialogowych. Projektowanie i dodawanie menu do aplikacji.

Ćwiczenia

Tworzenie nowego projektu oraz generowanie struktury aplikacji przy wykorzystaniu kreatora.
Modyfikowanie interfejsu aplikacji: umieszczanie przycisków sterujących, dołączanie kodu.
Posługiwanie się podstawowymi obiektami kontrolnymi.
Projektowanie prostej aplikacji obliczeniowej.
Używanie predefiniowanych okien dialogowych i informacyjnych.
Tworzenie niestandardowych okien dialogowych aplikacji.
Dodawanie nowych zasobów menu oraz ich projektowanie.
Projektowanie menu z systemem klawiszy skrótów.
Tworzenie menu wielopoziomowego, dodawanie separatorów.
Dołączanie menu do okna aplikacji.
Dodawanie funkcji obsługujących polecenia menu.
Tworzenie menu kontekstowego.
Tworzenie prostej aplikacji z menu.

10. Projektowanie aplikacji graficznej

Interfejs urządzenia graficznego. Generowanie podstawowej struktury aplikacji. Dodawanie możliwości graficznych, rysowanie myszką. Tworzenie listy dostępnych czcionek. Korzystanie z czcionek.

Ćwiczenia

Korzystanie z biblioteki funkcji umożliwiających wykreślanie linii i kształtów.
Wypełnianie narysowanych figur.
Prezentowanie graficzne wyników działania programów obliczeniowych.
Tworzenie animacji.
Posługiwanie się funkcjami umożliwiającymi rysowanie tekstu.
Zarządzanie czcionkami: tworzenie, używanie, usuwanie.

11. Projektowanie aplikacji typu baza danych

Zasady tworzenia podstawowej struktury aplikacji. Przygotowanie własnej klasy rekordu. Podstawowe operacje wykonywane na rekordach. Obsługa operacji zapisu i odczytu danych z poziomu aplikacji.

Ćwiczenia

Zakładanie bazy danych.
Wyszukiwanie informacji, usuwanie i dopisywanie danych.
Wykorzystywanie plików do przechowywania danych.

12. Wprowadzenie do programowania w języku Java

Narzędzia. Beta-kod i maszyna wirtualna. Porównanie języków programowania Java i C++. Struktura programu w języku Java. Typy podstawowe. Zmienne, operatory i instrukcje.

Ćwiczenia

Stosowanie wybranych metod przybliżonego rozwiązywania równań.
Ocenianie wpływu błędnych danych na wynik działań arytmetycznych.
Wykorzystywanie całek oznaczonych do obliczeń.

13. Obiekty i klasy w Javie

Klasa jako typ danych. Metody klasy. Konstruktory. Specyfikatory dostępu. Dziedziczenie. Tablice. Obsługa sytuacji wyjątkowych. Instrukcje: try ... catch, throws. Hierarchia dziedziczenia klas wyjątków.

Ćwiczenia

Projektowanie klas przykładowych obiektów.
Wykonywanie operacji na macierzach i wektorach.
Zabezpieczanie programów przed wystąpieniem błędów.
Definiowanie klasy wyjątków.

14. Aplety

Zasady projektowania apletów. Struktura apletu. Tekst w apietach. Metody odpowiedzialne za rysowanie w aplecie. Dźwięki i animacje. Obsługa zdarzeń.

Ćwiczenia

Osadzanie przykładowych apletów w stronach internetowych.
Tworzenie prostych banerów.
Wykorzystywanie przycisków do wywoływania akcji.
Programowanie obsługi zdarzeń myszy i klawiatury.

15. Aplikacje w Javie

Okno i menu aplikacji. Grafika. Komponenty: etykiety, pola wyboru, przyciski, listy, listy opcji, listy przewijania, pola tekstowe. Operacje wejścia/wyjścia w Javie.

Ćwiczenia

Tworzenie okna aplikacji oraz menu.
Przedstawianie wyników działania aplikacji na wykresach.
Tworzenie graficznych gier logicznych.
Przykłady wykorzystania komponentów w aplikacjach.
Operacje na plikach.

Uwagi o realizacji

Podstawowym celem realizacji programu przedmiotu Programowanie strukturalne i obiektowe jest kształtowanie umiejętności posługiwania się różnymi językami programowania. Języki Pascal, C++ oraz Java zostały wybrane jako główne języki programowania, które umożliwiają zapoznanie się z podstawowymi konstrukcjami programowania strukturalnego oraz obiektowego, sposobami ich działania i wykorzystania.