Структура програми мовою Паскаль.
Програма, написана мовою ПАСКАЛЬ, являє собою послідовність рядків, кожен з яких відокремлюється від іншого символом “;” (крапка з комою). Вона складається з трьох частин: заголовка, блока описів та блока операторів.
Заголовок задає ім’я програмі.
Блок описів оголошує всі об’єкти, які використовуються програмою: мітки, константи, типи користувача, змінні, тощо.
Блок операторів задає дії, які направлені на розв’язання завдання.
Отже, загальний вид програми на мові ПАСКАЛЬ має вигляд:
Program <ім’я програми >
Uses< модулі >
Const< константи >
Label< мітки >
Type< типи користувача >
Var< змінні >
Begin
< оператори >
End.
Розглянемо кожен блок детальніше.
Заголовок програми розпочинається зі службового слова program , після якого вказується ім’я програми. Він грає допоміжну функцію і ніякої суттєвої ролі для самої програми не має.
ПРИКЛАД:
program circles;
Не слід плутати заголовок програми та ім’я відповідного дискового файлу. Ці імена ніяк між собою не пов’язані. В більшості випадків користувачі не вказують заголовок.
У блоку описів оголошуються всі ідентифікатори, що використовуються в програмі (основному модулі). Блок описів, у свою чергу, може містити шість розділів:
· розділ підключення модулів процедур та функцій;
· розділ опису міток;
· розділ опису констант;
· розділ визначення типів;
· розділ опису змінних;
· розділ опису процедур і функцій.
Транслятор мови ПАСКАЛЬ створений таким чином, що основний файл не містить всіх процедур та функцій. Вони згруповані і реалізовані в окремих файлах, які називаються модулями стандартних процедур та функцій. Наприклад, модуль CRT містить функції для роботи з екраном в текстовому режимі, GRAPH – функції для роботи з екраном в графічному режимі. Крім того, користувач може створювати власні модулі процедур та функцій. В розділі usesздійснюється підключення необхідних модулів процедур та функцій. Програма може містити лише один розділ uses, причому він повинен бути завжди першим у блокові описів. Якщо жоден з модулів не підключається, то цей розділ відсутній.
ПРИКЛАДИ:
uses dos, graph;
uses my_lib;
Розділ оголошення міток призначений для вказівки міток операторів. Перед будь-яким оператором програми можна поставити мітку. Це дозволить виконувати прямий перехід на цей оператор при виконанні команди GOTO. Розділ опису міток має таку структуру: спочатку записується зарезервоване слово label(мітка), за ним слідує список ідентифікаторів міток, відділених одна від одної комами. В мові TУРБО ПАСКАЛЬ в ролі міток можуть бути використані як числа, так і ідентифікатори.
ПРИКЛАД:
label 10,999;
label new, errors;
У розділі визначення констант здійснюється присвоювання ідентифікатором визначених постійних значень. На початку розділу визначення констант пишеться слово const(константа). Слідом за цим словом іде список імен і після символу “=” відповідні їм вирази, у яких ідентифікаторам присвоюються визначені постійні значення. Елементи списку відокремлюються один від одного крапкою з комою.
ПРИКЛАД:
Const
max = 1024;
password = ‘Sezam’;
limit=2*max;
Розділ оголошення типів призначений для введення типів даних користувача. Практично всі структуровані типи даних є типами даних користувача і повинні описуватись у даному розділі. Розділ визначення типів починається зарезервованим словом type(тип). За словом typeслідують визначення типів, розділених один від одного крапкою з комою. Кожне визначення типу складається з ідентифікатора типу, знака рівності і самого опису типу.
ПРИКЛАД:
type
day = (пн, вт, ср, чт, пт, сб, вс);
colors= (синій, червоний, зелений);
Зауважимо, що в останньому прикладі значення задаються без лапок (це не значення рядкового типу, а значення зліченого типу!).
Розділ оголошення змінних є найважливішим в блокові оголошень. Кожна змінна, що зустрічається в програмі, повинна бути описана, тобто, повинен бути вказаний її тип. Опис змінної повинен передувати використанню її в тексті програми для того, щоб у момент використання вона була вже “знайома” компілятору.
Розділ опису змінних починається зарезервованим словом var (від variable - змінна). Слідом за ним йде список, записи якого мають таку структуру: спочатку через кому перераховується один або декілька ідентифікаторів змінних, потім ставиться двокрапка і після двокрапки вказується тип перерахованих змінних.
ПРИКЛАД:
var
a, b, result: real;
i, j, x, y: integer;
period: day;
Мова ПАСКАЛЬ припускає також оголошення змінних безпосереднім описом змінних.
ПРИКЛАД:
var
nt: 1..20;
anser: (yes, no);
Таке оголошення має свої обмеження на використання змінних, і тому зловживати ним не рекомендується.
Розділ опису процедур та функцій служить для визначення допоміжних алгоритмів (процедур та функцій користувача) у рамках поточного модуля або програми. Цей розділ не має службового слова для початку розділу, тому що кожна процедура або функція користувача має своє службове слово для початку свого оголошення.. Детально цей процес буде розглянутий далі.
Кожен з описових розділів, крім розділу uses, може зустрічатись в програмі декілька разів і в будь-якій послідовності. Головне, щоб не порушувалась логічна структура програми (наприклад, змінна типу користувача не оголошувалась раніше самого типу, тощо).
Розділ операторів є останнім у блоці програми. Він задає дії, які повинна виконати програма. Розділ операторів починається службовим словом beginі закінчується службовим словомend.(крапка в кінці обов’язкова). Кожна програма може мати лише один розділ операторів.
Оператори
Оператори описують ті алгоритмічні дії, що повинні виконуватися. Операторами можуть передавати мітки, які можна використовувати для посилань в операторах переходу goto.
Існує два основних види операторів: прості оператори і структурні оператори.
5.4.1. Прості оператори
Оператор присвоєння
Оператор присвоєння (:=) заміняє поточне значення перемінної новим значенням, що визначається вираженням, чи визначає вираження, значення якого повинно повертатися функцією.
Вираження повинне бути сумісне по присвоєнню з типом перемінної чи типом значення, що повертається функцією як результат.
Наведемо деякі приклади операторів присвоєння:
X:= Y + Z
Done := (I >= 1) and (I < 100);
Huel := [blue, Succ(C)];
I := Sqr(J) – I *K;
Дата добавления: 2016-01-18; просмотров: 774;