ROZWIĄZANIA: Matura z informatyki – maj 2023

W tym artykule znajdziesz rozwiązania matury z informatyki w formule 2023, przy użyciu Microsoft Access (SQL), a także C++, java i python. Skorzystaj z tych informacji, dla zrozumienia jak należy wykonać poszczególne podpunkty w zadaniach. Załączniki potrzebne do wykonania poniższych zadań, możesz znaleźć pod tym linkiem.

Zadanie 1 – Biblioteczka Adama

Matura z informatyki 2023 - zadanie 1
Zadanie 1 – Biblioteczka Adama z arkusza maturalnego z informatyki maj 2023

Zadanie 1.1.

Matura z informatyki 2023 - zadanie 1.1
Zadanie 1.1 – Biblioteczka Adama z arkusza maturalnego z informatyki maj 2023

Na początku wszystkie komórki są puste i Adam zawsze zaczyna od komórki B[0,1], wstawiamy więc tam pierwszą liczbę, czyli 14.

12345678
014
1
2
3

Kolejną liczbą jest 18, gdy próbujemy ją wstawić, miejsce jest już zajęte przez 14, i wybieramy opcję B[i + 1, 2j], ponieważ 18 jest większe od 14, i +1 = 1 i 2j = 2 umieszczamy więc 18 w komórce B[1,2].

12345678
014
118
2
3

Kolejną liczbą na naszej liście jest 12, ona też nie mieści się do komórki B[0,1], ale jest ona mniejsza od liczby w tym polu, więc idzie do komórki B[i + 1, 2j – 1], czyli B[1,1].

12345678
014
11218
2
3

Następnie bierzemy liczbę 9, podąża ona tą samą drogą* co 12, jednak nie może zająć jej miejsca i jest od niej mniejsza, dlatego idzie kolejnym wywołaniem rekurencyjnej reguły, a następnie używając wzoru B[i + 1, 2j – 1] trafia do komórki B[2,1].

* drogą, ścieżką lub trasą będziemy nazywać warunki jakie liczba musiała spełnić, by trafić do danej komórki.

12345678
014
11218
29
3

Kolejna liczba to 20, możemy wykorzystać ścieżkę liczby 18 i dopiero tam użyć wzoru, jednak tym razem wzoru stosowanego gdy liczba jest większa czyli B[i + 1, 2j]. Tym sposobem liczba 20 trafia do komórki B[2,4].

12345678
014
11218
2920
3

Liczba 15 idzie tą samą drogą co 20, z tą różnicą, że jest ona mniejsza od 18 i przez to w ostatnim wywołaniu reguły Adama wykorzystujemy wzór B[i + 1, 2j – 1] i 15 trafia do komórki B[2,3].

12345678
014
11218
291520
3

Ostatnia liczba, której pozycję mamy znaleźć to 17. Wykorzystamy do tego trasę liczby 15 i dodamy jedną procedurę, używając wzoru B[i + 1, 2j] (ponieważ 17 jest większe od 15) dowiadujemy się, że miejsce 17 to B[3,6].

Rozwiązanie:

12345678
014
11218
291520
317

Zadanie 1.2.

Matura z informatyki 2023 - zadanie 1.2
Zadanie 1.2 – Biblioteczka Adama z arkusza maturalnego z informatyki maj 2023

Na początek zajmiemy się maksymalną liczbą półek. Najwięcej półek to przypadek, gdy każda kolejna książka, którą wstawiamy trafia do nowej półki. Taka sytuacja ma miejsce, gdy dodawana książka zawsze ma numer większy (lub mniejszy) od poprzedniej (oczywiście poza 1 książką). Wtedy na każdej półce będzie po 1 książce (dla n książek potrzeba w takim przypadku n półek). Czyli do kolumny Maksymalna liczba półek przepisujemy po prostu wartości z kolumny n – liczba książek.

Książki będą zajmowały najmniej miejsca kiedy dla każdej z nich (oprócz tych na ostatniej półce) włożymy książkę o mniejszym (wtedy zajmiemy wolne miejsca  zanim przejdziemy do następnej półki) i większym numerze identyfikacyjnym. Na przykład wkładamy trzy książki, druga i trzecia z nich będą miały mniejsze (lub większe) identyfikatory, więc zajmą 3 półki. Tylko jeśli jedna jest mniejsza, a jedna jest większa, zajmą 2.

Widzimy wtedy, że minimalną liczbą półek jaka jest potrzebna, to taka której suma przegródek wszystkich półek jest większa lub równa liczbie książek. Jeśli liczba książek przekracza liczbę wszystkich komórek musimy dodać kolejną półkę. Wystarczy, że będziemy liczyć wszystkie pola każdej kolejnej półki, aż w końcu dojdziemy do liczby książek której szukamy, należy sprawdzić wtedy numer półki i dodać 1 (półki są numerowane od 0) i otrzymaliśmy minimalną liczbę półek, Może to być jednak ciężkie dla większych liczb, poza tym i tak musimy znaleźć ogólny wzór. Szukamy więc jakiejś zależności. Zobaczmy tabelę, widać że minimalne wartości dla kolejnych liczb są bardzo bliskie wykładnikom do których musi być podniesiona 2, by osiągnąć wartości bliskie liczbie książek. Możemy policzyć logarytmy binarne (o podstawie 2) z kolejnych liczb, żeby dokładniej zbadać tę relację. Okazuje się, że wystarczy zaokrąglić uzyskany logarytm z liczby książek w dół i dodać jeden, aby otrzymać minimalną liczbę półek. Nasz wzór to ⌊log(n)⌋+1, gdzie n to liczba książek, teraz wystarczy podstawić odpowiednie wartości, policzyć je i wpisać do tabelki. W ostatniej linijce będzie to ⌊log(2ᵏ-1)⌋+1.

Rozwiązanie:

n – liczba książekMinimalna liczba półekMaksymalna liczba półek
111
323
434
737
16516
31531
32632
2ᵏ-1⌊log(2ᵏ-1)⌋+12ᵏ-1
ads banner

Zadanie 1.3.

Matura z informatyki 2023 - zadanie 1.3
Zadanie 1.3 – Biblioteczka Adama z arkusza maturalnego z informatyki maj 2023

