Структура алгоритма: алг, нач, кон, дано и надо

Учимся правильно оформлять алгоритм: где пишется имя, где тело, зачем нужны строчки «дано» и «надо».

Алгоритм в КуМире — это именованная последовательность команд в рамке алг имя … нач … кон. Имя алгоритма позволяет вызывать его как команду.

Полная форма заголовка

В прошлом уроке мы писали алгоритм без имени. Но «правильный» алгоритм имеет заголовок, в котором указывается его тип (что он возвращает) и имя:

алг цел сумма_цифр
дано | трёхзначное число n
надо | вернуть сумму его цифр
нач
  | тело алгоритма
кон

Разберём по частям:

  • алг — служебное слово, начинает любой алгоритм.
  • целтип результата (целое число). Если алгоритм ничего не возвращает, тип не пишут — получается «алгоритм-процедура».
  • сумма_цифримя. Может быть из нескольких слов через пробел или с подчёркиваниями.

Строки «дано» и «надо»

Сразу после заголовка можно (и нужно по культуре) написать две строки-комментария:

  • дано — что известно на входе, какие данные алгоритм получает.
  • надо — что требуется получить, какова цель.

Эти строки не выполняются — они для человека. Но в КуМире у них есть приятная роль: символ | начинает комментарий, и дано/надо оформляются именно как пояснения. Они дисциплинируют: прежде чем писать код, вы формулируете задачу словами. Это половина успеха на экзамене.

Тело алгоритма: нач … кон

Между нач и кон находятся сами команды. Каждая команда — на отдельной строке. Отступ в два пробела внутри тела — общепринятый стиль, и среда КуМир делает его автоматически.

алг
нач
  цел a, b, s
  ввод a, b
  s := a + b
  вывод "Сумма равна ", s, нс
кон

Обратите внимание: объявления переменных (цел a, b, s) пишутся внутри тела, в самом начале, до первой исполняемой команды. Это отличается от Паскаля, где переменные объявляют в отдельном разделе var до begin.

Комментарии

Комментарий в КуМире начинается с вертикальной черты | и тянется до конца строки. Комментарии помогают и вам, и эксперту, который проверяет работу:

  вправо   | сдвигаемся к стене
  закрасить | помечаем угол

Та же логика на Python

Алгоритм «ввести два числа и вывести сумму» на Python (можно запустить — он использует фиксированные значения вместо клавиатуры, чтобы пример был самодостаточным):

a = 7
b = 5
s = a + b
print("Сумма равна", s)

Вывод:

Сумма равна 12

Алгоритм можно вызвать по имени

Если у алгоритма есть имя, его можно использовать как команду из другого алгоритма. Это основа вспомогательных алгоритмов, к которым мы вернёмся в третьем разделе. Пока запомните идею: главный алгоритм — это «дирижёр», а именованные алгоритмы — «музыканты», которых он вызывает.

алг
нач
  приветствие   | вызываем вспомогательный алгоритм
кон

алг приветствие
нач
  вывод "Здравствуй!", нс
кон

Попробуй сам

Напишите алгоритм с заголовком, строками дано/надо и телом, который объявляет переменную r, присваивает ей значение 5 и выводит площадь круга 3.14 * r * r. Не забудьте объявить тип вещ для дробного результата.

Частые ошибки

  • Писать переменные после первой команды — объявления должны идти в начале тела.
  • Путать | (комментарий) с делением. Деление в КуМире — это /.
  • Забывать кон у вложенного вспомогательного алгоритма.

Итог

  • Заголовок: алг [тип] имя; тело — между нач и кон.
  • дано и надо — комментарии-формулировки задачи, очень полезны на экзамене.
  • Переменные объявляются в начале тела, а не в отдельном разделе.
  • Именованный алгоритм можно вызвать как команду — это путь к вспомогательным алгоритмам.
Проверьте себя
1. Где в КуМире объявляются переменные алгоритма?
AВ отдельном разделе var до нач
BВ начале тела, после нач, до первой команды
CВ заголовке алг
DВ строке дано
2. Зачем нужны строки «дано» и «надо»?
AЭто команды ввода и вывода
BЭто комментарии-формулировки: что известно и что требуется
CЭто объявление типов
DОни запускают алгоритм
3. Каким символом начинается комментарий в КуМире?
A// двумя слэшами
B# решёткой
C| вертикальной чертой
D; точкой с запятой
Поддержать проект