{"id":"informator-maturalny-informatyka-2015/zad/13","paper_id":"informator-maturalny-informatyka-2015","number":"13","points":null,"ptype":"open","subject":"informatyka","category":"informator-maturalny","year":2015,"month":null,"level":null,"text":"Zadanie 13. Zapisy binarne (0-7)\nW tym zadaniu badamy zapisy binarne dodatnich liczb całkowitych. Rozważamy następujący\nalgorytm:\nSpecyfikacja\nDane: dodatnia liczba całkowita n\nWynik: dodatnia liczba całkowita j równa\n(1) j 0;\n(2) powtarzaj\n(3)\njeśli n mod 2 = 1, to\n(4)\njj+1;\n(5)\nnn div 2;\n(6) aż n = 0;\nUwaga: użyte operatory mod i div oznaczają odpowiednio resztę z dzielenia i dzielenie\ncałkowite. Na przykład 5 mod 2 = 1, 5 div 2 = 2, 6 mod 2 = 0, 6 div 2 = 3.\na) Przeanalizuj powyższy algorytm i podaj wartości zmiennej j po zakończeniu jego\ndziałania dla n = 183 oraz dla n = 1022. Uzupełnij brakujący fragment specyfikacji.\nn\nj\n183\n1022\nMiejsce na obliczenia.\nb) Ułóż algorytm i zapisz go w wybranej przez siebie notacji (lista kroków lub język\nprogramowania, który wybrałeś na egzamin), który dla danej dodatniej liczby całkowitej\nn oblicza maksymalną liczbę kolejnych jedynek pojawiających się w zapisie binarnym tej\nliczby.\nSpecyfikacja\nDane: dodatnia liczba całkowita n\nWynik: dodatnia liczba całkowita m - maksymalna liczba kolejnych jedynek w zapisie\nbinarnym n\nPrzykład: dla n = 187 wynikiem jest m = 3, ponieważ 187 = (10111011)2\nPrzykładowe zadania z rozwiązaniami 21\nAlgorytm\nWymagania ogólne\nIII. Rozwiązywanie problemów i podejmowanie\ndecyzji z wykorzystaniem komputera, z zastosowaniem\npodejścia algorytmicznego.\nWymagania szczegółowe\n5. Rozwiązywanie problemów i podejmowanie decyzji\nz wykorzystaniem komputera, stosowanie podejścia\nalgorytmicznego.\nZdający:\n2) stosuje podejście algorytmiczne do rozwiązywania\nproblemu,\n4) dobiera efektywny algorytm do rozwiązania\nsytuacji problemowej i zapisuje go w wybranej\nnotacji,\n5) posługuje się podstawowymi technikami\nalgorytmicznymi,\n11) opisuje podstawowe algorytmy,\n12) projektuje rozwiązanie problemu (realizację\nalgorytmu) i dobiera odpowiednią strukturę danych.\n22 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\nSchemat punktowania\nPodpunkt\nCzynność\nLiczba\npunktów\nza\npodpunkt\nLiczba\npunktów\nza\nzadanie\na\nZa każdą poprawną odpowiedź - 1 punkt.\n3\n7\nb\nZa poprawny algorytm - 4 punkty.\nW przypadku niepoprawnego algorytmu:\n za prawidłowe wyznaczanie maksimum długości\nbloków jedynek - 1 punkt.\n za prawidłowe wyznaczanie długości bloków\njedynek - 1 punkt.\n4\nZadanie 13. Zapisy binarne (0-7) - rozwiązanie\nW tym zadaniu badamy zapisy binarne dodatnich liczb całkowitych. Rozważamy następujący\nalgorytm:\nSpecyfikacja\nDane: dodatnia liczba całkowita n\nWynik: dodatnia liczba całkowita j równa liczbie jedynek w zapisie binarnym liczby n\n(1) j 0;\n(2) powtarzaj\n(3)\njeśli n mod 2 = 1, to\n(4)\njj+1;\n(5)\nn :n div 2;\n(6) aż n = 0;\nUwaga: użyte operatory mod i div oznaczają odpowiednio resztę z dzielenia i dzielenie\ncałkowite, np. 5 mod 2 = 1, 5 div 2 = 2, 6 mod 2 = 0, 6 div 2 = 3.\na) Przeanalizuj powyższy algorytm i podaj wartości zmiennej j po zakończeniu jego\ndziałania dla n = 183 oraz dla n = 1022. Uzupełnij brakujący fragment specyfikacji.\nn\nj\n183\n6\n1022\n9\nMiejsce na obliczenia.\n183 = (10110111)2\n1022 = (1111111110)2\nPrzykładowe zadania z rozwiązaniami 23\nb) Ułóż algorytm i zapisz go w wybranej przez siebie notacji (lista kroków lub język\nprogramowania, który wybrałeś na egzamin), który dla danej dodatniej liczby całkowitej\nn oblicza maksymalną liczbę kolejnych jedynek pojawiających się w zapisie binarnym tej\nliczby.\nSpecyfikacja\nDane: dodatnia liczba całkowita n\nWynik: dodatnia liczba całkowita m - maksymalna liczba kolejnych jedynek w zapisie\nbinarnym n\nPrzykład: dla n = 187 wynikiem jest m = 3, ponieważ 187 = (10111011)2\nAlgorytm\nKażdy ciąg kolejnych jedynek w zapisie binarnym liczby, który nie można już wydłużyć,\nnazywamy blokiem. W zapisie binarnym liczby 187 mamy trzy bloki jedynek o długościach\njeden, trzy i dwa: (10111011)2. Naszym celem jest policzenie długości najdłuższego bloku.\nModyfikujemy algorytm z podpunktu a), wyznaczając kolejne cyfry liczby n, od cyfr najmniej\nznaczących do cyfr najbardziej znaczących. W momencie wykrycia bloku (pierwszej jedynki\nw tym bloku) rozpoczynamy zliczanie jedynek w nim zawartych, aż w zapisie binarnym\nnapotkamy zero lub wyznaczymy już wszystkie cyfry zapisu. Po przetworzeniu bloku\nporównujemy jego długość z długością dotychczas najdłuższego bloku i jeśli policzona\ndługość jest większa od dotychczas największej, aktualizujemy informację o długości\nnajdłuższego bloku.\nOto zapis opisanego słowami algorytmu:\n(1) m  0;\n(2) powtarzaj\n// m - długość dotychczas najdłuższego bloku\n(3)\njeśli n mod 2 = 1, to\n// nowy blok\n(4)\ndl_bloku 0; // tu zliczamy liczbę jedynek w bloku\n(5)\npowtarzaj\n(6)\ndl_blokudl_bloku + 1;\n(7)\nn n div 2;\n(8)\naż n mod 2 = 0;\n(9)\njeśli dl_bloku >m, to\n(10)\nm dl_bloku;\n(11)\nnn div 2;\n(12) aż n = 0;\nKomentarz\nPodpunkt a) w tym zadaniu nie powinien sprawić żadnych trudności. Przedstawiony w nim\nalgorytm jest typowym szkolnym algorytmem wyznaczania kolejnych cyfr dodatniej liczby\ncałkowitej w jej zapisie binarnym, poczynając od cyfry najmniej znaczącej, a kończąc na\ncyfrze najbardziej znaczącej. Warto zauważyć, że w ten sam sposób można wyznaczyć cyfry\nw zapisie pozycyjnym przy dowolnej podstawie p, 2 ≤ p ≤ 10. Wystarczy wykonywać\n24 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015\noperacje dzielenia całkowitego i brania reszty z dzielenia z parametrem p zamiast 2. Dla\nliczby naturalnej n, n mod p jest najmniej znaczącą cyfrą w zapisie pozycyjnym liczby n przy\npodstawie p. Dla przykładu 187 mod 10 = 7, 187 mod 2 = 1. Jeśli najmniej znaczącą cyfrą\nw zapisie przy podstawie p liczby n jest cyfra c, to n = n’•p + c, dla pewnej liczby naturalnej\nn’. Wówczas n div p = n’ i kolejna cyfrą w zapisie n jest najmniej znacząca cyfra w zapisie\nn’. Te własności właśnie wykorzystano w algorytmie z podpunktu a).\nW punkcie b), oprócz wyznaczania cyfr liczby n, należy zliczać jedynki w blokach kolejnych\njedynek. Tutaj najpierw trzeba wykryć blok. To jest proste - blok rozpoczyna się od jedynki.\nNastępnie należy zliczać w pętli kolejne napotkane jedynki, aż pojawi się zero. Tak\nnaprawdę w tym celu wykorzystujemy pętlę z algorytmu w punkcie a). Tak więc cały\nalgorytm składa się z dwóch zagnieżdżonych pętli, których struktury są podobne do pętli\nz punktu a).\nMożna sobie wyobrazić inne rozwiązanie. W tym nowym rozwiązaniu zliczamy jedynki za\nkażdym razem od momentu pojawienia się pierwszej jedynki w bloku. Pojawienie się zera\npowoduje wyzerowanie licznika jedynek. Oto formalny zapis tego algorytmu:\n(1) m  0;\n(2) dl_bloku 0;\n(3) dopóki n ≠ 0 wykonuj\n(4)\njeśli n mod 2 = 1 to\n(5)\ndl_blokudl_bloku + 1;\n(6) w przeciwnym wypadku\n(7)\njeśli dl_bloku >m to\n(8)\nm := dl_bloku;\n(9)\ndl_bloku 0;\n(10)\nn n div 2;\nPrzykładowe zadania z rozwiązaniami 25","answer":null,"answer_text":null,"solution":null,"image":"img/informator-maturalny-informatyka-2015/zad-13.webp","solution_image":null,"topics":null,"page_from":20,"source":"ocr","answer_source":null,"answer_text_source":null,"solution_source":null,"text_source":"ocr","source_label":"Informatyka · Informator maturalny · 2015","subject_label":"Informatyka","category_label":"Informator maturalny","text_html":"<p>Zadanie 13. Zapisy binarne (0-7)<br>W tym zadaniu badamy zapisy binarne dodatnich liczb całkowitych. Rozważamy następujący<br>algorytm:<br>Specyfikacja<br>Dane: dodatnia liczba całkowita n<br>Wynik: dodatnia liczba całkowita j równa<br>(1) j 0;<br>(2) powtarzaj<br>(3)<br>jeśli n mod 2 = 1, to<br>(4)<br>jj+1;<br>(5)<br>nn div 2;<br>(6) aż n = 0;<br>Uwaga: użyte operatory mod i div oznaczają odpowiednio resztę z dzielenia i dzielenie<br>całkowite. Na przykład 5 mod 2 = 1, 5 div 2 = 2, 6 mod 2 = 0, 6 div 2 = 3.<br>a) Przeanalizuj powyższy algorytm i podaj wartości zmiennej j po zakończeniu jego<br>działania dla n = 183 oraz dla n = 1022. Uzupełnij brakujący fragment specyfikacji.<br>n<br>j<br>183<br>1022<br>Miejsce na obliczenia.<br>b) Ułóż algorytm i zapisz go w wybranej przez siebie notacji (lista kroków lub język<br>programowania, który wybrałeś na egzamin), który dla danej dodatniej liczby całkowitej<br>n oblicza maksymalną liczbę kolejnych jedynek pojawiających się w zapisie binarnym tej<br>liczby.<br>Specyfikacja<br>Dane: dodatnia liczba całkowita n<br>Wynik: dodatnia liczba całkowita m - maksymalna liczba kolejnych jedynek w zapisie<br>binarnym n<br>Przykład: dla n = 187 wynikiem jest m = 3, ponieważ 187 = (10111011)2<br>Przykładowe zadania z rozwiązaniami 21<br>Algorytm<br>Wymagania ogólne<br>III. Rozwiązywanie problemów i podejmowanie<br>decyzji z wykorzystaniem komputera, z zastosowaniem<br>podejścia algorytmicznego.<br>Wymagania szczegółowe</p>\n<ol><li>Rozwiązywanie problemów i podejmowanie decyzji</li></ol>\n<p>z wykorzystaniem komputera, stosowanie podejścia<br>algorytmicznego.<br>Zdający:</p>\n<ol><li>stosuje podejście algorytmiczne do rozwiązywania</li></ol>\n<p>problemu,</p>\n<ol><li>dobiera efektywny algorytm do rozwiązania</li></ol>\n<p>sytuacji problemowej i zapisuje go w wybranej<br>notacji,</p>\n<ol><li>posługuje się podstawowymi technikami</li></ol>\n<p>algorytmicznymi,</p>\n<ol><li>opisuje podstawowe algorytmy,</li><li>projektuje rozwiązanie problemu (realizację</li></ol>\n<p>algorytmu) i dobiera odpowiednią strukturę danych.<br>22 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>Schemat punktowania<br>Podpunkt<br>Czynność<br>Liczba<br>punktów<br>za<br>podpunkt<br>Liczba<br>punktów<br>za<br>zadanie<br>a<br>Za każdą poprawną odpowiedź - 1 punkt.<br>3<br>7<br>b<br>Za poprawny algorytm - 4 punkty.<br>W przypadku niepoprawnego algorytmu:<br> za prawidłowe wyznaczanie maksimum długości<br>bloków jedynek - 1 punkt.<br> za prawidłowe wyznaczanie długości bloków<br>jedynek - 1 punkt.<br>4<br>Zadanie 13. Zapisy binarne (0-7) - rozwiązanie<br>W tym zadaniu badamy zapisy binarne dodatnich liczb całkowitych. Rozważamy następujący<br>algorytm:<br>Specyfikacja<br>Dane: dodatnia liczba całkowita n<br>Wynik: dodatnia liczba całkowita j równa liczbie jedynek w zapisie binarnym liczby n<br>(1) j 0;<br>(2) powtarzaj<br>(3)<br>jeśli n mod 2 = 1, to<br>(4)<br>jj+1;<br>(5)<br>n :n div 2;<br>(6) aż n = 0;<br>Uwaga: użyte operatory mod i div oznaczają odpowiednio resztę z dzielenia i dzielenie<br>całkowite, np. 5 mod 2 = 1, 5 div 2 = 2, 6 mod 2 = 0, 6 div 2 = 3.<br>a) Przeanalizuj powyższy algorytm i podaj wartości zmiennej j po zakończeniu jego<br>działania dla n = 183 oraz dla n = 1022. Uzupełnij brakujący fragment specyfikacji.<br>n<br>j<br>183<br>6<br>1022<br>9<br>Miejsce na obliczenia.<br>183 = (10110111)2<br>1022 = (1111111110)2<br>Przykładowe zadania z rozwiązaniami 23<br>b) Ułóż algorytm i zapisz go w wybranej przez siebie notacji (lista kroków lub język<br>programowania, który wybrałeś na egzamin), który dla danej dodatniej liczby całkowitej<br>n oblicza maksymalną liczbę kolejnych jedynek pojawiających się w zapisie binarnym tej<br>liczby.<br>Specyfikacja<br>Dane: dodatnia liczba całkowita n<br>Wynik: dodatnia liczba całkowita m - maksymalna liczba kolejnych jedynek w zapisie<br>binarnym n<br>Przykład: dla n = 187 wynikiem jest m = 3, ponieważ 187 = (10111011)2<br>Algorytm<br>Każdy ciąg kolejnych jedynek w zapisie binarnym liczby, który nie można już wydłużyć,<br>nazywamy blokiem. W zapisie binarnym liczby 187 mamy trzy bloki jedynek o długościach<br>jeden, trzy i dwa: (10111011)2. Naszym celem jest policzenie długości najdłuższego bloku.<br>Modyfikujemy algorytm z podpunktu a), wyznaczając kolejne cyfry liczby n, od cyfr najmniej<br>znaczących do cyfr najbardziej znaczących. W momencie wykrycia bloku (pierwszej jedynki<br>w tym bloku) rozpoczynamy zliczanie jedynek w nim zawartych, aż w zapisie binarnym<br>napotkamy zero lub wyznaczymy już wszystkie cyfry zapisu. Po przetworzeniu bloku<br>porównujemy jego długość z długością dotychczas najdłuższego bloku i jeśli policzona<br>długość jest większa od dotychczas największej, aktualizujemy informację o długości<br>najdłuższego bloku.<br>Oto zapis opisanego słowami algorytmu:<br>(1) m  0;<br>(2) powtarzaj<br>// m - długość dotychczas najdłuższego bloku<br>(3)<br>jeśli n mod 2 = 1, to<br>// nowy blok<br>(4)<br>dl_bloku 0; // tu zliczamy liczbę jedynek w bloku<br>(5)<br>powtarzaj<br>(6)<br>dl_blokudl_bloku + 1;<br>(7)<br>n n div 2;<br>(8)<br>aż n mod 2 = 0;<br>(9)<br>jeśli dl_bloku &gt;m, to<br>(10)<br>m dl_bloku;<br>(11)<br>nn div 2;<br>(12) aż n = 0;<br>Komentarz<br>Podpunkt a) w tym zadaniu nie powinien sprawić żadnych trudności. Przedstawiony w nim<br>algorytm jest typowym szkolnym algorytmem wyznaczania kolejnych cyfr dodatniej liczby<br>całkowitej w jej zapisie binarnym, poczynając od cyfry najmniej znaczącej, a kończąc na<br>cyfrze najbardziej znaczącej. Warto zauważyć, że w ten sam sposób można wyznaczyć cyfry<br>w zapisie pozycyjnym przy dowolnej podstawie p, 2 ≤ p ≤ 10. Wystarczy wykonywać<br>24 Informator o egzaminie maturalnym z informatyki od roku szkolnego 2014/2015<br>operacje dzielenia całkowitego i brania reszty z dzielenia z parametrem p zamiast 2. Dla<br>liczby naturalnej n, n mod p jest najmniej znaczącą cyfrą w zapisie pozycyjnym liczby n przy<br>podstawie p. Dla przykładu 187 mod 10 = 7, 187 mod 2 = 1. Jeśli najmniej znaczącą cyfrą<br>w zapisie przy podstawie p liczby n jest cyfra c, to n = n’•p + c, dla pewnej liczby naturalnej<br>n’. Wówczas n div p = n’ i kolejna cyfrą w zapisie n jest najmniej znacząca cyfra w zapisie<br>n’. Te własności właśnie wykorzystano w algorytmie z podpunktu a).<br>W punkcie b), oprócz wyznaczania cyfr liczby n, należy zliczać jedynki w blokach kolejnych<br>jedynek. Tutaj najpierw trzeba wykryć blok. To jest proste - blok rozpoczyna się od jedynki.<br>Następnie należy zliczać w pętli kolejne napotkane jedynki, aż pojawi się zero. Tak<br>naprawdę w tym celu wykorzystujemy pętlę z algorytmu w punkcie a). Tak więc cały<br>algorytm składa się z dwóch zagnieżdżonych pętli, których struktury są podobne do pętli<br>z punktu a).<br>Można sobie wyobrazić inne rozwiązanie. W tym nowym rozwiązaniu zliczamy jedynki za<br>każdym razem od momentu pojawienia się pierwszej jedynki w bloku. Pojawienie się zera<br>powoduje wyzerowanie licznika jedynek. Oto formalny zapis tego algorytmu:<br>(1) m  0;<br>(2) dl_bloku 0;<br>(3) dopóki n ≠ 0 wykonuj<br>(4)<br>jeśli n mod 2 = 1 to<br>(5)<br>dl_blokudl_bloku + 1;<br>(6) w przeciwnym wypadku<br>(7)<br>jeśli dl_bloku &gt;m to<br>(8)<br>m := dl_bloku;<br>(9)<br>dl_bloku 0;<br>(10)<br>n n div 2;<br>Przykładowe zadania z rozwiązaniami 25</p>","solutions":[]}