Налагодження програм 1 страница

Begin

Begin

Begin

end;

 

Перший рядок процедури – рядок заголовка. Він складається зі стандартного слова procedure (англ. procedure – процедура), імені процедури TForm1.Button1Clickі круглих дужок, в яких указується, що дана процедура буде виконуватися в результаті настання певної події з певним об’єктом, у даному випадку, події Click з кнопкою Button1. Закінчується рядок заголовка крапкою з комою (;).

Команди процедури, які будуть виконуватися при настанні подіїOnClick, записуються між двома стандартними словами begin(англ. begin – початок) і end(англ. end – кінець). Команди процедури утворюють тіло процедури. Слова beginі end визначають, де починається і де закінчується тіло процедури. Можна сказати, що вони відіграють роль відкриваючої та закриваючої дужки, між якими записується тіло процедури, тому їх називають операторними дужками. Після слова endповинна стояти крапка з комою (;). Кожна команда процедури також повинна закінчуватися крапкою з комою (;).

 

У попередньому пункті ми встановлювали значення властивостей елементів керування перед запуском проекту на виконання. Тепер же ми можемо змінювати значення цих властивостей під час виконання проекту. Для цього потрібно додати до тексту програми обробник певної події.

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

<ім’я об’єкта>.<ім’я властивості> := <значення або вираз>;

Наприклад,

Form1.Color := clGreen; –встановити колір фону вікна – зелений

Form1.Left := 300; –встановитивідступ лівої межі вікна – 300 пікселів

Form1.Width := Form1.Width*2;– збільшити поточну ширину вікна вдвічі

Button1.Caption := 'Збільшити'; – встановити текст заголовка на кнопці – Збільшити(якщо значенням властивості є текст, то його потрібно брати в одинарні лапки)

Label1.Font.Color := clRed; –встановити колір символів, яким буде відображатися текст у написі, – червоний.

Звертаємо вашу увагу, що ці команди є різновидами команд присвоювання, які ми вже використовували при складанні алгоритмів.

 

Наведемо приклад процедури TForm1.Button1Click, виконання якої змінить колір вікна на синій, змінить текст у рядку заголовка, зменшить його ширину на 150 пікселів, змінить положення кнопки і текст на ній:

procedure TForm1.Button1Click(Sender: TObject);

Form1.Color := clBlue;

Form1.Caption := 'Значення властивостей змінилися';

Form1.Width := Form1.Width - 150;

Button1.Left := 60;

Button1.Top := 100;

Button1.Caption := 'Змінити!';

end;

На рисунку 2.29 зліва наведено вигляд вікна після запуску проекту, а справа – після вибору кнопки Button1.

 

 

 

Середовище розробки Turbo Delphi 2006має зручні засоби допомоги при введенні тексту проекту:

· після введення першої букви імені об’єкта можна натиснути сполучення клавіш Ctrl+Пропуск і відкриється список імен об’єктів, властивостей, процедур, які починаються з цієї букви (рис. 2.30); з цього списку можна вибрати потрібне і цей текст буде вставлено в текст проекту;

· у ході написання тексту проекту середовище розробки слідкує за синтаксичними правилами написання команд; якщо ці правила порушуються, то текст з помилками або текст одразу після нього підкреслюється червоною хвилястою лінією (рис. 2.30, підкреслюється буква L; рис. 2.31, слово Label1 написано правильно, але після крапки не вказана властивість цього об’єкта; тому підкреслюється наступне слово); потрібно уважно слідкувати за цим і вчасно виправляти всі синтаксичні помилки;

· Turbo Delphi 2006не розрізняє великі і малі літери; але якщо слово утворено з кількох слів, прийнято (і зручно) писати першу літеру кожного слова великою; наприклад, TForm1.Button1Click;

· після введення крапки, що розділяє ім’я об’єкта та ім’я властивості, автоматично відкривається список властивостей даного об’єкта (рис. 2.31); далі ім’я властивості можна не вводити з клавіатури, а знайти в списку і натиснути клавішу Enter; такий спосіб введення запобігає допущенню синтаксичних помилок, особливо тими, хто не знає англійської мови;

· після запуску проекту на виконання компілятор аналізує текст на наявність синтаксичних помилок; якщо такі помилки будуть знайдені, то після аналізу всіх помилок компіляція проекту переривається і червоним кольором виділяється фон першого з тих рядків тексту проекту, який містить синтаксичні помилки, або наступного за ним рядка (на рис 2.32 неправильно написане слово Label, тому червоним фоном позначено саме цей рядок, а на рис. 2.33 пропущено крапку з комою в кінці першої команди, у таких випадках червоним фоном позначається наступний рядок); усі інші помилки підкреслюються червоною хвилястою лінією; крім того, у вікні Structureз’являються повідомлення-підказки про вид помилки; потрібно виправити в тексті програми всі синтаксичні помилки і знову запустити проект на виконання.