Warto zwizualizować sobie wywołania algorytmu na drzewie wywołań rekurencyjnych, to znacznie ułatwi wykonanie zadania. Drzewo zaczyna się od liczby w komórce B[0,1], algorytm wypisuje jej wartość i przechodzi do przegródki B[i + 1, 2j – 1] (nie jest pusta) i dopiero, gdy wykona się dla niej (i każdej komórki do której przechodzi) wraca z powrotem i wykonuje się dla komórki B[i + 1, 2j]. Oto drzewo wywołań dla podpunktu a:

Rozwiązanie - Matura z informatyki 2023 - zadanie 1.3 a
Drzewo wywołań rekurencyjnych – podpunkt a

Wypisujemy wartość komórki B[0,1] – 9, następnie przez funkcję A(1,1) przechodzimy do komórki B[1,1] i wypisujemy 2. Z tej komórki już nie przejdziemy do żadnej komórki, więc cała funkcja została wykonana. Wracamy do funkcji A(0,1), tam jesteśmy przekierowani poprzez A(1,2) do komórki B[1,2] i wypisujemy jej wartość – 12. Zostajemy przekierowani do B[2,3] i wypisujemy – 10. W tej komórce nie ma żadnych przekierowań, więc wracamy do funkcji A(1,2), przechodzimy do przegródki B[2,4] i wypisujemy jej wartość – 14. Z tej komórki najpierw pójdziemy do przegródki B[3,7] wypiszemy jej wartość – 13 i wrócimy, bo nie ma dalej żadnych niepustych przegródek, do których moglibyśmy przejść. Zostaniemy przekierowani do komórki B[3,8], wypiszemy wartość – 15 i znowu wrócimy. Jednak nie ma już dalszych kroków, więc wracamy do poprzednich wywołań, gdzie również wszystkie instrukcje zostały wykonane.

Dochodzimy do funkcji A(0,1) i tam również wszystkie polecenia zostały wykonane, nie ma jednak gdzie powrócić co oznacza, że cały algorytm został wykonany.

Rozwiązanie:

9, 2, 12, 10, 14, 13, 15.

Przejdźmy do podpunktu b.

Drzewo wykonań rekurencyjnych wygląda tak:

Rozwiązanie - Matura z informatyki 2023 - zadanie 1.3 b
Drzewo wywołań rekurencyjnych – podpunkt b

Znowu zaczynamy od przegródki B[0,1] – wpisujemy 10. Wywołaniem funkcji A(i + 1, 2j – 1) przechodzimy do przegródki B[1, 1] i wypisujemy wartość 8. Dalej zostajemy przekierowani funkcją A(3,2) do przegródki B[3,2] i wypisujemy wartość 6. Wracamy do funkcji A(2,1), a z niej do funkcji A(1,1), następnie do oryginalnej funkcji.

Teraz podążamy za funkcją A(1,2), wypisujemy 15 i dalej zostajemy przekierowani do przegródki B[2,3]. Wypisujemy jej wartość – 12 i przechodzimy do komórki B[3,6], tam wypisujemy 13. Teraz wracamy na samą górę naszego drzewa wywołań rekurencyjnych do funkcji A(0,1), gdzie nie ma już dalszych wywołań – algorytm zakończy zadanie.

Rozwiązanie:

10, 8, 4, 6, 15, 12, 13.

Zadanie 2 – Liczby binarne

Matura z informatyki 2023 - zadanie 2
Zadanie 2 – Liczby binarne z arkusza maturalnego z informatyki maj 2023

Zadanie 2.1.

Matura z informatyki 2023 - zadanie 2.1
Zadanie 2.1 – Liczby binarne z arkusza maturalnego z informatyki maj 2023

Żeby napisać algorytm zajmujący się tym problemem, należy znać właściwości operatorów dzielenia całkowitego (div) oraz reszty z dzielenia – modulo (mod).

Dzielenie całkowite sprawia, że odrzuca się pozostałą resztę po wykonaniu dzielenia. Przykładowo 222 div 10 równa się 22.

Reszta z dzielenia tak jak sama nazwa wskazuje zwraca samą resztę pozostałą po dzieleniu. Dla działania 222 mod 10 otrzymujemy wynik 2 (222/10 to 22 z resztą równą 2).

Najlepszym sposobem na rozwiązanie problemu jest zwrócenie uwagi, czy każda kolejna cyfra (oprócz pierwszej) jest inna niż poprzednia. Jeśli cyfra okazuje się różna, to znaczy, że jest to nowy blok i należy zwiększyć licznik bloków – b. Należy ustawić wartość początkową wartość b na 1, ponieważ opisany sposób nie liczy pierwszego (nie ma przecież bloku 0 z którym moglibyśmy go porównać). Żeby uzyskać kolejne cyfry liczby n użyjemy mod 2, a następnie podzielimy ją przez 2 żeby przejść do kolejnej cyfry. Użyjemy też zmiennej pomocniczej poprzednia, która będzie zapisywała poprzednią cyfrę.

Dla sprawdzenia możemy napisać nasz program w pythonie (lub innym języku) i zobaczyć, czy zwraca poprawne wyniki.

Implementacja – Python

Implementacja – C++

Implementacja – Java

Matura z informatyki 2023 - informacja do zadań 2.2 i 2.3
Informacja do zadań 2.2. i 2.3.

W kolejnych podpunktach mamy do czynienia już z liczbami w systemie dwójkowym, wypadałoby więc dostosować naszą funkcję. Jednak zamiast tego możemy po prostu zamienić je na liczby dziesiętne, okazuje się to znacznie szybsze niż zmienianie funkcji. Jest to z pewnością rozwiązanie mniej zoptymalizowane jednak na maturze liczy się czas pisania programów, a nie ich wydajność.

Implementacja – Python

Teraz w liście linie znajdują się liczby w systemie 10. Porównując długość powyższego kodu z poniższymi, możesz się zorientować dlaczego Python jest preferowany na maturze.

Implementacja – C++

Biblioteki:

Kod:

Implementacja – Java

Biblioteki:

Kod:

Zadanie 2.2.

