Arkusz INF.04 : 2025 - czerwiec - zad. 02
Oznaczenie: INF.04-02-25.06-SG Limit czasu: 180 minut
Zadanie egzaminacyjne
- UWAGA!
- Numer, którym został podpisany arkusz egzaminacyjny (PESEL lub w przypadku jego braku, numer paszportu) jest w zadaniu nazywany numerem zdającego.
Wykonaj aplikację konsolową oraz desktopową i testy jednostkowe dla aplikacji konsolowej według wskazań. Wykorzystaj konto Egzamin bez hasła.
Utwórz folder i nazwij go numerem zdającego. W folderze utwórz podfoldery: konsolowa, desktopowa, testy. Po wykonaniu każdej aplikacji, jej pełny kod (cały folder projektu), spakuj do archiwum. Następnie pozostaw w podfolderze jedynie skopiowane z projektu pliki źródłowe, których treść była modyfikowana, plik wykonywalny, jeśli jest to możliwe, oraz spakowane archiwum.
Część I. Aplikacja konsolowa
Za pomocą narzędzi do tworzenia aplikacji konsolowych utwórz program implementujący algorytm szyfru Cezara.
Założenia aplikacji:
- Zastosowany
obiektowyjęzyk programowania zgodny z zainstalowanym na stanowisku egzaminacyjnym: C++ lub C#, lub Java, lub Python - Podejście
obiektowelubstrukturalne - Szyfrowanie odbywa się w osobnej metodzie lub funkcji, która zawiera:
- Dwa argumenty:
tekst jawnyorazklucz(przy podejściu obiektowym dopuszcza się bez parametrów) - Wartość zwracaną:
tekst zaszyfrowany - Implementację algorytmu szyfrowania
kodem Cezara
- Dwa argumenty:
- W programie należy stosować znaczące, angielskie lub polskie nazewnictwo
- Program powinien być zapisany czytelnie, z zachowaniem zasad czystego formatowania kodu
- Do kodu należy dołączyć
testy jednostkoweopisane wczęści IIIzadania egzaminacyjnego
Opis algorytmu:
Szyfr Cezara polega na zamianie każdej litery tekstu jawnego na literę tekstu szyfrowanego przesuniętego w alfabecie o stałą liczbę znaków zwaną kluczem.
Przykładowo dla klucza k = 3, każdą literę alfabetu z Tabeli 1 należy zamienić odpowiednią literą z Tabeli 2. Natomiast dla klucza k = -3, każdą literę alfabetu z Tabeli 1 należy zamienić odpowiednią literą z Tabeli 3.
Tabela 1. Szyfrowane litery

Tabela 2. Litery z tabeli 1 po zaszyfrowaniu kluczem k = 3

Tabela 3. Litery z tabeli 1 po zaszyfrowaniu kluczem k = -3

Założenia dotyczące algorytmu:
- Szyfr działa jedynie dla małych liter podstawowego alfabetu łacińskiego, przedstawionego w
Tabeli 1(kody ASCII od97do122) - Znak
spacjipozostaje w zaszyfrowanym tekściebez zmian - Tekst jawny i zaszyfrowany są dowolnego typu
napisowego, ich długość zależy od wczytanego tekstu - Klucz szyfrowania jest liczbą
całkowitą(wartości dodatnie i ujemne, może być większy od 26). Dla kluczak = 0tekst jawny jest równy tekstowi zaszyfrowanemu - Tekst oraz klucz są wczytywane z klawiatury w programie głównym
- W podejściu obiektowym
szyfrowany tekstikluczmogą byćpolami klasy - Nie jest wymagana walidacja tekstu jawnego – zakłada się, że wprowadzono go bez błędów (tylko małe litery i spacje)
Sprawdź działanie metody lub funkcji. Program powinien nawiązać czytelną komunikację z użytkownikiem. Po uruchomieniu programu wykonaj zrzuty ekranu dokumentujące interakcje programu dla różnych wartości klucza (0, ujemna, dodatnia). Zrzuty ekranu powinny obejmować cały obszar ekranu, z widocznym paskiem zadań oraz środowiskiem programistycznym. Liczba zrzutów ekranu powinna odpowiadać wszystkim możliwym interakcjom użytkownika z programem. Zrzuty ekranu zapisz w folderze konsolowa pod nazwami konsola1.png, konsola2.png, itd.
Kod aplikacji przygotuj do nagrania na płytę. W folderze konsolowa powinno znaleźć się archiwum całego projektu o nazwie konsola.zip, skopiowany z projektu plik z kodem źródłowym programu oraz plik wykonywalny, jeżeli istnieje.
Część II. Aplikacja desktopowa
Za pomocą dostępnego na stanowisku egzaminacyjnym środowiska programistycznego wykonaj aplikację desktopową będącą interfejsem graficznym programu utworzonego w konsoli. Na Obrazie 2 przedstawiono ideę aplikacji desktopowej. W zależności od użytego środowiska programistycznego wygląd może nieznacznie się różnić. Do wykonania zadania można posłużyć się funkcją / metodą z aplikacji konsolowej.
Obraz 1. Stan początkowy

