matura z informatyki 2020 rozwiązania

Matura z informatyki 2020 rozwiązania

Matura z informatyki 2020 nie należała do najłatwiejszych — ze względu na trudność samych zadań, ale też i problemów związanych z pandemią koronawirusa. Maturę z informatyki w tym roku zdecydowało się pisać niecałe 3.5% wszystkich zdających. Nic dziwnego, bowiem to rozszerzenie nie należy do najłatwiejszych. Chcąc pomóc maturzystom, przedstawiamy arkusz matury z informatyki 2020 wraz z rozwiązaniami krok po kroku.

Matura z informatyki 2020 arkusz — część pierwsza (teoria)  

Część teoretyczna zazwyczaj uchodzi za tą łatwiejszą. Nie mamy w niej jednak dostępu do komputera, który okazałby się bardzo przydatny przy sprawdzaniu algorytmów, jednak nie są to wybitnie trudne zadania i możliwe jest ich wykonanie na kartce (lub dla odważniejszych w pamięci). Pamiętajmy, że do dyspozycji jest również cała pusta strona na końcu, w której możesz zapisywać swoje luźne przeliczenia i pomysły. Przejdźmy zatem do zadań:

Matura z informatyki 2020 odpowiedzi: zadanie 1 — zbiory podobne  

Dwa zbiory o tej samej liczbie elementów całkowitych są k-podobne (k jest mniejsze od wielkości zbiorów), gdy elementy od pierwszego, do k-tego elementu ze zbioru A są takie same jak elementy od (n-k+1)-tego elementu do końca zbioru B. W przypadku, gdy k=0 zbiory są podobne, jeżeli są identyczne. Uwaga: z języków programowania pewnie kojarzysz tablice. Pierwszym elementem tablic jest prawie zawsze element z indeksem 0 (a w zadaniu pierwszy element oznacza 1). Musimy o tym pamiętać w dalszej części tego zadania.

Zadanie 1 — podpunkt 1  

Sprawdzamy zatem, czy podane zbiory spełniają warunki zadania; zaczniemy od pozycji 5. Zapiszmy sobie dane: n=5 i k=2. Musimy zatem sprawdzić, czy elementy od pierwszego do drugiego(k) z tablicy A równają się elementom od czwartego(n-k+1=5-2+1) do piątego(n) z tablicy B. Tablica A={1, 2}, tablica B={1,2}. Elementy się zgadzają. Musimy jeszcze sprawdzić drugi warunek: czy elementy od trzeciego(k+1) do piątego(n) z tablicy A równają się elementom od pierwszego do trzeciego(n-k); Tablica A={3,4,5}, tablica B={3,4,5}. Oba warunki zostały spełnione, więc w kratce obok wpisujemy PRAWDA.

Analogicznie wykonujemy zadanie dla wiersza 7.: Tablica A={4}, tablica B={2}; Tablica A={2,4,4,2,6}, tablica B={4,4,2,6,4}. Jak widać oba warunki nie zostały spełnione, więc w okienku obok wpisujemy FAŁSZ.

W wierszu szóstym widnieje PRAWDA. Oznacza więc to, że oba warunki są spełnione. Zauważamy zatem, że skoro od pierwszego do k-tego elementu zbiór A jest równy pewnej części zbioru B, to k nie może być większe niż 4, gdyż wtedy w pierwszym warunku zawierałaby się liczba 3, która zaś jest początkiem zbioru B, co oznacza, że warunek nie byłby spełniony. Sprawdźmy zatem warunki dla k=4: Tablica A={1,1,1,1}, tablica B{1,1,1,1}; Tablica A={3,1,1,1,1}, Tablica B={3,1,1,1,1}; oba warunki są spełnione, więc wpisujemy w okienku 4:

Zadanie 1 — podpunkt 2  

Za zadanie mamy napisanie funkcji sprawdzającej k-podobność. Poniżej znajdziesz 3 implementacje w dostępnych na maturze językach programowania:

