Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедура

Begin

Begin

Begin

К(60.5,125,900)

Begin

{тут описують тіло функції}

end;

 

То ж давайте створимо тіло функції розрахунку кількості банок фарби К:

 

K:=round(S*q/m); (2.5)

Прокоментуємо запис (2.5). У ньому бачимо добуток S*q, який дає значення кількості фарби у грамах для зафарбування площі S. Далі цей добуток ділиться на масу фарби у одній банці - m. Для цілочисельного розвязку застосована стандартна функція round, яка заокруглює значення до цілого. Але при цьому кількість банок може вийти дещо меншою аніж потрібно, наприклад round(4.35), дає результат 4 і фарби напевно не вистачить. Можливо краще застосувати стандартну функції tranc, яка відкидає дробову частину. Наприклад tranc (4.35), дає результат 4 і водночас tranc (4.75), теж дає результат 4. Тому додавши до результату, ще одну банку матимемо гарантовану кількість фарби. Отже, вирішуємо записати у тіло функції К наступний рядок:

 

K:= tranc (S*q/m)+1; (2.6)

 

Тепер у розділ implementation впишемо реалізацію функції К (рисунки 2.8 і 2.9).

Модуль, у якому програміст оголошує і реалізовує ту чи іншу функцію визначається ним самим. Як правило, це питання його власного бачення програми. В одних випадках, створюють спеціальні модулі (без форми), де прописують (декларують і реалізовують) цілий ряд функцій на певну тему, наприклад з розділу «Механічні коливання», або ж на тему «Табличка похідних». У інших випадках, коли кількість таких функцій незначна, можна обмежитися єдиним модулем, який містить оголошення вікна форми (як на рисунку 2.7) і потрібних функцій та процедур.

 

Рисунок 2.8 Декларація і реалізація функції К у модулі з формою.

 

 

 

Рисунок 2.9 Декларація і реалізація функції К у модулі без форми.

2.3 Розділ списку використаних модулів uses

 

При потребі застосування створеної програмістом функції у іншому модулі програми, слід долучити імя модуля де прописана ця функція, до розділу uses у іншому модулі. Давайте конкретизуємо приклад із використанням функції К. Нехай ця функція прописана у модулі Unit1 (рисунок 2.9), а не у модулі Unit3 (Рисунок 2.8). Отже створимо розділ uses у виконавчій частині модуля Unit3 і запишемо до його поки що порожнього списку імя Unit1 (рисунок 2.10).

 

 

Рисунок 2.10 В розділі implementation створений розділ uses у який вписане імя модуля Unit1.

 

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

Зауваження! Розділ uses можна було і не створювати, а скористатись наявністю такого розділу у частині interface. На рисунку 2.11 імя модуля Unit1 дописане у розділ uses інтерфейсної частини модуля Unit3.

 

Рисунок 2.11 Модуль Unit1 долучений до списку використаних модулів у частині implementation

2.4 Вкладені функції. Фактичні та формальні параметри.

Для прикладу створимо процедуру, що забезпечує подію клацання по кнопці: Button1Click. Тіло такої процедури показано у попередній лекції на рисунку 1.17. Якщо б ми в тілі цієї процедури вписали наприклад рядок round(4.35), то це означало б, що у тілі процедури є вкладена функція round(х),тільки замість формального параметра х, її аргументом є фактичний параметр 4.35.

Застосуємо розроблену раніше функцію К, як вкладену у тіло процедури Button1Click, тобто запишемо в неї такий рядок:

 

У даному рядку усі три параметри функції К отримали фактичне значення: S набув значення 60,5 (м2), q дорівнює 125 г./м2, а маса фарби m у одній банці становить 900(г).

Отже замість формальних параметрів s, q, m установлені значення фактичних параметрів функції К. На рисунку 2.12 проілюстрований програмний код процедури Button1Click із вкладеною в неї функцією К.

Рисунок 2.12 Функція К з фактичними параметрами ( 60.5,125,900 ) є вкладеною у процедуру Button1Click.

 

2.4.1 Значення вкладених функції з фактичними параметрами

 

Маючи фактичні значення параметрів, функція К, згідно із своєю реалізацією:

 

K:= tranc (60.5*125/900)+1 (рисунок 2.9)

отримає конкретне цілочисельне значення – 9 (шт.).

Тобто 9 - це величина, яка є фактично отримана програмою у місці виклику функції К з її фактичними параметрами. Для її відображення можна скористатися наприклад полем редагування Edit1, надавши його властивості text відповідного рядкового значення змінної r, що є аналогом значенню функції К. Відома нам процедура str (K,r) забезпечить надання змінній r рядкового значення, яке є аналогом цілочисельного значення величини К. Отже поставмо на форму об’єкт Edit1. А тепер можна дописати усі необхідні програмні рядки у тіло процедури, задля того, щоб отримати візуалізацію значення функції К:

 

 

procedure TForm3.Button1Click(Sender: TObject);

var r: string;

K(60.5,125,900);

Str(K,r);

Edit1.text:=r;

end;

 

Можна зменшити кількість програмних рядків цієї процедури вписавши рядок K(60.5,125,900), безпосередньо до фактичних параметрів процедури Str.

 