Matura z informatyki 2023 - zadanie 2.2
Zadanie 2.2 – Liczby binarne z arkusza maturalnego z informatyki maj 2023
Implementacja – Python

Implementacja – C++

Implementacja – Java

Rozwiązanie:

10

Zadanie 2.3.

Matura z informatyki 2023 - zadanie 2.3
Zadanie 2.3 – Liczby binarne z arkusza maturalnego z informatyki maj 2023

Możemy tutaj użyć funkcji max (w języku python), zamiast manualnie szukać liczby.

Odpowiedź musi być w systemie binarnym, więc trzeba przekonwertować liczbę na ten system.

Implementacja – Python

Implementacja – C++

Biblioteki:

Kod główny:

Implementacja – Java

Biblioteki:

Kod główny:

Rozwiązanie:

1110100011100011100

Zadanie 2.4.

Matura z informatyki 2023 - zadanie 2.4
Zadanie 2.4 – Liczby binarne z arkusza maturalnego z informatyki maj 2023

Najpierw musimy przekonwertować 12310 na system binarny.

12310 = 11110112

Teraz do liczby o mniejszej liczbie cyfr należy dodać tyle 0 z przodu, żeby liczba cyfr obydwu liczb była równa.

11110112

01011012

_______

10101102

Teraz należy przekonwertować 2D na system dwójkowy. 2D = 1011012. Znowu dodajemy wiodące 0 i liczymy XOR.

10101102

01011012

_______

11110112

Teraz wystarczy przekonwertować wynik na system dziesiętny i odpowiedź jest gotowa: 11110112 = 12310

Zamiast robić wszystkie operacje ręcznie możemy użyć dostępnych w pythonie (lub w innych językach) funkcji.

Implementacja – Python

Najpierw należałoby przekonwertować wszystkie liczby na system dziesiętny funkcją int(“liczba”,baza), a potem użyć operatora ^, aby otrzymać XOR dwóch liczb.

Implementacja – C++

Biblioteki:

Kod:

Implementacja – Java

Rozwiązanie:

123

Zadanie 2.5.

Matura z informatyki 2023 - zadanie 2.5
Zadanie 2.5 – Liczby binarne z arkusza maturalnego z informatyki maj 2023

Operacja XOR jest dostępna natywnie w pythonie, reprezentuje ją symbol ^. Działa ona na dwóch liczbach dziesiętnych i zwraca również liczbę dziesiętną, wynik więc trzeba będzie przekonwertować. Oczywiście odpowiedź należy skopiować do pliku wyniki2_5.txt, a kod do innego dokumentu tekstowego.

Implementacja – Python

Implementacja – C++

Biblioteki:

Kod:

Implementacja – Java

Biblioteki:

Kod:

Rozwiązanie:

1001011000

1111000001

1110001000

1101100001111010

110100010

1100110000110000

100010000

1110111101

1100110011

1110001100001

111110111101000

100110100011010

1000001000

11101010110100010

11101101111

1100001010101010

10011110101

1101000111100010001

1010000101110010

11101100000

1000000000

100000010010

1100010

11010011

110110000001000

1000010

10100111001001

1100011101111

101010110001

1001100100001111

100110000111

110100110011110111

111000110110110011

10100111101010

1111000110011000

101111110101

1110011111111011

11010110100100100

110000000

1000000110010011

1001111100001

1111011101

11000000100

10000101000011110

10100010111101

1

110001000

111101100011001

100110000

1101101011110100

110110101111

101110111001000100

1110110000100111

1011001010011

100000000

1111110111100

11011110111001

110110101110000110

1101101000111101

111100010

100111010111001

110000010100

1010111011

1001110010010010010

101100111101

1010110011111100111

1101010101000

111110101011100

10000000

11010111000

11001110100

1010000011010111111

110110100101

11101100000110

1011110010101000000

1001010001010010

10101100111

10000101101

100101000010

110011000100

10010110010110

101010010111001

1100011110

1011100110001011110

101001110111001

10011000101101011

10000000

11110110010101011

1101011010110

1100010010111001

11010001001100011

1010101001001

100000000

1100010010010

1111100011000

1011111011110100

11100101101110101

110001011011011

1011000101011000000

11001011110011000

Pełny kod 2.1-2.5 – implementacja w python, C++ i java

Implementacja – Python

Implementacja – C++

Implementacja – Java

Zadanie 3 – Liczba Pi

Matura z informatyki 2023 - zadanie 3
Zadanie 3 – Liczba Pi z arkusza maturalnego z informatyki maj 2023

Zadanie 3.1.

Matura z informatyki 2023 - zadanie 3.1
Zadanie 3.1 – Liczba Pi z arkusza maturalnego z informatyki maj 2023

Zadania związane z programowaniem są zazwyczaj podobne. Przede wszystkim warto pamiętać o przykładowym pliku, dzięki któremu będzie wiadomo czy kod zwraca poprawne wyniki. Zacznijmy zadanie, zajmując się odczytaniem danych z dokumentu. Skorzystamy w tym przypadku z with open(nazwa_pliku) as nazwa.

Otwieramy plik i tworzymy listę, gdzie każdy element to kolejny wiersz pliku pi.txt. Następnie usuwamy białe znaki (spacje, entery itp) z końca każdej linii i konwertujemy go na liczbę (domyślnie python zapisuje jako tekst).

W podpunktach 3.1 i 3.2 mamy do czynienia z “fragmentami dwucyfrowymi” dlatego warto stworzyć listę, która ułatwi działania na nich. Teraz zamiast na nowo konstruować je za każdym razem, możemy po prostu użyć konkretnego elementu tej listy.

Implementacja – C++

Biblioteki:

Kod główny:

Implementacja – Java

Biblioteki:

Kod główny:

Rozwiązanie:

902

Zadanie 3.2.

Matura z informatyki 2023 - zadanie 3.2
Zadanie 3.2 – Liczba Pi z arkusza maturalnego z informatyki maj 2023