C++

Java

Python

Zwróć uwagę, że trzeba wziąć pod uwagę indeksowanie zaczynające się od 0, więc zniknęły jedynki z niektórych wzorów.

Zadanie 1 — podpunkt 3  

Tym razem musimy napisać funkcję, która sprawdzi, czy istnieje jakikolwiek k, dla którego zbiory są podobne. Wykorzystamy do tego funkcję z poprzedniego podpunktu i fakt, że k należy do przedziału <0,n):

C++

Java

Python

Matura z informatyki 2020 rozwiązania: zadanie 2 – symetryczny ciąg  

Przedstawię najpierw podany algorytm jako schemat blokowy:

Zauważamy w nim podwójną rekurencję (jeżeli nie wiesz co to, sprawdź tutaj). Jak sama nazwa zadania podpowiada: jego zadaniem jest wypisanie symetrycznego ciągu liczb całkowitych. Zwróć również uwagę, że ilość wywołań funkcji jest zależna od liczby a (to ona warunkuje zatrzymanie rekurencji). Jedno wywołanie funkcji dla a>0, spowoduje dwa następne wywołania, co po krótkiej kalkulacji daje nam (2^a) — 1 wypisań.

Zadanie 2 — podpunkt 1  

Aby wykonać to zadanie musimy po prostu prześledzić działanie algorytmu dla podanych a i b. Dobrze jest rozpisać sobie drzewo wywołań, pamiętając przy tym, że jedno rekurencyjne wywołanie tworzy nową gałąź, dopóki nie napotka ona warunku stopującego. Poprawnie uzupełniona tabela powinna wyglądać tak:

Zadanie 2 — podpunkt 2  

Przy analizie algorytmu zauważyliśmy już zależność liczby wypisań, od liczby a. Korzystając więc ze wzoru, który wyprowadziliśmy sobie powyżej, możemy rozwiązać ten podpunkt:

Matura z informatyki 2020 odpowiedzi: zadanie 3 – zadanie zamknięte  

Tak jak co roku, w zadaniu zamkniętym będziemy musieli wykazać się przede wszystkim wiedzą teoretyczną. Za drobne pomyłki tutaj trzeba niestety słono zapłacić — jeden błąd = utrata całego podpunktu.

Zadanie 3 — podpunkt 1  

Zegarki binarne działają tak, jak podpowiedziano nam w treści podpunktu: niższe lampki oznaczają ostatnie cyfry z liczby w zapisie dwójkowym. Wystarczy zatem zapisać wartość binarną dla każdej „wskazówki”, a następnie zamienić ją na liczbę dziesiętną, dzięki czemu możemy sprawdzić godzinę. Na poniższym zrzucie na niebiesko zapisałem liczby w postaci binarnej, zaś na czerwono te same liczby w postaci dziesiętnej. Niżej zaznaczone są również prawidłowe odpowiedzi:

Zadanie 3 — podpunkt 2  

Przeanalizujmy ten algorytm na schemacie blokowym:

Podobny algorytm wykorzystywaliśmy na poprzednich maturach: wypisuje on pojedyncze cyfry z podanej liczby ( Uwaga: wypisuje je w kolejności odwrotnej, czyli od prawej do lewej). Algorytm ten dodatkowo zlicza sumę poszczególnych cyfr. Mając na uwadze powyższe, nie powinno być problemu z rozwiązaniem tego podpunktu; prawidłowe odpowiedzi widoczne są poniżej:

Zadanie 3 — podpunkt 3  

Do tego podpunktu wymagana jest wiedza z sieci i przeliczania adresów, które dosyć rzadko pojawiają się na maturze z informatyki. Odpowiedzi możesz sprawdzić na poniższym obrazku:

Zadanie 3 — podpunkt 4  

W poniższym podpunkcie wymagana jest wiedza z języka SQL. O tyle łatwo jest, że odpowiedzi się „zazębiają”, co wyklucza dwie pozostałe. Na zrzucie zaznaczyłem poprawne odpowiedzi:

