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



ЗНАЕТЕ ЛИ ВЫ?

Процедури і функції користувача та стандартні процедури і функції в Delphi

Поиск

Пригадайте!

1. Що таке процедура?

2. Що таке обробник події? Як створити обробник події?

3. Який загальний вигляд процедур-обробників подій, які ви створювали в Delphi?

4. Які змінні називаються локальними, а які глобальними? Поясніть різницю між ними.

5. Як у Delphi змінити числовий тип змінної на текстовий і навпаки?

Процедури користувача в Delphi

У попередніх пунктах ви створювали і використовували процедури, які були пов’язані з певними подіями і були методами певних об’єктів. Заготовки цих процедур середовище розробки створювало автоматично, а ви доповнювали ці заготовки командами і рядком var опису змінних.

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

Процедура користувача, як й інші процедури – це відокремлена частина програми, яка має своє ім’я і яка може бути викликана для виконання в будь-якій іншій частині програми.

Процедури користувача можуть бути:

· без аргументів і без результатів;

· з аргументами і без результатів;

· без аргументів і з результатами;

· з аргументами і з результатами.

Запам’ятайте!

Аргументи процедури – це змінні, які отримують свої значення в команді виклику процедури перед початком виконання команд процедури.

Результати процедури – це змінні, які передають свої значення з процедури певним змінним в команді виклику процедури.

 

Найчастіше використовують процедури останнього типу. Загальний вигляд цих процедур у Delphi такий:

procedure <ім’я> (<списки аргументів з їхніми типами>; var <списки результатів з їхніми типами>);

var (<списки локальних змінних процедури з їхніми типами>);

Begin

<команди>

end;

Загальний вигляд команди виклику процедури з аргументами і результатами такий:

<ім’я> (<списки виразів, значення яких передаються аргументам процедури>, <списки змінних, яким передають свої значення результати процедури>);

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

Оформимо як процедуру фрагмент програми, який обчислює НСД двох натуральних чисел. У цієї процедури два аргументи – два натуральні числа, НСД яких потрібно знайти, і один результат – їхній НСД. Виглядатиме ця процедура так:

procedure МCD (a, b: Integer; var c: Integer);

var r: Integer;

Begin

r:= a mod b;

while r <> 0 do

Begin

a:= b;

b:= r;

r:= a mod b;

end;

c:= b;

end;

Викликати на виконання цю процедуру для одержання значення НСД двох конкретних натуральних чисел можна, наприклад, такою командою: МCD (35, 77, х). Виконуватися ця команда буде так:

1. Змінні a і b (аргументи процедури) одержують значення 35 і 77 відповідно.

2. Виконуються команди процедури.

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

Отже, в результаті виконання вказаної команди виклику процедури змінна х одержить значення 7.

У команді виклику цієї процедури в дужках на перших двох місцях, що відповідають аргументам процедури, можуть стояти не тільки константи, а й змінні, які на момент виконання команди виклику мають певні натуральні значення. Тобто при виконанні команди МCD (к, р, х) аргументи процедури a і b одержать значення змінних к і р відповідно. На цих місцях можуть стояти також арифметичні вирази, значення яких будуть обчислені на початку виконання команди виклику процедури і ці значення будуть передані аргументам процедури, наприклад, МCD (2*к+3, 3*р-1, х).

Звертаємо вашу увагу:

1. Аргументи та результати процедури можуть бути одними й тими самими змінними, тобто допустима процедура із заголовком Procedure One (var a, b:Integer). У такої процедури змінні a і b є одночасно і аргументами і результатами. Команда виклику цієї процедури виглядатиме так: One (x, y).

2. Процедура може серед своїх команд мати команду виклику іншої процедури.

Запам’ятайте!

Змінні, які вказані в заголовку процедури, називаються формальними параметрами процедури.

Змінні, які вказуються в команді виклику процедури, називаються фактичними параметрами процедури.

 

Проілюструємо зручність використання процедур користувача (зокрема, процедури знаходження НСД двох натуральних чисел) на прикладі такої задачі.

Рис. 2.59. Програма додавання двох звичайних дробів з використанням процедури НСД
 
 

Задача 1. Знайти суму двох звичайних дробів.

 

У наведеному тексті проекту (рис. 2.59) процедура викликається двічі. Перший раз для знаходження НСД знаменників дробів. Цей НСД у наступній команді використовується для знаходження найменшого спільного знаменника дробів (НСК (х, у) = х*у/НСД(х, у)). Другий – для знаходження НСД чисельника і знаменника дробу-суми з метою його подальшого скорочення. Без використання процедури текст цього проекту збільшився б, погіршилась би його структурованість.



Поделиться:


Последнее изменение этой страницы: 2016-09-18; просмотров: 632; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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