INF.04-01-25.01-SG-Zadanie 1

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.