Linki: Algorytmy na maturze, Algorytmy z podstawy programowej
Egzamin maturalny z informatyki sprawdza, w jakim stopniu absolwent spełnia wymagania z zakresu tego przedmiotu określone w podstawie programowej kształcenia ogólnego w zakresie rozszerzonym i podstawowym. Poszczególne zadania zestawu egzaminacyjnego mogą też odnosić się do wymagań przypisanych do etapów wcześniejszych.
Poniżej przedstawiono kilka przykładowych pseudokodów z egzaminów maturalnych do przetestowania.
(z testów https://egzamin-informatyka.blogspot.com/search/label/Pseudokod)
"Na przykład dla" n ← 4
s ← 0
dla i = 1, 2, ..., n
dla j = i, i + 1, ..., n
s ← s + 1
wypisz s
https://egzamin-informatyka.blogspot.com/2022/05/zadanie-31-01.html
funkcja f(n)
jeżeli n > 0
wypisz n
f(n-2)
wypisz n
"W wyniku wywołania" f(6) "otrzymamy ciąg 6 4 2 2 4 6."
https://egzamin-informatyka.blogspot.com/2021/08/zadanie-31-01_13.html
funkcja f(n)
jeżeli n = 0
zwróć 1
w przeciwnym razie
s ← 1
i ← 0
dopóki i ≤ n-1 wykonuj
s ← s + f(i)
i ← i + 1
zwróć s
wypisz f(10)
https://egzamin-informatyka.blogspot.com/2021/08/zadanie-31-01_12.html
"Po wykonaniu algorytmu dla" n←123 "zmienna w przyjmuje wartość 6."
w ← 0
dopóki n ≠ 0 wykonuj
w ← w + (n mod 10)
n ← n div 10
wypisz w
https://egzamin-informatyka.blogspot.com/2021/08/zadanie-32-01_11.html
funkcja Rek(n)
jeżeli(n > 0)
Rek(n-1)
wypisz n
Rek(5)
https://egzamin-informatyka.blogspot.com/2021/08/zadanie-34-01_8.html
funkcja F(n)
jeżeli n = 1
zwróć 1
w przeciwnym razie
zwróć F(n div 2) + 1
wypisz F(9)
https://egzamin-informatyka.blogspot.com/2015/11/zadanie-552.html
Wyróżniamy dwa typy: analiza algotytmu i algorytmizacja Przykładowe rozwiązania I wersja II wersja (poprawiona)
https://egzamin-informatyka.blogspot.com/search/label/Algorytmizacja
https://egzamin-informatyka.blogspot.com/search/label/AnalizaAlgorytmu
Zadanie 1. n-permutacja EINP-R1-100-2205
http://egzamin-informatyka.blogspot.com/2022/05/zadanie-1-n-permutacja-0-6.html
dla i = 1, 2, ..., n
B[i] ← 0
k ← 0
dla i = 1, 2, ..., n
jeżeli A[i] ≤ n
B[A[i]] ← B[A[i]]+1
w przeciwnym razie
k ← k + 1
dla i = 1, 2, ..., n
jeżeli B[i]>1
k ← k + B[i] - 1
wypisz k
Zadanie 2. Analiza algorytmu z EINP-R1-100-2105
https://egzamin-informatyka.blogspot.com/2021/05/zadanie-2-analiza-algorytmu-06.html
funkcja d(x)
n ← n + 1
jeżeli n < dlugosc(T)
T[n] ← x
w przeciwnym razie
DODAJ (T, x)
s ← n
dopóki (((s div 2) ≥ 1) oraz (T[s] > T[s div 2])) wykonuj
pom ← T[s]
T[s] ← T[s div 2]
T[s div 2] ← pom
s ← s div 2
wypisz "T po wykonaniu d(x) "+T
n←4 T←[26, 3, 5, -4] x←5
d(x)
Zadanie 1. Cyfrowe dopełnienie z EINP-R1-100-2105
"Cyfrowym dopełnieniem liczby" n ← 2021 "jest liczba 7978."
potega ← 1
d ← 0
dopóki n > 0 wykonuj
cyfra ← n mod 10
n ← n div 10
cyfra ← 9 - cyfra
d ← d + potega * cyfra
potega ← potega * 10
wypisz d
https://egzamin-informatyka.blogspot.com/2021/05/zadanie-1-cyfrowe-dopenienie-06.html
n ← 2021
d ← 0
suma ← 0
kopia ← n
dopóki kopia > 0 wykonuj
kopia ← kopia div 10
suma ← suma * 10 + 9
d ← suma - n
wypisz d
Zadanie 2. Rekurencja z MIN-R1_1P-172
http://egzamin-informatyka.blogspot.com/2017/05/zadanie-2-rekurencja-06.html
funkcja licz(x)
jeżeli x = 1
wypisz 1
w przeciwnym razie
w ← licz(x div 2)
jeżeli x mod 2 = 1
wypisz w + 1
w przeciwnym razie
wypisz w - 1
licz(11)
Wersja iteracyjna:
funkcja potega(a, x, M)
jeżeli x = 0
zwróć 1
jeśli x mod 2 = 0
w ← potega(a, x div 2, M)
zwróć w * w mod M
jeśli x mod 2 = 1
w ← potega(a, (x - 1) div 2, M)
zwróć a * w * w mod M
wypisz potega(2, 5, 7)
Wersja rekurecyjna:
funkcja potega(a, x, M)
w ← 1
z ← a
dopóki x > 0 wykonuj
jeżeli x mod 2 = 1
w ← w * z mod M
z ← z * z mod M
x ← x div 2
zwróć w
wypisz potega(2, 5, 7)
https://matura-z-informatyki.blogspot.com/2022/03/zadanie-3-potegowanie-modulo-0-12.html
"Przykładowo dla" A ← [4, 2, 1, 5, 3] n ← długość(A)
dla i = 2, 3, ..., n
v ← A[i]
j ← i
dopóki (j > 1) oraz (v < A[j - 1]) wykonuj
A[j] ← A[j - 1]
j ← j - 1
A[j] ← v
wypisz "A = " + A
https://matura-z-informatyki.blogspot.com/p/o-egzaminie.html
A ← [2,4,6,8,10,9,7,5,3,1]
funkcja W(j)
jeśli j > 1
jeśli A[j] < A[j-1]
v ← A[j]
A[j] ← A[j-1]
A[j-1] ← v
W(j-1)
zwróć A
wypisz W(7)
https://matura-z-informatyki.blogspot.com/p/o-egzaminie.html
Operatory | Łączność | Opis |
---|---|---|
← |
Prawy | Przypisanie |
lub |
Lewy | Logiczne lub |
oraz |
Lewy | Logiczne i |
nie |
Lewy | Logiczne nie |
= , ≠ |
Lewy | Równości |
< , ≤ , > , ≥ |
Lewy | Porównania |
+ , - |
Lewy | Dodawania (w tym konatenacji) |
* , / , mod , div |
Lewy | Mnożenia |
- |
Prawy | Negacja jednoargumentowa |
..(..) , ..[..] |
Lewy | Połączenia lub indeksy |
(...) |
Lewy | Nawiasy |
Uwaga: W niektórych pseudokodach maturalnych (starszych) można spotkać operator przypisania w postaci ":=" lub "=" oraz operator zamiany "↔". Edytor umożliwia ich stosowanie ale nie jest to zalecane.
Jest to nieco bardziej sformalizowana wersja gramatyki.
program : instrukcje ;
instrukcje : instrukcja* ;
blok : "wcięcie" instrukcje "zmiana poziomu" ;
instrukcja : exprStmt
| funkcjaStmt
| ifStmt
| repeatStmt
| returnStmt ;
exprStmt : expr ;
ifStmt : "jezeli" expr blok ( "wprzeciwnymrazie" blok )? ;
repeatStmt : "dopoki" expr "wykonuj" blok ;
dlaStmt : "dla" expr blok ;
procedureStmt : "funkcja" ID "(" argumenty? ")" blok ;
argumenty : ID ( "," ID )* ;
returnStmt : "zwroc" expr ;
expr : ( ID | ( call "[" expr "]" ) ) ( "←" expr )
| or ;
or : and ( "lub" and )* ;
and : not ( "oraz" not )* ;
not : ( "nie" )? equality ;
equality : comparison ( ( "=" | "≠" ) comparison )* ;
comparison : arithmetic ( ( ">" | "≥" | "<" | "≤" ) arithmetic )* ;
arithmetic : term ( ( "+" | "-" ) term )* ;
term : czynnik ( ( "*" | "/" | "mod" | "div" ) czynnik )* ;
czynnik : ( "-" )? call ;
call : primary ( ( "(" exprList? ")" ) | ( "[" expr "]" ) )* ;
primary : NUMBER
| ID
| STRING
| "[" exprList? "]"
| "(" expr ")" ;
exprList : expr ( "," expr )* ;
NUMBER : CYFRA+ ;
ID : LITERA ( LITERA | CYFRA )* ;
STRING : '"' [^"]* '"' ;
CYFRA : [0-9] ;
LITERA : [a-zA-Z_] ;
Uwaga: Instrukcja bloku jest realizowana przez wcięcia wykonywane spacją i powinny być na tym samym poziomie (zaleca się minimum 2 spacje na poziom). Łączenie łańcuchów (konatenacja) jest relizowana za pomocą operatora "+" z domyślą konwersją typu.