Wymagania edukacyjne z
informatyki dla klasy 2b liceum
czteroletniego 2022/23 (rozszerzenie)
Temat |
Liczba godzin |
Osiągnięcia uczniów |
||||
Wymagania konieczne (ocena
dopuszczająca) |
Wymagania podstawowe (ocena dostateczna) |
Wymagania rozszerzające (ocena
dobra) |
Wymagania dopełniające (ocena
bardzo dobra) |
Wymagania wykraczające (ocena celująca) |
||
Od problemu do programu |
3 |
definiuje pojęcie specyfikacja algorytmu, określa dane i wynik sprawdza działanie algorytmów dla różnych danych |
planuje kolejne kroki rozwiązania problemu tworzy algorytmy działania na liczbach całkowitych stosuje w języku C++ podstawowe konstrukcje programistyczne (operacje wejścia i wyjścia, instrukcja warunkowa, operatory matematyczne i logiczne) |
omawia różne sposoby przedstawiania algorytmów (opis słowny, lista kroków, schemat blokowy, pseudokod) programuje i testuje rozwiązanie problemu tworzy w języku C++ programy wykonujące działania na liczbach całkowitych |
dobiera struktury i typy danych do rodzaju problemu ocenia efektywność algorytmu |
wyszukuje optymalne rozwiązania problemów objaśnia dobrany do danego problemu algorytm, uzasadnia jego poprawność i wybór |
Systemy liczbowe i reprezentacja danych w komputerze |
3 |
definiuje pojęcie pozycyjnego systemu liczbowego wymienia systemy liczbowe stosowane w informatyce stosowane w informatyce ꟷ definiuje pojęcia bit i bajt |
dokonuje konwersji między pozycyjnymi systemami liczbowymi, wykorzystując przy tym zależności między systemami binarnym i ósemkowym oraz binarnym i heksadecymalnym wyjaśnia, czym jest tablica kodów ASCII |
omawia sposób reprezentowania liczb całkowitych w komputerze wymienia typy danych służące do zapisu liczb całkowitych (short int, int, long int, long long int, unsigned), stosuje je w pisanych programach opisuje, jak w komputerze reprezentowane są znaki i napisy (char, string), odwołuje się do znaku w napisie za pomocą indeksu |
wykonuje zadania o podwyższonym stopniu trudności. |
wykonuje zadania o podwyższonym stopniu trudności: oznaczone trzema gwiazdkami w podręczniku, z arkuszy maturalnych z lat poprzednich lub konkursów i olimpiad informatycznych. |
Algorytmy zamiany reprezentacji liczb między systemami liczbowymi |
3 |
tworzy programy do konwersji między liczbami w systemach binarnym i decymalnym posługuje się środowiskiem programistycznym, strukturami danych oraz językiem programowania w stopniu umożliwiającym implementację omawianych algorytmów |
pisze programy konwertujące liczbę dziesiętną na liczbę w podanym systemie pozycyjnym |
stosuje binarną reprezentację liczby w algorytmie szybkiego podnoszenia do potęgi |
pisze programy zamieniające liczby z systemu decymalnego na system heksadecymalny posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym do rozwiązania problemu dobiera optymalny algorytm i struktury danych ꟷ uzasadnia poprawność zaproponowanego rozwiązania korzysta z dostępnych bibliotek w tworzonych przez siebie programach |
pisze programy o podwyższonym stopniu trudności z wykorzystaniem algorytmów zamiany: z zadań oznaczonych trzema gwiazdkami w podręczniku, z arkuszy maturalnych, z konkursów i olimpiad informatycznych tworzy własne funkcje rozwiązujące problemy |
Czy to jest palindrom? |
2 |
definiuje pojęcie palindromu określa, czy dany napis lub liczba są palindromami |
wykonuje operacje na napisach (wczytywanie napisów ze spacjami, sprawdzanie długości napisu, zamiana liter dużych na małe i odwrotnie, porównywanie znaków, znajdowanie oraz usuwanie fragmentów napisów) |
ꟷ definiuje własne funkcje w języku C++, wyjaśnia celowość ich stosowania, rozróżnia parametry formalne i aktualne ꟷ realizuje w języku C++ algorytmy sprawdzające, czy dany napis jest palindromem, oraz wyszukujące palindromy w zdaniach opisuje popularne funkcje oraz metody stosowane dla zmiennych typu string (toupper, tolower, size, substr, erase) |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ optymalizuje algorytmy i ocenia ich efektywność |
pisze programy dotyczące palindromów o podwyższonym stopniu trudności: z zadań oznaczonych trzema gwiazdkami w podręczniku, z arkuszy maturalnych, z konkursów i olimpiad informatycznych |
Czy ta liczba jest pierwsza? |
3 |
wymienia podstawowe własności liczb pierwszych |
sprawdza, czy dana liczba jest pierwsza, stosując algorytm naiwny |
rozkłada liczbę złożoną na czynniki pierwsze ꟷ wyznacza liczby bliźniacze |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym stosuje optymalny algorytm sprawdzający, czy liczba jest pierwsza, wykorzystując funkcję logiczną; uzasadnia jego efektywność ꟷ pisze program rozkładający liczbę złożoną na sumę dwóch liczb pierwszych (hipoteza Goldbacha) |
implementuje algorytmy dotyczące liczb pierwszych o podwyższonym stopniu trudności: z zadań oznaczonych trzema gwiazdkami w podręczniku, z arkuszy maturalnych, z konkursów i olimpiad informatycznych |
Działania na liczbach w systemach innych niż dziesiętny |
3 |
wykonuje działania arytmetyczne na liczbach w różnych systemach pozycyjnych |
wykonuje obliczenia na dowolnie dużych liczbach, wykorzystując napisy ꟷ wyjaśnia różnicę między operacjami na liczbach o podstawie od 1 do 9 i większej od 10 |
stosuje odejmowanie w dzieleniu pisemnym liczb binarnych ꟷ stosuje dodawanie liczby przeciwnej zapisanej w kodzie U2 przy odejmowaniu liczby binarnej |
pisze programy wykonujące operacje arytmetyczne na liczbach w różnych systemach pozycyjnych ꟷ optymalizuje programy, szacuje ich efektywność |
wykonuje działania o podwyższonym stopniu trudności |
Algorytm Euklidesa i działania na ułamkach |
3 |
opisuje geometryczną interpretację algorytmu Euklidesa |
pisze program realizujący algorytm Euklidesa w wersjach z dzieleniem i odejmowaniem, stosując funkcję typu void |
stosuje strukturę do reprezentacji liczb wymiernych ꟷ wykorzystuje algorytm Euklidesa do działań na ułamkach ꟷ stosuje zmienne lokalne i globalne, a także przekazywanie parametrów przez wartość |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ stosuje funkcje i dobiera sposób przekazywania parametrów, jednocześnie go uzasadniając |
pisze programy o podwyższonym stopniu trudności prezentujące zastosowanie algorytmu Euklidesa |
Szyfr Cezara i inne szyfry podstawieniowe |
3 |
definiuje szyfry: podstawieniowy, monoalfabetyczny i permutacyjny, wymienia przykłady takich szyfrów |
pisze program szyfrujący informację szyfrem Cezara z wykorzystaniem liter z polskimi znakami diakrytycznymi |
omawia szyfr Vigenere’a stosuje w swoich programach operacje plikowe – wczytywanie danych z pliku dyskowego, zapis wyniku do pliku |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ wykorzystuje odpowiednio dobrane struktury danych ꟷ korzysta z funkcji bibliotecznych |
pisze programy szyfrujące o podwyższonym stopniu trudności tworzy własne funkcje, dobierając sposób przekazywania parametrów |
Łamiemy szyfr Cezara |
3 |
wyjaśnia, na czym polega łamanie szyfru (kryptoanaliza) |
łamie szyfr Cezara, stosując analizę częstości |
stosuje algorytmy zliczające liczbę wystąpień znaków w tekście z zastosowaniem strukturalnego typu danych – tablic ꟷ pisze program znajdujący maksimum w tablicy i wypisujący jego pozycję (algorytm „dziel i zwyciężaj”) |
opisuje różne sposoby łamania szyfrów i implementuje je w języku C++ |
pisze programy deszyfrujące o podwyższonym poziomie trudnośc |
Poszukujemy liczby |
2 |
znajduje wartość w zbiorach uporządkowanym i nieuporządkowanym, stosując odpowiednio algorytmy wyszukiwania liniowego, liniowego z wartownikiem i binarnego |
pisze programy wykorzystujące przekazywanie parametru do funkcji przez wskaźnik i referencję |
stosuje algorytm „dziel i zwyciężaj” do jednoczesnego znajdowania maksimum i minimum w zbiorze |
szacuje złożoność czasową zastosowanych algorytmów wyszukiwania ꟷ wyjaśnia na przykładach różnice między różnymi sposobami przekazywania parametrów do funkcji ꟷ podaje wzór na liczbę wykonywanych operacji w algorytmie „dziel i zwyciężaj” |
pisze programy o podwyższonym stopniu trudności |
Jak ocenić złożoność obliczeniową algorytmu? |
4 |
definiuje złożoność obliczeniową algorytmu |
szacuje złożoność czasową i pamięciową |
wyjaśnia, czym jest złożoność oczekiwana (średnia), optymistyczna i pesymistyczna |
określa złożoność czasową i pamięciową algorytmów z zastosowaniem odpowiednich wzorów rozróżnia pojęcia algorytmu naiwnego i optymalnego |
ocenia efektywność algorytmów |
Metody sortowania prostego |
3 |
definiuje pojęcie sortowania, prawidłowo określając klucz i porządek sortowania definiuje pojęcia sortowania in situ i stabilnego |
stosuje metody sortowania prostego do sortowania liczb w zbiorze – bąbelkowe i przez wybieranie ꟷ szacuje złożoność obliczeniową stosowanych algorytmów |
definiuje operacje kluczowe (dominujące) w algorytmach sortowania ꟷ pisze programy realizujące poznane algorytmy sortowania |
podaje przykłady sortowania prostego w życiu codziennym ꟷ dobiera właściwe struktury danych ꟷ definiuje własne funkcje do rozwiązywania problemów z wykorzystaniem algorytmów sortowania ꟷ ocenia wpływ pierwotnego ułożenia danych w zbiorze na liczbę wykonywanych operacji |
pisze programy sortujące o podwyższonym stopniu trudności: sortowanie danych w plikach tekstowych, sortowanie struktur |
Szyfry przestawieniowe, anagramy |
2 |
omawia zasadę działania szyfrów przestawieniowych, wymienia przykłady takich szyfrów |
sprawdza, czy słowa (napisy) są anagramami pisze funkcje sprawdzające |
wykorzystuje poznane wcześniej algorytmy sortowania i zliczania w rozwiązywaniu problemów |
wyszukuje anagramy w plikach tekstowych posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym |
pisze programy szyfrujące o podwyższonym stopniu trudności do rozwiązania problemu dobiera optymalny algorytm i struktury danych |
Sito Eratostenesa |
2 |
opisuje algorytmy sprawdzające, czy liczba jest pierwsza |
omawia i stosuje algorytm sita Eratostenesa do wyszukiwania liczb pierwszych w określonym przedziale liczbowym |
określa złożoność obliczeniową algorytmu |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym |
optymalizuje algorytm, dążąc do minimalnej złożoności obliczeniowej pisze programy o podwyższonym stopniu trudności wykorzystujące sito Eratostenesa |
Szukamy różnych podciągów |
4 |
ꟷ definiuje pojęcia podciągu oraz podciągu spójnego |
znajduje w zbiorze podciągi o różnych własnościach ꟷ oblicza długość najdłuższego niemalejącego spójnego podciągu oraz liczbę jego elementów |
wymienia i stosuje różne algorytmy znajdowania maksymalnej sumy elementów spójnych podciągów, oceniając ich złożoność obliczeniową ꟷ znajduje w zbiorze spójny podciąg o maksymalnej sumie i wypisuje jego elementy |
pisze programy o podwyższonym stopniu trudności wyszukujące spójne podciągi |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ do rozwiązania problemu dobiera optymalny algorytm i struktury danych |
W poszukiwaniu lidera i idola |
2 |
definiuje pojęcia idola w grupie i lidera w zbiorze ꟷ znajduje idola w grupie lub stwierdza jego brak ꟷ określa, czy w zbiorze jest lider |
omawia i implementuje w języku C++ algorytmy szukania idola oraz lidera ꟷ ocenia złożoność obliczeniową stosowanych algorytmów i ich efektywność |
stosuje tablice dwuwymiarowe w pisanych programach ꟷ stosuje funkcję sort z biblioteki STL do wyszukiwania lidera |
pisze programy o podwyższonym stopniu trudności |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ do rozwiązania problemu dobiera optymalny algorytm i struktury danych |
Iteracja a rekurencja |
4 |
opisuje zasadę działania rekurencji |
implementuje w języku C++ algorytmy rekurencyjne, określa warunki brzegowe ꟷ porównuje iteracyjne i rekurencyjne wersje algorytmów |
opisuje zasadę złotego podziału ꟷ oblicza n-ty wyraz ciągu Fibonacciego metodami iteracyjną i rekurencyjną ꟷ wyjaśnia, na czym polega rozszerzony algorytm Euklidesa, oraz implementuje go w języku C++ |
pisze programy o podwyższonym stopniu trudności, np. sprawdzanie hipotezy Collatza uzasadnia wybór iteracji lub rekurencji do rozwiązania problemu ꟷ szacuje złożoność czasową stosowanych algorytmów ꟷ oblicza liczbę wykonywanych operacji w algorytmach rekurencyjnych |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym do rozwiązania problemu dobiera optymalny algorytm i struktury danych |
Metoda zachłanna |
3 |
wyjaśnia, na czym polega metoda zachłanna, i wymienia przykłady jej stosowania |
implementuje następujące algorytmy zachłanne: problem kasjera (wydawania reszty minimalną liczbą nominałów), problem telewidza/kinomana (optymalny harmonogram wykorzystania sali), pakowanie plecaka, wyszukiwanie optymalnej drogi |
ocenia przydatność zastosowanych algorytmów ꟷ stosuje własne kryterium porównania w funkcji sort z biblioteki STL |
pisze programy o podwyższonym stopniu trudności z wykorzystaniem algorytmów zachłannych, stosując rekurencję i algorytmy z nawrotami objaśnia algorytm wybrany do rozwiązania problemu oraz ocenia jego efektywność i niedoskonałość |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ do rozwiązania problemu dobiera optymalny algorytm i struktury danych |
Programowanie dynamiczne |
5 |
wyjaśnia, na czym polega metoda dynamiczna |
implementuje optymalne algorytmy dotyczące problemu kasjera, telewidza, znajdowania drogi oraz pakowania plecaka |
stosuje metodę dynamiczną do znajdowania najdłuższego wspólnego podciągu ꟷ porównuje metody zachłanną i dynamiczną |
pisze programy o podwyższonym stopniu trudności wykorzystujące algorytmy dynamiczne |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym ꟷ do rozwiązania problemu dobiera optymalny algorytm i struktury danych |
Dziel i zwyciężaj, czyli sortujemy sprawniej |
4 |
omawia metodę „dziel i zwyciężaj” oraz rekurencję |
wyjaśnia, na czym polega algorytm sortowania szybkiego oraz przez scalanie i implementuje je |
ocenia i porównuje złożoność czasową i obliczeniową algorytmów |
pisze programy o podwyższonym stopniu trudności wykorzystujące metodę „dziel i zwyciężaj” oraz algorytmy sortowania |
posługuje się środowiskiem programistycznym oraz językiem programowania w stopniu zaawansowanym do rozwiązania problemu dobiera optymalny algorytm i struktury danych, a także korzysta z funkcji bibliotecznych |
Programowanie zespołowe |
3 |
wyjaśnia, czym jest dokumentacja projektu (projektowa, użytkownika, techniczna), bierze czynny udział w jej tworzeniu |
aktywnie uczestniczy w realizacji projektu |
przyjmuje różne role w zespole realizującym projekt ꟷ prezentuje efekty wspólnej pracy |
przyjmuje rolę lidera odpowiedzialnego za zespół i projekt ꟷ przydziela zadania, nadzoruje pracę innych |
opracowując złożone problemy, posługuje się aplikacjami w stopniu zaawansowanym |