Структура программы: program, begin, end и точка с запятой

Урок объясняет, из каких частей состоит любая программа на Паскале и зачем нужны begin, end и точка с запятой.

Структура программы — это обязательный «скелет» из заголовка, раздела описаний и тела, в который вы вписываете команды.

Почему у программы есть скелет

Любой документ имеет структуру. У письма есть обращение, основной текст и подпись. У школьного сочинения — вступление, основная часть и заключение. Программа на Паскале устроена так же строго: у неё есть чётко определённые части, и они всегда идут в одном порядке. Эта предсказуемость — не каприз языка, а помощь вам: глядя на любую паскалевскую программу, вы сразу понимаете, где что искать.

Полная структура программы на Паскале выглядит так:

program HelloWorld;   // 1. Заголовок программы

const                 // 2. Раздел констант (необязателен)
  Pi = 3.14;

var                   // 3. Раздел переменных (необязателен)
  radius: real;

begin                 // 4. Начало тела программы
  radius := 5;
  writeln('Длина окружности: ', 2 * Pi * radius);
end.                  // 5. Конец программы (с точкой!)

Разберём каждую часть по порядку.

Заголовок: program

Первая строка — program HelloWorld; — это заголовок. Он даёт программе имя. Имя пишется латиницей, без пробелов, и заканчивается точкой с запятой. В PascalABC.NET заголовок необязателен: можно начать программу сразу с begin, как мы делали в прошлом уроке. Но в учебниках и на экзаменах заголовок принято писать, поэтому привыкайте: это хороший тон и сразу видно, как программа называется.

Раздел описаний: const и var

После заголовка идёт раздел описаний — место, где вы заранее перечисляете всё, чем будете пользоваться. Слово const вводит константы (значения, которые не меняются, например число Пи). Слово var вводит переменные — «ячейки памяти» с именами, в которые программа будет складывать данные. Подробно с переменными мы разберёмся в следующем разделе, а пока запомните главное: в Паскале нельзя пользоваться переменной, не объявив её заранее в разделе var. Это и есть та самая строгость языка.

Раздел описаний необязателен: если программе не нужны ни константы, ни переменные, его можно пропустить.

Тело программы: begin и end

Самое главное — тело программы, заключённое между словами begin и end. Именно здесь живут команды, которые компьютер выполняет по порядку, сверху вниз. Слова begin и end работают как открывающая и закрывающая скобки: begin говорит «здесь начинается список действий», end — «здесь он заканчивается».

Очень важная деталь: тело программы завершается end с точкой, а не с точкой с запятой. Точка означает «программа полностью закончена, дальше ничего нет». Это как точка в конце сочинения.

Запустите Python-аналог, чтобы увидеть, что внутри тела команды просто выполняются одна за другой:

radius = 5
pi = 3.14
print('Длина окружности:', 2 * pi * radius)

Вывод:

Длина окружности: 31.400000000000002

Точка с запятой: разделитель команд

Внутри тела программы команды отделяются друг от друга точкой с запятой ;. Точка с запятой — это не «конец команды», как думают многие, а разделитель между командами, как запятая между словами в перечислении. Представьте, что вы диктуете список покупок: «хлеб, молоко, яйца». Запятые стоят между пунктами. Точно так же точки с запятой стоят между командами Паскаля.

begin
  writeln('Первая строка');
  writeln('Вторая строка');
  writeln('Третья строка')
end.

Обратите внимание: перед самым последним end точку с запятой можно не ставить, потому что после третьей команды ничего не следует — разделять не с чем. Но если вы её всё же поставите, ошибки не будет: Паскаль просто посчитает, что между командой и end стоит «пустая команда». Поэтому многие для надёжности ставят точку с запятой после каждой строки. Так и советуем делать новичкам: меньше шансов ошибиться.

Ключевые слова и регистр

Слова program, const, var, begin, end называются ключевыми (служебными). Их нельзя использовать как имена переменных — они зарезервированы языком. Хорошая новость: Паскаль не различает регистр в ключевых словах. begin, Begin и BEGIN для него одно и то же. Но принято писать служебные слова строчными буквами — так читается приятнее.

Попробуй сам

Напишите на Паскале программу с полной структурой: заголовком program, телом из двух команд writeln — первая печатает «Учусь писать структуру», вторая печатает «Получается!». Проверьте, что вы поставили точку с запятой между командами и точку после end. Вот запускаемый Python-аналог тела вашей программы:

print('Учусь писать структуру')
print('Получается!')

Вывод:

Учусь писать структуру
Получается!

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

  • Точка с запятой после begin. Запись begin; — ошибка по смыслу: begin открывает блок, а не является командой, разделять тут нечего.
  • Точка с запятой вместо точки после end. Если написать end; в конце программы, среда сообщит, что ждёт продолжения. Программа кончается end. с точкой.
  • Переменная без объявления. Попытка использовать имя, которого нет в разделе var, вызовет ошибку «неизвестное имя». Сначала объяви — потом используй.

Итоги

  • Программа состоит из заголовка (program), необязательного раздела описаний (const, var) и тела между begin и end.
  • Команды в теле выполняются по порядку сверху вниз и разделяются точкой с запятой.
  • Точка с запятой — разделитель между командами, а не их завершение; перед последним end она необязательна.
  • Вся программа завершается end. с точкой.
  • Ключевые слова не различают регистр, но их принято писать строчными буквами; имена переменных нужно объявлять заранее.
Проверьте себя
1. Что обозначает точка с запятой между командами в Паскале?
AЗавершение всей программы
BРазделитель между командами
CНачало комментария
DКонец строки текста для вывода
2. В каком разделе программы нужно заранее объявлять переменные?
AВ заголовке program
BВ разделе var
CМежду begin и end
DВ разделе const
3. Чем тело программы отличается по завершению от обычной команды?
AТело завершается end с точкой, а не с точкой с запятой
BТело вообще не завершается специальным словом
CТело завершается словом stop
DТело завершается двумя точками с запятой
Поддержать проект