grupa wsparcia matura z informatyki

Matura z informatyki 2020 — część druga (praktyka)  

Za nami pierwsza część matury z informatyki. W części praktycznej do dyspozycji masz już komputer z wybranym przez siebie systemem operacyjnym i środowiskiem programistycznym. Dostępne są również pozostałe narzędzia informatyczne jak np. Access czy Excel. Przejdźmy zatem do rozwiązywania kolejnych zadań:

Matura z informatyki 2020 arkusz: zadanie 4 — liczby i wyrazy  

W następnych podpunktach użyjemy programów napisanych w 3 językach, które możesz użyć na maturze – Javie, C++ oraz Pythonie. Odczytamy w nich każdy wiersz z pliku tekstowego pary.txt, a następnie oddzielimy liczbę od wyrazu. Podam zatem kody źródłowe programów, na których będziemy bazować, wprowadzając odpowiednie modyfikacje:

C++

Java

Python

Zadanie 4 — podpunkt 1  

W programie potrzebna nam będzie po pierwsze funkcja sprawdzająca czy liczba jest pierwsza; wykorzystamy przy tym fakt, że gdy liczba n jest pierwsza, to dla każdej liczby całkowitej mniejszej od pierwiastka kwadratowego n i większej od 1 nie istnieje liczba, która by była dzielnikiem liczby n. Następnie stworzymy funkcję sprawdzającą hipotezę Goldbacha, a następnie wypisującą rozwiązanie. Szczegóły znajdziesz w komentarzach w poniższym, działającym kodzie źródłowym programu:

Java

Python

Program wydrukuje łącznie 28 odpowiedzi zgodnymi z wymogami zadania. Zauważ, że wykorzystałem tutaj dodatkową dyrektywę math.h w języku C++ oraz import math w Pythonie. Pamiętaj, że możesz sprawdzić działanie programu poprzez przepuszczenie przez niego pliku przyklad.txt i porównanie odpowiedzi z tymi podanymi w zadaniu.

Zadanie 4 – podpunkt 2  

Tym razem operować będziemy na wyrazach. Przeiterujemy więc przez jego zawartość, sprawdzając długość najdłuższego ciągu i zapisując go jako string(bo po co tworzyć specjalnie tablicę znaków, skoro string jest taką tablicą). Na koniec wyrzucimy do konsoli najdłuższy ciąg znaków z danego wyrazu i przejdziemy do następnego. Wszystko opisane w kodach źródłowych  poniżej:

C++

Java

Python

Zadanie 4 – podpunkt 3  

Tutaj operujemy już na całej parze, ale i tak będzie wymagana jej separacja. Stworzymy funkcję sprawdzającą, czy dana para jest większa od poprzedniej (najpierw sprawdzimy liczbę, a jeżeli są równe to porównamy ciągi znaków). Następnie wrzucimy wszystkie pary w vector w C++ (wymagana dodatkowa dyrektywa), ArrayList w Javie(wymagany dodatkowy import) i w tablicę w Pythonie(tu, na szczęście, nic dodatkowego nie jest wymagane :)), a następnie znajdziemy w nich najmniejszą parę.

C++

Java

Python

Program drukuje odpowiedź: 3 asd.

Matura z informatyki 2020 rozwiązania: zadanie 5 – języki świata  

Jak łatwo zauważyć, poszczególne pliki są oddzielnymi tabelami pewnej bazy, więc do tego zadania wykorzystamy program Microsoft Access. Zanim jednak przystąpimy do rozwiązywania podpunktów, musimy tabele te zaimportować. Przedstawiam krok po kroku jak to zrobić na zrzutach poniżej:

Z zakładki Dane wybieramy Nowe źródło danych>Z pliku>Plik tekstowy.

Następnie wybieramy plik tabeli, którą chcemy zaimportować.

Tutaj bez zmian.