Do rozwiązania zadania najlepiej użyć słownika. Dla każdego fragmentu dwucyfrowego przypisze on liczbę jego wystąpień. Należy uzupełnić go wszystkimi stoma fragmentami, ponieważ gdybyśmy tworzyli słownik na podstawie fragmentów obecnych w pliku moglibyśmy jakieś pominąć, jeśli nie występowały ani razu, a o nich trzeba pamiętać jak pokazał plik przykładowy. Po stworzeniu słownika i wypełnieniu go sprytnie wykorzystując pętle, musimy utworzyć zmienne przechowujące fragmenty o minimalnej i maksymalnej liczbie wystąpień, a także liczbę ich wystąpień. Następnie klasycznie wyszukujemy minimalne i maksymalne wartości oraz zapisujemy je w zmiennych.

Pamiętaj, że zawsze w przypadku zadań “znajdź maksimum/minimum” najlepiej przypisać wartość pierwszego elementu. Dlaczego? Co w przypadku jeśli przypiszemy 0 jako wartość początkową minFragmentLiczba, a wśród fragmentów wszystkie będą występowały więcej razy? Wtedy nasz program zwróci 0 pomimo faktu, że to nie ono jest minimalną wartością. Alternatywą jest przypisanie bardzo małych lub dużych wartości min i maks np. maks = 9999999999999 i min = -9999999.

Po stworzeniu listy, rozwiązanie podpunktu 3.2 jest proste. Wystarczy zmienna, która będzie zliczała wystąpienia fragmentów większych od 90. Następnie za pomocą pętli sprawdzamy warunek dla każdego fragmentu i odpowiednio zwiększamy wartość zmiennej licznik. Na koniec wyświetlamy wartość licznika. Pamiętaj, że trzeba go skopiować i wkleić do pliku z odpowiedziami!

Implementacja – C++

Biblioteki:

Kod:

Implementacja – Java

Biblioteki:

Kod:

Rozwiązanie:

88 80

65 124

Zadanie 3.3.

Matura z informatyki 2023 - informacja do zadań 3.3 i 3.4
Informacja do zadań 3.3. i 3.4.

Matura z informatyki 2023 - zadanie 3.2
Zadanie 3.3 – Liczba Pi z arkusza maturalnego z informatyki maj 2023

W podpunkcie 3.3 oraz 3.4 mamy do czynienia z “ciągami rosnąco-malejącymi”, można się tym zająć na wiele sposobów np. generując listę wszystkich ciągów, a potem zliczać te które mają długość 6. Są sposoby szybsze i bardziej wydajne, ale na maturze nie liczy się nic oprócz wyniku końcowego. Można więc zrobić to w stylu “brute force”, czyli po prostu brać 6 kolejnych cyfr i sprawdzać czy tworzą one ciąg. Jest to rozwiązanie, które nie jest wydajne, ale jest najszybsze w napisaniu.

To rozwiązanie opiera się w dużej mierze na slicingu, warto zapoznać się z tym pojęciem przed maturą. Jego opis jest dostępny w artykule o przydatnych funkcjach w języku Python.

Jak widać sprawdzamy po prostu, czy pierwsze liczby tworzą ciąg rosnący, a pozostałe ciąg malejący, jeśli tak to zwiększamy licznik i przerywamy działanie pętli for używając break. Przerwanie jest bardzo ważne, bez niego moglibyśmy liczyć dany ciąg wielokrotnie.

Implementacja – C++

Biblioteki:

Funkcje:

Kod główny:

Implementacja – Java

Funkcje:

Kod główny:

Rozwiązanie:

214

Zadanie 3.4.

Matura z informatyki 2023 - zadanie 3.4
Zadanie 3.4 – Liczba Pi z arkusza maturalnego z informatyki maj 2023

Do podpunktu 3.4 możemy wykorzystać kod z podpunktu 3.3. Najlepiej jest go po prostu skopiować i zmienić ustaloną z góry długość 6 na zmienną dlugosc, która będzie się zwiększała.

Zaczynamy od długości 6, ponieważ wiemy, że tej długości ciągi na pewno są w pliku. Następnie zwiększamy dlugosc i liczymy liczbę wystąpień tego odcinka. Za każdym razem sprawdzamy, czy występuje ich więcej niż zero, gdy okaże się, że ciągi danej długości nie występują to znaczy, że poprzednia długość była tą największą. Zauważ, że zapamiętujemy indeks ostatnio znalezionego ciągu, ponieważ najdłuższy ciąg jest ostatnim, który znajdziemy tym sposobem. Wystarczy wyświetlić wartość tej zmiennej w odpowiedzi +1, ponieważ indeksy w pliku są indeksowane od 1, a na naszej liście od 0.

Przy wypisywaniu z pomocą print używamy * żeby “przekazać” wszystkie elementy listy jako jej argumenty. Żeby wyświetlić tylko konkretny fragment listy znowu używamy slicingu. Wyświetlamy wszystkie elementy odległe od maksIndeks o maksymalną długość. Maksymalna długość jest o 1 mniejsza od dlugosc, ponieważ zmienna na koniec ma wartość pierwszej długości, w której nie ma żadnych ciągów. Tutaj rodzi się pytanie, co jeśli na przykład nie ma ciągów o długości 10, ale o długości 11 już są? Czy wtedy program zwraca zły wynik? Na szczęście do takiej sytuacji nigdy nie dojdzie, ponieważ zbiory mniejszej długości są podciągami tych dłuższych tzn. jeśli istnieje ciąg o długości 11 to istnieje też ciąg o długości 10.

Implementacja – C++

Biblioteki:

Funkcje:

Kod główny:

Implementacja – Java

Funkcje:

Kod główny:

Rozwiązanie:

2781

014576540

Pełny kod 3.1-3.4 – implementacja w python, C++ i java

Implementacja – Python

Implementacja – C++

Implementacja – Java

Zadanie 4 – Oceń prawdziwość podanych zdań

Matura z informatyki 2023 - zadanie 4
Zadanie 4 – Oceń prawdziwość podanych zdań z arkusza maturalnego z informatyki maj 2023

Szyfrowanie asymetryczne polega na zastosowaniu 2 kluczy, czyli publicznego i prywatnego. Publiczny jak nazwa wskazuje jest ogólnodostępny i służy do szyfrowania wiadomości. Klucz prywatny jest dostępny tylko dla odbiorcy i służy do odszyfrowywania wiadomości.

