Część I. Aplikacja konsolowa
Za pomocą narzędzi do tworzenia aplikacji konsolowych zaimplementuj program realizujący różne operacje na tablicach.

Założenia aplikacji:
- Zastosowany obiektowy język programowania zgodny z zainstalowanym na stanowisku egzaminacyjnym: C++ lub C#, lub Java, lub Python
- Tablica oraz operacje na niej wykonywane są implementowane z wykorzystaniem klasy
- Pola klasy:
- Tablica liczb całkowitych (ma być tradycyjną tablicą, a w Python listą)
- Liczba elementów tablicy zapisana jako liczba całkowita. Pole przechowuje faktyczną liczbę elementów. Wszystkie operacje są ograniczone wartością tego pola
- Oba pola są dostępne tylko w tej klasie oraz niedostępne dla klas potomnych
- Konstruktor klasy:
- Przyjmuje jako argument rozmiar tablicy
- Ustawia wartość pola liczby elementów tablicy na wartość argumentu
- Wypełnia tablicę, będącą polem klasy, pseudolosowymi liczbami całkowitymi z zakresu od 1 do 1000
- Metody klasy:
- Wyświetlająca wszystkie elementy tablicy w postaci „<index_tablicy>: <wartość>”. Nie zwraca wartości
- Wyszukująca pierwsze wystąpienie wartości, przekazanej jako argument. Metoda zwraca indeks szukanego elementu lub liczbę -1, gdy elementu nie znaleziono
- Wyświetlająca wszystkie wartości nieparzyste z tablicy i zwracająca ich liczbę
- Licząca średnią arytmetyczną wartości w tablicy i zwracająca tą wartość
- Wszystkie metody są dostępne poza klasą
- Program główny: (fragment działania jest widoczny na obrazie 1)
- Tworzy obiekt klasy z rozmiarem tablicy większym od 20
- Sprawdza działanie wszystkich metod:
- Wyświetlającej wszystkie elementy tablicy
- Wyszukującej: jeżeli wartość została wyszukana, wyświetlany jest w programie głównym komunikat z wartością indeksu wyszukanej. W przeciwnym wypadku nic nie jest wyświetlane (taka sytuacja ma miejsce na obrazie 1)
- Wyświetlającej liczby nieparzyste oraz wyświetlana jest ich ilość z odpowiednim komentarzem
- Liczącej średnią, po czym w programie głównym wyświetlana jest wartość średniej
- Komunikacja z użytkownikiem musi być zrozumiała.
- Program powinien być zapisany czytelnie, z zachowaniem zasad czystego formatowania kodu
- Dla obiektów, pól, metod i zmiennych należy stosować znaczące nazewnictwo angielskie lub polskie. Dopuszcza się dla klasy i pola tablicowego nazewnictwo ogólne (np. tab, tablica, table) ‒ Do kodu należy dołączyć dokumentację, która została opisana w części III zadania egzaminacyjnego
Część II. Aplikacja webowa
Z zastosowaniem dostępnego na stanowisku egzaminacyjnym frameworka Angular lub biblioteki React.js wykonaj aplikację internetową typu front-end realizującą funkcję kategoryzacji zdjęć w galerii. Na obrazach 2, 3, 4 przedstawiono działanie aplikacji. W zależności od zastosowanego narzędzia wygląd aplikacji może nieznacznie się różnić. Na pulpicie znajduje się archiwum, z materiałami do wykonania zadania, o nazwie pliki3.zip zabezpieczone hasłem: K@tegorie)



