Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Частини модуля

 

Окремим шрифтом (як правило напівжирним) у коді виділені зарезервовані слова. Найважливіші з них це interface та implementation. Ці службові слова розділяють модуль на дві частини – інтерфейсну та виконавчу. Варто відразу звернути увагу на присутність у кінці модуля службового end з крапкою. Що вказує на те, що модуль сам по собі є самостійним програмним продуктом, тобто може бути використаний автономно, чи в купі з іншими модулями у різноманітних прикладних програмах.

 

2.1.2 Частина interface.

 

В інтерфейсній частині декларуються глобальні дані: константи (службове слово const), типи (type), змінні (var), а також підпрограми: процедури і функції. Відразу звернемо увагу на відсутність оголошення глобальних констант, та підпрограм у модулі unit3 на рисунку 2.1. Зате у розділі type є ідентифікатор TForm3, а розділ оголошення змінних var містить представника типу TForm3. Цим представником є об’єкт Form3. Інших декларацій на рисунку 2.1 не бачимо. У верхній частині міститься розділ uses – розділ використаних модулів, про який йтиметься дещо пізніше.

 

2.1.3 Частина implementation.

 

Це частина реалізації, тобто вона забезпечує виконання задекларованих у інтерфейсній частині процедур та функцій. Наприклад, при створенні процедури, що забезпечує подію клацання по кнопці (рисунок 1.22), тіло процедури розміщується у розділі implementation, тоді як її оголошення (або інакше декларація) розміщена у частині interface. У цьому легко переконатися, розглянувши рисунок 2.2. На ньому задекларована частина навмисно виділена на темному тлі. Зараз, ще не на часі визначитись з відповіддю на питання, а чому саме у тому місці опинилася декларація цієї процедури? Єдине, що можна вже зазначити - вона належить до типу TForm3. Тому й бачимо крапку між TForm3 і Button1Click. Варто також вказати на неприпустимість знищення декларації і залишення без зміни частини implementation.

Запамятаймо! Якщо процедуру описану у виконавчій частині потрібно видалити, то необхідним є також видалення її декларативної частини..

Для прикладу, при потребі видалення процедури Button1Click., ліквідувати доведеться, як її тіло так і оголошення. Тобто модуль unit3 у результаті такої маніпуляції набуде вигляду, як на рисунку 2.1.

 

Рисунок 2.2 Задекларована і описана процедура Button1Click

 

2.1.4 Різновиди модулів

 

Усі модулі вирізняються між собою тим, що саме вони містять у своїх деклараціях, що прописано у розділі uses і як це зреалізовано у виконавчій частині. Незмінним є тільки обов’язковий поділ модулів на декларативну (interface) і виконавчу частини (implementation), наявність імені (unit) модуля і його логічного завершення (end.). У середовищі розробки прикладних програм Delphi є можливість викликати порожню заготовку модуля – у ній немає жодної декларації, у тому числі і форми (рисунок 2.4). Його можна назвати модулем без форми. Його можна відкрити у такий спосіб: Головне меню → File → New → Unit (рисунок 2.3). Отже маємо «заготовку» модуля із запропонованою назвою Unit1 і порожніми декларативною та виконавчою частинами. Цей модуль має право на життя, однак не має жодного інформативного значення, оскільки він порожній.

 

Рисунок 2.3 Підменю File New

 

 

Рисунок 2.4 Модуль без форми

2.2 Функції у Delphi.

 

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

Коли ми вимовляємо цей термін, частенько перед очима уявляємо певний математичний запис - математичну формулу. Наприклад: .

Тут ми маємо справу із функцією одного аргумента х. Залежність функції від одного аргумента можна виразити у вигляді рівняння: y=f(x). Якщо ж аргументів у функції є декілька, наприклад: – 2t, тоді це можна подати як певну функцію трьох аргументів: y=f(x,z,t).

На мові Delphi аргументи називають параметрами. Причому ці параметри є змінними величинами певного типу. Наприклад, якщо функцію назвати funktia_1, а за її аргументи вибрати змінні: w типу integer і t типу real, то її оголошення матиме такий вигляд:

 

function funktia_1(w: integer; t: real):real;

 

Це оголошення слід озвучити так: задекларована функція funktia_1 дійсного типу з двома параметрами: w цілочисельного типу і t дійсного типу.

 

Рисунок 2.5 Функція V об’єму куба з розмірністю см3, її параметр а має розмірність см.

 

Задля прикладу задекларуємо функцію V одного аргументу a, за якою розраховують об’єм куба (рисунок 2.5):

 

function v(a:integer):integer (2.1)

 

2.2.1 Тип функції

 

Варто зауважити, що тип функції, може співпадати із типом своїх параметрів, як у виразі (2.1), так і різнитися між собою. Для ілюстрації можливості різнотипності аргументів і функцій маємо рисунок 2.5, де функція має розмірність об’єму (см3), а її аргумент – розмірність довжини (см). Тому за аналогією декларацію (2.1) можна переписати наприклад у такому вигляді:

 

function v(a:integer):real (2.2)

 

Бувають випадки, коли тип функції і її аргументу (чи аргументів) не можуть бути однаковими. Для пояснення такого випадку розглянемо задачу.

Задача2.1. Стіна площею S=60,5м2 повинна бути пофарбована на біло. Розхід q фарби для цієї стіни становить 125 г/м2. Потрібно визначити, яку кількість банок слід закупити, якщо у одній банці міститься m=900 г білої фарби.

Перш ніж приступити до написання підпрограми, тобто функції яка забезпечуватиме розвязок цієї задачі, слід визначитися із типом цієї функції. Адже функція – це кількість банок, які реалізовуються поштучно, а не продається їхній вміст на вагу в окрему тару. Отже кількість банок – це функція цілочисельного типу. Згідно з умовою задачі маємо три аргументи: площа S – дійсного типу, розхід фарби q – не варто визначати як дійсну величину, оскільки 125 г/м2 значно реалістичніша величина, аніж наприклад 120,5 г/м2.

Маса фарби у банці m, з практичної точки зору, теж приймається як цілочисельна величина. Отже оголошення функції K кількості банок можна здійснити в такому вигляді:

 

function K(S:real; q,m:integer):integer; (2.3)

 

2.2.2 Cиґнатура функції

 

Сигнатурою функції називають ту частину її оголошення, що вирізняють її з поміж інших функцій. Це значить, що до сигнатури функції в першу чергу входять її параметри. Рідше до сигнатури функції відносять і оголошення її типу. Наприклад, декларацію (2.3), при застосуванні цієї функції до більш делікатних поверхонь, де шар фарби дуже тонкий і вимірюється з точністю до сотих долей грама, сигнатура функції К матиме інший вигляд:

 

(S,q:real;m:integer)(2.4)

 

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

 

2.2.3 Оголошення функції

 

Декларацію функції, як і всі інші глобальні оголошення здійснюють у частині interface модуля. Як вже було сказано у розділі 2.1.2 всі оголошення повинні бути здійснені у строгому дотримуванні послідовності:

 

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


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


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



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




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