Wybieramy państwo jako indeksowany i unikalny (bez duplikatów).

W żadnej z tabel nie dodajemy klucza podstawowego; będziemy operować na nazwach państw i języków. Klikamy Zakończ.

Zaznaczam, że w tabeli Uzytkownicy wybieramy kolumny Jezyk i Panstwo jako indeksowane(duplikaty OK). W tabeli Jezyki kolumna Jezyk powinna być indeksowana bez duplikatów.

Następnie połączymy tabele relacjami tak jak pokazałem na zdjęciu:

Z tak przygotowaną bazą możemy przystąpić do rozwiązywania podpunktów:

Zadanie 5 — podpunkt 1  

W tym podpunkcie wykorzystamy jedną, prostą kwerendę wybierającą rodzinę językową, a następnie korzystając z Sumy(prawy, górny róg w zakładce Projektowanie) i Policz. Projekt kwerendy widoczny jest poniżej:

Wynik jej działania (i jednocześnie odpowiedź) powinien wyglądać następująco:

Zadanie 5 — podpunkt 2  

Potrzebna nam będzie pomocnicza kwerenda, która wybierze języki, które są językami urzędowymi w jakimkolwiek kraju. Następnie, w kolejnej kwerendzie, z listy wszystkich języków wystarczy wyłączyć wyniki poprzedniej kwerendy i zliczyć ilość języków. W drugiej kwerendzie wykorzystamy czysty język SQL. Projekt pierwszej kwerendy widoczny jest na poniższym zrzucie:

Uwaga: w projekcie kwerendy w języku SQL dodaj słowo DISTINCT tuż po słowie SELECT.

Mając kwerendę pomocniczą, możemy przejść do tworzenia tej właściwej — dającej nam rozwiązanie. Kod SQL następnej kwerendy załączony jest na obrazku:

 
Kod SQL

Oto wynik działania kwerendy:

Odpowiedzią jest więc 445 języków.

Zadanie 5 — podpunkt 3  

Aby wykonać ten podpunkt znowu potrzebna nam będzie kwerenda pomocnicza, która połączy języki z kontynentami, na których występują. Następnie przy jej użyciu wybierzemy języki, które występują na 4 lub więcej kontynentach.

Uwaga: tu również ważne jest dodanie słowa DISTINCT, gdyż dany język może występować kilkukrotnie na danym kontynencie:

Następnie możemy już wybrać interesujące nas języki za pomocą poniższej kwerendy:

Wynikiem jej działania jest poniższa tabela:

Zadanie 5 — podpunkt 4  

W tym podpunkcie skorzystamy z dwóch kwerend – pomocniczej i finalnej, dającej wynik. Pierwsza wybierze język i ilość jego użytkowników dla obu Ameryk i jednocześnie wykluczy języki z rodziny indoeuropejskiej. Druga zliczy ilość użytkowników dla każdego z języków wybranych w poprzedniej kwerendzie, a następnie posortuje je malejąco i wybierze pierwsze sześć języków. Wszystkie kwerendy przedstawiłem poniżej:

Kwerenda pomocnicza 1.

Ostatnia, finalna kwerenda; korzystamy tutaj z „manualnej” relacji poprzez kryteria. Pamiętaj, aby wpisać 6 w polu „Zwróć” w menu „Konfiguracja kwerendy”, a także o sortowaniu malejącym przy konstrukcji kwerendy.

Poniższe zestawienie reprezentuje działanie kwerendy i odpowiedź na ten podpunkt:

Zadanie 5 — podpunkt 5  

Wykorzystamy do rozwiązania prostą kwerendę, która jednocześnie będzie zliczać 30% populacji i porównywać ją do ilości użytkowników języków. Dodatkowo sprawdzi, czy język nie jest urzędowy w danym państwie.

Wynik jej działania załączyłem poniżej jako zrzut:

Matura z informatyki 2020 rozwiązania: zadanie 6 – statek  

