Оператори управління виконанням програми 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператори управління виконанням програми



Паскаль - мова структурного програмування, що означає, що програма складається з виконуються послідовно окремих стандартних операторів, в ідеалі - без використання команди GOTO GOTO.

while a <> b do {Цикл з передумовою} writeln ('Очікування'); if a> b then {Умовний оператор} writeln ('Умова виповнилося') else {Else-секція - може бути відсутнім} writeln ('Умова не виповнилося'); for i: = 1 to 10 do {Ітераційний цикл} writeln ('Ітерація №', i: 1); With a do {Оператор With - метод прискорення доступу до полів запису} begin l: = 1; K: = 2; P: =- 3; end; repeat {Цикл з постусловіем} a: = a + 1 until a = 10; case i of {Умовний оператор множинного вибору} 0: write ('Нуль'); 1: write ('Один'); 2: write ('Два') else write ('Невідоме число') {Else-секція - може бути відсутнім} end;

В операторах while, for, if, case як виконуваного оператора може використовуватися блок. Така конструкція, що представляє собою звичайний оператор або блок, називається складним оператором.

Для управління процесом компіляції в паскалі існують директиви компілятора. Вони поміщаються в коментарі і дозволяють перемикати режими роботи компілятора, наприклад, включати і відключати перевірку операцій введення-виведення, перевірки переповнення:

assign (inp, 'Text.txt'); {$ I-} {Відключення режиму IO checking-генерації коду завершення програми у разі помилки введення-виведення} {(Для випадку, якщо файл не знайдено)} reset (inp); {$ I +} {Включення режиму IO checking} if IOresult = 0 then begin {Перевіряємо значення зміною ioresult (<> 0 в разі помилки вводу-виводу)}... close (inp); end else writeln ('File not found')

Існують директиви, аналогічні директивам препроцесора C / C + + ($ifdef, $define, $include), вони обробляються компілятором в процесі компіляції.


Процедури і функції

У Паскалі підпрограми діляться на процедури і функції:

Синтаксично процедури і функції складаються з заголовка (що містить ключове слово procedure або function, імені, за яким може слідувати опис переданих параметрів в дужках, тип значення через символ двокрапки для функцій і крапки з комою для процедур), після заголовка слід тіло, після якого ставиться символ;.

program mine (output); var i: integer; procedure print (var j: integer); function next (k: integer): integer; begin next: = k + 1 end; begin writeln ('Всього:', j); J: = next (j) end; begin i: = 1; while i < = 10 do print (i) end.

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

Причому вміст секцій опису змінних, типів, констант, зовнішнього тіла (процедури, функції, програми), розташованих перед описом процедури / функції, доступні всередині неї. Також, в більшості діалектів з процедури можна звертатися до параметрів зовнішньої процедури.

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

Процедури відрізняються від функцій тим, що функції повертають яке-небудь значення, а процедури - ні.


Модулі

До появи модулів в їх сучасному вигляді деякі реалізації Паскаля підтримували модульність за рахунок механізму включення заголовків файлів, схожого на механізм #include в мові Сі: за допомогою спеціальної директиви, що оформляється у вигляді псевдокомментарія, наприклад, {$INCLUDE "файл"}, вміст зазначеного файлу прямо включалося в текст програми у вихідному, текстовому вигляді. Таким чином можна було розділити програмний код на безліч фрагментів, для зручності редагування, але перед компіляцією вони автоматично об'єднувалися в один файл програми, який у результаті і оброблявся компілятором. Така реалізація модульності примітивна і має безліч очевидних недоліків, тому вона була швидко замінена.

Сучасні реалізації мови Паскаль (починаючи з UCSD Pascal) підтримують модулі. Програмні модулі можуть бути двох видів: модуль головної програми, який, як завжди, починається з ключового слова program і тіло якого містить код, який запускається після завантаження програми в пам'ять, і допоміжних модулів, що містять типи, константи, змінні, процедури і функції, призначені для використання в інших модулях, у тому числі в головному модулі.


Структура

Загальна структура модуля на Паскалі виглядає наступним чином:

unit UnitName1; interface... implementation... begin {Може бути відсутнім-використовується, якщо необхідно помістити оператори ініціалізації}... end.

Можливий також ще один варіант:

unit UnitName2; interface... implementation... initialization... finalization.... end.

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

Інтерфейсна секція йде першою, починається з ключового слова INTERFACE і закінчується в тому місці модуля, де починається секція реалізації або тіло. У інтерфейсній секції оголошуються ті об'єкти (типи, константи, змінні, процедури і функції - для них містяться заголовки), які повинні бути доступні ззовні модуля. При цьому допускається часткове оголошення типів: вони можуть оголошуватися без вказівки структури, одним тільки ім'ям. При використанні такого типу в зовнішній програмі допускається оголошення змінних і параметрів цього типу, присвоювання значень, але неможливо отримати доступ до деталей його реалізації. Процедури і функції в інтерфейсній секції оголошуються у вигляді форвардів - заголовків з параметрами, але без тіла. Склад інтерфейсній секції модуля такий, що його достатньо для генерації коду, що використовує даний модуль. Змінні, оголошені в інтерфейсній секції, є глобальними, тобто існують в єдиному екземплярі і доступні у всіх частинах програми, що використовують даний модуль.

Секція реалізації слід за інтерфейсної і починається з ключового слова IMPLEMENTATION. У ньому розташовуються опису процедур і функцій, оголошених в інтерфейсній секції, а також описи типів, констант, змінних, процедур і функцій, які необхідні для реалізації інтерфейсних процедур і функцій. Опис процедури або функції, оголошеної в інтерфейсній секції, повинна мати в точності такий же заголовок, як в оголошенні. У тілі можуть використовуватися інші процедури і функції даного модуля, оголошені як в інтерфейсної частини, так і в секції реалізації. Змінні, оголошені в секції реалізації, є, по суті, глобальними (тобто існує тільки один екземпляр кожної такої змінної на всю програму), але доступні вони тільки з процедур і функцій, описаних в секції реалізації даного модуля, а також з його тіла. Якщо в інтерфейсній секції є скорочені оголошення типів, то ці типи повинні бути повністю описані в секції реалізації.

Тіло модуля починається знаходяться на верхньому рівні вкладеності ключовим словом BEGIN. Тіло містить програмний код, який виконується один раз при завантаженні модуля. Тіло може застосовуватися для ініціалізації, присвоювання початкових значень змінним модуля, виділення ресурсів для його роботи і так далі. Тіло модуля може бути відсутнім. У ряді реалізацій Паскаля, наприклад, в Delphi, замість тіла модуля можуть застосовуватися дві секції (також необов'язкові) - INITIALIZATION і FINALIZATION. Вони розташовуються в кінці модуля, після відповідного ключового слова. Перша - секція ініціалізації, - містить код, який повинен бути виконаний при завантаженні модуля, друга - секція фіналізації, - код, який буде виконаний при розвантаженні модуля. Секція фіналізації може виконувати дії, зворотні ініціалізації - видаляти об'єкти з пам'яті, закривати файли, звільняти виділені ресурси.

Модуль закінчується ключовим словом END з крапкою.

 

Скласти термінологічний словник за ІІ модулем у програмі MS Word. Розмістити терміни у алфавітному порядку.(мінімум 20 термінів) (2 год)

 



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 122; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.114.94 (0.006 с.)