IV etap edukacyjny - fragment podstawy programowej:
Treści nauczania:
(…) Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie podejścia algorytmicznego.
Uczeń:
Analizuje, modeluje i rozwiązuje sytuacje problemowe z różnych dziedzin.
Stosuje podejście algorytmiczne do rozwiązywania problemu.
Formułuje przykłady sytuacji problemowych, których rozwiązanie wymaga podejścia algorytmicznego i użycia komputera.
Dobiera efektywny algorytm do rozwiązania sytuacji problemowej i zapisuje go w wybranej notacji.
Posługuje się podstawowymi technikami algorytmicznymi.
Ocenia własności rozwiązania algorytmicznego (komputerowego), np. zgodność ze specyfikacją, efektywność działania.
Opracowuje i przeprowadza wszystkie etapy prowadzące do otrzymania poprawnego rozwiązania problemu: od sformułowania specyfikacji problemu po testowanie rozwiązania.
Posługuje się metodą "dziel i zwyciężaj" w rozwiązywaniu problemów.
Stosuje rekurencję w prostych sytuacjach problemowych.
Stosuje podejście zachłanne w rozwiązywaniu problemów.
Opisuje podstawowe algorytmy i stosuje:
a) algorytmy na liczbach całkowitych, np.:
- reprezentacja liczb w dowolnym systemie pozycyjnym, w tym w dwójkowym i szesnastkowym,
- sprawdzanie, czy liczba jest liczbą pierwszą, doskonałą,
- rozkładanie liczby na czynniki pierwsze,
- iteracyjna i rekurencyjna realizacja algorytmu Euklidesa,
- iteracyjne i rekurencyjne obliczanie wartości liczb Fibonacciego,
- wydawanie reszty metodą zachłanną,
b) algorytmy wyszukiwania i porządkowania (sortowania), np.:
- jednoczesne znajdowanie największego i najmniejszego elementu w zbiorze: algorytm naiwny i optymalny,
- algorytmy sortowania ciągu liczb: bąbelkowy, przez wybór, przez wstawianie liniowe lub binarne, przez scalanie, szybki, kubełkowy,
c) algorytmy numeryczne, np.:
- obliczanie wartości pierwiastka kwadratowego,
- obliczanie wartości wielomianu za pomocą schematu Homera,
- zastosowania schematu Homera: reprezentacja liczb w różnych systemach liczbowych, szybkie podnoszenie do potęgi,
- wyznaczanie miejsc zerowych funkcji metodą połowienia,
- obliczanie pola obszarów zamkniętych,
d) algorytmy na tekstach, np.:
- sprawdzanie, czy dany ciąg znaków tworzy palindrom, anagram,
- porządkowanie alfabetyczne,
- wyszukiwanie wzorca w tekście,
- obliczanie wartości wyrażenia podanego w postaci odwrotnej notacji polskiej,
e) algorytmy kompresji i szyfrowania, np.:
- kody znaków o zmiennej długości, np. alfabet Morse'a, kod Huffmana,
- szyfr Cezara,
- szyfr przestawieniowy,
- szyfr z kluczem jawnym (RSA),
- wykorzystanie algorytmów szyfrowania, np. w podpisie elektronicznym,
f) algorytmy badające własności geometryczne, np.:
Projektuje rozwiązanie problemu (realizację algorytmu) i dobiera odpowiednią strukturę danych.
Stosuje metodę zstępującą i wstępującą przy rozwiązywaniu problemu.
Dobiera odpowiednie struktury danych do realizacji algorytmu, w tym struktury dynamiczne.
Stosuje zasady programowania strukturalnego i modularnego do rozwiązywania problemu.
Opisuje własności algorytmów na podstawie ich analizy.
Ocenia zgodność algorytmu ze specyfikacją problemu.
Oblicza liczbę operacji wykonywanych przez algorytm.
Szacuje wielkość pamięci potrzebnej do komputerowej realizacji algorytmu.
Bada efektywność komputerowych rozwiązań problemów.
Przeprowadza komputerową realizację algorytmu i rozwiązania problemu.
Sprawnie posługuje się zintegrowanym środowiskiem programistycznym przy pisaniu i uruchamianiu programów.
Stosuje podstawowe konstrukcje programistyczne w wybranym języku programowania, instrukcje iteracyjne i warunkowe, rekurencję, funkcje i procedury, instrukcje wejścia i wyjścia, poprawnie tworzy strukturę programu.
Dobiera najlepszy algorytm, odpowiednie struktury danych i oprogramowanie do rozwiązania postawionego problemu.
Dobiera właściwy program użytkowy lub samodzielnie napisany program do rozwiązywanego zadania.
Ocenia poprawność komputerowego rozwiązania problemu na podstawie jego testowania.
Wyjaśnia źródło błędów w obliczeniach komputerowych (błąd względny, błąd bezwzględny).
Realizuje indywidualnie lub zespołowo projekt programistyczny z wydzieleniem jego modułów, w ramach pracy zespołowej, dokumentuje pracę zespołu.