Założenia aplikacji
- Aplikacja składa się z jednego komponentu, którego widok w stanie początkowym zaprezentowany jest na obrazie 2 (zdjęcia mogą być wyświetlane w dowolnej kolejności)
- Do utworzenia aplikacji należy wykorzystać zdjęcia oraz plik dane.txt wypakowane z archiwum
- Obrazy należy umieścić w folderze assets (egzamin/src/assets lub egzamin/public/assets)
- Dokument dane.txt zawiera listę obiektów zdjęć, którą należy skopiować jako elementy tablicy. Każdy obiekt zdjęcia zawiera pola:
- ‒ id
- ‒ alt (tekst alternatywny dla zdjęcia)
- ‒ filename (nazwa pliku ze zdjęciem)
- ‒ category (1 dla kategorii kwiaty, 2 zwierzęta, 3 samochody)
- ‒ downloads (liczba pobrań zdjęcia)
- Komponent składa się z:
- Nagłówka pierwszego stopnia o treści: „Kategorie zdjęć”
- Trzech pól switch (checkbox) domyślnie włączonych, o etykietach: Kwiaty, Zwierzęta, Samochody
- Bloków zdjęć, które są wyświetlane warunkowo, w zależności od ustawień pól switch. Bloki są wyświetlone jeden obok drugiego, zawierają zdjęcie, nagłówek 4 stopnia z liczbą pobrań oraz przycisk o treści „Pobierz”. Układ elementów jest przedstawiony na obrazie 2 ‒ Zdjęcia są formatowane stylem: marginesy zewnętrzne 5 px, zaokrąglone rogi
- Przyciski oraz pola switch są stylowane zgodnie z przykładami w tabeli 1
- W stanie początkowym włączone są wszystkie pola switch co powoduje wyświetlenie wszystkich zdjęć
- Wyświetlane są tylko zdjęcia z kategorii dla której jest włączone pole switch (obraz 4)
- Gdy przycisk „Pobierz” zostanie kliknięty, wzrasta o jeden liczba pobrań dla danego zdjęcia. Liczba pobrań jest zapisywana w tablicy z obiektami zdjęć, co na bieżąco powoduje wyświetlenie tej modyfikacji na ekranie (obraz 5)
- W aplikacji zastosowano pętle oraz warunki do wyświetlenia bloków zdjęć. Aplikacja jest napisana uniwersalnie i działa poprawnie też dla innej liczby zdjęć
- Aplikacja powinna być zapisana czytelnie, z zachowaniem zasad czystego formatowania kodu, należy stosować znaczące nazwy zmiennych i funkcji.
Podejmij próbę uruchomienia aplikacji w przeglądarce. Informacje dotyczące zrzutów ekranu znajdują się w części III zadania egzaminacyjnego.
Kod aplikacji przygotuj do nagrania na płytę. W folderze webowa powinno znaleźć się archiwum całego folderu projektu o nazwie web.zip oraz pliki z kodem źródłowym, które były modyfikowane przez zdającego.
Część III. Dokumentacja utworzonych aplikacji
Wykonaj dokumentację do aplikacji utworzonych na egzaminie. W kodzie źródłowym aplikacji konsolowej za pomocą komentarza utwórz nagłówek dowolnej metody, według wzoru z listingu 1. Komentarz powinien znaleźć się nad lub pod nazwą metody. W miejscu nawiasów <> należy podać odpowiednie opisy. W sekcji parametry należy umieścić opis wszystkich argumentów metody lub zapisać „brak” w przypadku metody bezparametrowej.
UWAGA: Dokumentację należy umieścić w komentarzu (wieloliniowym lub kilku jednoliniowych). Znajdujący się w listingu 1 wzór dokumentacji jest bez znaków początku i końca komentarza, gdyż te są różne dla różnych języków programowania
Listing 1. Wzór dokumentacji metody (liczba gwiazdek dowolna)
**********************************************
nazwa metody: <nazwa>
opis metody: <krótki opis, co robi metoda>
parametry: <nazwa i opis parametrul, lub „brak”>
<nazwa i opis parametru2> • ••
zwracany typ i opis: <nazwa typu i opis co jest zwracane lub „brak”>
autor: <numer zdającego>
***********************************************Wykonaj zrzuty ekranu dokumentujące uruchomienie aplikacji utworzonych podczas egzaminu. Zrzuty powinny obejmować cały obszar ekranu monitora z widocznym paskiem zadań. Jeżeli aplikacja uruchamia się, na zrzucie należy umieścić okno z wynikiem działania programu oraz otwarte środowisko programistyczne z projektem lub okno terminala z kompilacją projektu. Jeżeli aplikacja nie uruchamia się z powodu błędów kompilacji, należy na zrzucie umieścić okno ze spisem błędów i widocznym otwartym środowiskiem programistycznym. Wykonać należy tyle zrzutów, ile interakcji podejmuje aplikacja. Wymagane zrzuty ekranu:
- Aplikacja konsolowa – dowolna liczba zrzutów nazwanych konsola1, konsola2, …
- Aplikacja webowa – dowolna liczba zrzutów nazwanych web1, web2, … (stan początkowy, różne kombinacje dla pól switch, działanie przycisku „Pobierz”)
W edytorze tekstu pakietu biurowego utwórz plik z dokumentacją i nazwij go egzamin. Dokument powinien zawierać zapisane informacje o wykorzystanych w czasie egzaminu narzędziach:
- Nazwę systemu operacyjnego
- Nazwy środowisk programistycznych
- Nazwy języków programowania
Zrzuty ekranu i dokument umieść w podfolderze dokumentacja.
