Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

5. Структура простої програми на Паскалі

Програма на Паскалі не просто складається з операторів – порядок проходження цих операторів не випадковий і утворює певну структуру. Структуру найпростішої програми опишемо наступною схемою:

Назва розділу Оператори розділу

Заголовок програми – необов'язковий 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зменшило б до нуля її корисність. Надалі ми довідаємося більш гнучкі способи програмування реакції програми на дії користувача.