Menu
Coddy logo textTech

Pseudokod: przykłady

15 rozwiązanych przykładów w pseudokodzie Cambridge IGCSE i A-Level, od pierwszego OUTPUT po sortowanie bąbelkowe. Każdy pokazuje swój wynik, a każdy możesz uruchomić w edytorze poniżej.

Jak czytać te przykłady

Pseudokod opisuje kroki programu ustrukturyzowanym angielskim, bez ścisłych reguł prawdziwego języka programowania. Wszystkie przykłady poniżej używają stylu Cambridge, którego wymagają egzaminy IGCSE i A-Level: DECLARE dla zmiennych, ← do przypisania, OUTPUT do wypisywania, a bloki zamyka się słowami ENDIF, NEXT lub ENDWHILE.

Każdy przykład przedstawia problem, podaje pseudokod, pokazuje wynik, jaki daje, i wyjaśnia, jak działa. Kliknij Uruchom w edytorze, aby wczytać dowolny przykład do edytora na górze strony, gdzie możesz przejść przez niego linia po linii i obserwować, jak zmieniają się zmienne. Nie znasz jeszcze składni? Edytor pseudokodu ma klikalną bibliotekę wszystkich konstrukcji.

1. Hello, World

Wyświetl komunikat na ekranie.

Pseudokod
OUTPUT "Hello, World!"
Wynik
Hello, World!

OUTPUT wypisuje to, co następuje po nim, a tekst zapisuje się w podwójnych cudzysłowach. Ta jedna linia to kompletny program: pseudokod nie potrzebuje funkcji głównej ani importów.

2. Dodaj dwie liczby

Zapisz dwie liczby całkowite, dodaj je i wypisz sumę.

Pseudokod
DECLARE a : INTEGER
DECLARE b : INTEGER
DECLARE total : INTEGER
a ← 12
b ← 30
total ← a + b
OUTPUT "The total is ", total
Wynik
The total is 42

Każdą zmienną deklaruje się z nazwą i typem, zanim zostanie użyta. Strzałka ← zapisuje wartość, więc total ← a + b czytaj jako „total przyjmuje wartość a plus b”. Przecinek w OUTPUT łączy tekst i wartość w jednej linii.

3. Parzysta czy nieparzysta

Sprawdź, czy liczba jest parzysta, czy nieparzysta.

Pseudokod
DECLARE n : INTEGER
n ← 17
IF n MOD 2 = 0 THEN
    OUTPUT n, " is even"
ELSE
    OUTPUT n, " is odd"
ENDIF
Wynik
17 is odd

MOD zwraca resztę z dzielenia. Liczba parzysta nie daje reszty przy dzieleniu przez 2, więc testem jest n MOD 2 = 0. IF wybiera jedną z dwóch gałęzi, a ENDIF zamyka blok. W pseudokodzie pojedynczy znak = porównuje dwie wartości; nigdy nie przypisuje.

4. Wystaw ocenę za test

Zamień wynik na 100 punktów na ocenę: A od 80 w górę, B od 60 do 79, C poniżej 60.

Pseudokod
DECLARE score : INTEGER
DECLARE grade : CHAR
score ← 74
IF score >= 80 THEN
    grade ← 'A'
ELSE
    IF score >= 60 THEN
        grade ← 'B'
    ELSE
        grade ← 'C'
    ENDIF
ENDIF
OUTPUT "Score ", score, " gets grade ", grade
Wynik
Score 74 gets grade B

Warunki sprawdza się od najwyższego progu w dół, więc wynik 74 nie przechodzi pierwszego testu, ale przechodzi drugi. W pseudokodzie Cambridge łańcuch else-if zapisuje się, umieszczając jeden IF wewnątrz ELSE drugiego. CHAR przechowuje pojedynczy znak w apostrofach.

5. Zsumuj liczby od 1 do 10

Dodaj do siebie wszystkie liczby całkowite od 1 do 10.

