Menu
Coddy logo textTech

Примеры псевдокода

15 разобранных примеров на псевдокоде Cambridge IGCSE и A-Level, от первого OUTPUT до сортировки пузырьком. У каждого указан вывод, и каждый можно запустить в редакторе ниже.

Как читать эти примеры

Псевдокод описывает шаги программы на структурированном английском, без строгих правил настоящего языка программирования. Все примеры ниже написаны в стиле Cambridge, который используют на экзаменах IGCSE и A-Level: DECLARE для переменных, ← для присваивания, OUTPUT для вывода и блоки, которые закрываются словами ENDIF, NEXT или ENDWHILE.

В каждом примере есть задача, псевдокод, вывод, который он даёт, и объяснение, как он работает. Нажмите «Запустить в редакторе», чтобы загрузить пример в редактор вверху страницы: там его можно пройти строка за строкой и увидеть, как меняются переменные. Синтаксис пока незнаком? В редакторе псевдокода есть кликабельная библиотека всех конструкций.

1. Hello, World

Вывести сообщение на экран.

Псевдокод
OUTPUT "Hello, World!"
Вывод
Hello, World!

OUTPUT выводит всё, что стоит после него, а текст записывается в двойных кавычках. Эта одна строка уже полноценная программа: псевдокоду не нужны ни функция main, ни импорты.

2. Сложить два числа

Сохранить два целых числа, сложить их и вывести сумму.

Псевдокод
DECLARE a : INTEGER
DECLARE b : INTEGER
DECLARE total : INTEGER
a ← 12
b ← 30
total ← a + b
OUTPUT "The total is ", total
Вывод
The total is 42

Каждая переменная объявляется с именем и типом до того, как её используют. Стрелка ← сохраняет значение, поэтому total ← a + b читается как «total становится равным a плюс b». Запятая в OUTPUT соединяет текст и значение в одной строке.

3. Чётное или нечётное

Определить, чётное число или нечётное.

Псевдокод
DECLARE n : INTEGER
n ← 17
IF n MOD 2 = 0 THEN
    OUTPUT n, " is even"
ELSE
    OUTPUT n, " is odd"
ENDIF
Вывод
17 is odd

MOD даёт остаток от деления. Чётное число делится на 2 без остатка, поэтому проверка выглядит как n MOD 2 = 0. IF выбирает одну из двух ветвей, а ENDIF закрывает блок. В псевдокоде одиночный знак = сравнивает два значения и никогда ничего не присваивает.

4. Оценка за тест

Превратить балл из 100 в оценку: A за 80 и выше, B от 60 до 79, C ниже 60.

Псевдокод
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
Вывод
Score 74 gets grade B

Проверки идут от самой высокой границы вниз, поэтому балл 74 не проходит первую проверку и проходит вторую. Вложить один IF в ELSE другого: так в псевдокоде Cambridge записывается цепочка else-if. CHAR хранит один символ в одинарных кавычках.

5. Сумма чисел от 1 до 10

Сложить все целые числа от 1 до 10.

Псевдокод
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
Вывод
Sum of 1 to 10 is 55

Цикл FOR выполняется заданное число раз: i принимает значения 1, 2, 3 и так далее до 10, а NEXT i отмечает конец тела цикла. Накопленная сумма начинается с 0 и растёт на каждом проходе. Ответ, 55, совпадает с формулой n(n + 1) / 2.

6. Таблица умножения

Вывести первые пять строк таблицы умножения на 7.

Псевдокод
DECLARE i : INTEGER
FOR i ← 1 TO 5
    OUTPUT "7 x ", i, " = ", 7 * i
NEXT i
Вывод
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35

Счётчик цикла i участвует в вычислении, поэтому каждый проход выводит новую строку. OUTPUT может соединять запятыми несколько кусков текста и несколько значений.

7. Обратный отсчёт с циклом WHILE

Отсчитать от 5 до 1, затем вывести финальное сообщение.

Псевдокод
DECLARE count : INTEGER
count ← 5
WHILE count > 0 DO
    OUTPUT count
    count ← count - 1
ENDWHILE
OUTPUT "Liftoff!"
Вывод
5
4
3
2
1
Liftoff!

Цикл WHILE проверяет условие перед каждым проходом и останавливается, как только условие становится ложным. Здесь условие count > 0, а тело цикла каждый раз уменьшает count на единицу. Если убрать строку, которая уменьшает значение, цикл никогда не закончится. Используйте WHILE, когда заранее неизвестно, сколько проходов понадобится.

8. Найти наибольшее число в массиве

Найти самое большое значение в списке из шести чисел.

Псевдокод
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
Вывод
The largest number is 27

ARRAY[1:6] объявляет шесть ячеек с номерами от 1 до 6, потому что в Cambridge массивы обычно начинаются с 1. Программа считает первый элемент наибольшим, затем сравнивает с ним каждый следующий и оставляет большее значение. После одного прохода по массиву ответ лежит в largest.

9. Вычислить среднее

Найти среднее значение четырёх оценок за тест.