Ми розглянули, як створити і використати процедуру TForm1.Button1Click - обробник події OnClick. Аналогічно можна створити інші процедури - обробники інших подій.

Уведення і виведення даних під час виконання проекту

Ми розглянули, як змінити значення властивостей елементів керування під час виконання проекту, використовуючи процедуру TForm1.Button1Click – обробник подіїOnClick. Але в розглянутому прикладі при кожному виборі кнопки будуть виконуватися одні й ті самі команди процедури, а значить кожного разу однаково змінюватимуться значення вказаних у командах процедури властивостей об’єктів. Якщо необхідно під час виконання проекту кожного разу по-іншому змінювати значення властивостей вказаних об’єктів, то потрібно значення цих властивостей якимось чином уводити в програму під час її виконання.

Для введення даних під час виконання проекту можна використати поля. Ви вже знаєте, що текст, який знаходиться в полі, є значенням його властивості Text. Скористаємося цим.

Створимо таку процедуру TForm1.Button1Click – обробник подіїOnClick, виконання якої дозволить встановити довільний колір вікна і збільшити його висоту на довільну цілу кількість пікселів.

Для цього потрібно:

1. Розмістити на формі 2 поля – перше для введення значення кольору вікна, а друге – для введення кількості пікселів.

2. Змінити значення властивості Text обох цих полів на порожнє.

3. Розмістити зліва від кожного поля по напису, змінити значення властивості Caption першого на Колір, а другого на Розмір.

4. Розмістити на формі у правому нижньому куті кнопку, змінити значення її властивості Caption на Змінити.

5. Створити заготовку процедуриTForm1.Button1Click, яка виконуватиметься після вибору кнопки.

6. Увести текст процедуриTForm1.Button1Click:

procedure TForm1.Button1Click(Sender: TObject);

Form1.Color := Edit1.Text;

Form1.Hight := Form1.Hight + StrToInt(Edit2.Text);

end;

 

Після запуску проекту відкриється вікно його виконання (рис. 2.34). У відповідні поля потрібно увести потрібні значення кольору форми, наприклад, clRed, і кількості пікселів для збільшення висоти форми, наприклад, 300, після чого вибрати кнопку.

Після вибору кнопки наступить подія OnClick і значить запуститься на виконання процедура TForm1.Button1Click – обробник подіїOnClick При виконанні першої команди процедури текст, який буде введено в перше поле і стане значенням властивості Text цього поля, буде присвоєний властивості Colorформи, у результаті чого колір форми стане заданим.

Не зважаючи на те, що в друге поле буде введено число, програма сприйматиме його як текст, тобто не зможе виконувати з ним математичних операцій. Тому потрібно спочатку перевести цей текст у ціле число. Для цього використовується функція StrToInt (англ. string tointeger – рядок у ціле). Після цього це число додається до поточного значення висоти вікна.

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

 

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

Створимо простий калькулятор, який буде додавати два довільних дійсних числа. Під час виконання проекту користувач буде вводити по одному довільному дійсному числу в кожне поле і вибирати кнопку із заголовком Додати. При виборі кнопки наступатиме подія OnClick, і в результаті настання цієї події виконуватиметься процедура TForm1.Button1Click, яка додаватиме ці числа і виводитиме суму в напис.

Для створення такого проекту потрібно (рис. 2.35):

1. Розмістити на формі два поля, напис для виведення результату, три написи для оформлення і кнопку.

2. Встановити порожні значення властивості Text двох полів і властивості Caption напису для виведення суми.

3. Встановити відповідні значення властивості Caption для інших трьох написів і кнопки.

4. Створити заготовку процедуриTForm1.Button1Click, яка виконуватиметься після вибору кнопки.

5. Увести текст процедуриTForm1.Button1Click(рис. 2.36).

Розглянемо призначення кожної команди наведеної процедури.

