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