Obraz 2. Działanie aplikacji

Opis wyglądu aplikacji:
- Tytuł okna „Szyfrowanie. Wykonane przez ”, dalej wstawiony
numer zdającego - Kolor tła okna
CadetBlue(#5F9EA0) - Kontrolki rozmieszczone zgodnie z
Obrazem 1, z określonym formatowaniem:- Napisy: „Podaj wartość klucza”, „Podaj tekst”, „Tekst zaszyfrowany” w kolorze czcionki
AntiqueWhite(#FAEBD7) - Pole edycyjne do wprowadzania wartości klucza
- Pole edycyjne
wielowierszowedo wprowadzania tekstu z włączonymzawijaniem wierszy - Pole, w którym wyświetlony jest zaszyfrowany tekst o cechach:
- Kolor czcionki
AliceBlue(#F0F8FF) - Obramowanie: linia
ciągłakoloruAntiqueWhite(#FAEBD7), rogizaokrąglone
- Kolor czcionki
- Przyciski o kolorze tła
LightBlue(#ADD8E6)
- Napisy: „Podaj wartość klucza”, „Podaj tekst”, „Tekst zaszyfrowany” w kolorze czcionki
Założenia dotyczące działania aplikacji:
- Klucz szyfrowania i tekst szyfrowany są pobierane z odpowiednich kontrolek
- Szyfrowanie odbywa się po wprowadzeniu tekstu i klucza i wybraniu przycisku „Zaszyfruj”
- Jeżeli w polu przeznaczonym na wpisanie klucza nie została wpisana wartość liczbowa całkowita, po naciśnięciu przycisku, do szyfrowania, należy zastosować wartość klucza
0 - Po wybraniu przycisku „Zapisz szyfr w pliku”, zostanie otwarte systemowe okno dialogowe (
Obraz 3) do zapisu pliku. W pliku ma zostać zapisany zaszyfrowany tekst.
Obraz 3. Zapisywanie szyfru do pliku

Aplikacja powinna być zapisana czytelnie, z zasadami czystego formatowania kodu, należy stosować znaczące nazwy zmiennych i funkcji.
Podejmij próbę kompilacji i uruchomienia aplikacji. Wykonaj zrzuty ekranu dokumentujące wszystkie stany aplikacji. Zrzuty ekranu powinny obejmować cały obszar ekranu, z widocznym paskiem zadań oraz środowiskiem programistycznym. Zrzuty zapisz w folderze desktopowa pod nazwami desktop1.png, desktop2.png, itd.
Kod aplikacji przygotuj do nagrania na płytę. W folderze desktopowa powinno znaleźć się archiwum całego projektu o nazwie desktopowa.zip, skopiowane z projektu pliki źródłowe, które były modyfikowane w czasie egzaminu (interfejs użytkownika i logika aplikacji) oraz plik wykonywalny, jeżeli istnieje.
Część III. Testy jednostkowe
Wykonaj testy jednostkowe funkcji lub metody realizującej szyfr Cezara z aplikacji konsolowej. Do napisania testów wykorzystaj dostępną na stanowisku egzaminacyjnym bibliotekę do testów jednostkowych dla języka programowania, w którym została napisana aplikacja konsolowa. W testach jednostkowych należy sprawdzić przypadki testowe opisane w Tabeli 4.
Tabela 4. Scenariusz testowania z przypadkami testowymi

Nazwy metod testujących należy dobrać tak, aby wyrażały cel danego testu. Nazwy metod należy zapisać zgodnie z konwencją nazewnictwa w danym języku programowania.
Każdy przypadek testowy powinien być sprawdzany za pomocą asercji oddzielną metodą. Metody testujące należy zapisać w oddzielnym pliku w lokalizacji zgodnej z wymaganiami danego języka programowania i wykorzystanej biblioteki do zapisu testów jednostkowych.
Po napisaniu metod testujących, uruchom wszystkie metody. Wykonaj zrzut/zrzuty ekranu dokumentujące uruchomienie testów, zrzuty zapisz w folderze testy pod nazwami test1.png, test2.png, itd. Na zrzutach powinny być widoczne wyniki działania metod testujących. Zrzuty ekranu powinny obejmować cały obszar ekranu, z widocznym paskiem zadań oraz środowiskiem programistycznym.
Jeżeli metoda szyfrująca została napisana w części I niepoprawnie, testy powinny wykazać błędy. W tej części egzaminu ocenie podlegać będzie zapis i uruchomienie testu, a nie metoda szyfrująca.
W folderze testy zapisz bezpośrednio pliki, których treść była modyfikowana oraz zrzuty ekranu. Utwórz archiwum ZIP zawierające cały projekt i zapisz je w folderze testy.
Utwórz plik z dokumentacją i nazwij go egzamin. Dokument powinien zawierać informacje o narzędziach wykorzystanych na egzaminie:
- Nazwę
systemu operacyjnego - Nazwy
środowisk programistycznych - Nazwy
języków programowania
Dokument egzamin zapisz w folderze z numerem zdającego.
- UWAGA!
- Nagraj płytę z rezultatami pracy. W folderze z numerem zdającego powinny znajdować się podfoldery desktopowa, konsolowa, testy oraz plik egzamin. W folderze desktopowa: spakowany cały projekt aplikacji desktopowej, pliki ze źródłami interfejsu i logiki, opcjonalnie plik wykonywalny, zrzuty ekranu. W folderze konsolowa: spakowany cały projekt aplikacji konsolowej, pliki źródłowe, opcjonalnie plik wykonywalny, zrzuty ekranu. W folderze testy: spakowany projekt z testami, pliki z zapisem metod testujących, zrzuty ekranu. Opisz płytę numerem zdającego i pozostaw na stanowisku, zapakowaną w pudełku wraz z arkuszem egzaminacyjnym.
Czas przeznaczony na wykonanie zadania wynosi 180 minut.
Ocenie podlegać będą 4 rezultaty:
- implementacja, kompilacja, uruchomienie programów
- aplikacja konsolowa
- aplikacja desktopowa
- testy aplikacji.

Komentarze
Czy macie jakieś pytania, sugestie, uwagi? A może zauważyliście literówkę albo błąd? Dajcie koniecznie znać: kontakt@pasja-informatyki.pl. Dziękujemy za poświęcony czas - to dzięki Wam serwis staje się coraz lepszy!
Kody zniżkowe - kup taniej
Mamy fajne rabaty dla widzów naszego kanału YouTube - otóż można zamówić dwa tomy książek "Wprowadzenie do bezpieczeństwa IT" (15% taniej) oraz książkę "Twierdza Linux. Bezpieczeństwo dla dociekliwych" (10% taniej) - użyjcie odpowiedniego kodu, wpisując go w specjalne pole w koszyku:
KOD: pasja
Dostajesz rabat -15%
KOD: pasja
Dostajesz rabat -15%
KOD: pasja-linux
Dostajesz rabat -10%
Pomóż dzieciom
Polska Akcja Humanitarna od wielu lat dożywia dzieci. Proszę, poświęć teraz dosłownie chwilę i pomóż klikając w oznaczony strzałką zielony brzuszek Pajacyka. Dziękujemy!