Як ми вже зазначали вище, число, яке вводиться в поле, стає значенням його властивості Text і сприймається програмою як текст. Тому перші дві команди процедури є команди присвоювання, які призначені для переведення текстового представлення дійсних чисел у самі дійсні числа (для цього використана функція StrToFloat(англ. string tofloat – рядок у число з плаваючою десятковою комою, тобто у дійсне число) і присвоювання цих чисел змінним х і у відповідно.

Третя команди додає ці числа і присвоює результат змінній z.

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

П’ята команда переводить результат додавання (значення змінної z) з числа в текст, використовуючи функцію FloatToStr (англ. float tostring – число з плаваючою десятковою комою у рядок) і присвоює цей текст значенню властивості Caption напису з іменем Label1 для виведення результату.

При виконанні створеного проекту користувач уводить у поля числа (наприклад,
-34,7 і 8,15), вибирає кнопку Додати і одержує результат –26,55 (рис. 2.37).

Не закриваючи проект, користувач може ввести в поля інші числа, знову вибрати кнопку Додати і одержати новий результат. І так можна повторювати довільну кількість разів. Це демонструє таку властивість алгоритму як масовість.

 

Іноді зручно виводити повідомлення не в написи на формі, а в спеціальне окреме вікно. Це можна здійснити, включивши до тексту програми команду ShowMessage(<текст>) (англ. showmessage – показати повідомлення). За цієї команди відкривається спеціальне вікно виведення повідомлення, в якому виводиться текст, указаний у команді. Якщо таку команду включити до процедури, що розглядалася вище, для виведення суми двох уведених дійсних чисел замість останньої команди виведення результату в напис або після цієї команди, то вона виглядатиме так:
ShowMessage('Сума '+FloatToStr(z));.Знак плюс у дужках означає з’єднання двох указаних текстів.Пропуски після слова Сума використовуються для того, щоб у вікні відокремити число від тексту. Результат виконання цієї команди подано на рис. 2.37.

При використанні вікна повідомлення для завершення виконання проекту спочатку слід закрити вікно повідомлення, а потім – вікно проекту.

 

Змінні та їхні властивості. Правила запису математичних виразів у Delphi

В останній розглянутій процедурі були використані три змінні - х, у, z. У мові програмування Delphi кожна змінна має ім’я, значення і тип.

Запам’ятайте!

Тип змінної визначає, які значення може набувати ця змінна, які операції над нею можна виконувати і ділянку пам’яті якого розміру програма виділить для зберігання значення цієї змінної.

 

Змінні х, у, z, які використали в останній процедурі, за умовою задачі можуть набувати довільні дійсні значення. Таким значенням відповідає тип Real (англ. real – дійсний). Змінні цього типу можуть набувати цілі й дробові значення від –5×10-324 до 1,7×10308, для кожного значення змінних цього типу виділяється 8 байтів пам’яті.

Типи змінних, які використовуються в процедурі, вказуються після ключового слова var (англ. variable – змінна) у рядку, що знаходиться між рядком заголовку процедури і рядком зі словом begin (рис. 2.36). Цей рядок називається рядком оголошення змінних. Загальний вигляд рядка оголошення змінних такий:

var <список імен змінних одного типу, розділених комою>: <ім’я типу>; <список імен змінних іншого типу, розділених комою>: <ім’я типу>;і т. д.

 

Якщо змінні набуватимуть тільки цілі значення, то для них доцільно використовувати тип Integer (англ. integer – цілий). Змінні цього типу можуть набувати цілі значення від –2 147 483 648 (–232) до 2 147 483 647(232–1), для кожного значення змінних цього типу виділяється 4 байти пам’яті.

Вище тексту складеної процедури знаходиться ще один рядок var. На рис. 2.36 у цьому рядку вказано ім’я однієї змінної Form1 типу TForm. Ця змінна відповідає формі, що використовується у цьому проекті. У цьому рядку вказуються імена і типи тих змінних, які є доступними в будь-якій частині програми. Такі змінні називаються глобальними. На відміну від глобальних змінних, ті змінні, імена і типи, яких описані в рядку заголовку процедури і в рядку var у тексті певної процедури, доступні тільки командам цієї процедури. Такі змінні називаються локальними. Про локальні та глобальні змінні ми поговоримо детальніше в наступних пунктах.

Об’єктам, які ми розташовуємо на формі, також відповідають змінні, імена яких співпадають з іменами відповідних об’єктів, наприклад, Button1, Edit1. Кожна з цих змінних теж має свій тип, наприклад, Button1: TButton,Edit1: TEdit. Імена і типи цих змінних середовище розробки вносить до тексту проекту автоматично в розділ type (англ. type – тип) (рис. 2.36).

 

Загальний вигляд команди присвоювання в Delphi такий:
<ім’я змінної> := <вираз>. Вираз може складатися із значення (константи: число, текст в одинарних лапках та ін.), з імені змінної, або містити кілька значень та імен змінних, поєднаних знаками арифметичних операцій, функції, дужки.

Позначення арифметичних дій і правила запису виразів у Delphi схожі на аналогічні правила, які ви розглядали при вивченні табличного процесора Excel. Але й є певні особливості:

а) при введенні в текст проекту десяткових дробів цілу й дробову частину потрібно розділяти крапкою;