W ostatnim zadaniu otrzymujemy zbiór informacji na temat pewnego statku. Informacje te jak widzimy na zdjęciu są podzielone na kolumny, więc do pracy z nimi użyjemy programu Microsoft Excel. Import tabeli pokazałem na poniższych zrzutach ekranu:

Wybieramy Dane>Z tekstu, a następnie wskazujemy plik statek.txt.

Wybieramy Moje dane mają nagłówki.

Następnie kolumnie data nadajemy format RMD i klikamy zakończ.

Zaimportowaliśmy dane do arkusza, możemy więc rozpocząć rozwiązywanie podpunktów.

Zadanie 6 — podpunkt 1  

Aby wykonać ten podpunkt wykorzystamy sumę częściową. Najpierw sprawdzimy który towar był ładowany najczęściej, a następnie zliczmy ilość ładowanych ton.

Najpierw musimy posortować dane według załadunku i wyładunku.

Następnie zaznaczamy i kopiujemy wszystkie załadunki.

Skopiowane dane wklejamy w nowym arkuszu, a następnie sortujemy według towaru, aby móc zliczyć który był ładowany najczęściej.

Następnie korzystamy z sumy częściowej tak jak pokazałem na zdjęciu.

Po wykonaniu sumy częściowej widzimy który towar był ładowany najwięcej razy – T4.

Z lewego menu otwieramy podgrupę, w której są dane na temat towaru T4. Następnie w oddzielnej komórce przy pomocy formuły SUMA zliczamy ilość ton, zaznaczając cały odpowiedni obszar, tak jak na zdjęciu.

Wynika więc, że najczęściej ładowano towar T4; łączna ilość załadunku tego towaru wynosi 905 ton.

Zadanie 6 — podpunkt 2  

Skorzystamy tutaj z formuły JEŻELI, która zwróci 1 gdy spełnione zostaną warunki zadania, a w przeciwnym wypadku 0. Następnie zsumujemy wyniki i otrzymamy ilość takich dni:

Najpierw musimy posortować dane według daty.

Potem tworzymy formułę sprawdzającą warunek (zwróć uwagę na -1 przy warunku — wynika to z faktu, który przestawiono w treści przykładu). Podaną formułę „rozciągamy” na całą kolumnę, poprzez dwukrotne kliknięcie małego kwadracika w prawym dolnym rogu.

Następnie zliczamy każdy 20 dniowy rejs za pomocą SUMA.

Oto odpowiedź na pytanie z tego podpunktu.

Zadanie 6 — podpunkt 3  

Dosyć skomplikowany podpunkt, w którym zliczymy łączną ilość załadunku i wyładunku dla każdego towaru aż do wskazanych w poleceniu dni, a następnie podamy którego było najwięcej/najmniej. Uwaga: dane muszą być znowu posortowane według daty!

Tworzymy dwie nowe kolumny o formułach podanych na zdjęciach.

Obie formuły ponownie rozciągamy na długość całej kolumny.

Tak powstałe kolumny kopiujemy w DO DNIA 2016-01-02!, a następnie wklejamy w nowym arkuszu (uwaga: wybierz Wklej>Wklej tylko wartości). Następnie sortujemy je według Towaru.

 
Korzystamy z sumy częściowej tak, jak pokazano na zdjęciu.

 
Po wejściu w drugą zakładkę menu z lewej strony, widzimy łączną ilość ton dla każdego towaru do dnia 2016-02-01.

 
Powyższe kroki powtarzamy, z tym że uwzględniamy wszystkie rejsy do dnia 2018-08-01. Wyniki tych kroków powinny być takie, jak na załączonym zdjęciu.

Na koniec zbieramy dane i zapisujemy w komórkach, aby odpowiedź była czytelna.

Zadanie 6 — podpunkt 4  

Skorzystamy tutaj z dosyć skomplikowanej formuły SUMA.ILOCZYNÓW, która pozwoli na znalezienie zbioru spełniającego kilka warunków:

