Методичні вказівки до виконання лабораторних робіт з дисципліни "Середовище розробки програм" для студентів денної та заочної форм навчання спеціальності 6.050102 ”Системне програмування” . [Текст] / Уклад. :
Костьян Н.Л.
Рецензент: Одокієнко С.М., к.т.н., доцент
Відповідальний за випуск: Мордвінов С.І.
Затверджено на засіданні кафедри інформаційних та комп’ютерних технологій ФРІІТ КНУТД як навчальний посібник з дисципліни "Середовище розробки програм" до виконання лабораторних робіт для студентів денної та заочної форм навчання для спеціальності 6.050102 ”Системне програмування” протокол №9 від 27.05.2011 р.
Предмет дисципліни складає матеріал з мови програмування Object Pascal в середовищі програмування Delphi. Метою викладання дисципліни є ознайомлення з концепцією об’єктно-орієнтованого підходу та його застосування на прикладі роботи в середовищі розробки програм Delphi.
В результаті вивчення курсу студент повинен:
Знати:
– основні положення об‘єктно-орієнтованого програмування;
– принципи розробки складних програмних систем;
– роль ієрархії, декомпозиції та абстракції у процесі проектування;
– основні положення об’єктної моделі, складові частини об’єктно-орієнтованого підходу;
– основи програмування на мові об’єктно-орієнтованого підходу Object Pascal в середовищі Delphi;
– ієрархію класів у Delphi;
– методи використання основних компонентів VCL.
Вміти:
– створювати об‘єктно-орієнтовану модель поставленої задачі;
– застосовувати методологію об’єктно-орієнтованого підходу на складних програмних системах;
– застосовувати переваги мови об’єктно-орієнтованого спрямування для проектування та написання програмних систем на мові Object Pascal в середовищі Delphi;
– використовувати основні компоненти з палітр Standard, Additional, Dialogs, System.
– використовувати основні оператори і конструкції мови Object Pascal в середовищі Delphi.
Дисципліна “Середовище розробки програм” євибірковою навчальною дисципліною і відноситься до циклу дисциплін по вибору студента.Вона вивчаєтьсяна першому курсі студентами спеціальності «Системне програмування».
Навчальна дисципліна“Середовище розробки програм” за структурно-логічною схемою підготовки бакалаврів продовжуєформування комплексу знань студентів, поглиблюючи знання мови програмування, що була викладена в “Мова Pascal” та алгоритмів з курсу “Вища математика” та передує вивченню таких дисциплін, як“Організація баз даних”, “Системи підтримки прийняття рішень”, “Паралельні та розподільчі обчислення”, “Алгоритми та методи обчислень”, “Програмування”.
Підсумковий контроль здійснюється шляхом проведення заліку.
1. Тематика та завдання до лабораторних занять
Л а б о р а т о р н а р о б о т а № 1
Лінійні обчислювальні процеси
1 Мета роботи
Набуття навичок у записуванні арифметичних виразів, складанні програм з лiнійною структурою та розробці проекту в середовищі Delphi.
Основні теоретичні відомості
Початкові відомості про оболонку Delphi
Delphi - це технологія програмування, де автоматизовано її трудомістку частину - створення інтерфейсних програм з діалоговими вікнами. Оболонка Delphi дає змогу замість повного самостійного написання програми вико-ристовувати великий набір готових візуальних об’єктів, так званих компонентів. Вони зберігаються в бібліотеці VCL (Visual Component Library), а їхні піктограми розміщено на відповідних вкладках палітри компонентів. Компоненти забезпечено набором певних властивостей (назва, колір, розмір тощо), методів (програмних кодів, готових до виконання) та шаблонів підпрограм-відгуків на обробку подій (підпрограм-оброблювачів). Ці події (натиснення клавіші миші, вибір пункту меню тощо) виникають під час виконання програми. Найбільш поширеною є подія OnClick - натиснення лівої кнопки миші на об’єкті.
Властивості компонентів обираються на сторінці Properties, а підпро-грами-оброблювачі - на сторінці Events у вікні Object Inspector. Наприклад, властивість AutoSize (Автомасштаб) має значення True (істина) без додаткових вказівок. Це означає, що розмір компонента підстроюється під розмір його вмісту. Але можна задати необхідний розмір за допомогою властивостей Width (довжина) і Height (висота), якщо при цьому змінити значення властивості AutoSize на False (хибність).
“Контейнером”, в якому на екрані розміщуються компоненти, слугує форма, яка сама є компонентом з назвою Form. Без додаткових вказівок заголовок компонента збігається з його назвою, до якої додається порядковий номер, починаючи з 1. Але назву можна змінити за допомогою властивості Caption . Базові компоненти, які найчастіше використовуються, містяться на вкладці Standard палітри компонент. Перелічимо деякі з них.
- надпис, який слугує для написання пояснювального тексту на формі з Label використанням властивостей Caption і Font ;
- кнопка призначена для відгуку на подію;
Button
- однорядковий редактор, якій слугує для введення та виведення лише Edit одного рядка тексту; цей рядок зберігається у властивості Text.
Як тількі на формі з’являється компонент, Object Inspector відображає інформацію про неї.
Компоненти, їхні методи та підпрограми-оброблювачі розбиті на класи, які утворюють “дерево” класів. Ім’я класу збігається з ім’ям компоненти, на початку якого стоїть літера Т. Наприклад, компонент Form1 належить до класу ТForm1, який, в свою чергу, належить до класу TForm (описує порожнє вікно форми), а всі вони належать до класу TОbject , який є “прабатьком” усіх класів Delphi.
Будь-який компонент, його властивості та методи можуть бути власниками або власністю інших об’єктів. Тому ідентифікатори об’єктів в Delphi будуються за таким правилом: перед їхньою назвою через крапки пишуть назви власників з урахуванням відповідної ієрархії. Наприклад:
· ідентифікатор Form2.Label3.Color означає, що розглядається властивість Color (колір) компоненти Label3, яка міститься на формі Form2, тобто належить їй;
· ідентифікатор Form3.Memo2.Lines.Add(S) означає, що викорис-товується метод Add(S) (додає рядок S в кінець тексту), який належить властивості Lines, яка в свою чергу, належить компоненту Memo2, розміщеному на формі Form3.
Програмні коди в Delphi – це програми алгоритмічною мовою Object Pascal. Тому розпочнемо вивчати цю мову програмування.
2.2 Структура програми
Структуру програми мовою Паскаль у загальному вигляді наведено на рис. 1.1. Вона складається із заголовку, розділу опису і розділу операторів.
ЗАГОЛОВОК ПРОГРАМИРОЗДІЛ ОПИСУ
Uses список бібліотек ; - розділ бібліотек ;
Label список міток ; - розділ міток ;
Const список констант; - розділ констант;
Type список типів; - розділ типів;
Var список змінних; - розділ змінних;
Procedure , Function; - розділ опису підпрограм;
РОЗДІЛ ОПЕРАТОРІВ
begin
оператор 1; ... оператор n;
end.
Рисунок 1.1 - Структура програми
Заголовок містить необхідне службове слово Program та ім'я програми, задані користувачем-програмiстом. Службові слова мови Object Pascal – це назви стадартних функцій, операцій або слова, що входять до складу оператора. Ці слова не можна використовувати при складанні програм як імена змінних.
Розділ опису призначено для оголошення й опису всіх даних, які зустрічаються у програмі, і містить такі шість розділів: бiблiотеки, мітки, константи, типи, змінні, процедури й функції. Ці розділи повинні розташовуватися в строго названому порядку. Наявність у програмі всіх розділів не є обов’язковою. Оголошення процедур і функцій становлять один розділ.
Розділ операторів замикається в операторні дужки вигляду: begin (початок) і end (кінець), причому після end ставиться крапка. В цьому розділі записується послідовність виконуваних операторів. Будь-який розділ, окрім останнього, може бути відсутнім. Між розділами і операторами ставиться крапка з комою. В кінці програми повинна стояти крапка.
Програма на Object Pascal записується у довільній формі, оператори не прив'язані до певної позиції рядків. В одному рядку можна розташувати декілька описів чи операторів. Припускається перенесення з одного рядка на інший рядок описів чи операторів, але не можна розділяти слова, константи і складові символи.
Стандартні типи даних
Кожний елемент даних, використовуваних у програмі, є або константа, або змінна, або функція, або вираз. Кожній змінній надається певний тип, котрий визначається в розділі змінних. Тип константи однозначно визначається її значенням, і її тип визначається в розділі констант.
Спочатку ми будемо користуватись даними стандартних типів: цілий (integer), дійсний (real), символьний (char) і рядковий (string). Розглянемо їх більш детально.
2.3.1 Дані цілого типу
Дані цілого типу визначають множину цілих чисел у різних діапазонах. Існують п’ять цілих типів, які розрізняються припущеним діапазоном значень і розміром оперативної пам’яті, яку вони займають. Цілі типи позначаються ідентифікаторами integer, byte, shortint, word, longint; їхні характеристики наведено у таблиці 1.1.
Над даними цілого типу можна виконувати такі арифметичні операції, котрі дають цілий результат: + (додавання), – (віднімання), * (множення), div (ділення без остачі, з відкиданням дробової частини), mod (здобуття цілої остачі за цілочисельного ділення). Наприклад, нехай А=16, В=3, С=–11 – змінні цілого типу, тоді припустимі є такі операції: А+В (результат 19), А–4 (результат 12), В*С (результат –33), А div В (результат 5), А mod В (результат 1). При діленні даних цілого типу здобувається результат дійсного типу.
Таблиця 1.1 Діапазон значень даних цілого типу
Цілий тип
Діапазон значень
Обсяг пам’яті
Shortint
-128...127
1 байт
Integer
-32768...32767
2 байти
Longint
-2147483648...2147483647
4 байти
Byte
0...255
1 байт
word
0...65535
2 байти
З аргументами цілого типу використовуються такі стандартні функції: sin(x), cos(x), ln(x), sqrt(x), arctan(x), exp(x), sqr(x), abs(x), succ(x), pred(x), odd(x). Перелік основних стандартних функцій цілого типу наведено у додатку.
2.3.2 Дані дійсного типу
Константи дійсного типу можуть бути зображеними у двох формах:
- з фіксованою крапкою, наприклад, 15.7, –0.054, +24.97;
- з плаваючою крапкою, наприклад, 0.256Е+3, 25.6Е+1, 2560Е–1.
Змінні дійсного типу - це змінні, котрі в якості своїх значень приймають числа з фіксованою крапкою чи плаваючою крапкою. Над даними дійсного типу можна виконувати чотири арифметичні операції: додавання (+), віднімання (–), множення (*) та ділення (/), котрі дають дійсний результат.
З аргументами дійсного типу використовуються такі функції: sin(x), cos(x), ln(x), sqrt(x), arctan(x), exp(x), sqr(x), abs(x), trunc(x), round(x). Перелік основних стандартних функцій дійсного типу наведено у додатку.
Дійсні типи позначаються ідентифікаторами real, single, double, extended та сomp й мають характеристики, наведені у таблиці 1.2.
Таблиця 1.2 Діапазон значень змінних дійсного типу
Дійсний тип
Діапазон значень
Число цифр
мантиси
Розмір пам’яті
real
2.9Е-39...1.7Е+38
11-12
6 байт
single
1.5Е-45...3.4Е+38
7-8
4 байти
double
5.0Е-324...1.7Е+308
15-16
8 байт
extended
3.4Е-4932...1.1Е+493
19-20
10 байт
comp
–9.2Е+18…+9.2Е+18
19-20
8 байт
2.3.3 Дані символьного типу
Символьна, або лiтерна константа - це будь-який символ мови, узятий в апострофи, наприклад '–', 'А', '7'. B якості символьної константи припускають використання послідовностi символів, наприклад 'bob6='.
Змінна символьного типу (char) - це змінна, яка набирає значення символьної константи. До символьних даних можна застосовувати операції порівняння, а також стандартні функції перетворення: ord(s) - дає порядковий номер символу s в упорядкованій множині кодів символів, chr(n) - дає символ, що міститься під номером n в упорядкованій множині кодів символів.
2.3.4 Дані рядкового тпиу
Змінна рядкового типу (string) – це рядок символів. Константа рядкового типу – це рядок символів, узятий в апострофи. Наприклад,
‘ Ми вивчаємо Delphi ‘
Введення та виведення інформації в компоненти Delphi здійснюється за допомогою String-рядків. Більш детально з даними цього типу ознайомимось у подальшому.
2.3.5 Описування констант і змінних стандартного типу
Константи у програмі задаються явно своїми значеннями чи позначені ім'ям. Якщо константа позначена ім'ям, то вона повинна бути описана у розділі констант за таким форматом:
Constім'я константи=значення;
В одному розділі припускають опис декількох констант, наприклад:
Сonst
t=77; {константа цілого типу}
kam=5.6Е-2; {константа дійсного типу}
abba9='c'; {константа символьного типу}
k=true; {константа логічного типу}
L=’Паскаль’; {константа рядкового типу}
Кожна змінна, що зустрічається у програмі, повинна бути описана в розділі змінних за таким форматом:
Varім'я змінної:тип;
Приклад опису змінних:
Var
bom : integer; { змінна цілого типу}
h : real; {змінна дійсного типу}
pt : char; {змінна символьного типу}
m : boolean; {змінна логічного типу}
aо : string; {змінна рядкового типу}
Якщо декілька змінних мають однаковий тип, то їх можна об’єднати у спільний список, як показано нижче:
Var
a, b, c : real; k, tom : integer;
2.4 Оператор присвоєння
Оператор присвоєння - основний оператор мови програмування - має такий формат:
ім'я змінної:=вираз;
Цей оператор обчислює значення виразу і надає здобуте значення змінній, при цьому тип виразу повинен відповідати типу змінної. Припускають надання змінній дійсного типу значення виразу цілого типу.
Надання змінній цілого типу виразу дійсного типу заборонено!
Складений оператор - це поєднання певних операторів в одну групу запису. Формат складеного оператора такий:
Begin
оператор 1;
........
оператор n;
еnd;
В цій конструкції службові слова begin (початок) і end (кінець) називаються операторними дужками.
Арифметичні вирази
Арифметичні вирази будуються з арифметичних констант, змінних, функцій і операцій над ними. Обчислення виконуються зліва направо в відповідності з таким старшинством операцій:
1 Стандартні функції.
2 Множення (*), ділення (/), ділення без остачі (div) та остача від ділення (mod).
3 Додавання (+) й віднімання (–).
Вирази в круглих дужках виконуються в першу чергу.
Примітки:
1 В стандарті мови Паскаль немає операції піднесення до степеня. За необхідності її використання застосовують стандартні функції
аХ= exp (x*ln (a) ).
Можна використовувати спеціальну функцію power(x,n), підключивши бібліотеку підпрограм Math.
2 В списку стандартних функцій відсутнє обчислення десяткового логарифма, тому за необхідності треба користуватися співвідношенням:
lg b = ln (b)/ln (10).
3 Для даних рядкового типу визначено операцію об¢єднання (+). Наприклад,
S1: =’Одеса – ‘;
S2: =’курортне місто’;
S: =S1+S2;
Значенням S буде рядок ‘Одеса – курортне місто’.
При виконанні арифметичних операцій над величинами тільки дійсного, а також дійсного й цілого типів, здобувається результат дійсного типу.
Підпрограми
Підпрограма – це програма, яка реалізовує певний алгоритм (наприклад, обчислення математичної функції) і використовується всередині іншої програми.
Підпрограми можуть бути двох типів: процедури (Procedure) та функції (Function). Спочатку розглянемо лише процедури, тому що програма в Delphi являє собою набір процедур, кожна з яких відповідає за опрацювання конкретної події й викликається тільки тоді, коли вона настає.
Структура процедури подібна до головної програми, лише в неї інший заголовок й наприкінці після слова End замість крапки ставиться крапка з комою (End;).
Приклад. Скласти підпрограму-процедуру й схему алгоритму обчислення такого виразу: y = a2 + + lg c,
де a= k+t2+x; х = 2. 3 Р; b= ; c= ек+а; k=7; t= 1.5; p= 2.2
Текст процедури:
Procedurefun (var у:real);
Var a,b,c,x:real;
Begin
x:=exp(p*ln(2.3));
a:=k+sqr(t)+x;
c:=exp(k+a);
b:=sqrt(a+c);
у:=sqr(a)+exp(1/3*ln(b))+ln(c)/ln(10);
end;
Пояснення. У заголовку процедури fun ключове слово varперед змінною у означає, що цей параметр процедури – вихідний, тобто його обчислене значення буде передано головній програмі, де здійснюється звернення до процедури.
Для звернення до процедури у головній програмі достатньо вказати її ім’я, в дужках через кому список фактичних параметрів закінчити крапкою з комою. Для звернення до наведеного прикладу підпрограми із змінною-результатом z необхідно записати оператор
fun(z);
Процедури в Delphi групуються в логічно незалежні блоки - модулі Unit, кожному з яких надається ім’я, яке має збігатися з ім’ям файла (типа PAS), в якому блок зберігається на диску. Модулі залучаються до головної програми і до інших модулів за допомогою оператора Uses [1].