Wiedząc to:

  1. P – Wynika to wprost z definicji.
  2. F – Zastanówmy się, jeśli klucz publiczny jest dostępny dla każdego, to nie mamy żadnej gwarancji, że osobą wysyłającą zaszyfrowaną wiadomość jest osoba B. Należy więc wybrać odpowiedź F.

Rozwiązanie:

PF

ads banner

Zadanie 5 – Systemy pozycyjne

Matura z informatyki 2023 - zadanie 5
Zadanie 5 – Systemy pozycyjne z arkusza maturalnego z informatyki maj 2023

Przekonwertujmy wszystkie liczby na system dziesiętny, tak będzie najłatwiej je ze sobą porównać.

  • 1345 = 4410,
  • 1346 = 5810.

Jeśli nie chcemy tego robić manualnie, zawsze można to zrobić w pythonie np. print(int(“134”,5)), gdzie pierwszy argument to liczba a drugi to baza. Jak widać w pierwszym przykładzie należy wpisać znak “<”.

Drugi przykład rozwiązujemy analogicznie.

  • 22223 = 8010,
  • 11116 = 25910.

Więc tutaj również należy wstawić znak “<”.

Rozwiązanie:

(134)5 < (134)6

(2222)3 < (1111)6

Zadanie 6 – Konfitury owocowe

Matura z informatyki 2023 - zadanie 6
Zadanie 6 – Konfitury owocowe z arkusza maturalnego z informatyki maj 2023

Zadanie konfitury sprawdza naszą wiedzę na temat arkuszy kalkulacyjnych. Najpierw działamy na pliku, a potem sami tworzymy symulację. Pierwsza część jest zazwyczaj prostsza i mniej czasochłonna, dlatego warto do niej podejść nawet, gdy średnio idą nam zadania oparte o Excela.

Na początek należy zaimportować dane. Najlepiej zaimportować dane do osobnego arkusza w którym nie będziemy nic zmieniać, dzięki temu mamy gwarancję, że nasze odpowiedzi nie będą złe z powodu przypadkowo zmodyfikowanych danych. Jeśli podpunkty nie są ze sobą powiązane, to je również warto dać do osobnych arkuszy do których wcześniej skopiowaliśmy dane.

Zadanie 6.1.

Matura z informatyki 2023 - zadanie 6.1
Zadanie 6.1 – Konfitury owocowe z arkusza maturalnego z informatyki maj 2023

Należy zaznaczyć wszystkie dane, przejść do zakładki narzędzia główne i wybrać pole tabela przestawna. Lokalizacja w której umieścimy naszą tabelę jest dowolna, jednak najlepiej umieścić ją w tym samym arkuszu co dany podpunkt.

Rozwiązanie - matura z informatyki 2023 - zadanie 6.1 a
Tabela przestawna pozwoli na łatwe wykonanie zestawień.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.1 b
Wybranie miejsca utworzenia tabeli przestawnej okazuje się łatwe do wykonania.

Następnie klikamy na nowo utworzoną tabelę i dodajemy do sekcji wiersze, kolumnę data. Doda to daty z dokładnością co do dnia. Należy usunąć wszystkie elementy oprócz miesiąca. Następnie do sekcji wartości dodajemy kolumny dostawa_porzeczek, dostawa_malin i dostawa_truskawek.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.1 c
Można dowolnie zmieniać pola wyświetlane w ramach raportu.

Zmieniamy też tytuły kolumn na takie, które pasują i usuwamy sumę końcową. Nasze zestawienie jest gotowe, teraz trzeba utworzyć wykres.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.1 d
Zmień tytuły kolumn na bardziej odpowiednie.

W tym celu zaznaczamy całą tabelę przestawną i w sekcji wstawianie klikamy przycisk polecane wykresy, a następnie wstawiamy wykres kolumnowy. Poprzez kliknięcie plusa, który pojawia się po wybraniu wykresu dodajemy elementy: tytuł wykresu, tytuły osi, legenda i ewentualnie etykiety danych (ta opcja czasem zasłania wykres). Teraz edytujemy nowo dodane elementy, żeby dobrze opisywały wartości.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.1 e
Wykres kolumnowy można z łatwością zmodyfikować dodając tytuł wykresu i osi, legendę oraz etykiety danych.

Podpunkt gotowy, teraz należy skopiować zestawienie do pliku z odpowiedzią i zapisać wykres w formacie obrazu.

Rozwiązanie:

miesiącdostawa_malindostawa_truskawekdostawa_porzeczek
maj923892873309
czerwiec948589165081
lipiec115921133910567
sierpień110451138611386
wrzesień653274766355

Zadanie 6.2.

Matura z informatyki 2023 - zadanie 6.2
Zadanie 6.2 – Konfitury owocowe z arkusza maturalnego z informatyki maj 2023

Do naszych danych dodajemy nową kolumnę czyNajwiecejPorzeczek, w tej kolumnie używając funkcji JEŻELI oraz MAX sprawdzamy czy porzeczek w danym dniu było najwięcej. Porównujemy wartość maksymalną z wartością dostaw porzeczek, jeśli wartości są równe. To znaczy, że jeśli porzeczek było najwięcej, zwracamy do pola wartość 1,w przeciwnym razie wypisujemy wartość 0.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.2 a
W celu sprawdzenia dni z największą liczbą zebranych porzeczek należy skorzystać z polecenia JEŻELI(MAX(B2:D2)=D2;1;0).

Teraz używając funkcji SUMA lub LICZ.JEZELI zliczamy wystąpienia jedynek. Uzyskana liczba jedynek to nasza odpowiedź.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.2 b
Zliczanie jedynek można wykonać za pomocą polecenia SUMA(E2:E154).

Rozwiązanie:

19

Zadanie 6.3.

Matura z informatyki 2023 - zadanie 6.3
Zadanie 6.3 – Konfitury owocowe z arkusza maturalnego z informatyki maj 2023

Kolejne podpunkty opierają się na stworzonej przez nas symulacji. W nowym arkuszu do naszych danych dodajemy kolumny stan [owoc] rano dla każdego rodzaju owoców, kolumny ile [owoc] użyto oraz kolumny stan [owoc] po produkcji.

