Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
R4_КП_12.doc
Скачиваний:
8
Добавлен:
23.11.2018
Размер:
605.18 Кб
Скачать

Структура програм

Метою граматики мови програмування є програма. Ця конструкція в різних мовах визначається по-різному. Так у мові Рascal вона визначається наступною БНФ-нотацією:

<програма> ::= <заголовок програми>;

<блок> | <блок>.

Відповідно до даного правила, заголовок у програмі на мові Рascal взагалі може бути відсутній. Це обумовлюється тим, що сучасними системами програмування він програми ігнорується і може бути опущений. Але робити цього не слід, оскільки з точки зору наочності кожен текст, в тому числі і програма, повинні мати заголовок. Його БНФ:

<заголовок програми> ::= program <ім’я програми>

<ім’я програми> ::= <ідентифікатор>

Програма обов'язково завершується крапкою.

Спільною особливістю імперативних програм є відділення в їх тілі опису даних від опису дій. Тому у структурі таких програм розрізняють описову і операторну частини. Наприклад, БНФ-нотація визначення блоку у програмі на Рascal:

<блок> ::= <список описових розділів>;

<розділ операторів> | <розділ операторів>

Опис даних текстуально передує описові дій із цими даними і повинен містити оголошення всіх програмних об'єктів, що використовуються у програмі (констант, типів даних, змінних, підпрограм тощо), тобто:

<список описових розділів> ::= <розділ констант > <розділ типів> <розділ змінних>

<розділ процедур і функцій>

Знак "або" наприкінці правила означає, що розділ, а, отже, і список розділів описів може бути порожнім, тобто відсутнім в тексті програми.

У списку описових розділів транслятору повідомляється інформація, необхідна для розподілу пам'яті, її структурування, організації контролю виконання програми (виявлення помилок часу трансляції та часу виконання) тощо.

Структура програми на мові Рascal

Структура програми на Рascal має наступний вигляд:

Program <ім'я програми> ;

заголовок програми

Uses

<список бібліотек (модулів)> ;

розділ підключення бібліотек

декларативна

(описова) частина

Const

<визначення констант> ;

розділ опису констант

Type

<опис типів> ;

розділ опису типів

Var

<визначення змінних>;

розділ опису змінних

Procedure <заголовок процедури>;

<тіло процедури>;

розділ опису процедур і функцій

Function <заголовок функції>;

<тіло функції>;

Begin

<оператори>;

End.

розділ операторів

операторна частина

Початок розділу у ній, зазвичай, позначається одним із зарезервованих слів.

Всі описові розділи (окрім Uses) можуть зустрічатися у програмі будь-яку кількість разів і в будь-якому порядку. Головне, щоб усі оголошення були зроблені до того, як відповідні програмні об'єкти будуть використані в програмі.

Описова частина взагалі може бути відсутня; без операторної ж частини програма не має сенсу.

Заголовок програми. Служить для задання імені програми. Він несе чисто смислове навантаження і може бути відсутнім. Однак рекомендується завжди його записувати для швидкого пошуку потрібної програми.

Розділ підключення бібліотек Uses. Тут вказуються імена стандартних бібліотек і бібліотек користувача, що підключаються до програми. Наприклад,

Uses

CRT, DOS, MyLib ;

У цього розділу є своє чітке місце. Якщо він присутній у програмі, то повинен знаходитися перед іншими описовими розділами і використовуватися один раз.

Розділ опису констант Const. У цьому розділі визначаються іменовані константи, значення яких надалі в програмі змінювати не можна. Наприклад,

Const

Day = 'Середа';

Limit = 255;

Використання ідентифікаторів констант дозволяє уникнути вживання в програмі явних константних значень, що зручно для її швидкої модифікації.

У розділі Const оголошуються також типізовані константи, що рівнозначні змінній із заздалегідь ініціалізованим значенням. Опис типізованої константи відрізняється від опису звичайної константи вказанням не тільки значення константи, але і її типу. Наприклад,

Const

X : integer = 16;

Y : real = 1.75;

Розділ опису типів TYPE. Служить для визначення ідентифікатора типу користувача (зв'язує з типом користувача деяке ім'я). Цей ідентифікатор типу надалі може використовуватися для визначення нових, більш складних типів даних або для опису змінних у розділі опису змінних Var . Наприклад,

Type

Day = 1.. 31;

Mas = array [1..10] of Day;

Var

d : Mas ;

today : Day ;

Вибір способу опису типу залежить від програміста і специфіки програми.

Розділ опису змінних VAR. Кожна змінна, що зустрічається в програмі, повинна бути описана – віднесена до певного типу даних.

Тип змінної може бути заданий трьома способами:

  • за допомогою стандартного ідентифікатора (іnteger, boolean, char, ...), якщо змінна відноситься до стандартних типів;

  • описаний явно (для складних типів);

  • описаний за допомогою ідентифікатора типу, оголошеного раніше (у розділі Type).

Наприклад,

Var

a, b, c : real ;

d : 0..9 ;

today : Day ;

Розділ опису процедур і функцій. Процедури і функції – це різновиди підпрограм, що використовуються в Рascal.

Стандартні підпрограми є невід'ємною частиною мови і викликаються без попереднього опису. Підпрограми ж користувача повинні бути попередньо описані в розділі опису процедур і функцій.

Цей розділ не починається яким-небудь ключовим словом, а складається з окремих описів процедур і функцій. Ніяких обмежень на порядок їхнього розміщення не накладається.

Розділ виконання. Описує дії, які повинна виконувати програма.

Характерною рисою структурованої програми є малий розмір її основного блоку, що відіграє роль координатора і тільки викликає окремі підпрограми.

Приклад. Програма, що обчислює суму і різницю двох цілих чисел.

Program Primer1;

Const

a1=10;

a2=5;

Var

sum, raz : integer;

Begin

sum := a1 + a2 ;

raz := a1 - a2 ;

WriteLn (‘Сумма чисел - ‘, sum);

WriteLn (‘Разность чисел - ‘, raz);

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]