procedure TForm3.Button1Click(Sender: TObject);

var r: string;

Str(K(60.5,125,900),r);

Edit1.text:=r;

end;

 

Відтепер при клацанні по Button1 в полі Edit1 зявлятиметься сивол числа 9. Нижче представлені рисунки із програмними кодами модулів Unit1 та Unit3, вікном форми Form3 для візуалізації значення функції к.

 

 

Рисунок 2.13 аналогічний до рисунку 2.9 – декларація та реалізація функції К.

Увага! На наступних рисунках проілюстрована фундаментальна можливість будь-якої функції мови Delphi: Функція у місці програми, де її викликано повертає у цю програму лише один результат простого стандартного типу.

 

Рисунок 2.14 Функція К вкладена в процедуру опрацювання події клацання по кнопці Button1.

 

 

 

Рисунок 2.15 – візуалізація значення функції на вікні форми

 

 

2.4.2 Фактичні параметри, як змінні величини вкладених функцій і порядок їх розміщення

 

Представлений вище код має одну суттєву ваду. Він не дає можливість користувачу власноруч вводити фактичні значення параметрів. Цьому можна зарадити, ввівши у шапку процедури локальні оголошення змінних величин – які й будуть параметрами функції К. Оскільки один із параметрів є типу riel, а два інших типу - integer (розділ 2.2.5), то слід оголосити дві локальні змінні цілочисельного типу наприклад a,b: integer і c:real.

Для внесення значень цих параметрів поставимо на форму три об’єкти – представники компоненти TEdit: Edit1, Edit2, Edit3.

У тіло процедури Button1Click внесемо рядки, що дозволяють отримати дійсні і цілочисельні значення параметрів:

val(edit2.text,a,cod);

val(edit3.text,b,cod);

val(edit4.text,c,cod);

Окремо зауважимо про порядок розміщення змінних: K(c,a,b). Згідно із сигнатурою функції К на першому місці розміщений ідентифікатор с:real, що прийматиме дійсне значення площі, далі згідно із сигнатурою цілочисельний ідентифікатор а – прийматиме фактичне значення розходу фарби і останній - це цілочисельний ідентифікатор b, який прийматиме фактичне значення маси фарби у банці.

 

procedure TForm3.Button1Click(Sender: TObject);

var r: string;a,b:integer; c:real; cod:integer;

val(edit2.text,a,cod);

val(edit3.text,b,cod);

val(edit4.text,c,cod);

Str(K(c,a,b),r);

Edit1.text:=r;

end;

 

На рисунку 2.16 відображене вікно прикладної програми, яка реалізовує задачу 2.1 із трьома вхідними параметрами:

- змінна величина: розхід фарби у грамах на 1 квадратний метр;

- змінна величина: маса фарби у банці у грамах

- змінна величина: площа поверхні пофарбування у квадратних метрах

У лівому віконці прикладної програми автоматично виводиться кількість банок фарби у штуках.

 

Рисунок 2.16 Візуалізація прикладної програми розрахунку кількості банок

 

2.5 Підпрограми - функції та підпрограми – процедури. Стандартні підпрограми і підпрограми користувача.

 

Підпрограми призначені для реалізації алгоритмів опрацювання окремих задач, або окремих частин деякої складної задачі. Вони лежать у основі концепції структурного програмування, або інакше процедурного програмування. Розрізняють два види підпрограм: процедури та функції. Окрім того підпрограми поділяються на стандартні та підпрограми користувачів. Стандартні підпрограми створювати не потрібно – вони містяться у стандартних модулях. До них можна віднести процедури Val, Str, функції Sin, Round і т.д. Підпрограми користувачів - це процедури чи функції, яких створюють і описують програмісти в розділах procedure і function власноручно. До таких можна віднести і функцію К.

 

 

На відміну від функції процедури ніколи не мають типу. Менше того, вони можуть і не мати аргументів. Наприклад процедура Show, яка належить формі не має жодних параметрів. Для прикладу, застосуємо як вкладену процедуру Form2.Show, яка є призначена для відкриття у прикладній програмі додаткового вікна.

 

2.6.1 Процедура відкриття вікна форми

 

Для того, щоб у прикладній програмі була змога відкриття додаткового вікна, можна поставити кнопку Button1 «вікно2» і двічі клацнувши створити процедуру, що опрацьовуватиме подію клацання по цій кнопці Button1Click.

В тіло цієї процедури слід вкласти рядок Form2.Show (рисунок 2.17).Все це варто зробити, після того як до проекту майбутньої прикладної програми буде долучено додаткову форму зі своїм модулем. Алгоритм доручення нової форми такий:

Головне меню → File → New → Form.

Оскільки долучена форма Form2 автоматично отримала свій модуль unit2, то його потрібно долучити до розділу тієї форми з якої передбачається здійснювати відкриття. Нехай це буде частина implementation модуля unit1 (рисунок 2.17).

 

 

Рисунок 2.17 Вікно коду модуля unit1

 

 

Рисунок 2.18 З вікна форми 1 запущене вікно форми 2.

<== предыдущая лекция | следующая лекция ==>
Function, procedure | Interface
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 377; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.039 сек.