Przewodnik przed egzaminem INF04
INF.04 to nie jest tylko „napisz aplikację”. Egzamin sprawdza projektowanie, programowanie, testowanie i dokumentowanie aplikacji: desktopowych, webowych oraz mobilnych. Uczeń musi rozumieć kod, architekturę, interfejs, testy, dokumentację i sposób oceniania pracy przez egzaminatora.
Po co ta strona?
Ten materiał ma być mapą powtórki. Nie zastępuje arkuszy praktycznych, ale pokazuje, co trzeba rozumieć, zanim uczeń usiądzie do zadania. Największy błąd w nauce do INF.04 to ćwiczenie samych rozwiązań bez rozumienia kryteriów oceny. Egzaminator nie ocenia „czy coś wygląda podobnie”, tylko czy konkretne elementy zostały wykonane, udokumentowane i uruchomione.
W praktyce pojawia się zwykle aplikacja konsolowa oraz drugi wariant aplikacji: desktopowej, webowej albo mobilnej. Do tego dochodzą testy, komentarze w kodzie, zrzuty ekranu i plik dokumentacji. W teorii natomiast mogą pojawić się również BHP, systemy liczbowe, UML, Git, Scrum, bezpieczeństwo, testowanie i zasady czystego kodu.
Jak wygląda INF.04?
Część pisemna
Test jednokrotnego wyboru. Pytania sprawdzają nie tylko składnię języków programowania, ale też projektowanie, dokumentację, BHP, testowanie, UML i podstawy informatyki.
Warto robić quizy w trybie nauki: po odpowiedzi uczeń powinien dopisać sobie jedno zdanie wyjaśnienia, dlaczego wybrana odpowiedź jest poprawna.
Aplikacja konsolowa
Najczęściej sprawdza algorytmikę i programowanie obiektowe: klasy, pola, metody, konstruktory, dziedziczenie, kolekcje, pętle, warunki i komunikację z użytkownikiem.
Egzaminator patrzy także na czytelność kodu: wcięcia, znaczące nazwy zmiennych, sensowne typy danych i próbę uruchomienia programu.
Aplikacja z interfejsem
Druga aplikacja może być desktopowa, webowa albo mobilna. Uczeń musi odtworzyć układ, kontrolki, kolory, zdarzenia i działanie zgodnie z treścią zadania.
Nawet jeśli wygląd nie jest idealny, punkty często dają konkretne rzeczy: poprawne kontrolki, obsługa kliknięcia, pobieranie danych, wyświetlanie wyniku i zrzut ekranu.
Obowiązkowe zagadnienia do opanowania
Programowanie obiektowe i algorytmy
Programowanie obiektowe polega na dzieleniu programu na klasy i obiekty, które mają własne dane oraz zachowania. Na INF.04 trzeba znać hermetyzację, dziedziczenie, polimorfizm i abstrakcję, ale przede wszystkim umieć zastosować je w prostym zadaniu.
- klasa, obiekt, pole, metoda, konstruktor, modyfikatory dostępu:
private,public,protected; - dziedziczenie, klasa bazowa i potomna, wywołanie metody klasy nadrzędnej;
- przeciążanie metod, przesłanianie metod, interfejsy i klasy abstrakcyjne;
- pętle, instrukcje warunkowe, tablice, listy, słowniki, operacje na napisach;
- algorytmy wyszukiwania, sortowania, zliczania, filtrowania i przetwarzania danych z pliku;
- obsługa wyjątków i komunikaty zrozumiałe dla użytkownika.
Aplikacje desktopowe
Aplikacja desktopowa działa lokalnie na komputerze użytkownika, zwykle jako program okienkowy. Na egzaminie uczeń powinien rozumieć, że interfejs składa się z okna, kontrolek i zdarzeń, a logika programu powinna być możliwie oddzielona od samego wyglądu.
W praktyce najczęściej pojawiają się technologie Windows Forms lub WPF. WinForms opiera się na formularzach i kontrolkach ustawianych w projektancie, a WPF wykorzystuje XAML do opisu interfejsu i dobrze współpracuje z mechanizmem wiązania danych.
- okno aplikacji, tytuł okna, etykiety, przyciski, pola edycyjne, listy, obrazy, kontrolki tabelaryczne;
- zdarzenia:
Click,Load,FormClosing, zdarzenia klawiatury i myszy; - właściwości kontrolek: tekst, kolor, rozmiar, margines, wyrównanie, widoczność, tryb wielowierszowy;
- dialogi modalne i niemodalne, okno wyboru lub zapisu pliku;
- zapis i odczyt plików tekstowych, CSV, JSON; podstawy lokalnej bazy SQLite;
- oddzielenie logiki od interfejsu: metoda licząca wynik nie powinna być ukryta wyłącznie w obsłudze przycisku.
Aplikacje webowe
Aplikacja webowa działa w przeglądarce i zwykle składa się z interfejsu użytkownika oraz logiki po stronie klienta albo serwera. Na INF.04 ważne jest rozumienie komponentów, zdarzeń, pętli generujących widok, formularzy, stylowania i podstaw komunikacji HTTP.
W zadaniach praktycznych webowych często pojawia się Angular albo React. Uczeń musi wiedzieć, że nowoczesna aplikacja webowa nie polega na ręcznym manipulowaniu DOM przez getElementById, tylko na stanie komponentu, danych i deklaratywnym renderowaniu widoku.
- HTML, CSS, JavaScript/TypeScript, komponent, stan komponentu, props/binding;
- Angular: komponent, szablon,
*ngFor,*ngIf,(click),[(ngModel)]; - React: komponent,
state,map(), warunkowe renderowanie,onClick,onChange; - Bootstrap: siatka, klasy przycisków, formularze, karty, responsywność;
- REST API, metody HTTP: GET, POST, PUT, PATCH, DELETE; kody odpowiedzi 200, 201, 400, 401, 403, 404, 500;
- bezpieczeństwo: XSS, SQL Injection, CSRF, JWT, CORS, HTTPS/TLS, walidacja danych wejściowych.
Aplikacje mobilne
Aplikacja mobilna jest projektowana pod mały ekran, dotyk i konkretne systemy urządzeń. Na egzaminie trzeba rozumieć układy ekranu, kontrolki, zdarzenia kliknięcia lub dotknięcia, pobieranie danych z pól oraz uruchomienie aplikacji w emulatorze.
W zadaniach pojawia się Android Studio, Kotlin/Java albo .NET MAUI/Xamarin. W MAUI interfejs opisuje się często w XAML, a logikę w C#, natomiast w Androidzie interfejs może być opisany XML-em lub tworzony w Kotlinie/Java.
- układy: pionowe i poziome, np.
LinearLayout,StackLayout,VerticalStackLayout; - kontrolki:
Label/TextView,Entry/EditText,Button,Image,Switch,Slider, lista; - zdarzenia: kliknięcie przycisku, zmiana wartości, dotknięcie elementu listy;
- cykl życia aktywności:
onCreate,onStart,onResume,onPause,onStop,onDestroy; - nawigacja między ekranami, przekazywanie danych, uprawnienia, manifest aplikacji;
- SQLite/Room, zasoby graficzne, emulator, przygotowanie zrzutu ekranu z uruchomionej aplikacji.
Testowanie i dokumentowanie
Testowanie polega na sprawdzeniu, czy program działa zgodnie z wymaganiami. Dokumentacja wyjaśnia, co zrobiono, w jakim środowisku, jak program uruchomić i jak potwierdzono jego działanie.
- test jednostkowy, integracyjny, regresyjny, wydajnościowy, akceptacyjny;
- techniki testowania: wartości brzegowe, klasy równoważności, testy czarnoskrzynkowe i białoskrzynkowe;
- asercje: porównanie wyniku otrzymanego z wynikiem oczekiwanym;
- UML: diagram klas, diagram przypadków użycia, diagram aktywności, relacje dziedziczenia, agregacji i kompozycji;
- dokumentacja techniczna, dokumentacja użytkownika, instrukcja instalacji i uruchomienia;
- zrzuty ekranu z widocznym środowiskiem, paskiem zadań i uruchomioną aplikacją.
Przykładowy arkusz oceny egzaminatora
Poniższa karta jest przykładową listą kontrolną wzorowaną na opublikowanych zasadach oceniania INF.04. Nie jest oficjalną punktacją CKE, ale dobrze pokazuje, na co egzaminator zwykle patrzy podczas sprawdzania pracy.
| Obszar | Co sprawdza egzaminator | Co powinien zrobić uczeń |
|---|---|---|
| R.1 Implementacja i uruchomienie | Czy kod jest czytelny, ma wcięcia, znaczące nazwy, sensowne typy danych i czy podjęto próbę uruchomienia. | Stosuj jedną konwencję, nie nazywaj zmiennych x, foo, tablica bez sensu, zrób zrzut kompilacji lub uruchomienia. |
| R.2 Aplikacja konsolowa | Czy klasy, metody, pętle, algorytm i komunikaty są zgodne z poleceniem. | Najpierw napisz wersję działającą w konsoli, potem dopiero przenoś logikę do aplikacji z interfejsem. |
| R.3 Aplikacja desktopowa | Czy okno ma wymagany tytuł, kontrolki, kolory, układ, zdarzenia i wynik działania. | Odtwórz kontrolki z obrazka, obsłuż kliknięcia, pobieraj dane z pól, wyświetl wynik i zapisz plik, jeśli wymaga tego arkusz. |
| R.3 Aplikacja webowa | Czy aplikacja używa Angular/React, komponentów, pętli, warunków, zdarzeń i stanu zamiast ręcznej manipulacji DOM. | Używaj mechanizmów frameworka: *ngFor, *ngIf, (click), map(), state, onClick. |
| R.3 Aplikacja mobilna | Czy układ ekranu, kolory, obrazy, kontrolki, zdarzenia i emulator są zgodne z arkuszem. | Zadbaj o XAML/XML, podpowiedzi w polach, ograniczenie wpisywania danych, kliknięcia przycisków i zrzut z emulatora. |
| R.4 Testy | Czy istnieją testy z asercjami, dane wejściowe, wynik oczekiwany i potwierdzenie uruchomienia. | Napisz testy przed końcem egzaminu. Jeden dobry test z asercją bywa cenniejszy niż kolejna kosmetyczna poprawka UI. |
| R.4 Dokumentacja | Czy dokumentacja zawiera system operacyjny, środowiska, języki, emulator, zrzuty i komentarze nagłówkowe metod. | Przygotuj plik egzamin zgodnie z poleceniem. Wpisz realne narzędzia, których użyłeś, a nie ogólniki. |
Dokumentacja aplikacji: dokładny wzór
Dokumentacja nie ma być wypracowaniem. Ma szybko potwierdzić, że uczeń wie, co zrobił, jakiego środowiska użył, jak uruchomił aplikację i jak sprawdził jej działanie. Najlepiej przygotować ją jako uporządkowany plik tekstowy lub dokument zgodny z poleceniem arkusza.
1. Dane ogólne
- Numer zdającego: wpisany zgodnie z arkuszem.
- Nazwa kwalifikacji: INF.04 Projektowanie, programowanie i testowanie aplikacji.
- Nazwa zadania lub krótki opis aplikacji.
2. Wykorzystane oprogramowanie
- System operacyjny, np. Windows 10/11 lub inny użyty na stanowisku.
- Środowisko programistyczne, np. Visual Studio, Visual Studio Code, Android Studio.
- Język programowania, np. C#, JavaScript/TypeScript, Kotlin, Java, Python.
- Framework lub biblioteka, np. Windows Forms, WPF, Angular, React, .NET MAUI.
- Emulator lub przeglądarka, jeśli aplikacja była mobilna albo webowa.
3. Opis działania aplikacji
- Co robi aplikacja po uruchomieniu.
- Jakie dane podaje użytkownik.
- Co dzieje się po kliknięciu przycisku lub zmianie pola.
- Jaki wynik jest wyświetlany albo zapisywany.
4. Nagłówek metody w komentarzu
W wielu arkuszach wymagany jest komentarz opisujący metodę. Powinien być zgodny z realnym kodem: jeśli metoda ma dwa parametry, dokumentacja musi wymienić dwa parametry; jeśli nic nie zwraca, wpisujemy void albo „brak”.
/************************************************
nazwa funkcji: szyfruj
opis funkcji: przesuwa litery tekstu o podany klucz i zwraca zaszyfrowany napis
parametry: tekst - napis wprowadzony przez użytkownika
klucz - liczba określająca przesunięcie w alfabecie
zwracany typ i opis: string - zaszyfrowany tekst
autor: 00000000000
************************************************/
5. Przypadki testowe
| Nr | Dane wejściowe | Wynik oczekiwany | Wynik otrzymany | Status |
|---|---|---|---|---|
| 1 | tekst: abc, klucz: 3 |
def |
def |
zaliczony |
| 2 | tekst: xyz, klucz: 3 |
abc |
abc |
zaliczony |
| 3 | puste pole lub niepoprawna liczba | komunikat albo bezpieczna obsługa błędu | wpisać po uruchomieniu | do sprawdzenia |
6. Zrzuty ekranu
- Zrzut uruchomionej aplikacji konsolowej lub kompilacji.
- Zrzut uruchomionej aplikacji desktopowej, webowej albo mobilnej.
- Zrzut testów, jeśli arkusz wymaga testów jednostkowych.
- Na zrzucie powinno być widoczne środowisko, w którym powstała aplikacja, oraz cały obszar ekranu, jeśli wymaga tego arkusz.
Plan nauki przed egzaminem:
Przejrzyj zakładki Teoria 1, Teoria 2, Teoria 3
Algorytmy, OOP, desktop, web, mobile
Po każdym błędzie dopisz hasło do listy powtórkowej. Jeżeli mylisz pojęcie klasy, obiektu, metody i konstruktora, wróć do podstaw OOP przed rozwiązywaniem arkuszy.
UML, testowanie, dokumentacja
To dział, który bezpośrednio pomaga w części praktycznej. Uczeń powinien umieć opisać metodę, rozpoznać diagram i przygotować przypadek testowy.
BHP, podstawy, zespół, bezpieczeństwo
Tu są punkty, które łatwo zdobyć, ale łatwo je zaniedbać. Powtarzaj ergonomię, systemy liczbowe, Git, Scrum, SOLID, licencje i bezpieczeństwo aplikacji.
Ostatnia lista przed egzaminem
- Umiem napisać klasę z polami prywatnymi, konstruktorem i metodami.
- Umiem użyć pętli do przetwarzania tablicy/listy i zakończyć wyszukiwanie po znalezieniu wyniku.
- Umiem zrobić prosty formularz desktopowy, webowy albo mobilny z obsługą kliknięcia.
- Umiem pobrać dane z kontrolki i wyświetlić wynik w innej kontrolce.
- Umiem zrobić zrzut ekranu z uruchomionej aplikacji i testów.
- Umiem opisać metodę komentarzem: nazwa, działanie, parametry, zwracana wartość, autor.
- Wiem, czym różnią się testy jednostkowe, integracyjne, regresyjne i akceptacyjne.
- Rozumiem podstawy UML, Git, Scrum, BHP, bezpieczeństwa webowego i systemów liczbowych.