Структура програми.В основі будь-якої Delphi-програми лежить проект. Основою проекту, свою чергу, є форма, на якій розміщуються необхідні для розв’язання конкретної задачі компоненти. Проект складається з різних частин, кожна з яких розміщена в окремому файлі й виконує чітко визначені функції. Набір файлів, необхідних для створення програми, називається проектом. Компілятор послідовно обробляє файли проекту і будує з них EXE-програму, що виконується. Проект складається з таких файлів:
· Головний файл проекту – текстовий файл з розширенням DPR, який містить головний програмний блок. Файл проекту підключає всі програмні модулі і містить методи для запуску програми. Цей файл створює і контролює автоматично середовище Delphi.
· Файли опису форм – двійкові файли з розширенням DFM, які описують форми з компонентами. В цих файлах запам’ятовуються початкові значення властивостей, встановлених в Інспекторі Об’єктів.
· Файли програмних модулів – текстові файли з розширенням PAS, які містять код мовою Оbject Pascal. У цих файлах містяться методи обробки подій, які генеруються компонентами і формами.
· Файл ресурсів з розширенням RES. У ньому, наприклад, зберігається піктограма програми, яку видно на Панелі Задач Windows.
· Об’єктні файли з розширенням OBJ, написані іншими мовами програмування.
· Файл опцій з розширенням DOF, де розміщені задані програмістом параметри компіляції і компонування проекту.
· Файл з розширенням DSK, де розміщені параметри візуального середовища для даного проекту.
У проект можуть входити також логічно автономні елементи: малюнки (BMP-файли), піктограми (ICO-файли), файли довідників (HLP-файли) і т. і., але ними керує сам програміст.
Схема формування Delphi-програми від постановки задачі до отримання готового до виконання файла подана на Рис.1.1.
Задача Проект Програма
Рис. 1.1. Схема формування Delphi-програми
Найпростіша структура програми в консольному режимі роботи має вигляд:
Program <ім’я>; { Заголовок програми }
{$APPTYPE CONSOLE} {Консольний режим}
Uses { Підключення модулів}
Label { Розділ опису міток }
Const { Розділ опису констант }
Type { Розділ опису типів }
Var { Розділ опису змінних }
{ Розділ опису процедур і функцій }
{ Розділ операторів }
Консольний режим роботи встановлюється директивою {$APPTYPE CONSOLE}. Текст програми розміщується у головному файлі проекту.
Типи даних. Будь-які дані – сталі, змінні, властивості, значення функцій або виразів в Object Pascal характеризуються своїми типами. Тип визначає множину допустимих значень, яких може набувати об’єкт, а також множину операцій, які застосовні до нього. Крім того, тип визначає формат внутрішнього подання даних у пам’яті комп’ютера.
Object Pascal характеризуються розгалуженою структурою типів даних, до яких належать:
· прості – порядкові (цілі, логічні, символьні, перераховувані, діапазон), дійсні, дата-час;
· структуровані (масиви, записи, множини, файли);
· символьні рядки;
· процедурні;
· вказівники;
· варіанти;
· класи;
· об’єкти.
У мові Object Pascal передбачений механізм створення, на основі перерахованих нижче базових типів, нових типів даних. Завдяки цьому механізму загальна кількість типів, які використовуються у програмі, може бути досить великою.
Прості типи даних.До них належать порядкові, дійсні типи і тип дата-час. До порядкових відносяться: цілі, логічні, символьні, перераховувані та діапазонні дані.
Цілі дані подаються цілими числами зі знаком і без знаку. В залежності від діапазону значень цілі дані без знаку можуть бути таких типів: Byte (1 байт), Word (2 байти), LongWord (4 байти), Cardinal (4 байти). Цілі дані зі знаком: ShortInt (1 байт), SmallInt (2 байти), Integer (4 байти), LongInt (4 байти), Int64 (8 байтів).
Логічні дані набувають двох значень: true (істинно), false (хибно) і можуть бути таких типів: Boolean (1 байт); ByteBool (1 байт); Bool (2 байти); WordBool (2 байти); LongBool (4 байти).
Символьні дані можуть бути типу Char (однобайтові символи коду ASCII) і типу WideChar (двобайтові символи коду Unicode).
Перераховуваний тип. Задається перерахуванням у круглих дужках всіх значень, яких він може набувати.
Тип-діапазон. Тип-діапазон є підмножиною свого базового типу, яким може бути будь-який порядковий тип, крім типу-діапазон. Тип-діапазон задається межами своїх значень
<мінімальне значення > .. <максимальне значення >.
Тип-діапазон успадковує всі властивості свого базового типу.
Дійсні дані зображуються в експоненціальній формі
тут S – знак числа, E – порядок, M – мантиса числа. В залежності від формату зображення дійсні дані можуть бути таких типів: Real (8 байтів), Single (4 байти), Double (8 байтів), Extended (10 байтів), Comp (8 байтів), Currency (8 байтів).
Тип дата-час визначається ідентифікатором типу TDateTime і призначений для зберігання дати і часу. У внутрішньому (машинному) зображенні займає 8 байтів.
Вирази та операції.Вираз – це форма запису, що вказує, які потрібно взяти операнди і які виконати над ними операції, щоб обчислити значення виразу. Як операнди у виразі можуть використовуватися сталі, змінні і функції (наведені у додатку) різних типів, для яких дозволені певні операції. Вирази обчислюються зліва направо за пріоритетом операцій і врахуванням дужок. Серед операцій встановлено такий пріоритет:
· унарні +, -, not, @;
· мультиплікативні *, /, div, mod, and, shl, shr;
· адитивні +, -, or, xor;
· відношення =, <>, <, >, <=, >=, in.
Oператори.Оператор присвоєння має вигляд
<змінна>:=<вираз>.
При виконанні цього оператора обчислюється значення виразу і
присвоюється змінній. Вираз і змінна повинні бути сумісними за присвоєнням.
Складений оператор – це набір будь-яких операторів, узятих в операторні дужки begin … end. Цей набір операторів розглядається як одно ціле.
Умовний оператор використовується для розгалуження обчислювального процесу і має вигляд
if <умова> then <оператор1> [else <оператор2>],
де if, then, else – зарезервовані слова; <умова> – вираз логічного типу; <оператор1>, <оператор2> – будь-які оператори мови, [ ] – тут і надалі означають, що у відповідному операторі така складова оператора є необов’язковою. При виконанні оператора if обчислюється й аналізується значення виразу. Якщо результат дорівнює true, то виконується <оператор1>, а <оператор2> пропускається; якщо результат дорівнює false, навпаки <оператор1> пропускається, а <оператор2> виконується. Якщо група else <оператор2> відсутня, то при значенні виразу true виконується <оператор1>, а при значенні false <оператор1> пропускається.
Оператор безумовного переходу має вигляд
goto <мітка>
і означає перейти на оператор з <міткою>.
Оператор вибору дозволяє вибрати одно із можливих продовжень програми і має вигляд
case <ключ_вибору> of
<список_вибору>
[else <оператор>]
end,
де case, of, else, end – зарезервовані слова; <ключ_вибору> – вираз порядкового типу; <список_вибору> – одна або декілька конструкцій виду <список_сталих_вибору> : <оператор>; <стала_вибору> – стала того ж типу, що й вираз <ключ_вибору>; <оператор> – довільний оператор мови. При виконанні оператора вибору обчислюється значення виразу <ключ_вибору> і порівнюється зі сталими списків вибору. Якщо таке значення знайдено, то вибраний оператор виконується і оператор вибору завершує свою роботу. Якщо в списках вибору не буде знайдена стала, яка відповідає значенню ключа вибору, то виконується оператор групи else, а якщо і його немає (про це нагадують дужки – [ ]), то оператор вибору завершує роботу.