б) при введенні при виконанні проекту в поле десяткового дробу розділювач цілої й дробової частини залежить від налаштувань Windows (в українській версії Windows ХР за замовчуванням встановлена кома);

в) ні в тексті проекту, ні при введенні в поле не можна використовувати звичайні дроби;

г) у Delphi немає операції піднесення до степеня; для піднесення до степеня використовується спеціальна функція, яку ми розглянемо пізніше, а поки що степінь з натуральним показником можна замінювати добутком;

д) пріоритет операцій в усіх випадках визначається правилами математики.

 

 

Перевірте себе

1. · Що таке обробник події? Як пов’язати з певною подією її обробник?

2. · Що таке процедура? Опишіть структуру процедури – обробника події.

3. · Наведіть загальний вигляд команди, якою можна змінити значення властивості елемента керування. Наведіть приклади таких команд.

4. ·Як позначаються синтаксичні помилки в середовищі розробки? Наведіть приклади.

5. º Які елементи керування можна використати для введення і виведення даних?

6. º Як вивести повідомлення в окреме спеціальне вікно?

6. · Для чого призначені функції StrToFloat, FloatToStr, StrToInt, IntToStr?

7. ·Що визначає тип змінної? Які типи змінних ви знаєте?

8. º Які значення можуть набувати змінні типу Realі типу Integer? Який розмір ділянки пам’яті виділяється для зберігання змінних кожного з цих типів?

9. · Як описуються типи змінних, які використовуються в процедурі; в усій програмі?

10. º Які змінні називаються локальними і які глобальними?

11. ·Який загальний вигляд команди присвоювання в Delphi?

Виконайте завдання

1. ·Запишіть команди присвоювання змінній х значень наведених виразів:

а) 72 – (15∙(–5)+ 23):7;

б) – 55 + 123+(–4)4:22;

в)

г) (ДЗ) ;

д) (–3,15)3∙5,15+3,12 : (–18);

е) (ДЗ) –31,3:2,15+9,152∙(–3,76).

2. · Запишіть команди присвоювання змінній с значень наведених виразів:

а) 3x2–5y3+7z;

б) (x+y+z):3;

в)

г) (ДЗ)

д)

е) (ДЗ)

3. · Відкрийте новий проект. Змініть заголовок форми на Я змінюю значення властивостей форми. Розмістіть на формі кнопку. Змініть заголовок кнопки Змінити. Змініть ім’я форми на MyForm1. Створіть для події OnClick кнопки заготовку обробника цієї події. Уведіть до процедури команди, які змінять колір вікна на clPurple, зменшать ширину вікна на 100 пікселів і збільшать його висоту на 200 пікселів. Виконайте проект. Виберіть кнопку. Переконайтеся, що змінилися розміри і колір вікна. Створіть у власній папці папку Проект 2.5.3 і збережіть у ній проект.

4. · (ДЗ) Відкрийте новий проект. Змініть заголовок форми на Я вмію змінювати значення властивостей кнопки. Розмістіть на формі кнопку у правому нижньому куті. Змініть заголовок кнопки на Плаваюча кнопка. Створіть для події OnClick кнопки заготовку обробника цієї події. Уведіть до процедури команди, які перемістять кнопку на 30 пікселів угору і на 50 пікселів уверх. Виконайте проект. Виберіть кнопку. Переконайтеся, що змінилося її положення. Виберіть кнопку ще кілька разів. Спостерігайте, що відбуватиметься. Створіть у власній папці папку Проект 2.5.4 і збережіть у ній проект.

5. · Створіть проект для множення двох дійсних чисел. Встановіть жовтий колір фону і синій колір тексту для виведення результату. Передбачте виведення результату ще й у спеціальне вікно для повідомлень. Виконайте проект кілька разів для різних чисел, слідкуйте за правильністю результату. Створіть у власній папці папку Проект 2.5.5 і збережіть у ній проект.

6. · (ДЗ) Створіть проект для знаходження суми квадратів двох цілих чисел вибором однієї кнопки, а різниці квадратів цих самих чисел вибором іншої кнопки. Встановіть блакитний колір фону і червоний колір тексту для виведення результату. Передбачте виведення результату ще й у спеціальне вікно для повідомлень. Виконайте проект кілька разів для різних чисел, слідкуйте за правильністю результату. Створіть у власній папці папку Проект 2.5.6 і збережіть у ній проект.