Pierwszy wiersz w kolumnach będzie trochę się różnił od pozostałych tak jak zazwyczaj w zadaniach tego typu. W kolumnach stan [owoc] rano, po prostu dajemy pole dostawy [owoc] tego dnia. W kolumnach ile [owoc] użyto, najpierw trzeba sprawdzić czy dany owoc w ogóle był używany, a jeśli tak to w jakiej ilości. Wiemy, że używane są owoce, których jest najwięcej oraz te drugie pod względem ilości. Zamiast dla każdego owocu sprawdzać czy jest go najwięcej lub prawie najwięcej, łatwiej sprawdzić czy danego owocu jest najmniej i dać do kolumny ile [owoc] użyto wartość zero. W przeciwnym razie wiemy, że danego owocu zużyto tyle samo co owocu, który jest drugi pod względem ilości.

Do znalezienia ile wynosi ta wartość, możemy użyć funkcji MAX.K, która znajduje którąś z kolei największą wartość (np. trzecią największą liczbę). Każda pole w kolumnie typu ile użyto powinna wyglądać mniej więcej tak: =JEŻELI(MIN($E3:$G3)=E3;0;MAX.K($E3:$G3;2)).

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.3 a
Warunek =JEŻELI(MIN($E3:$G3)=E3;0;MAX.K($E3:$G3;2)) umożliwia sprawdzenie ile malin użyto.

Gdy wiemy ile użyto danego owocu danego dnia możemy do kolumn stan [owoc] po produkcji wstawiać różnicę stanu początkowego i wartości z kolumny ile [owoc] użyto.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.3 b
Różnica między stanem początkowym, a ilością zużytą =F2-I2.

Kolejne wiersze naszej symulacji będą wyglądały dokładnie tak samo z drobną różnicą – zamiast ustawiać stan [owoc] rano na wartość dostawy ustawiamy ją na sumę dostawy i stanu po produkcji.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.3 c
Stan malin rano ustawia się na sumę dostawy malin i stanu malin po produkcji =B3+K2.

Teraz potrzebujemy określić rodzaj, dlatego wstawiamy nowy pusty pierwszy wiersz i nad porannym stanem każdego owocu wstawiamy jego pierwszą literę, czyli: m – maliny, t – truskawki i p – porzeczki. Następnie na końcu tabeli dodajemy nową kolumnę – rodzaj.

Ważne!

Funkcja X.WYSZUKAJ dostępna jest w Microsoft Excel od wersji 2021 oraz 365.

Do drugiego wiersza używając funkcji X.WYSZUKAJ (XLOOKUP) znajdujemy maksymalną wartość w kolumnach odpowiadających za poranny stan owoców i jako wynik zwracamy tabelę z pierwszego wiersza. Następnie kopiujemy funkcję i będąc cały czas w tej samej komórce, wstawiamy znak konkatenacji & (łączenia dwóch wyrażeń w jedno) i wklejamy funkcje, w tym zmieniamy MAX na MAX.K, gdzie k ustawiamy na 2. Komórka powinna zawierać teraz coś w tym stylu:

=X.WYSZUKAJ(MAX(E3:G3);E3:G3;$E$1:$G$1)&X.WYSZUKAJ(MAX.K(E3:G3;2);E3:G3;$E$1:$G$1).

To wyrażenie zwraca dwuliterowy skrót każdego rodzaju. Jest jednak pewien problem, zwraca ona 2 różne skróty dla każdego rodzaju np. mp i pm dla malinowo-porzeczkowego.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.3 d
Dwuliterowy skrót każdego rodzaju można zwrócić, dzięki użyciu funkcji =X.WYSZUKAJ(MAX(E3:G3);E3:G3;$E$1:$G$1)&X.WYSZUKAJ(MAX.K(E3:G3;2);E3:G3;$E$1:$G$1).

Na razie się tym nie przejmujemy i tworzymy tabelę przestawną z tylko jednej kolumny – tej zawierającej rodzaj (nie zaznaczaj pustych pól). Teraz dodajemy do części wiersz rodzaj, a także do kolumny wartości również rodzaj, teraz dla każdego dwuliterowego skrótu pojawi się liczba jego wystąpień.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.3 e
Tabela przestawna pozwala zwrócić ilość wystąpień konkretnych skrótów.

Niestety teraz musimy w trzech dowolnie wybranych wierszach manualnie wpisać nazwy rodzajów i obok każdej z nich wstawić sumę dwóch pól z tabeli przestawnej odpowiadających danemu dżemowi. Podpunkt jest już gotowy.

Rozwiązanie:

  • malinowo-porzeczkowe 41
  • malinowo-truskawkowe 72
  • truskawkowo-porzeczkowe 40

Zadanie 6.4.

Matura z informatyki 2023 - zadanie 6.4
Zadanie 6.4 – Konfitury owocowe z arkusza maturalnego z informatyki maj 2023

Ostatni podpunkt opiera się na naszych obliczeniach z podpunktu 3, więc też jest już prawie gotowy. Dodajemy do naszej tabeli nową kolumnę – ile kg konfitury wyprodukowano. Żeby to sprawdzić wystarczy użyć funkcji MAX na kolumnach typu ile użyto. NIe trzeba jej mnożyć lub dzielić, czy czegoś dodawać. Wiemy przecież, że w przypadku każdego owocu, którego używano, wykorzystano dokładnie tyle samo kilogramów, a że i tak musimy podzielić wartość na 2, żeby uzyskać wynik, można te działania po prostu ominąć.

Wszystko jest już gotowe do tworzenia zestawienia. Tworzymy tabelę przestawną z kolumnami rodzaj oraz nowo dodaną kolumną. Do sekcji wiersze dodajemy rodzaj, a drugą kolumnę dodajemy do sekcji wartości. Na koniec należy zrobić prawie to samo co w poprzednim podpunkcie, czyli wpisać nazwy  dżemów i zsumować odpowiadające im wartości.

Rozwiązanie - Matura z informatyki 2023 - zadanie 6.4 a
Tabela przestawna zwraca rodzaje dżemu oraz odpowiadające im sumy.

Rozwiązanie:

  • malinowo-porzeczkowe 18008
  • malinowo-truskawkowe 29732
  • truskawkowo-porzeczkowe 18382