Псевдокод
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
Вывод
Average mark: 77.5

Цикл прибавляет каждый элемент массива к total, затем программа делит сумму на количество оценок. Оператор / даёт дробный результат, поэтому вывод равен 77.5. Если нужно целочисленное деление, используйте DIV.

11. Сортировка пузырьком

Отсортировать пять чисел по возрастанию.

Псевдокод
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
Вывод
1
2
4
5
8

Сортировка пузырьком сравнивает каждую пару соседних элементов и меняет их местами, если они стоят в неправильном порядке. После каждого прохода внешнего цикла наибольшее из оставшихся значений оказывается в конце, поэтому внутренний цикл каждый раз может останавливаться на один элемент раньше. Для обмена нужна третья переменная, temp, которая держит одно значение, пока на его место копируется другое.

Посмотреть анимацию этого алгоритма

12. Факториал через функцию

Написать функцию, которая возвращает факториал n (n!), и с её помощью вычислить 5!.

Псевдокод
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)
Вывод
5! = 120

FUNCTION принимает параметры, выполняет свою работу и возвращает значение через RETURN; в её заголовке указан тип возвращаемого значения. Переменные, объявленные внутри, существуют только пока функция выполняется. 5! это 5 × 4 × 3 × 2 × 1, то есть 120.

13. Посчитать гласные в слове

Посчитать, сколько гласных в слове PSEUDOCODE.

Псевдокод
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"
Вывод
PSEUDOCODE has 5 vowels

LENGTH возвращает количество символов в строке, а SUBSTRING(word, i, 1) берёт один символ, начиная с позиции i. Цикл проходит по каждому символу и увеличивает счётчик на единицу, когда встречает A, E, I, O или U.

14. FizzBuzz

Вывести числа от 1 до 15, но вместо чисел, кратных 3, выводить Fizz, вместо кратных 5 выводить Buzz, а вместо кратных и 3, и 5 выводить FizzBuzz.

Псевдокод
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
Вывод
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

Порядок проверок важен. 15 кратно и 3, и 5, поэтому проверка на 15 должна идти первой; иначе программа выведет Fizz и никогда не дойдёт до FizzBuzz. Это классическая разминка на собеседовании, потому что она проверяет именно такое рассуждение.

15. Попытки ввода пароля с REPEAT UNTIL

Проверить до трёх паролей по очереди и открыть доступ, если один из них верный.

Псевдокод
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
Вывод
Try 1: hunter1
Try 2: letmein
Try 3: open sesame
Access granted

Цикл REPEAT ... UNTIL проверяет условие в конце, поэтому тело выполняется хотя бы один раз. Цикл останавливается, когда пароль совпал или после третьей попытки. Варианты берутся из массива, чтобы пример работал без ввода с клавиатуры; в ответе на экзамене каждый из них обычно читают через INPUT.

Частые вопросы о примерах псевдокода

Как выглядит пример псевдокода?

Короткий пример решает, сдан ли тест: IF score >= 50 THEN OUTPUT "Pass" ELSE OUTPUT "Fail" ENDIF. Он читается почти как обычный английский текст, но подчиняется строгим правилам, поэтому его можно построчно перевести на Python, Java или любой другой язык. 15 программ на этой странице идут от одной строки до поиска и сортировки.

Как писать псевдокод?

Решите, что должна делать программа, затем запишите шаги по порядку с помощью небольшого набора ключевых слов: DECLARE для переменных, ← для присваивания, IF для решений, FOR или WHILE для повторений и OUTPUT для результатов. Делайте отступ в теле каждого блока, закрывайте блок его завершающим словом и пишите одно действие на строку.

Одинаков ли псевдокод на всех экзаменах?

Нет. Cambridge (IGCSE и A-Level) использует DECLARE и стрелку ←, AQA использует ← без объявлений, язык Exam Reference Language от OCR похож на Python, а Edexcel пишет SET ... TO. Примеры здесь написаны в стиле Cambridge; редактор псевдокода переключается между всеми четырьмя стилями.

Можно ли запустить псевдокод?

Да, прямо на этой странице. Псевдокод не настоящий язык программирования, поэтому официального компилятора нет, но здешний редактор выполняет псевдокод Cambridge в браузере, показывает вывод и проходит его строка за строкой. Нажмите «Запустить в редакторе» под любым примером.

Чем псевдокод отличается от блок-схемы?

Оба описывают алгоритм до того, как его запрограммируют. Блок-схема рисует шаги прямоугольниками и стрелками, это удобно для коротких процессов с парой решений. Псевдокод записывает их структурированным текстом, который подходит и для длинных программ и напрямую переводится в настоящий код.

Нужно ли объявлять переменные в псевдокоде?

В псевдокоде Cambridge да: схемы оценивания ожидают DECLARE name : TYPE до первого использования переменной. В других стилях, например у AQA, объявления пропускают. Объявление к тому же сообщает читателю, какого типа значение хранит переменная.

Иллюстрация языков программирования Coddy

От псевдокода к настоящему коду вместе с Coddy

НАЧАТЬ