7. · Відкрийте новий проект. Установіть заголовок форми Доступний/Недоступний. Розмістіть на формі дві кнопки. Для першої встановіть такі значення властивостей: Caption – Кнопка 1, Enabled – True. Для другої відповідно: Caption – Кнопка 2, Enabled – False. Створіть для події OnClick першої кнопки заготовку обробника цієї події і введіть до нього такі команди:

Button2.Enabled := True;

Button1.Enabled := False;

Створіть для події OnClick другої кнопки заготовку обробника цієї події і введіть до нього такі команди:

Button1.Enabled := True;

Button2.Enabled := False;

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

8. · (ДЗ) Відкрийте новий проект. Установіть заголовок форми Видимий/Невидимий. Розмістіть на формі дві кнопки. Для першої встановіть такі значення властивостей: Caption – Кнопка 1, Visible – True. Для другої відповідно: Caption – Кнопка 2, Visible – False. Створіть для події OnClick першої кнопки заготовку обробника цієї події і введіть до нього такі команди:

Button2.Visible := True;

Button1.Visible := False;

Створіть для події OnClick другої кнопки заготовку обробника цієї події і введіть до нього такі команди:

Button1.Visible := True;

Button2.Visible := False;

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

9. · Створіть проект, у якому подія OnClick форми викличе зміну розмірів вікна, його кольору, заголовка і положення на екрані. Створіть у власній папці папку Проект 2.5.9 і збережіть у ній проект.

10. ·Створіть проект, у якому подія OnMouseMove кнопки викличе зміну її розмірів, заголовка і положення у вікні. Створіть у власній папці папку Проект 2.5.10 і збережіть у ній проект.

11. · Створіть проект, у якому подія OnClick поля викличе зміну його розмірів, кольору його фону і появи в полі тексту з вашим прізвищем та іменем символами червоного кольору. Створіть у власній папці папку Проект 2.5.11 і збережіть у ній проект.

12. · (ДЗ) Створіть проект, у якому подія OnClick для напису викличе зміну його розмірів, кольору його фону, положення у вікні і появи тексту Вітаю синім кольором. Колір фону, напис і нові розміри вводити в поля. Створіть у власній папці папку Проект 2.5.12 і збережіть у ній проект.

13. · Створіть проект, який за довжиною, шириною і висотою вашої кімнати обчислюватиме площу підлоги і площу поверхні стін. Створіть у власній папці папку Проект 2.5.13 і збережіть у ній проект.

14. · (ДЗ) Створіть проект для знаходження суми, різниці і добутку двох довільних дійсних чисел. Створіть у власній папці папку Проект 2.5.14 і збережіть у ній проект.

15. * Створіть проект, у якому розташуйте на формі три кнопки. Встановіть такі значення їх властивостей, щоб на початку виконання проекту перша кнопка була видима і доступна, друга – видима і недоступна, третя – невидима і недоступна. Для кожної кнопки створіть процедуру для події OnClick, щоб:

а) вибір першої кнопки робив її невидимою і недоступною, другу кнопку – видимою і доступною, третю кнопку – видимою і недоступною;

б) вибір другої кнопки робив її невидимою і недоступною, третю кнопку – видимою і доступною, першу кнопку – видимою і недоступною;

в) вибір третьої кнопки робив її невидимою і недоступною, першу кнопку – видимою і доступною, другу кнопку – видимою і недоступною.

Створіть у власній папці папку Проект 2.5.16 і збережіть у ній проект.

Практична робота № 6

«Введення й виведення даних. Робота із змінними»

Увага! Під час роботи з комп’ютером дотримуйтеся правил безпеки та санітарно-гігієнічних норм.

 

1. Відкрийте середовище Turbo Delphi 2006 і створіть новий проект.

2. Установіть для форми колір фону жовтий, розміри 1000 на 600 пікселів, текст заголовка Практична 6.

3. Розмістіть на формі дві кнопки, три поля і два написи.

4. Задайте на першій кнопці текст Переміщення, на другій – Обчислення, у полів і на написів – порожній текст.

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

6. Складіть обробник події OnClick першої кнопки, виконання якого приведе до переміщення форми на 50 пікселів управо і на 30 пікселів униз, кожного поля – на 20 пікселів уліво і на 30 пікселів уверх і зробить їхній фон червоним.

7. Виберіть першу кнопку і переконайтеся у правильності результатів.

8. Складіть обробник події OnClick другої кнопки, виконання якого приведе до знаходження об’єма і площі повної поверхні прямокутного паралелепіпеда, вважаючи, що у поля будуть уведені довжини його ребер.

9. Виберіть другу кнопку і переконайтеся у правильності результатів.