Pseudokod
DECLARE total : INTEGER
DECLARE i : INTEGER
total ← 0
FOR i ← 1 TO 10
    total ← total + i
NEXT i
OUTPUT "Sum of 1 to 10 is ", total
Wynik
Sum of 1 to 10 is 55

Pętla FOR wykonuje się określoną liczbę razy: i przyjmuje wartości 1, 2, 3 i tak dalej aż do 10, a NEXT i oznacza koniec ciała pętli. Suma bieżąca zaczyna się od 0 i rośnie w każdym obiegu. Wynik, 55, zgadza się ze wzorem n(n + 1) / 2.

6. Wypisz tabliczkę mnożenia

Wypisz pierwsze pięć linii tabliczki mnożenia przez 7.

Pseudokod
DECLARE i : INTEGER
FOR i ← 1 TO 5
    OUTPUT "7 x ", i, " = ", 7 * i
NEXT i
Wynik
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35

Licznik pętli i jest używany w obliczeniu, więc każdy obieg wypisuje inną linię. OUTPUT może łączyć przecinkami kilka fragmentów tekstu i kilka wartości.

7. Odliczanie z pętlą WHILE

Odlicz od 5 do 1, a potem wypisz komunikat końcowy.

Pseudokod
DECLARE count : INTEGER
count ← 5
WHILE count > 0 DO
    OUTPUT count
    count ← count - 1
ENDWHILE
OUTPUT "Liftoff!"
Wynik
5
4
3
2
1
Liftoff!

Pętla WHILE sprawdza warunek przed każdym obiegiem i zatrzymuje się, gdy tylko warunek staje się fałszywy. Tutaj warunkiem jest count > 0, a ciało pętli za każdym razem zmniejsza count o jeden. Bez linii, która go zmniejsza, pętla nigdy się nie kończy. Używaj WHILE, gdy nie wiesz z góry, ile obiegów będzie potrzebnych.

8. Znajdź największą liczbę w tablicy

Znajdź największą wartość na liście sześciu liczb.

Pseudokod
DECLARE nums : ARRAY[1:6] OF INTEGER
DECLARE i : INTEGER
DECLARE largest : INTEGER
nums[1] ← 14
nums[2] ← 3
nums[3] ← 27
nums[4] ← 9
nums[5] ← 21
nums[6] ← 6
largest ← nums[1]
FOR i ← 2 TO 6
    IF nums[i] > largest THEN
        largest ← nums[i]
    ENDIF
NEXT i
OUTPUT "The largest number is ", largest
Wynik
The largest number is 27

ARRAY[1:6] deklaruje sześć miejsc ponumerowanych od 1 do 6, bo tablice w stylu Cambridge zwykle zaczynają się od 1. Program zakłada, że pierwszy element jest największy, potem porównuje z nim każdy kolejny element i zachowuje ten większy. Po jednym przejściu przez tablicę largest zawiera odpowiedź.

9. Oblicz średnią

Oblicz średnią z czterech ocen z testu.

Pseudokod
DECLARE marks : ARRAY[1:4] OF INTEGER
DECLARE i : INTEGER
DECLARE total : INTEGER
marks[1] ← 70
marks[2] ← 85
marks[3] ← 64
marks[4] ← 91
total ← 0
FOR i ← 1 TO 4
    total ← total + marks[i]
NEXT i
OUTPUT "Average mark: ", total / 4
Wynik
Average mark: 77.5

Pętla dodaje każdy element tablicy do total, a potem program dzieli wynik przez liczbę ocen. Operator / daje wynik dziesiętny, dlatego na wyjściu jest 77.5. Gdy potrzebne jest dzielenie całkowite, użyj DIV.

11. Sortowanie bąbelkowe

Posortuj pięć liczb rosnąco.

