... Pieczątka Organizatora... Tu wpisz swój Kod KONKURS PRZEDMIOTOWY Z INFORMATYKI DLA UCZNIÓW GIMNAZJUM ETAP WOJEWÓDZKI Drogi uczniu, Witaj na II etapie konkursu informatycznego. Przeczytaj uważnie instrukcję i postaraj się prawidłowo odpowiedzieć na wszystkie pytania. Arkusz liczy 10 stron Twoim zadaniem będzie rozwiązanie czterech zadań umieszczonych w arkuszu konkursowym. Przed rozpoczęciem pracy, sprawdź czy arkusz jest kompletny. Jeśli zauważysz usterki, zgłoś Komisji Konkursowej. Zadania czytaj uważnie i ze zrozumieniem. Rozpoczynając pracę zaloguj się do systemu, zgodnie ze wskazówkami otrzymanymi przed konkursem. Wszystkie potrzebne Ci pliki znajdziesz w folderze Dane, pliki z rozwiązaniami należy umieszczać w folderze ID_ucznia. Lokalizację tych folderów poda Komisja Konkursowa. Na pulpicie znajdziesz skróty do wszystkich potrzebnych Ci programów. Przy każdym zadaniu podano maksymalną liczbę punktów możliwą do uzyskania za jego rozwiązanie Pracuj samodzielnie Powodzenia! Czas pracy: 90 minut Liczba punktów możliwych do uzyskania: 50 Wpisuje egzaminator / nauczyciel sprawdzający pracę Nr zadania 1 2 3 4 Suma Maksymalna liczba punktów 8 12 15 15 50 Uzyskana liczba punktów Strona 1 z 10
Zadanie 1 Ankieta (8 punktów) Korzystając z notatnika oraz stosując HTML5, utwórz stronę www o nazwie index.html. Dołącz do niej nowoutworzony arkusz stylów style.css. W tytule strony podaj swoje imię i nazwisko. Zgodnie z dołączonym schematem w pliku schemat.jpg, zbuduj identyczną strukturę strony opartą na znacznikach div. W arkuszu stylów utwórz odpowiednie identyfikatory wraz z właściwościami i kolorami podanymi na schemacie. Zauważ, że nie wszystkie właściwości css potrzebne do zbudowania podanej struktury są wyszczególnione na schemacie dodaj brakujące właściwości, aby uzyskać identyczny efekt. a) Utwórz w notatniku dwa pliki: index.html oraz style.css. Plik index.html zadeklaruj jako HTML5 W tytule strony podaj swoje imię i nazwisko oraz dołącz arkusz styli style.css. b) W arkuszu styli utwórz identyfikator container, dodaj właściwości, które wyśrodkują stronę w oknie przeglądarki oraz określą szerokość strony na 1000 px. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. c) W arkuszu styli utwórz identyfikator header, dodaj właściwości, które określą wysokość div na 300 px oraz tło w kolorze #ffb201. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. d) W arkuszu styli utwórz identyfikator menu, dodaj właściwości które określą wysokość div na 50 px oraz tło w kolorze #c20710. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. e) W arkuszu styli utwórz identyfikator left, dodaj właściwości które określą minimalną wysokość div na 500 px, szerokość na 250 px, oraz tło w kolorze #16cdc7. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. f) W arkuszu styli utwórz identyfikator center, dodaj właściwości, które określą minimalną wysokość div na 500 px, szerokość na 500 px oraz tło w kolorze #e5e3dd. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. g) W arkuszu styli utwórz identyfikator right, dodaj właściwości które określą minimalną wysokość div na 500 px, szerokość na 250 px oraz tło w kolorze #16cdc7. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. h) W arkuszu styli utwórz identyfikator footer, dodaj właściwości, które określą wysokość div na 200 px oraz tło w kolorze #856fb6. Zastosuj ten identyfikator w pliku index.html przy odpowiednim znaczniku div. Strona 2 z 10
WAŻNE: identyfikatory left, center, right potrzebują dodatkowych właściwości, tak aby uzyskać efekt ułożenia divów obok siebie, a znacznik footer właściwość, która zatrzymuje ten efekt. Nie zapomnij ich dodać. W folderze ID_ucznia/zadanie1 powinny znajdować się pliki index.html oraz style.css Punktowanie zadania 1 Podpunkt a b c d e f g h Razem Max Liczba punktów 1 1 1 1 1 1 1 1 8 Liczba punktów ucznia Strona 3 z 10
Zadanie 2 Hasło (12 punktów) Jednym z elementów naszego cyberbezpieczeństwa w sieci jest bezpieczne hasło do naszych kont i usług sieciowych. Powinno ono być często zmieniane oraz trudne do rozszyfrowania. Twoim zadaniem będzie stworzenie w środowisku programistycznym (CodeBlocks, lub Dev C++ lub Python) programu, który będzie prosił o podanie hasła oraz sprawdzał, czy to hasło spełnia wymagania co do złożoności: a) napisz program, który będzie prosił o podanie hasła; b) program sprawdza, czy hasło ma co najmniej 1 małą literę [a z]; c) program sprawdza, czy hasło ma co najmniej 1 liczbę [0-9]; d) program sprawdza, czy hasło ma co najmniej 1 dużą literę [A-Z]; e) program sprawdza, czy minimalna długość hasła to 6 znaków. Jeśli podane hasło spełnia powyższe założenia program ma wypisać na ekranie tekst hasło spelnia wymogi co do zlozonosci w przeciwnym wypadku ma pojawić się napis haslo jest zbyt slabe Zapisz w folderze ID_ucznia/zadanie2 plik o nazwie haslo (źródłowy i wynikowy z rozwiązaniem) Punktowanie zadania 2 Podpunkt a b c d e Razem Max Liczba punktów 1 3 3 3 Liczba punktów ucznia 2 12 Strona 4 z 10
Zadanie 3 Skoki (15 punktów) Otrzymaliśmy wybrane dane o wybranych zawodach rozgrywanych w ramach Pucharu Świata w skokach narciarskich w sezonie 2015/2016 w postaci trzech plików: wyniki.txt, zawody.txt i zawodnicy.txt. Twoim zadaniem będzie odpowiednie opracowanie tych wyników: a) W programie MS Access utwórz pustą bazę danych o nazwie Skoki. b) Zaimportuj dane o zawodach do trzech tabel w pliku bazy danych Skoki: wyniki, zawody, zawodnicy: Uwaga: Wskazówka do importu danych tekstowych do tabeli: Wybierz Menu Dane zewnętrzne Plik tekstowy, wskaż plik źródłowy, wybierz punkt Zaimportuj dane źródłowe do nowej tabeli w bieżącej bazie danych, zostaw format ograniczony, wybierz zaawansowane i ustawa stronę kodową na Środkowoeuropejski (Windows), w kolejnym oknie zostaw średnik i zaznacz pierwszy wiersz zawiera nagłówki kolumn, w kolejnych oknach dla tabel Zawodnicy i Zawody wybierz wybieram własny klucz podstawowy (ID_zawodnika i ID_zawodow), w ostatniej bazie Wyniki wybierz Pozwalaj programowi Access dodać klucz podstawowy. c) Zaprojektuj relacje pomiędzy tabelami. d) Wyświetl tylko nazwiska i imiona zawodników, którzy w przynajmniej jednym skoku uzyskali odległość ponad 130m na skoczni w Engelbergu. e) Ilu Polaków startowało w zawodach w Zakopanem? Wynik kwerendy powinien zwrócić jedną kolumnę o nazwie Liczba zawodników. f) Podaj łączną długość skoków zawodników austriackich w zawodach rozegranych w styczniu. W folderze ID_ucznia/zadanie3 powinien znajdować się plik skoki.accdb z rozwiązaniem zadania: Punktowanie zadania 3 Podpunkt a b c d e f Razem Max Liczba punktów 2 5 2 2 2 2 15 Liczba punktów ucznia Strona 5 z 10
Zadanie 4 Kompresja (15 punktów) do rozwiązania częściowo na kartce brudnopisu do podpunktu d Z kompresją danych spotykamy się często w informatyce i jej zastosowaniach. Pliki kompresuje się, aby zajmowały mniej miejsca na nośnikach danych lub były szybciej transmitowane poprzez sieć. Jednym ze sposobów kodowania jest zastosowanie kodów o zmiennej długości, tak aby znaki występujące najczęściej posiadały kody najkrótsze, znaki występujące rzadziej kody dłuższe. Ten sposób jest bardzo efektywny, gdyż sumaryczna liczba bitów jest mniejsza niż przy stosowaniu kodów o stałej długości. Takie kody są nazywane kodami bezprzystankowymi, a system ten został opracowany przez amerykańskiego informatyka Davida Huffmana nosi nazwę kodowania Huffmana. Kody bezprzystankowe reprezentuje się drzewem binarnym. Interpretacja takiego drzewa jest bardzo prosta. Liść określa zawsze kodowany znak. Ścieżka prowadząca od korzenia drzewa do danego liścia określa kod znaku: gałąź lewa ma wartość bitową 0, gałąź prawa ma wartość bitową 1. Idąc po ścieżce, zbieramy kolejne bity, aż dojdziemy do liścia. W ten sposób otrzymamy kod znaku w liściu. Poniżej przedstawiony został przykładowy algorytm tworzenia drzewa kodu bezprzystankowego Huffmana. Chcemy zakodować następującą wiadomość: ACBCACADACBBBADAAAACAABBCCA Obliczamy ilość wystąpień każdego znaku: A 12 B 6 C 7 D 2 Tworzymy listę węzłów drzewa kodu bezprzystankowego. Na liście umieszczamy kolejne węzły, które w docelowym drzewie będą liśćmi. Każdy węzeł przechowuje kodowany znak oraz częstość wystąpień tego znaku w kodowanym tekście. Lista jest uporządkowana wg rosnącej liczby wystąpień. Dla naszego tekstu pierwszy węzeł zawiera znak D, Ostatni węzeł zawiera znak A o największej liczbie wystąpień, równej 12. Dopóki na liście jest więcej niż jeden element, będziemy powtarzać następującą operację: Z listy pobieramy dwa pierwsze węzły. Węzły te zawsze zawierają znaki o najmniejszej liczbie wystąpień. U nas są to węzły D:2 i B:2. Tworzymy nowy węzeł i dołączamy do niego dwa pobrane z listy węzły. W nowym węźle zapamiętujemy sumę wystąpień znaków w dwóch pobranych węzłach. Węzeł nie musi pamiętać żadnego znaku, ponieważ w drzewie kodu bezprzystankowego będzie on węzłem wewnętrznym. Tutaj stosujemy znak?". Utworzony węzeł dodajemy do listy tak, aby była wciąż uporządkowana rosnąco. Węzeł wstawiamy na listę. Powtarzamy tworzenie węzła dla C:7 i?:8. Strona 6 z 10
Powstanie nowy węzeł?15. Tym razem nowy węzeł?:15 trafia za A:12. Na liście zostały tylko dwa węzły, A:12 i?:15. Po raz ostatni wykonujemy dla nich opisane operacje. W ich wyniku na liście pozostaje jeden węzeł, który jest korzeniem drzewa kodu bezprzystankowego Huffmana Z drzewa możemy odczytać kody dla poszczególnych znaków: A 0 B 111 C 10 D 110 W zadaniu dostajesz następujący ciąg znaków do zakodowania: AACBECAHCADFEGAFAGACBBADAAFAAEAGACAFAABEFBCCFA a) Oblicz ilość wystąpień poszczególnych znaków. Znak A B C D E F G H Liczba wystąpień Strona 7 z 10
b) Opracuj graf drzewa kodu bezprzystankowego Huffmana dla danego ciągu znaków. Uwaga: Zrób to w sposób podany powyżej na kartce oznaczonej BRUDNOPIS. c) Podaj kody poszczególnych znaków: Znak Kod d) Napisz program, który poda zakodowany ciąg znaków. Program jako dane pobiera ciąg znaków: Dane: AACBECAHCADFEGAFAGACBBADAAFAAEAGACAFAABEFBCCFA Kody znaków Wyniki: Zakodowany ciąg znaków W folderze ID_ucznia/zadanie4 powinien znajdować się plik kody (źródłowy i wynikowy) Punktowanie zadania 4 Podpunkt a b c d Razem Max Liczba punktów 1 6 2 6 15 Liczba punktów ucznia Strona 8 z 10
BRUDNOPIS Strona 9 z 10
BRUDNOPIS Strona 10 z 10