Zadanie 7 – Gry planszowe

Matura z informatyki 2023 - zadanie 7
Zadanie 7 – Gry planszowe z arkusza maturalnego z informatyki maj 2023

Na koniec typowe polecenie dotyczące baz danych. W tego typu zadaniach musimy na samym początku poprawnie zaimportować dane z plików do accessa. Jeśli coś źle zaimportujemy możliwe, że całe zadanie będzie złe, dlatego trzeba wszystko dokładnie sprawdzić.

Wyjątkiem jest tutaj plik oceny.txt ponieważ nie zawiera on pola, które mogłoby być kluczem podstawowym, dlatego należy wybrać opcję Pozwalaj programowi Access dodać klucz podstawowy. Teoretycznie można utworzyć tabelę bez id dla każdego elementu, ale jest to zły pomysł.

Zadanie 7.1.

Matura z informatyki 2023 - zadanie 7.1
Zadanie 7.1 – Gry planszowe z arkusza maturalnego z informatyki maj 2023

Do pierwszego podpunktu należy utworzyć kwerendę, wystarczy kliknąć Projekt kwerendy w zakładce Tworzenie.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.1 a
W celu utworzenia kwerendy należy kliknąć Tworzenie/Projekt kwerendy.

Żeby dodać do kwerendy tabele z których chcemy wybierać dane, musisz posłużyć się znanym Ci już panelem bocznym.

W podpunkcie mamy podać tytuł gry, który znajduje się w tabeli Gry i liczbę ocen wystawionych tej grze, z kolei tą informację można uzyskać z tabeli Oceny. Trzeba więc dodać te tabele i wybrać z nich kolumny Gry.id_gry, Gry.nazwa oraz dowolną kolumnę z tabeli Oceny. Jednak żeby zamiast informacji zawartych w tej kolumnie uzyskać liczbę wierszy,  w których dane id_gry występują należy użyć sum, a konkretnie funkcji Policz. Włączenie sum jest dość proste, wystarczy kliknąć przycisk Sumy w zakładce Projekt kwerendy.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.1 b
W celu użyciu sum (funkcji policz), należy kliknąć Projekt kwerendy/Sumy.

Następnie zmienimy suma z Grupuj według na policz w kolumnie kwerendy, która bierze dane z tabeli Oceny, a w pozostałych pozostawiamy Grupuj według. Taka konfiguracja sprawia, że wiersze w których są te same dane, łączą się ze sobą (dzięki Grupuj według), liczba tych wierszy jest zliczana funkcją policz. Na koniec wystarczy posortować malejąco według kolumny, która zlicza wystąpienia.

To sprawi, że gra o największej liczbie wystąpień, pojawi się na samej górze i będzie ją można łatwo odnaleźć. Teraz odpowiedź jest oczywista, wystarczy skopiować ją do pliku txt podanego w poleceniu (oczywiście tylko i wyłącznie wskazane kolumny). Teraz pewnie zastanawiasz się po co w ogóle było to pole id_gry? A no po to, że dwie różne gry mogły mieć ten sam tytuł, a bez brania pod uwagę id zostałyby one połączone w jedną, przez co ich liczba wystąpień byłaby zsumowana, więc skutkowałaby niepoprawną odpowiedzią. Pamiętaj, aby zawsze tak robić w zadaniach, gdy trzeba policzyć ilość pól, ten trik jest bardzo często stosowany przez CKE. Po rozwiązaniu podpunktu, zawsze zapisuj kwerendy, które były wykorzystane do jego rozwiązania, bo na maturze musisz mieć dowód na utworzenie odpowiedzi.

Implementacja – SQL

Rozwiązanie:

K2

Zadanie 7.2.

Matura z informatyki 2023 - zadanie 7.2
Zadanie 7.2 – Gry planszowe z arkusza maturalnego z informatyki maj 2023

W następnym podpunkcie znowu korzystamy tylko z tabel Gry i oceny. Potrzebujemy id_gry, nazwa oraz kategoria i pola ocena z tabeli Oceny. Tak samo jak w pierwszym podpunkcie włączamy sumy, lecz tym razem zamiast policz dajemy średnią. Teraz pewnie wiesz, dlaczego w pierwszym podpunkcie pole może być dowolne – nie ma znaczenia co liczymy, jednak przy średniej ma to ogromne znaczenie. Nasze zadanie jest prawie gotowe, musimy dać jeszcze kryterium na kolumnę kategoria, dajemy więc “imprezowa” (razem z cudzysłowem!) do pola kryterium. Cudzysłowy są potrzebne, inaczej Access potraktowałby to co wpisaliśmy jako zmienną.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.2 a
Po uruchomieniu sum, należy skorzystać z funkcji średnia. Dodatkowo na kolumnę kategoria dodaje się “imprezowa” (razem z cudzysłowem) do pola kryterium.

Ostatnią rzeczą, o którą jesteśmy proszeni w zadaniu jest ustawienie dokładności średniej na 2 miejsca po przecinku. Należy kliknąć prawym przyciskiem myszy na jedno z pól edycji kolumny, które liczy średnią i wybrać właściwości.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.2 b
Na jednym z pól edycji kolumny liczących średnią kliknij PPM/Właściwości i zmodyfikuj powyższe pola.

Otworzy się wtedy panel boczny w którym format ustawiamy na stałoprzecinkowy, a miejsca dziesiętne na 2. Voilá, podpunkt gotowy.

Implementacja – SQL

Rozwiązanie:

nazwa Średnia ocena

5 sekund 8,16

Avalone 8,25

Colt Express 7,54

Jenga 8,16

Koncept 8,37

Mamy szpiega 8,22

Przebiegle wielblady 7,73

Sushi Go 8,07

Swiatowy Konflikt 7,80

Szeryf z Nottingham 7,88

Zadanie 7.3.

Matura z informatyki 2023 - zadanie 7.3
Zadanie 7.3 – Gry planszowe z arkusza maturalnego z informatyki maj 2023

