Pers.narod.ru. Обучение. Учебник по Паскалю. Глава 5 |
Программа на Паскале не просто состоит из операторов -- порядок следования этих операторов не случаен и образует определенную структуру. Структура простейшей программы описана в табл. 5.1.
Табл. 5.1. Структура простой программы на Паскале
Название раздела |
Операторы раздела |
Заголовок программы (необязателен) |
program ИмяПрограммы; |
Раздел описаний - необязателен, но, как правило, присутствует |
const список констант; var список переменных; |
Тело программы - обязателен, содержит операторы программы |
begin операторы; end. |
Пара операторов begin и end называется операторными скобками, они служат для того, чтобы объединить группу операторов, выполняемых вместе, например, в цикле или по условию. Ключевые слова begin и end следует рассматривать как единый оператор, поэтому после begin точка с запятой не ставится, а количество begin и end в программе всегда одинаково. Таким образом, тело программы заключено в операторные скобки, объединяющие все ее операторы.
Только последний оператор программы завершается точкой: end. , все остальные -- символом ;.
Если в программе нет констант, в ней будет отсутствовать раздел const, если нет и переменных -- раздел var.
При написании текста программы следует соблюдать несложные правила, облегчающие его последующие чтение и модификацию:
· внутри ключевых слов или идентификаторов не должно быть пробелов и других разделителей, таких как табуляция или перевод строки; во всех иных случаях не запрещено разрывать оператор, однако, делать это следует лишь тогда, когда написание оператора в одну строку затрудняет восприятие текста программы;
· на каждой строке обычно пишется один оператор (это облегчает и отладку программы);
· операторы одного уровня вложенности пишутся с одинаковым отступом слева; например, хорошим тоном считается после начала каждого блока (begin) отступать на следующей строке на символ или несколько символов вправо, а закрывать блок так, чтобы соответствующий end; находился под своим begin. Приведем пример неправильного и правильного структурирования:
program p1; var
a,b,c:real; begin
writeln ('Введите значения A и B:');read(a,b);
c:=a+b; writeln ('A+B=',c); c:=a-b;
writeln ('A-B=',c); end.
Текст этой программы структурирован явно неудачно, гораздо лучше он воспринимается так:
program p1;
var a,b,c:real;
begin
writeln ('Введите значения A и B:');
read (a,b);
c:=a+b;
writeln ('A+B=',c);
c:=a-b;
writeln ('A-B=',c);
end.
· основные действия программы комментируются: комментарием в Паскале считается любой текст, ограниченный фигурными скобками { ... } или символами (* ... *). Количество комментариев в программе никак не влияет на объем генерируемого машинного кода, они призваны, прежде всего, облегчить последующее чтение и модификацию исходного текста программы.
В качестве примера приведем законченную программу на Паскале, вычисляющую вещественные корни произвольного квадратного уравнения.
program Equation;
var a,b,c,d,x1,x2:real; begin
writeln;
writeln ('Введите коэффициенты a,b,c:');
read (a,b,c);
d:=sqr(b)-4*a*c;
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln ('Корни уравнения');
writeln (x1:10:2,x2:10:2);
readln; readln;
end.
В разделе описаний программы всем переменным, требуемым для решения задачи, присвоен тип real, и этот выбор вполне очевиден -- коэффициенты a, b и с -- не обязательно целые значения. "Лишний" оператор writeln; перед приглашением к вводу -- гарантия того, что приглашение будет напечатано с начала пустой строки, ведь мы пока не умеем очищать экран, и, возможно, при запуске нашей программы курсор находится не в начале строки. После вычисления дискриминанта и корней x1, x2 (условие d≥0 мы пока не проверяем), на экран печатается информационное сообщение "Корни уравнения", а затем с новой строки выводятся значения x1 и x2 с соблюдением указанных ширины и точности вывода. Наконец, два оператора readln; в конце программы позволяют ей дождаться, пока пользователь не нажмет клавишу Enter. "Удвоение" оператора здесь связано с тем, что один раз мы уже нажимали Enter после ввода данных, и первый readln; прочитает именно это нажатие, а второй будет ждать еще одного. Будь ввод данных организован в виде a:=1; b:=2; c:=0; или readln(a,b,c);, нам хватило бы и одного readln;. Однако, оператор readln(a,b,c); потребовал бы от пользователя ввести все 3 числа в одной строке, а задание фиксированных значений a, b, c уменьшило бы до нуля ее полезность. В дальнейшем мы узнаем более гибкие способы программирования реакции программы на действия пользователя.
гостевая; E-mail |