Sortujemy dane według towaru.

Kopiujemy interesujące nas dane do nowego arkusza.

Następnie tworzymy kolumnę Data, w której umieścimy wszystkie miesiące z okresu podanego w poleceniu. Zwróć uwagę, że zmieniłem w nich format daty (możesz to zrobić z poziomu zakładki Narzędzia główne). Aby nie wpisywać osobno miesięcy, możesz również wpisać kolejno pierwsze trzy, zaznaczyć je i przeciągnąć kwadracikiem w dół, aż do uzyskania pożądanego miesiąca. Następnie obok tworzymy kolumny Załadunek oraz Wyładunek. W kolumnie załadunek wpisujemy powyższą formułę; sprawdza ona po pierwsze czy w danym zakresie znajduje się określony komórką obok miesiąc i rok, a następnie czy jest to załadunek (Z). Zauważ, że w większości komórek użyłem stałych odwołań przy użyciu znaczku dolara $, a to dlatego, bo gdy teraz zastosujesz tą formułę dla całej kolumny, to zaznaczone dane również „uciekałyby” w dół. Zastosuj więc tą formułę dla całej kolumny.

Zastosuj ją też dla drugiej kolumny (tylko pamiętaj, aby w warunku zmienić =”Z” na =”W”).

Z tak utworzonych kolumn możemy już utworzyć wykres.

Pamiętaj, aby zachować czytelność wykresu i danych przez niego reprezentowanych.

Zadanie 6 — podpunkt 5  

W nowej kolumnie policzmy zatem ile kapitan zapłacił/wydał, a następnie dodamy tą liczbę do jego kasy do jego kasy. Przy użyciu funkcji MAX, oraz dodatkowo dla wygody INDEKS i PODAJ.POZYCJĘ znajdziemy również dzień, w którym miał najwięcej pieniędzy:

Liczymy ile pieniędzy miał po pierwszej transakcji.

Następnie tworzymy formułę, która będzie odpowiednio dodawać lub odejmować wyliczoną ilość talarów od kasy kapitana zależnie od tego, czy jest to wyładunek, czy załadunek. Formułę oczywiście należy zastosować na całą długość kolumny.

Następnie tworzymy komórkę, która poda stan kasy na ostatni dzień, gdy statek był w porcie.

Musimy teraz utworzyć kolumnę, która sprawdzi stan kasy na sam koniec dnia (jak wiemy z zadania, to właśnie wtedy statek opuszczał port, a o to nas pytają w zadaniu)

Sprawdzamy teraz z utworzonej kolumny ile miał najwięcej pieniędzy, a następnie odszukujemy dzień, w którym to miało miejsce.

Pełna odpowiedź na podpunkt a).

Teraz sprawdzimy ile pieniędzy musiałby posiadać kapitan, aby mieć za co za każdym razem opłacić transakcję. Musimy tutaj uwzględnić jego zarobki, więc skorzystamy z kolumny utworzonej w poprzednim zadaniu, a następnie dodamy dwie kolumny, które podsumują stan jego kasy przed i po transakcji:

Następnie dodajemy pod nimi komórki, które będą aktualizować stan kasy zależnie od wydatków/zarobków z danego dnia (oczywiście formułę „rozciągamy” na całą kolumnę):

Kolejnym krokiem będzie znalezienie najniższej wartości w nowo utworzonej kolumnie – liczba przeciwna do tej wartości będzie minimalną ilością pieniędzy potrzebnej do uiszczenia wszystkich transakcji:

Otrzymujemy odpowiedź na podpunkt b).

Podsumowanie

Jak sami widziecie tegoroczny arkusz nie należał do najłatwiejszych. Niemniej mam nadzieję, że te rozwiązania do matury z informatyki 2020 pomogą wam lepiej zrozumieć jej specyfikę. Powodzenia w nauce!

You Might Also Like
Dodaj komentarz

icon