Структура програми Delphi. Елементи програми Delphi. Оператори введення й виведення даних, оператор присвоювання. Приклад розробки проектів.

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

Структура проекту

Будь-яка програма Delphi  складається з файлу проекту (файл з розширенням DPR) і одного чи кількох модулів (файли з розширенням PAS). Файл проекту є програмою, написаною мовою Delphi і призначеною для обробки компілятором. 1Ця програма автоматично створюється і на початку містить кілька рядків. Переглянути їх можна командою меню Project – View Source. В вікні кода жирним шрифтом виділені зарезервовані слова, курсівом – коментарі. Текст програми починається зарезервованим словом PROGRAM і закінчується словом END з крапкою.

Комбінація END з крапкою має назву – термінатор програми. Як тільки в тексті зустрічається термінатор програми, компілятор далі текст програми не аналізує.

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

Коментарі, навпаки, нічого не варті для компілятора, він їх ігнорує. Вони важливі для програміста, їх він використовує, щоб помітити та прокоментувати певні частини програми. Коментарі від тексту програми відділяються за допомогою кількох символів: (*….*), {…..}, //.

Слово PROGRAM з словом за ним утворюють заголовок програми.

За заголовком розташований розділ оголошень, в якому програміст описує всі ідентифікатори, що використані в програмі. Ідентифікатори – це імена змінних, процедур, функцій та інших об’єктів.

Першими оголошуються завжди використані в програмі модулі. Оголошення модулів починається зарезервованим словом USES. Модулі розташовані як окремі файли.  То ж текст Uses   Forms,   Unit1 in ‘UNIT1.PAS’ {Form1};    {$R *.RES} визначає, що крім файлу проекту в програмі використовуються модулі Forms і Unit1. Модуль Forms є стандартним, а модуль Unit1- є новим, раніше невідомим Delphi, тому визначається ім’я файлу з його текстом.

Тіло програми починається з слова BEGIN і закінчується термінатором END з крапкою. Тіло складається з кількох операторів мови. Кожен оператор реалізує певну дію – зміну значень змінної, аналіз результату обчислень, звертання до підпрограми, тощо. В даній програмі тіло програми складається з 3-х операторів:

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

Кожен з них реалізує звертання до одного з методів об’єкту Application. В об’єкті Application зібрані дані і підпрограми, необхідні для нормального функціонування Windows-програми.

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

Структура модуля

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

Будь-який модуль має таку структуру:

1. заголовок:
2. секція інтерфейс них оголошень;
3. секція реалізацій;
4. термінатор.

2Заголовок починається з зарезервованого слова UNIT, за яким розміщене ім’я модуля (наприклад UNIT1). Секція інтерфейс них оголошень починається з зарезервованого слова INTERFACE, а сеція реалізації – словом IMPLEMENTATION. Термінатором модуля, як і термінатором проекту є слово END з крапкою:

unit Unit1;

interface

// секція інтерфейсних оголошень

implementation

// секція реалізацій

end.

Перейдемо на вкладку Unit1 в вікні кода програми. Маємо приблизно такий текст:

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

Елементи програми Delphi

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

♦ Зарезервовані слова;                                    ♦  Змінні;

♦ Ідентфікатири;                                                ♦  Мітки;

♦ Типи;                                                                     ♦  Підпрограми;

♦ Константи;                                                        ♦  Коментарі.

Зарезервовані слова – це англійські слова, що вказують компілятору на необхідність виконання певних дій. Таких слів кілька десятків. Знайомство з ними продовжиться при вивченні інших структурних елементів Delphi. Нам вже кілька з них відомі . Ці слова не можна використовувати в програмі крім їх прямого призначення. Наприклад, не можна використати слово BEGIN для назви константи, мітки, змінної, тощо.

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

Типи – це спеціальні конструкції мови, які компілятор розглядає як зразок для створення інших елементів програми. Будь-який тип визначає для компілятора дві речі: обсяг пам’яті, що треба виділити для елемента та набір допустимих дій, які допустимі для елемента.

Константи  визначають області пам’яті, які не змінюють своє значення в ході виконання програми. Оголошення імен констант повинно починатись зарезервованим словом CONST. Наприклад:

Const    Kbyte = 1024;  Mbyte = Kbyte*1024; Gbyte = Mbyte*1024;

Змінні пов’язані з змінними областями пам’яті, тобто їх значення в ході виконання програми будуть змінюватись. Розділ оголошень змінних починається з зарезервованого слова VAR. Наприклад, в програмі ї змінні для зберігання значень суми покупки та величина скидки. Можна використати імена  TotalSumm і Discount або ObSumma і Skidka.

На мові Delphi кожна змінна перед використанням повинна бути оголошена. В оголошенні визначається тип кожної змінної, з чого компілятор визначить довжину комірку ОП для значення змінної, а також правила її використання. Інструкція оголошення змінної має вигляд:  Ім’я : тип;    де

– Ім’я — ім’я змінної;

– тип — тип даних, для збереження яких використовується змінна.