Trzeci podpunkt jest trochę bardziej skomplikowany. Na początek znajdźmy graczy, którzy wystawili jakąś ocenę, w tym celu wystarczy stworzyć kwerendę w której użyjemy tabeli gracze oraz Oceny. Wystarczy pobrać teraz pole id_gracza z dowolnej tabeli, włączyć sumy, żeby nie było duplikatów i zapisać. To będzie nasza kwerenda pomocnicza.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.3 a
Utworzenie kwerendy pomocniczej.

Implementacja – SQL

Następnie tworzymy kwerendę w której liczymy jak wiele ocen dany gracz wystawił grom, które posiada. Używamy do tego tabeli gracze i oceny. Potrzebujemy do tego id_gracza z wierszem suma o wartości grupuj według dowolnego pola z tabeli Oceny z funkcją policz oraz kolumny Oceny.stan z wierszem suma o wartości gdzie oraz kryterium “posiada”. Wiersz suma z wartością gdzie, to wcale nie jest suma, tylko po prostu kryterium WHERE znane ze SQL, jednak tak jest to zaimplementowane w accessie. Teraz mając te dwie kwerendy patrzymy na liczbę wierszy w każdej z nich, można to sprawdzić w lewym dolnym rogu w trybie wyświetlania kwerendy. Wystarczy odjąć od liczby graczy wystawiających ocenę – liczbę graczy z drugiej kwerendy pomocniczej.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.3 b
Posiadając dwie kwerendy można wykonać odpowiednie obliczenia.

Implementacja: do kwerendy – SQL

Rozwiązanie:

334

Zadanie 7.4.

Matura z informatyki 2023 - zadanie 7.4
Zadanie 7.4 – Gry planszowe z arkusza maturalnego z informatyki maj 2023

Na początek stwórzmy tabelę, która każdemu id gracza przyporządkowuje jego kategorię wiekową. Tworzymy więc kwerendę, dodajemy do niej id_gracza z tabeli Gracze oraz tworzymy wyrażenie klikając prawym przyciskiem myszy w puste pole obok, w wierszu Pole: i wybierając opcję konstruuj. Wpisujemy tam takie wyrażenie IIf([Gracze].[wiek]<20;”junior”;IIf([Gracze]![wiek]<50;”senior”;”weteran”)) i klikamy OK.

Używamy tutaj funkcji iif i to 2 razy, działa ona tak – pierwszy argument to warunek, a dwa pozostale to sytuacje kiedy warunek jest spełniony lub nie. Najpierw patrzymy czy wiek gracza jest mniejszy od 20, jeśli nie to znowu używamy funkcji iif i sprawdzamy czy nasz gracz nie jest czasem w przedziale wiekowym seniora, jeśli nie to zostaje nam tylko jedna opcja – weteran.

Implementacja: do kwerendy – SQL

Następnie tworzymy kwerendę, dodajemy do niej tabele Oceny oraz Gry i kwerendę, którą przed chwilą stworzyliśmy. Gdy dodajemy kwerendę trzeba utworzyć relacje po prostu przeciągając pole Oceny.id_gracza do odpowiadającego mu pola z kwerendy pomocniczej. Wybieramy kolumny: nasze wyrazenie z grupuj wedlug, id_gry z grupuj wedlug, nazwa gry z grupuj według oraz dowolne pole z ocen o posiadające policz. Warto też dać sortowanie malejące na kolumnę z policz. Teraz już wszystko jest gotowe, wystarczy znaleźć dla każdej kategorii wiekowej jej pierwsze wystąpienie, sprawdzić czy nie ma kilku o tej samej liczbie wystąpień i już. Dla ułatwienia można za każdym razem zmieniać kryterium kategorii.

Implementacja: do kwerendy – SQL

Rozwiązanie:

Kategoria Tytuł gry Liczba ocen

juniorzy Terraformacja Marsa 6

juniorzy K2 6

seniorzy K2 24

weterani Robinson Crusoe 28

Zadanie 7.5.

Matura z informatyki 2023 - zadanie 7.5
Zadanie 7.5 – Gry planszowe z arkusza maturalnego z informatyki maj 2023

Kolejne zadanie jest stworzone do rozwiązywania na kartce, ale to nie znaczy że komputer nie będzie już przydatny. Znając różnice między standardowym SQL-em, a SQL-em w Accessie (JET SQL) bardzo łatwo można przepisać prawie gotową odpowiedź z Accessa.

Tworzymy nową tabelę o nazwie Sklep (zakładka tworzenie/tabela, bardzo podobnie do kwerendy). Wchodzimy w tryb edycji usuwamy istniejące pola i dodajemy nowe pola tak jak w poleceniu, czyli id_gry – liczba, cena gry – liczba i ostatnie pole ma typ boolean, tego typu nie ma w Accessie, ale tym się nie przejmujemy i dajemy typ krótki tekst. Możemy dodać też parę rekordów, żeby widzieć, czy nasze kwerendy będą działać.

Rozwiązanie - Matura z informatyki 2023 - zadanie 7.5 a
Skorzystanie z pomocy Accessa ułatwia rozwiązanie zadania, mimo że jest ono przeznaczone do opisania na kartce.

Teraz tworzymy naszą kwerendę, dodajemy tabelę Gry oraz nowo utworzoną tabelę Sklep. Tworzymy między nimi relację z pomocą id_gry. Dodajemy pole cena z sumą Suma, pole kategoria z sumą gdzie i kryterium “logiczna” oraz pole promocja z sumą Gdzie i kryterium “true”. Teraz przechodzimy do widoku SQL. Najlepiej teraz skopiować wszystko do notatnika i tam dokonać edycji. JET SQL różni się głównie tym, że są w nim bardzo duże ilości niepotrzebnych nawiasów. Po prostu usuwamy wszystkie nawiasy poza tymi dotyczącymi funkcji. Musimy też usunąć cudzysłów znajdujący się nad true, bo w SQL to jest boolean, a nie string. Warto też usunąć nazwę kolumny kwerendy, bo o ile w Accesie jest ona wymagana to w standardowym już nie, a autorzy zadanie nic o tym nie wspominają.
Implementacja – SQL

Czyli z tego:

Robimy to:

W kluczu jest trochę inna kolejność, jednak nie ma to znaczenia.

ads banner

Wpisy, które mogą Cię zainteresować: