Заголовок програми – необов'язковий 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 після введення даних, і 1-й readln; прочитає саме це натискання, а 2-й буде чекати ще одного. Будь введення даних у вигляді a:=1; b:=2; c:=0; або readln(a,b,c);, нам вистачило б і одного readln;. Однак, оператор readln(a,b,c); зажадав би від користувача ввести всі 3 числа в одному рядку, а завдання фіксованих значень a, b, c зменшило б до нуля її корисність. Надалі ми довідаємося більш гнучкі способи програмування реакції програми на дії користувача.