Розділ оголошень змінних починається з зарезервованого слова VAR.

Стандартні типи даних:

3

Наприклад:    Var  a,b,c: real;   i,k,n: word;

Числа звичайно записуються в десятковій системі числення. Вони можуть бути цілими і дійсними. Для додатних чисел знак (+) може бути відсутнім, як і в математиці:  217   -23   +107    8900.

Дійсні числа записуються з десятковою крапкою:  2.28   -0.02     10.5,  чи в нормалізованій формі:   7.9Е9    1.008Е-12     5.0Е-23, де мантиса і порядок числа записуються через латинську літеру  Е.   (4.7Е-27 ~ 4,7• 10-27).

Delphi  допускає запис цілих чисел у 16-ричной системі числення: $7F2  $1A0…

Вираз складаються з констант, змінних, знаків операцій і дужок. Вираз визначає правило обчислення певного значення. Порядок обчислення визначається старшинством (пріоритетом) операцій, що містяться в ньому. На мові Delphi прийнятий наступний пріоритет операцій:

1) унарна операція not,  взяття адреси @, обчислення функції;

2) операції *-помножити, /-поділити,  div – ціла частина від ділення, mod – виділення залишку від цілочисельного ділення;

3) операції типу додавання +, – , or, xor;

4) операції відносин:  =,  <,  >,  <=,  >=,  <>,  in {}.

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

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

 Наприклад:

  98~ (a*a*a+2*x)/(4*a-x);.          98~ ((a+1)*(a+1)-2)/(4*(a-x)).

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

Стандартні функції Delphi:

6

Але як бути, якщо в математичній моделі присутні функції, які відсутні в приведеному переліку? Будьте певні, необхідний мінімум тут присутній. Треба виконати незначні математичні перетворення однієї функції. в іншу. Розглянемо приклади.

12

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

Таблиця 10. Функції перетворення

8

Інструкція «Обчислити і присвоїти».

Формат :

 9

По команді процесор виконує наступні дії:

1) Якщо в правій частині є змінні, їхні значення вводяться (читання) з ОП;

2) Якщо праворуч зазначені арифметичні дії, то процесор послідовно виконує їх.

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

Наприклад:

a:= 3.056;    – в ОП в комірку з умовною адресою а записується число 3,056;

f : = a;         – з комірки а значення скопіювати  в комірку f.

m : = (6*a-b)/3.8;     – з ОП зчитати значення змінних а і b, обчислити вираз і  результат записати в ОП в комірку для змінної m.

n := Round((x2-x1)/dx);

x1:= (-b + Sqrt(d)) / (2*а);

m := Random(10);

cena := StrToInt(Edit1.Text);

Edit2.Text := IntToStr(100);

mes := ‘x1=’ + FloatToStr(xl);

Приклад розробки проекту з числовими даними

Створити додаток «Швидкість бігуна», в якому за визначеними значеннями дистанції (м) та часу пробігу (хвил, сек) відбувається розрахунок і виведення швидкості (км/год) з точністю до сотих.10

Структура форми приведена в вікні дерева об’єктів. Розмір та розташування можна визначити вручну шляхом буксування компонентів на формі. Мітки та поля введення на вкладці Stanrard, кнопка з підписом BitBtn1 на вкладці Additional. Щоб за натисканням кнопки закріпити подію – початок розрахунків та виведення результату, зробити подвійний клік по кнопці на формі, в вікні коду з’явиться шаблок процедури обробки події. Між словами begin…end;  вставити приведений в вікні кода текст :

Вікно кода проекту:

11

Прокоментуємо команди процедури:

♠  Var dist, thw, tsec, vc, vd: integer; v:real; s:string;  – розділ оголошень змінних, що використані в процедурі. Змінні dist, thw, tsec, vc, vd – цілого типу (integer), змінна v – дійсного типу (real), s – текстова змінна (string).

♠  Dist:=StrToInt(edit1.text); – значення тексту введеного користувачем в вікно введення edit1 визначає значення властивості об’єкту text. Але це значення з вікна введення сприймається як дані текстового типу. Розрахунки ж можна виконувати тільки з числовими даними. Перетворення текстових даних в числові цілого типу виконує процедура StrToInt. Перетворена інформація присвоєна змінній Dist.

♠  Thw:= StrToInt(edit2.text); Tsec:= StrToInt(edit3.text); – значення з вікон edit2 і edit3 зберігаються як значення змінних Thw і Tsec.

♠  V:=dist/(thw*60+tsec)/1000*60*60;  – розраховане по формулі значення зберігається як значення змінної v.

♠  S:=IntToStr(trunc(v)+’,’+IntToStr(trunc(v)*100)); – перетворення результату дійсного типу на дані текстового типу.

♠  Label6.Caption:= ’Швидкість-’+s+’км/год’; – отриманий результат – текст – визначає нове значення властивості Caption компонента Label6. Тобто за цією командою сформований текст з’явиться в вікні програми на місті компонента Label6.