Pseudokod
DECLARE nums : ARRAY[1:5] OF INTEGER
DECLARE i : INTEGER
DECLARE j : INTEGER
DECLARE temp : INTEGER
nums[1] ← 5
nums[2] ← 1
nums[3] ← 4
nums[4] ← 2
nums[5] ← 8
FOR i ← 1 TO 4
    FOR j ← 1 TO 5 - i
        IF nums[j] > nums[j + 1] THEN
            temp ← nums[j]
            nums[j] ← nums[j + 1]
            nums[j + 1] ← temp
        ENDIF
    NEXT j
NEXT i
FOR i ← 1 TO 5
    OUTPUT nums[i]
NEXT i
Wynik
1
2
4
5
8

Sortowanie bąbelkowe porównuje każdą parę sąsiadów i zamienia je miejscami, gdy stoją w złej kolejności. Po każdym obiegu zewnętrznej pętli największa z pozostałych wartości trafia na koniec, więc wewnętrzna pętla może za każdym razem kończyć się o jeden element wcześniej. Zamiana wymaga trzeciej zmiennej, temp, która przechowuje jedną wartość, gdy druga jest kopiowana na jej miejsce.

Zobacz animację tego algorytmu

12. Silnia za pomocą funkcji

Napisz funkcję, która zwraca silnię n (n!), a potem użyj jej, aby obliczyć 5!.

Pseudokod
FUNCTION Factorial(n : INTEGER) RETURNS INTEGER
    DECLARE result : INTEGER
    DECLARE i : INTEGER
    result ← 1
    FOR i ← 2 TO n
        result ← result * i
    NEXT i
    RETURN result
ENDFUNCTION

OUTPUT "5! = ", Factorial(5)
Wynik
5! = 120

FUNCTION przyjmuje parametry, wykonuje swoją pracę i oddaje wartość za pomocą RETURN; jej nagłówek podaje typ zwracanej wartości. Zmienne zadeklarowane w jej wnętrzu istnieją tylko w czasie jej działania. 5! to 5 × 4 × 3 × 2 × 1, czyli 120.

13. Policz samogłoski w słowie

Policz, ile samogłosek zawiera słowo PSEUDOCODE.

Pseudokod
DECLARE word : STRING
DECLARE letter : CHAR
DECLARE vowels : INTEGER
DECLARE i : INTEGER
word ← "PSEUDOCODE"
vowels ← 0
FOR i ← 1 TO LENGTH(word)
    letter ← SUBSTRING(word, i, 1)
    IF letter = 'A' OR letter = 'E' OR letter = 'I' OR letter = 'O' OR letter = 'U' THEN
        vowels ← vowels + 1
    ENDIF
NEXT i
OUTPUT word, " has ", vowels, " vowels"
Wynik
PSEUDOCODE has 5 vowels

LENGTH zwraca liczbę znaków w napisie, a SUBSTRING(word, i, 1) pobiera jeden znak, zaczynając od pozycji i. Pętla odwiedza każdy znak i dodaje jeden do licznika, gdy jest to A, E, I, O lub U.

14. FizzBuzz

Wypisz liczby od 1 do 15, ale zamiast wielokrotności 3 wypisz Fizz, zamiast wielokrotności 5 wypisz Buzz, a zamiast wielokrotności obu wypisz FizzBuzz.

Pseudokod
DECLARE i : INTEGER
FOR i ← 1 TO 15
    IF i MOD 15 = 0 THEN
        OUTPUT "FizzBuzz"
    ELSE
        IF i MOD 3 = 0 THEN
            OUTPUT "Fizz"
        ELSE
            IF i MOD 5 = 0 THEN
                OUTPUT "Buzz"
            ELSE
                OUTPUT i
            ENDIF
        ENDIF
    ENDIF
NEXT i
Wynik
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Kolejność sprawdzeń ma znaczenie. 15 jest wielokrotnością zarówno 3, jak i 5, więc test dla 15 musi być pierwszy; w przeciwnym razie program wypisałby Fizz i nigdy nie doszedłby do FizzBuzz. To klasyczna rozgrzewka na rozmowach kwalifikacyjnych, bo sprawdza właśnie taki sposób myślenia.

15. Próby hasła z REPEAT UNTIL

Wypróbuj po kolei maksymalnie trzy hasła i przyznaj dostęp, jeśli któreś z nich jest poprawne.

Pseudokod
DECLARE attempts : ARRAY[1:3] OF STRING
DECLARE tries : INTEGER
DECLARE guess : STRING
attempts[1] ← "hunter1"
attempts[2] ← "letmein"
attempts[3] ← "open sesame"
tries ← 0
REPEAT
    tries ← tries + 1
    guess ← attempts[tries]
    OUTPUT "Try ", tries, ": ", guess
UNTIL guess = "open sesame" OR tries = 3
IF guess = "open sesame" THEN
    OUTPUT "Access granted"
ELSE
    OUTPUT "Locked out"
ENDIF
Wynik
Try 1: hunter1
Try 2: letmein
Try 3: open sesame
Access granted

Pętla REPEAT ... UNTIL sprawdza warunek na końcu, więc jej ciało zawsze wykonuje się co najmniej raz. Zatrzymuje się, gdy hasło się zgadza, albo po trzeciej próbie. Kolejne hasła pochodzą z tablicy, dzięki czemu przykład działa bez wpisywania czegokolwiek; w odpowiedzi na egzaminie zwykle wczytuje się każdą z nich za pomocą INPUT.

Pseudokod w przykładach: najczęstsze pytania

Jak wygląda przykład pseudokodu?

Krótki przykład sprawdza, czy test jest zaliczony: IF score >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" ENDIF. Czyta się go prawie jak angielski, ale ma stałe reguły, więc można go linia po linii przełożyć na Pythona, Javę lub dowolny inny język. 15 programów na tej stronie prowadzi od jednej linii aż po wyszukiwanie i sortowanie.

Jak pisać pseudokod?

Ustal, co program ma robić, a potem zapisz kroki po kolei, używając niewielkiego zestawu słów kluczowych: DECLARE dla zmiennych, ← do przypisania, IF do decyzji, FOR lub WHILE do powtórzeń i OUTPUT do wyników. Wcinaj ciało każdego bloku, zamykaj go odpowiednim słowem kończącym i zapisuj jedną czynność w linii.

Czy pseudokod jest taki sam na każdym egzaminie?

Nie. Cambridge (IGCSE i A-Level) używa DECLARE i strzałki ←, AQA używa ← bez deklaracji, Exam Reference Language od OCR przypomina Pythona, a Edexcel zapisuje SET ... TO. Przykłady na tej stronie używają stylu Cambridge; edytor pseudokodu przełącza się między wszystkimi czterema stylami.

Czy pseudokod można uruchomić?

Tak, na tej stronie. Pseudokod nie jest prawdziwym językiem programowania, więc nie ma oficjalnego kompilatora, ale ten edytor uruchamia pseudokod Cambridge w przeglądarce, pokazuje wynik i przechodzi przez kod linia po linii. Kliknij Uruchom w edytorze pod dowolnym przykładem.

Czym różni się pseudokod od schematu blokowego?

Oba opisują algorytm, zanim powstanie kod. Schemat blokowy rysuje kroki jako bloki i strzałki, co sprawdza się w krótkich procesach z kilkoma decyzjami. Pseudokod zapisuje je jako ustrukturyzowany tekst, który lepiej skaluje się do dłuższych programów i łatwiej przekłada się na prawdziwy kod.

Czy w pseudokodzie trzeba deklarować zmienne?

W pseudokodzie Cambridge tak: klucze oceniania wymagają DECLARE name : TYPE, zanim zmienna zostanie użyta. Inne style, na przykład AQA, pomijają deklaracje. Deklaracja mówi też czytelnikowi, jakiego typu wartość przechowuje zmienna.

Ilustracja języków programowania w Coddy

Przejdź od pseudokodu do prawdziwego kodu z Coddy

ZACZNIJ