SlideShare a Scribd company logo
1 of 15
Лабораторна робота 1. Вивчення інтерфейсу середовища програмування Delphi.
Вивчення властивостей форми
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7)
2. Запишіть назву чотирьох основних вікон, які має середовище програмування:
1) ___________________________________________ 2) ___________________________________________
3) ___________________________________________ 4) ___________________________________________
3. Перегляньте код програми. За допомогою якої кнопки викликається вікно коду? _____
4. Запустіть програму на виконання. Опишіть 2 способи запуску програми:
1) _________________________________________________________________________________________
2) _________________________________________________________________________________________
5. Закрийте програму та поверніться у середовище програмування.
6. Знайдіть в Інспекторі об’єктів властивість форми BorderStyle і встановіть значення bsDialog. Запустіть
програму. Що змінилося?
___________________________________________________________________________________________
7. Встановіть властивість форми BorderStyle = bsNone. Запустіть програму. Що змінилося?
___________________________________________________________________________________________
8. Встановіть властивість Caption = «Моя програма». Запустіть програму. Що змінилося?
___________________________________________________________________________________________
9. Встановіть властивість форми Color=clYellow. Запустіть програму. Що змінилося?
___________________________________________________________________________________________
10. Встановіть властивість форми Cursor = crHandPoint. Запустіть програму. Що змінилося?
___________________________________________________________________________________________
11. Встановіть властивості Height = 100 та Width = 100. Запустіть програму. Що означають властивості Height та
Width?
Height - _________________________________ ; Width - ________________________________
12. Встановіть властивості Left = 25 та Top = 25. Запустіть програму. Що означають властивості Left та Top?
Left - _________________________________ ; Top - ________________________________
13. Встановіть властивість WindowState = wsMaximized. Запустіть програму. Що змінилося?
___________________________________________________________________________________________
14. Знайдіть на палітрі компонентів кнопку (Button) і двічі клюкніть мишею на ній (див. мал. нижче)
Що відбулося? ______________________________________________________________________________
15. Створіть на диску D: папку Delphi Projects, а в ній папку Перший проект. Користуючись кнопкою Save
All (Зберегти Все), збережіть вашу програму в папку Перший проект, а потім запустіть програму.
16. Закрийте середовище програмування.
17. Зайдіть в папку Перший проект. Знайдіть та запустіть файл Project1.exe
Кнопка (Button)
Лабораторна робота №2. Програмне змінення властивостей об’єктів
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7)
2. Розмістіть на формі компоненти Button, Label, Edit (див. малюнок)
3. У кожного компонента мається властивість Name (ім’я компонента). Знайдіть її в Інспекторі об’єктів
для кожного об’єкта та заповніть таблицю:
Компонент Властивість Name
Форма
Кнопка
Мітка
Текстове поле
4. Якщо ми запустимо програму і клюкнемо мишею по кнопці, то відбудеться подія – щиглик миші на
кнопці. Delphi дозволяє обробляти події, тобто програмувати те, що буде робитися при виникненні
події. Для цього треба вносити зміни в код програми, тобто дописувати програму, яку Delphi написала
замість нас.
Приклад. Припустимо, ми хочемо, щоб коли ми клюкнули по кнопці, заголовок форми змінився на
«ага, воно робе».
Розв’язання. Форма має ім’я Form1, у форми є властивість Caption, яка задає її заголовок. Отже, об’єкт
Form1 має властивість Caption. Коли ми будемо писати програму, будемо позначати властивість
Caption об’єкта Form1 так: Form1.Caption (між Form1 і Caption ставиться точка).
Для програмування події виконайте наступне.
1) Виділіть кнопку (Button).
2) Перейдіть в Інспекторі об’єктів на вкладку Events (Події).
Знайдіть подію OnClick (при кліці). Подія OnClick кнопки Button1 виникає тоді, коли користувач
клюкне по ній. Клацніть двічі мишею по порожньому текстовому полі напроти властивості (див.
мал.)
3) Відбудеться перехід до вікна коду, в якому з’являться наступні рядки:
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Кнопка
(Button)
Мітка
(Label)
Текст
(Edit)
Вкладка
Events
Подія
OnClick
Тут треба двічі клацнути
мишею
Тут, між словами begin та end, можна писати те, що
відбуватиметься, коли користувач клюкне мишею по кнопці
Процедура, що обробляє
подію OnClick об’єкта Button1
Напишіть між словами begin та end:
Form1.Caption := 'а воно робе!' ;
Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________
_____________________________________________________________________________________
5. Додайте після рядка, що ви написали у попередньому завданні, рядок
Form1.Color:=clYellow;
(замість clYellow можна написати clBlue, clCyan, clRed, clMagenta і т.д.)
Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________
_____________________________________________________________________________________
6. Додайте туди ж іще один рядок:
Button1.Caption:=’OK’;
Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________
_____________________________________________________________________________________
7. В Інспекторі об’єктів знайдіть властивість Text об’єкта Edit1 та встановіть його порожнім.
Знайдіть властивість Caption об'єкта Label1 і встановіть його «Гарна програмка».
Додайте в процедуру наступний рядок:
Edit1.Text:=Label1.Caption;
Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________
_____________________________________________________________________________________
8. Завдання для самостійної роботи.
Створіть на формі ще одну кнопку, підпишіть її «Встановити заголовок» і зробіть так, щоб при кліці
по цій кнопці заголовок форми (Form1.Caption) ставав таким же, як напис у текстовому полі
(Edit1.Text).
Напишіть команду, яку ви вписали в процедуру обробки події:
_____________________________________________________________________________________
9. Знайдіть для мітки Label1 подію OnMouseMove (виникає, коли курсор миші рухається над об’єктом) на
вкладці Events Інспектора об’єктів.
Створіть процедуру її обробки подвійним щигликом миші.
Напишіть у цій процедурі команду Label1.Font.Color:=clBlue;
Знайдіть для мітки Label1 подію OnMouseLeave (виникає, коли курсор миші залишає об’єкт) на
вкладці Events Інспектора об’єктів.
Створіть процедуру її обробки подвійним щигликом миші.
Напишіть у цій процедурі команду Label1.Font.Color:=clBlack;
Що відбувається, коли миша проходить над об’єктом Label1? ________________________________
Що відбувається, коли миша залишає об’єкт Label1? ________________________________________
10. У папці Delphi Projects створіть папку «Змінення властивостей об’єктів» і збережіть там проект.
Контрольні запитання
1. Коли виникає подія OnClick? _________________________________________________________
2. Коли виникає подія OnMouseMove? __________________________________________________
3. Коли виникає подія OnMouseLeave? __________________________________________________
4. На якій вкладці Інспектора об’єктів можна створювати процедури обробки подій? ___________
5. Як позначається в програмі заголовок форми? _____Form1.Caption_____
Напис на кнопці? ________________________ Колір форми? ____________________________
Текст у текстовому полі? __________________ Напис на мітці? __________________________
Колір напису на мітці? ____________________ Колір текстового поля? ____________________
Властивість Caption
об’єкта Form1
Знак присвоювання
(встановлення)
Нове значення
властивості
Крапка з
комою
Лабораторна робота №3. Змінні, числа та рядки
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7).
2. Розмістіть на формі компоненти Label (2 мітки), Button (кнопку) та Edit (2 текстових поля), як показано на мал. 1а
3. Змініть відповідні властивості об’єктів (це робиться у вікні Інспектора об’єктів), щоб форма набула вигляду, як на
мал. 1б
Мал. 1а Мал. 1б
4. Подумайте. Чим відрізняється властивості форми Caption та Name від властивостей Height, Width, Left, Top?
_________________________________________________________________________________________________
_________________________________________________________________________________________________
5. Властивості Caption та Name являють собою рядки символів, або просто рядки, що можуть містити будь-які
символи. Властивості Height, Width, Top, Left і т.д. являють собою цілі числа. Отже, в Delphi можуть бути
щонайменше два типи величин: рядки та цілі числа.
Рядки в Delphi називаються string
Цілі числа в Delphi називаються integer.
6. Приклад 1. Припустимо, треба створити програму, яка складає два рядки. Для цього:
Створіть процедуру-обробник події OnClick кнопки Button1 (в Інспекторі об’єктів на вкладці Events).
В процедурі TForm1.Button1Click додайте наступний текст (той, що написаний червоним):
procedure TForm1.Button1Click(Sender: TObject);
var
a:string;
b:string; {червоним написано те, що треба додати в процедуру}
begin
end;
Ми тільки-но додали в процедуру дві змінні a і b, причому ці змінні є рядками, тому що при їх описанні ми
використали слово string, яке означає рядок. Про те, що ми додаємо змінні (описуємо змінні), свідчить ключове
слово var.
Додайте в процедуру 3 наступні команди (написані червоним):
procedure TForm1.Button1Click(Sender: TObject);
var
a:string;
b:string;
begin
a:=Edit1.Text;
b:=Edit2.Text;
ShowMessage(a+b); {червоним написано те, що треба додати в процедуру}
end;
Запустіть програму. Введіть що-небудь у текстові поля. Натисніть кнопку. Що відбувається? __________________
_________________________________________________________________________________________________
Розглянемо докладніше ці три команди.
Перша команда a:=Edit1.Text складається з трьох частин: а, :=, Edit1.Text. Ця команда означає, що змінна
а набуде значення, яке зараз міститься у властивості Edit1.Text, тобто після виконання цієї команди у змінну а
буде записано значення, яке користувач ввів у перше текстове поле.
Друга команда аналогічна першій: у змінну b записується текст другого текстового поля.
Остання команда ShowMessage(a+b) виводить на екран вікно повідомлення, в якому є рядок a+b і кнопка ОК.
Замість цих трьох команд можна було використати одну:
Створіть у папці Delphi Projects папку «Складання рядків» і збережіть туди програму. Потім закрийте проект,
скористувавшись командою FileClose All.
7. Приклад 2. Припустимо, треба скласти програму, яка складає два цілих числа. Для цього:
Почніть новий проект (FileNewApplication). Розмістіть на формі відповідні компоненти, щоб форма набула
наступного вигляду (мал. 2):
Мал. 2
Створіть процедуру-обробник події OnClick кнопки Button1 (в Інспекторі об’єктів на вкладці Events).
В процедурі TForm1.Button1Click додайте наступний текст (той, що написаний червоним):
procedure TForm1.Button1Click(Sender: TObject);
var
a:integer;
b:integer; {червоним написано те, що треба додати в процедуру}
begin
end;
Ми тільки-но додали в процедуру дві змінні a і b, причому ці змінні є цілими числами, тому що при їх описанні
ми використали слово integer, яке означає ціле число. Про те, що ми додаємо змінні (описуємо змінні), свідчить
ключове слово var.
Додайте в процедуру 3 наступні команди (написані червоним):
procedure TForm1.Button1Click(Sender: TObject);
var
a:integer;
b:integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
ShowMessage( IntToStr(a+b) ); {червоним написано те, що треба додати в процедуру}
end;
Розглянемо докладніше ці три команди.
Перша команда a:=StrToInt(Edit1.Text); складається з трьох частин: а, :=, StrToInt(Edit1.Text).
Чому не можна написати просто a:=Edit1.Text, як у попередньому завданні? Тому що зараз змінна а типу
integer, тобто ціле число, а властивість Edit1.Text типу string, тобто рядок. Числа не можна присвоювати
рядкам і навпаки. Тому, щоб можна було здійснити операцію присвоювання, треба рядок Edit1.Text перевести в
ціле число за допомогою команди StrToInt.
Друга команда аналогічна першій: у змінну b записується число з другого текстового поля.
Остання команда ShowMessage( IntToStr(a+b) ). Чому не можна було написати просто
ShowMessage(a+b), як у попередньому завданні? Тому що команда ShowMessage виводить на екран лише
рядки.
Створіть у папці Delphi Projects папку «Складання рядків» і збережіть туди програму. Потім закрийте проект,
скористувавшись командою FileClose All.
Лабораторна робота №4. Розв’язування задач за допомогою Delphi
з використанням типів integer, real, string
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Заповніть таблиці:
Тип даних Назва в Delphi Вираз (обчислення) Тип результату
Цілі числа string + string
Раціональні числа integer + integer
Рядки integer – integer
integer * integer
integer / integer (!)
real (+ - * /) real
real (+ - * /) integer
2. Відомий фрагмент програми:
var
a, b : integer;
c, d : real;
s, t : string;
Заповніть таблицю (якщо вираз помилковий з точки зору Delphi, то впишіть «помилка»):
Вираз Тип виразу Вираз Тип виразу
a+b IntToStr(a+b)
a+c FloatToStr(s)
a/c StrToFloat(t)
a/b FloatToStr(d – a)
s+t IntToStr(c+b)
s+a StrToInt(b – a)
d+a IntToStr (b/a)
3. Заповніть пропуски: Команда ShowMessage може виводити на екран лише _____________ і не може ________
4. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7).
5. Продивіться та повторіть приклад розв’язання задач у Delphi.
Задача 1. У тісному трюмі піратської бригантини капітан Флінт та боцман Федя ділили одне й те саме число на різні
дільники: капітан Флінт з похмурою усмішкою на M, а боцман Федя зі спокійним виразом обличчя на N. Боцман Федя
отримав результат K. Який результат отримав Флінт?
Вхідні дані. Числа M, N і K вводяться з клавіатури.
Вихідні дані. Результат Флінта виводиться на монітор.
Розв’язання. Очевидно, щоб узнати задумане число, треба N помножити на К, а щоб узнати результат Флінта, необхідно
це число розділити на M. Отже, результат Флінта можна обчислити за формулою
(N*K)/M або N*K/M
Створіть у Delphi новий проект і розмістіть на формі компоненти, як на мал. нижче:
Створіть обробник події OnClick кнопки Button1.
Нам знадобляться 3 змінних: m, n і k, причому ці числа можуть бути не тільки цілими, а раціональними. Тому потрібно
об’являти змінні типу real (введіть рядки, написані червоним):
procedure TForm1.Button1Click(Sender: TObject);
var
m,n,k:real;
begin
end;
Зверніть увагу, що змінні одного типу
можна описувати через кому!
Зверніть увагу, що змінні одного
типу можна описувати через кому!
Далі треба присвоїти змінним m, n, k те, що користувач ввів з клавіатури. Додайте у процедуру рядки:
m:=StrToFloat(Edit1.Text);
n:=StrToFloat(Edit2.Text);
k:=StrToFloat(Edit3.Text);
Надалі обчислення проводяться за відомою вже формулою (додайте в процедуру наступний рядок):
ShowMessage(FloatToStr(n*k/m));
Програма готова. Перевірте правильність її роботи.
Зауваження до задачі 1.
1) Її можна розв’язати іншим способом, не вводячи змінних m, n, k, а написавши просто
ShowMessage(FloatToStr(StrToFloat(Edit2.Text)* StrToFloat(Edit3.text)/
StrToFloat(Edit1.Text)));
2) Можна «красиво» вивести результат, наприклад так:
ShowMessage(‘Флінт отримав число ’+FloatToStr(n*k/m));
Задача 2. У іноземного диверсанта було завдання: темною ніччю підірвати N загальноосвітніх шкіл (при розв’язанні
вважати, що N націло ділиться на 3). Диверсант перевиконав завдання на 1/3 його частини. Скільки щасливих діточок
зможуть відпочити від загальної освіти, якщо відомо, що у кожній підірваній школі мучилися M учнів?
Вхідні дані. Число шкіл N та число учнів кожної школи M вводяться з клавіатури.
Вихідні дані. Число відпочиваючих учнів виводиться на монітор.
Розв’язання. Треба було підірвати N шкіл, але диверсант підірвав на третину більше, тобто N+N/3 школи. Якщо в кожній
школі було M учнів, то всього їх було M*(N+N/3). За цією формулою й будемо розв’язувати задачу.
Розмістіть на формі необхідні компоненти:
За смислом задачі M та N – цілі числа, тому змінні m і n будемо об’являти типу integer (додайте в процедуру написане
червним):
procedure TForm1.Button1Click(Sender: TObject);
var
m,n:integer;
begin
end;
Потім присвоюємо нашим змінним необхідні значення (додайте у процедуру):
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
Обчислюємо та виводимо результат за формулою:
ShowMessage(FloatToStr(m*(n+n/3)));
Запустіть програму на виконання.
6. Розв’яжіть наступні задачі.
Задача 3. Сумний дядя Боря запропонував задумливій тьоті Олі вийти за нього заміж. Тьотя Оля обіцяла подумати,
думала N років і відмовилась. Сумний дядя Боря запропонував їй іще подумати. Задумлива тьотя Оля думала на M
років довше, ніж першого разу, і погодилася. Скільки років сумний дядя Боря не втрачав надії, що задумлива тьотя Оля
вийде за нього заміж?
Вхідні дані. Числа років M, N вводяться з клавіатури.
Вихідні дані. Результат виводиться на монітор.
Задача 4. Колі та Толі купили по M пиріжків. Коля з’їв свої пиріжки за X хвилин і став з’їжджати з глузду від заздрощів,
глядячи, як Толя їсть кожний пиріжок по Y хвилин. Як довго буде з’їжджати з глузду Коля?
Вхідні дані. Число пиріжків М і числа хвилин X, Y вводяться з клавіатури. (X,Y не обов’язково цілі).
Вихідні дані. Час з’їжджання з глузду Колі виводиться на монітор.
Використовуємо StrToFloat, тому що
m, n, k типу real
Використовуємо FloatToStr, тому
що n*k/m - вираз типу real
Використовуємо StrToInt, тому що
m, n, типу integer
Використовуємо FloatToStr, тому
що m*(n+n/3) - вираз типу real: в
ньому присутнє ділення
Лабораторна робота №5. Розв’язування математичних задач за допомогою Delphi
з використанням типів integer, real, string
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Ознайомтеся з таблицею 1 та заповніть таблицю 2.
Таблиця 1 Таблиця 2
Математичний
вираз
Запис у Delphi
Математичний
вираз
Запис у Delphi
sin x sin(x)
2𝑥2 − 3𝑦
4𝑥
(2*x*x – 3*y)/(4*x)
cos x cos(x) √4𝜋 + |𝑥| sqrt(4*pi+abs(x))
√ 𝑥 sqrt(x) 1 – cos2
|x|
1 –
cos(abs(x))*cos(abs(x))
|x| abs(x)
1
3
𝜋𝑅2
𝐻 (1/3)*pi*R*R*H
x2
x*x або sqr(x)
𝑥 + 2𝑦
4𝑧
x3
x*x*x √1 − 𝑠𝑖𝑛2 𝑥
π pi
4
3
𝜋𝑅3
ex
exp(x) √|𝑥|
Ціла частина х trunc(x) |−√ 𝑥|
Дробова частина х x – trunc(x) 2𝜋𝑅
Округлене х до цілих round(x) cos(2𝑥 +
𝜋
4𝑧
)
2. Ознайомтеся та повторіть приклади розв’язування задач у Delphi.
Задача 1. Знайдіть площу рівностороннього трикутника зі стороною a см, а також радіус описаного навколо нього кола.
Вхідні дані. Сторона а трикутника вводиться з клавіатури.
Вихідні дані. Площа трикутника та радіус описаного кола виводяться на екран.
Розв’язання. Площа правильного трикутника обчислюється за формулою 𝑆 =
𝑎2
√3
4
, радіус описаного кола 𝑅 =
𝑎
√3
. За
цими формулами й будемо виконувати обчислення.
Створіть новий проект і розмістіть на формі компоненти, як на мал. нижче:
Створіть обробник події OnClick кнопки для обчислення площі. Напишіть туди наступний код:
procedure TForm1.Button1Click(Sender: TObject);
var
S,a:Real;
begin
a:=StrToFloat(Edit1.Text); //вводимо а
S:=a*a*sqrt(3)/4; //обчислюємо площу
ShowMessage('Площа: '+FloatToStr(S)); //виводимо площу на екран
end;
Створіть обробник події OnClick кнопки для обчислення радіусу. Напишіть туди наступний код:
procedure TForm1.Button2Click(Sender: TObject);
var
R,a:Real;
begin
a:=StrToInt(Edit1.Text); //вводимо а
R:=a/sqrt(3); //обчислюємо радіус
ShowMessage('Радіус: '+FloatToStr(R)); //виводимо радіус на екран
end;
Запустіть програму та перевірте правильність її роботи.
Задача 2. Дано функцію 𝑓(𝑥) =
𝑥2+cos 𝑥
2
. Обчислити f(x) при довільному значенні х.
Вхідні дані. Х вводиться з клавіатури.
Вихідні дані. Значення f(x) виводиться на екран.
Розв’язання. Створіть форму:
Напишіть обробник події OnClick кнопки:
procedure TForm1.Button2Click(Sender: TObject);
var
x,fx:real;
begin
x:=StrToFloat(Edit1.Text);
fx:=(x*x+cos(x))/2;
ShowMessage(FloatToStr(fx));
end;
Запустіть програму на виконання.
3. Розв’яжіть наступні задачі.
Задача 3. Дано прямокутний трикутник з гіпотенузою с і гострим кутом α (в градусах). Обчислити другий гострий кут і
катети.
Вхідні дані. Довжина гіпотенузи с і гострий кут α вводиться з клавіатури.
Вихідні дані. Другий гострий кут і катети виводяться на екран.
Вказівки. Другий гострий кут β=900 – α. Катети можна обчислити за формулами: перший 𝑎 = 𝑐 sin
𝛼𝜋
1800, другий
b = 𝑐 𝑐𝑜𝑠
𝛼𝜋
1800.
Задача 4. Обчислити об’єм правильної чотирикутної піраміди зі стороною основи а і висотою h.
Вхідні дані. Сторона основи а і висота h вводяться з клавіатури.
Вихідні дані. Об’єм виводиться на екран.
Вказівка. 𝑉 =
1
3
𝑆оснℎ =
1
3
𝑎2
ℎ.
Задача 5. Обчислити площу трикутника, якщо дано три його сторони.
Вхідні дані. Сторони трикутника a, b, c вводяться з клавіатури.
Вихідні дані. Площа трикутника виводиться на екран.
Вказівка. 𝑆 = √𝑝(𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐), де 𝑝 =
𝑎+𝑏+𝑐
2
(формула Герона для площі трикутника)
Задача 6. Одна труба наповнює басейн за M годин, а інша за N годин. За скільки годин вони наповнять басейн,
працюючи разом?
Вхідні дані. Часи M і N вводяться з клавіатури.
Вихідні дані. Час наповнення басейну обома трубами виводиться на екран.
Задача 7. Одна бригада виконує роботу за M годин, а дві разом виконали її за N годин. За скільки годин виконає роботу
друга бригада, працюючи одна?
Вхідні дані. Часи M і N вводяться з клавіатури.
Вихідні дані. Час виконання роботи другою бригадою виводиться на екран.
Задача 8. Дано два катети прямокутного трикутника. Визначити радіус описаного навколо нього кола.
Вхідні дані. Катети прямокутного трикутника a і b вводяться з клавіатури.
Вихідні дані. Довжина радіуса описаного кола виводиться на екран.
Вказівка. Радіус описаного кола дорівнює половині гіпотенузи, тобто 𝑅 =
𝑐
2
=
√𝑎2+𝑏2
2
.
Задача 9. Знайти периметр квадрата, рівновеликого прямокутнику зі сторонами M, N.
Вхідні дані. Сторони прямокутника M,N вводяться з клавіатури.
Вихідні дані. Периметр квадрата виводиться на екран.
Вказівка. Рівновеликими називаються фігури, що мають рівну площу.
Задача 10. Обчислити площу рівностороннього трикутника зі стороною а.
Вхідні дані. Сторона трикутника а вводиться з клавіатури.
Вихідні дані. Площа трикутника виводиться на екран.
Вказівка. Площа рівностороннього трикутника обчислюється за формулою 𝑆 =
𝑎2
√3
4
.
Лабораторна робота №6. Використання оператора if – then
для перевірки вхідних даних
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Створіть у Delphi новий проект і розв’яжіть задачу:
Якщо Слюника обізвати Хрямзиком, він почне битися ногами і не заспокоїться, доки не вдарить того, хто обізвав,
кожною ногою по N разів. Одного разу Бряка його обізвала M разів і отримала за це К ударів. Скільки ніг у Слюника?
Вхідні дані. Число ударів кожною ногою N, число обзивань M і загальне число отриманих ударів K вводиться з
клавіатури.
Вихідні дані. Число ніг Слюника виводиться на екран.
Вказівка. Число ніг Слюника K/(M*N).
Припустимо, розв’язана задача має такий вигляд:
procedure TForm1.Button1Click(Sender: TObject);
var
m,n,k:integer;
begin
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
k:=StrToInt(Edit3.Text);
ShowMessage(FloatToStr(K/(M*N)));
end;
2. Запустіть програму на виконання і введіть N=5, M=4, K=51. Число ніг за програмою буде 2.55, але цей результат не має
смислу. Очевидно, що вхідні дані до задачі були неправильними, якщо маємо неправильний результат. Виникає
проблема: а чи можна, щоб при отриманні неправильного результату програма повідомляла про це, а при отриманні
правильного – просто виводила його на екран?
3. Ознайомтеся з поняттями цілої та дробової частини числа. Заповніть пропуски нижче.
Ціла частина числа 5,45 дорівнює 5. Дробова частина його 0,45.
Ціла частина числа 6,51 дорівнює 6. Дробова частина його 0,51.
Ціла частина числа 7,8 дорівнює ____. Дробова частина його ____.
Ціла частина числа 0,6 дорівнює ____. Дробова частина його ____.
Ціла частина числа 9 дорівнює ____. Дробова частина його ____.
Ціла частина числа 10,5 дорівнює ____. Дробова частина його ____.
Ціла частина числа 0,025 дорівнює ____. Дробова частина його ____.
Ціла частина числа х в Delphi позначається trunc(x). Звідси, дробова частина його буде х - trunc(x).
trunc (3.28) = _________ trunc (6.83) = ________ 4.8 – trunc (4.8) = ________
trunc (2.56) = _________ trunc (8.54) = ________ 5.6 – trunc (5.6) = ________
Якщо ціла частина числа дорівнює самому числу, то таке число ціле. Наприклад, trunc(5) =5, trunc(38) = 38, trunc(0) = 0.
Заповніть таблицю:
Твердженя Так чи Ні Твердженя Так чи Ні Твердженя Так чи Ні Твердженя Так чи Ні
4.5 = trunc(4.5) 7.8 – trunc(7.8)=0.8 trunc(2.5)-2=0 trunc(4.8/2)=2.4
10 = trunc(10) 5.6 – trunc(5) = 5 trunc(3.6) = 3.6 trunc(4.8/2)=2
trunc(4)=trunc(4.5) trunc(2.6)-trunc(3.7)
= -1
trunc(4.8)/2=2.4 trunc(7) = 7
4. Оберіть правильний варіант:
x:=3.5; z:=4.2
y:=0.5; a:=0.8
trunc(x+y)=x+y (так/ні) trunc(z+a)=z+a (так/ні)
trunc(x-y)=x-y (так/ні) trunc(z-a)=z-a (так/ні)
trunc(x/y)=x/y (так/ні) trunc(z/a)=z/a (так/ні)
trunc(x*y)=x*y (так/ні) trunc(z*a)=z*a (так/ні)
trunc(x/(0.5*y))=x/(0.5*y) (так/ні) trunc(6*z/a)=6*z/a (так/ні)
5. Замініть останній рядок процедури на такий:
if trunc(K/(M*N))=K/(M*N) then ShowMessage(FloatToStr(K/(M*N))) else ShowMessage(‘Помилка!’);
6. Запустіть програму на виконання і знову введіть N=5, M=4, K=51. Спробуйте ввести інші числа.
7. В останньому рядку були використані ключові слова if, then, else. Слово if означає «якщо», після нього пишеться
логічна умова, тобто твердження, яке або істинне або хибне. Якщо логічна умова істинна, то виконується та команда,
що стоїть після слова then, яке означає «то потім», «значить». Якщо ж логічна умова хибна, то виконується та команда,
яка стоїть після слова else, яке означає «інакше».
if –
«якщо»
Логічна
умова
then –
«то»
Після then пишеться команда, яка
виконується, якщо логічна умова істинна
else –
«інакше»
»
В нашому випадку логічна умова – це умова
trunc(K/(M*N))=K/(M*N),
яка може бути істинною або хибною в залежності від значень змінних M, N, K. Ця умова фактично означає «число ніг
Слюника ціле».
Якщо вона істинна, то виконується команда, що стоїть після then:
ShowMessage(FloatToStr(K/(M*N))),
тобто результат просто виводиться на екран.
Якщо ж вона хибна, то виконується команда, що стоїть після else:
ShowMessage(‘Помилка!’),
тобто на екран виводиться повідомлення про помилку.
8. Приклад 2. Якщо малюка Кузю зважити разом з бабусею, то отримаємо N кг, а якщо зважити бабусю без Кузі,
отримаємо M кг. Скільки важить Кузя без бабусі?
Розв’язання. Очевидно, що Кузя важить N – M кг. Але з боку користувача можливий неправильний ввід: він може ввести,
що Кузя з бабусею важить 70 кг, а бабуся важить 75 кг, і тоді Кузя буде мати від’ємну масу мінус 5 кілограмів. Щоб
уникнути таких казусів, треба перед тим, як видавати відповідь, перевірити, що N>M, а не навпаки.
Створіть у Delphi новий проект і повторіть розв’язання задачі:
procedure TForm1.Button1Click(Sender: TObject);
var
M,N:real;
begin
N:=StrToFloat(Edit1.Text);
M:=StrToFloat(Edit2.Text);
if N>M then ShowMessage('Кузя важить '+FloatToStr(N-M)+' кг')
else ShowMessage('Неправильно введені дані!');
end;
Спробуйте ввести такі числа, що задовольняють умові задачі та такі, що не задовольняють її.
9. Розв’яжіть наступні задачі, виконуючи перевірку вхідних даних.
1) Петіни друзі придумали задачу про Петю: «Наш друг попався якось нам ввечері на дорозі, і кожен з нас дав йому по
шиї 3 рази. Всього Петя отримав N разів по шиї. Скільки нас було?»
Вхідні дані. Число ударів по шиї N вводиться з клавіатури.
Вихідні дані. Число друзів Петі виводиться на екран.
Вказівка. Щоб дані були правильними, N повинно націло ділитися на 3, тоді число друзів буде цілим.
2) Петя придумав задачу про своїх друзів: «Мої друзі об’їлися грушами, і їм довелося пити касторку. Всього друзі
випили по 10 ложок кожний. В кожному тюбику по N ложок, а друзі випили всього К тюбиків. Скільки в мене
друзів?»
Вхідні дані. Число ложок, що випив кожен друг N та число тюбиків К вводяться з клавіатури.
Вихідні дані. Число друзів Петі виводиться на екран.
Вказівка. Якщо вхідні дані введено правильно, число Петіних друзів буде цілим!
3) Напишіть програму, яка за введеним з клавіатури числом А визначає його модуль |A|.
Вхідні дані. Число А вводиться з клавіатури.
Вихідні дані. Модуль числа А виводиться на екран.
4) Функція y=sign(x) визначається так:
𝑠𝑖𝑔𝑛(𝑥) = [
1, якщо 𝑥 > 0
0, якщо 𝑥 = 0
−1, якщо 𝑥 < 0
Напишіть програму, що визначає sign(x) за даним числом x.
Вхідні дані. Число х вводиться з клавіатури.
Вихідні дані. Значення sign(x) виводиться на екран.
10. Контрольні запитання
Заповніть пропуски:
Ключове слово if означає _________
Ключове слово then означає _________
Ключове слово else означає _________
Після слова if пишеться _____________________________
Після слова then пишеться команда, яка виконується, коли _____________________________________________________
Після слова else пишеться команда, яка виконується, коли _____________________________________________________
Лабораторна робота №7. Розв’язування задач
за допомогою оператора if – then.
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Продивіться та повторіть у Delphi приклад розв’язання задач.
Задача 1. Бука задумала число Х, а Бяка – число Y. Вони поспорили між собою, що коли Бякине число буде більше
Букиного рівно вдвічі, то Бяка покаже Буці язика, а коли Букине число буде відвічі більше Бякиного, то Бука вдарить Бяку
по лобі. В усіх інших випадках перемагає дружба. Напишіть програму, яка б по заданих числах X та Y виводила б
результат їхнього спору.
Вхідні дані. Букине число Х та Бякине число Y вводяться з клавіатури.
Вихідні дані. Результат спору виводиться на екран.
Розв’язання
Напишіть обробник події OnClick кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var
buka, baka: integer;
begin
buka:=StrToInt(Edit1.Text);
baka:=StrToInt(Edit2.Text);
if buka=2*baka then ShowMessage('Бука вдарить Бяку') else
if baka=2*buka then ShowMessage('Бяка покаже Буці язика')
else ShowMessage('Перемогла дружба');
end;
Задача 2. Іван - дурак ішов по дорозі і бачить: стоїть стовп, а на ньому три написи: наліво підеш – ще дурнішим станеш,
направо підеш – до МММ попадеш, а прямо підеш – хтозна куди попадеш. Напишіть програму, яка за даним напрямком
(наліво, направо або прямо) вказує, що станеться з Іваном.
Вхідні дані. Напрямок, за яким піде Іван, у вигляді слів «наліво», «направо», «прямо» вводиться з клавіатури.
Вихідні дані. Подальша доля Івана виводиться на екран.
Розв’язання
Обробник події OnClick кнопки:
рrocedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='направо' then ShowMessage('Іван попаде до МММ')
else if Edit1.Text='наліво' then ShowMessage('Іван стане ще
дурнішим')
else if Edit1.Text='прямо' then ShowMessage('Іван попаде
хтозна куди')
else ShowMessage('Недопустимий напрямок! Можна вводити
наліво, направо, прямо');
end;
Задача 3. Дівчинка Груня погано запам’ятовує цифри, але добре пам’ятає дні тижня. Допоможіть Груні визначитися, який
номер у кожного дня тижня (понеділок – 1, вівторок – 2, середа – 3 і т.д.)
Вхідні дані. День тижня вводиться з клавіатури.
Вихідні дані. Номер дня тижня виводиться на екран.
Обробник події OnClick кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text='понеділок' then ShowMessage('1')
else if Edit1.Text='вівторок' then ShowMessage('2')
else if Edit1.Text='середа' then ShowMessage('3')
else if Edit1.Text='четвер' then ShowMessage('4')
else if Edit1.Text='п''ятниця' then ShowMessage('5')
else if Edit1.Text='субота' then ShowMessage('6')
else if Edit1.Text='неділя' then ShowMessage('7')
else ShowMessage('Такого дня тижня не існує');
end;
2. Прочитайте теоретичні відомості.
Часто буває так, що логічне висловлювання складається з кількох більш простих висловлювань, тобто являється
складеним. Наприклад, x>0 – це просте висловлювання, x<5 – також просте висловлювання. А от (x>0) та (x<5) – це
складне висловлювання, яке складається з двох простих. (x>0) або (у<5) – також складне висловлювання, в якому
зв’язкою служить слово або. Висловлювання не вірно, що х>0 також є логічним висловлюванням.
В Delphi слова та, або, не вірно, що позначаються так:
Слово В Delphi
та and
або or
невірно, що not
Задача 4. Перевірити, чи належить число Х проміжку (-4; 4).
Вхідні дані. Число Х вводиться з клавіатури.
Вихідні дані. На екран виводяться слова «належить», якщо Х є (-4; 4) або «не належить», якщо Х є (-4; 4).
Розв’язання
Обробник події OnClick кнопки:
procedure TForm1.Button1Click(Sender: TObject);
var
x:real;
begin
x:=StrToFloat(Edit1.Text);
if (x>-4) and (x<4) then ShowMessage('належить') else
ShowMessage('не належить');
end;
3. Розв’яжіть наступні задачі.
Задача 5. Якщо третьокласник Коля не зустріне по дорозі жодного першокласника, то він без пригод дійде туди, куди
ішов. Якщо він зустріне одного першокласника, то ця пригода минеться для нього щасливо, якщо двох – то
напівщасливо, якщо трьох – нещасливо, а якщо чотирьох і більше – він взагалі не дійде. Написати програму, яка б за
заданим числом першокласників визначала, що станеться з Колею.
Вхідні дані. Число першокласників вводяться з клавіатури.
Вихідні дані. Результат зустрічі виводиться на екран («без пригод», «щасливо», «напівщасливо», «нещасливо», «не
дійде»).
Задача 6. Якщо першокласник Вітя спробує закопати свій щоденник з двійками на глибину меншу, ніж 0,5 м, його
швидко викопає собака Жучка і віднесе батькам. Якщо Вітя спробує закопати його на глибину 0,5 – 1 м, то для нього це
буде оптимальним варіантом. Якщо глибина закопування буде більшою, ніж 1 м, то він наткнеться на високовольтну
лінію і йому буде все одно, вдалося закопати щоденник чи ні. Напишіть програму, яка за заданою глибиною
закопування визначатиме, що станеться.
Вхідні дані. Глибина закопування вводиться з клавіатури.
Вихідні дані. Подія, що відбудеться далі, виводиться на екран («Жучка викопає», «Оптимальний варіант», «Віті буде все
одно»).
Задача 7. Перевірити, чи належить число X проміжку [10; 20].
Вхідні дані. Число Х вводиться з клавіатури.
Вихідні дані. На екран виводяться слова «належить» або «не належить».
Задача 8. Перевірити, чи належить число Х проміжку [a, b].
Вхідні дані. Числа Х, a, b вводяться з клавіатури.
Вихідні дані. На екран виводяться слова «належить» або «не належить».
Задача 9. Перевірити, чи належить число Х хоча б одному з проміжків (-10; -5) та (5; 10).
Вхідні дані. Число Х вводиться з клавіатури.
Вихідні дані. На екран виводяться слова «належить» або «не належить».
Задача 10. Перевірити, чи належить число Х хоча б одному з проміжків (a, b) та (c, d).
Вхідні дані. Числа Х, a, b, c, d вводяться з клавіатури.
Вихідні дані. На екран виводяться слова «належить» або «не належить».
Задачі 11 – 13 (про належність точки прямокутнику). Дано координати точки X, Y. Визначити, чи належить вона
прямокутнику, зображеному на мал. нижче:
Вхідні дані. Координати точки X, Y вводяться з клавіатури.
Вихідні дані. Належність точки прямокутнику виводиться на екран («належить», «не належить»).
Задача 11
Задача 12
Задача 13
Лабораторна робота №8
Команда InputBox та об’єкт MEMO
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Прочитайте теоретичні відомості про команду InputBox та виконайте завдання.
Досі ми вводили дані з клавіатури, використовуючи текстові поля Edit. Реалізувати ввід рядків з клавіатури можна й
іншим способом – за допомогою команди InputBox. Якщо команда ShowMessage виводить дані на екран, то
команда InputBox призначена для вводу даних.
Створіть форму, на якій розмістіть лише одну кнопку (Button).
Створіть обробник події-щиглика по кнопці Button1. В обробнику напишіть наступне:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=InputBox('Введите заголовок окна','Заголовок окна:','byka');
Form1.Caption:=s;
end;
Запустіть програму. При щиглику по кнопці відбувається наступне: з’являється вікно, в якому користувач може
ввести довільний рядок. Це вікно виводиться командою InputBox:
Дефолт-значення, або значення за умовчанням – це таке значення рядка, яке буде у випадку, коли користувач нічого
не введе, а просто натисне ОК. Якщо третій параметр – дефолт-значення – не порожній, тобто не дорівнює '' , то
значення за умовчанням з’являється в рядку вводу вікна, як показано на малюнку.
Зазвичай другий та третій параметри команди встановлюються порожніми. Наприклад, команда
InputBox('Введите заголовок окна','','');
виведе вікно, що показано на мал. нижче:
Завдання. Дано зображення вікон, які виводяться командою InputBox. Напроти кожного зображення напишіть
команду, яка це вікно виводить.
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox(
____________________,
____________________,
___________________ )
InputBox('Введите заголовок окна','Заголовок окна:','byka');
Перший параметр
Заголовок вікна
Третій параметр
Дефолт-значення
Другий параметр
Напис у вікні
2. Прочитайте теоретичні відомості про об’єкт MEMO та виконайте завдання.
Компонент MEMO знаходиться на вкладці Standard головного вікна Delphi, там же, де й компоненти Label, Button та
Edit. Створіть новий проект та розмістіть компонент Memo на формі.
Запустіть програму. Компонент Memo являє собою багаторядковий текстовий редактор. Введіть декілька довільних
рядків у текстовому полі.
Закрийте програму та поверніться до Delphi. В Інспекторі об’єктів знайдіть властивість Lines компонента Memo.
Введіть туди 3 рядки: «Іванов», «Петров», «Сидоров».
Нумерація рядків в об’єкті Memo починається не з 1, а з 0!!!
Тобто, в нашому компоненті зараз 3 рядки: нульовий, перший і другий.
0-й рядок: «Іванов»
1-й рядок: «Петров»
2-й рядок: «Сидоров»
Для того, щоб по номеру рядка отримати власне рядок, використовується команда Memo1.Lines.Strings[x]
(результат - string), де х – номер рядка. (тобто, замість х в команді Memo1.Lines.Strings треба вказати номер рядка).
Команда Memo1.Lines.Strings[0] видасть 0-й рядок МЕМО, Memo1.Lines.Strings[1] видасть 1-й рядок і т.д.
Розмістіть на формі кнопку Button, підпишіть її «Показати рядок», створіть обробник події-щиглика по ній і напишіть
там:
ShowMessage(Memo1.Lines.Strings[0]);
Запустіть програму. Що відбувається при запуску? ________________________________________________________
Напишіть в обробнику 1 замість 0. Запустіть програму. Що відбувається? _____________________________________
Напишіть в обробнику 2 замість 1. Запустіть програму. Що відбувається? _____________________________________
Для того, щоб узнати число рядків Memo, треба використати команду Memo1.Lines.Count (результат - integer)
Розмістіть на формі ще одну кнопку Button, підпишіть її «Число рядків МЕМО», створіть обробник події-щиглика по
ній і напишіть там:
ShowMessage(IntToStr(Memo1.Lines.Count));
Перевірте роботу програми.
Для того, щоб додати рядок в Memo, можна використовувати команду Memo1.Lines.Add
Розмістіть на формі ще одну кнопку Button, підпишіть її «Додати рядок», створіть обробник події-щиглика по ній і
напишіть там:
Memo1.Lines.Add('Козлов');
Запустіть програму та клацніть по кнопці кілька разів. Що відбувається? ______________________________________
Для того, щоб видалити рядок, треба використовувати команду Memo1.Lines.Delete(х), де х – номер рядка.
Команда Memo1.Lines.Delete(0) видалить 0-й рядок МЕМО, Memo1.Lines.Delete(1) видалить 1-й рядок і т.д.
Розмістіть на формі ще кнопку Button, підпишіть її «Видалити 0-й рядок», створіть обробник події-щиглика по ній і
напишіть там:
Memo1.Lines.Delete(0);
Запустіть програму та клацніть по кнопці кілька разів. Що відбувається? ______________________________________
Для того, щоб зберегти текст з МЕМО у файл, необхідно використовувати команду Memo1.Lines.SaveToFile, в якій
вказати ім’я файлу.
Розмістіть на формі ще кнопку Button, підпишіть її «Зберегти», створіть обробник події-щиглика по ній і напишіть
там:
Memo1.Lines.SaveToFile('d:1.txt');
Запустіть програму. Натисніть кнопку. Перевірте правильність роботи програми.
Для того, щоб завантажити з файлу текст у компонент MEMO, необхідно використовувати команду
Memo1.Lines.LoadFromFile, у якій вказати ім’я файлу.
Розмістіть на формі ще кнопку Button, підпишіть її «Завантажити», створіть обробник події-щиглика по ній і
напишіть там:
Memo1.Lines.LoadFromFile('d:1.txt');
Запустіть програму. Повністю видаліть текст з МЕМО. Натисніть кнопку. Перевірте правильність роботи програми.
3. Заповніть таблицю
Що треба зробити
За допомогою якої
команди
Що треба зробити
За допомогою якої
команди
Отримати рядок Memo за
його номером
Завантажити з файлу
текст у Memo
Узнати число рядків Memo Зберегти текст з Memo у
файл
Додати рядок в Memo Видалити рядок з Memo
Об’єкт MEMO

More Related Content

Similar to лаб делфи

конспект уроку налагодження програм
конспект уроку налагодження програмконспект уроку налагодження програм
конспект уроку налагодження програмtan4ikbah
 
іі в.
іі в.іі в.
іі в.Lena_7
 
07 07-delphi
07 07-delphi07 07-delphi
07 07-delphiIren50
 
головне меню за допомогою Label
головне меню за допомогою Labelголовне меню за допомогою Label
головне меню за допомогою Labelantalia1010
 
Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...
Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...
Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...Nikolay Shaygorodskiy
 
Урок 23-26 (форми та об'єкти) - вправи
Урок 23-26 (форми та об'єкти) -  вправиУрок 23-26 (форми та об'єкти) -  вправи
Урок 23-26 (форми та об'єкти) - вправиЮлія Артюх
 
і в.
і в.і в.
і в.Lena_7
 
Lesson # 46. the main components of the application for the operating system ...
Lesson # 46. the main components of the application for the operating system ...Lesson # 46. the main components of the application for the operating system ...
Lesson # 46. the main components of the application for the operating system ...Nikolay Shaygorodskiy
 
Зошит з інформатики 4 клас
Зошит з інформатики 4 класЗошит з інформатики 4 клас
Зошит з інформатики 4 класLiliya_Zbarovska
 
5 клас урок 16
5 клас урок 165 клас урок 16
5 клас урок 16Iren50
 
самостійнаWord комплексна
самостійнаWord комплекснасамостійнаWord комплексна
самостійнаWord комплекснаmarunasorokina
 
самостійнаWord комплексна
самостійнаWord комплекснасамостійнаWord комплексна
самостійнаWord комплекснаmarunasorokina
 

Similar to лаб делфи (20)

зошит 3клас
зошит 3класзошит 3клас
зошит 3клас
 
конспект уроку налагодження програм
конспект уроку налагодження програмконспект уроку налагодження програм
конспект уроку налагодження програм
 
іі в.
іі в.іі в.
іі в.
 
07 07-delphi
07 07-delphi07 07-delphi
07 07-delphi
 
головне меню за допомогою Label
головне меню за допомогою Labelголовне меню за допомогою Label
головне меню за допомогою Label
 
Plan uroku corel
Plan uroku corelPlan uroku corel
Plan uroku corel
 
7
77
7
 
події
подіїподії
події
 
Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...
Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...
Урок №13. Практична робота №4. «Виконання обчислень за даними електронної таб...
 
Урок 23-26 (форми та об'єкти) - вправи
Урок 23-26 (форми та об'єкти) -  вправиУрок 23-26 (форми та об'єкти) -  вправи
Урок 23-26 (форми та об'єкти) - вправи
 
і в.
і в.і в.
і в.
 
Lesson # 46. the main components of the application for the operating system ...
Lesson # 46. the main components of the application for the operating system ...Lesson # 46. the main components of the application for the operating system ...
Lesson # 46. the main components of the application for the operating system ...
 
розділ3 перший проект
розділ3 перший проектрозділ3 перший проект
розділ3 перший проект
 
Зошит з інформатики 4 клас
Зошит з інформатики 4 класЗошит з інформатики 4 клас
Зошит з інформатики 4 клас
 
5 клас урок 16
5 клас урок 165 клас урок 16
5 клас урок 16
 
8 клас урок 42
8 клас урок 428 клас урок 42
8 клас урок 42
 
самостійнаWord комплексна
самостійнаWord комплекснасамостійнаWord комплексна
самостійнаWord комплексна
 
самостійнаWord комплексна
самостійнаWord комплекснасамостійнаWord комплексна
самостійнаWord комплексна
 
самостійнаWord комплексна
самостійнаWord комплекснасамостійнаWord комплексна
самостійнаWord комплексна
 
Less25
Less25Less25
Less25
 

лаб делфи

  • 1. Лабораторна робота 1. Вивчення інтерфейсу середовища програмування Delphi. Вивчення властивостей форми Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7) 2. Запишіть назву чотирьох основних вікон, які має середовище програмування: 1) ___________________________________________ 2) ___________________________________________ 3) ___________________________________________ 4) ___________________________________________ 3. Перегляньте код програми. За допомогою якої кнопки викликається вікно коду? _____ 4. Запустіть програму на виконання. Опишіть 2 способи запуску програми: 1) _________________________________________________________________________________________ 2) _________________________________________________________________________________________ 5. Закрийте програму та поверніться у середовище програмування. 6. Знайдіть в Інспекторі об’єктів властивість форми BorderStyle і встановіть значення bsDialog. Запустіть програму. Що змінилося? ___________________________________________________________________________________________ 7. Встановіть властивість форми BorderStyle = bsNone. Запустіть програму. Що змінилося? ___________________________________________________________________________________________ 8. Встановіть властивість Caption = «Моя програма». Запустіть програму. Що змінилося? ___________________________________________________________________________________________ 9. Встановіть властивість форми Color=clYellow. Запустіть програму. Що змінилося? ___________________________________________________________________________________________ 10. Встановіть властивість форми Cursor = crHandPoint. Запустіть програму. Що змінилося? ___________________________________________________________________________________________ 11. Встановіть властивості Height = 100 та Width = 100. Запустіть програму. Що означають властивості Height та Width? Height - _________________________________ ; Width - ________________________________ 12. Встановіть властивості Left = 25 та Top = 25. Запустіть програму. Що означають властивості Left та Top? Left - _________________________________ ; Top - ________________________________ 13. Встановіть властивість WindowState = wsMaximized. Запустіть програму. Що змінилося? ___________________________________________________________________________________________ 14. Знайдіть на палітрі компонентів кнопку (Button) і двічі клюкніть мишею на ній (див. мал. нижче) Що відбулося? ______________________________________________________________________________ 15. Створіть на диску D: папку Delphi Projects, а в ній папку Перший проект. Користуючись кнопкою Save All (Зберегти Все), збережіть вашу програму в папку Перший проект, а потім запустіть програму. 16. Закрийте середовище програмування. 17. Зайдіть в папку Перший проект. Знайдіть та запустіть файл Project1.exe Кнопка (Button)
  • 2. Лабораторна робота №2. Програмне змінення властивостей об’єктів Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7) 2. Розмістіть на формі компоненти Button, Label, Edit (див. малюнок) 3. У кожного компонента мається властивість Name (ім’я компонента). Знайдіть її в Інспекторі об’єктів для кожного об’єкта та заповніть таблицю: Компонент Властивість Name Форма Кнопка Мітка Текстове поле 4. Якщо ми запустимо програму і клюкнемо мишею по кнопці, то відбудеться подія – щиглик миші на кнопці. Delphi дозволяє обробляти події, тобто програмувати те, що буде робитися при виникненні події. Для цього треба вносити зміни в код програми, тобто дописувати програму, яку Delphi написала замість нас. Приклад. Припустимо, ми хочемо, щоб коли ми клюкнули по кнопці, заголовок форми змінився на «ага, воно робе». Розв’язання. Форма має ім’я Form1, у форми є властивість Caption, яка задає її заголовок. Отже, об’єкт Form1 має властивість Caption. Коли ми будемо писати програму, будемо позначати властивість Caption об’єкта Form1 так: Form1.Caption (між Form1 і Caption ставиться точка). Для програмування події виконайте наступне. 1) Виділіть кнопку (Button). 2) Перейдіть в Інспекторі об’єктів на вкладку Events (Події). Знайдіть подію OnClick (при кліці). Подія OnClick кнопки Button1 виникає тоді, коли користувач клюкне по ній. Клацніть двічі мишею по порожньому текстовому полі напроти властивості (див. мал.) 3) Відбудеться перехід до вікна коду, в якому з’являться наступні рядки: procedure TForm1.Button1Click(Sender: TObject); begin end; Кнопка (Button) Мітка (Label) Текст (Edit) Вкладка Events Подія OnClick Тут треба двічі клацнути мишею Тут, між словами begin та end, можна писати те, що відбуватиметься, коли користувач клюкне мишею по кнопці Процедура, що обробляє подію OnClick об’єкта Button1
  • 3. Напишіть між словами begin та end: Form1.Caption := 'а воно робе!' ; Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________ _____________________________________________________________________________________ 5. Додайте після рядка, що ви написали у попередньому завданні, рядок Form1.Color:=clYellow; (замість clYellow можна написати clBlue, clCyan, clRed, clMagenta і т.д.) Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________ _____________________________________________________________________________________ 6. Додайте туди ж іще один рядок: Button1.Caption:=’OK’; Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________ _____________________________________________________________________________________ 7. В Інспекторі об’єктів знайдіть властивість Text об’єкта Edit1 та встановіть його порожнім. Знайдіть властивість Caption об'єкта Label1 і встановіть його «Гарна програмка». Додайте в процедуру наступний рядок: Edit1.Text:=Label1.Caption; Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________ _____________________________________________________________________________________ 8. Завдання для самостійної роботи. Створіть на формі ще одну кнопку, підпишіть її «Встановити заголовок» і зробіть так, щоб при кліці по цій кнопці заголовок форми (Form1.Caption) ставав таким же, як напис у текстовому полі (Edit1.Text). Напишіть команду, яку ви вписали в процедуру обробки події: _____________________________________________________________________________________ 9. Знайдіть для мітки Label1 подію OnMouseMove (виникає, коли курсор миші рухається над об’єктом) на вкладці Events Інспектора об’єктів. Створіть процедуру її обробки подвійним щигликом миші. Напишіть у цій процедурі команду Label1.Font.Color:=clBlue; Знайдіть для мітки Label1 подію OnMouseLeave (виникає, коли курсор миші залишає об’єкт) на вкладці Events Інспектора об’єктів. Створіть процедуру її обробки подвійним щигликом миші. Напишіть у цій процедурі команду Label1.Font.Color:=clBlack; Що відбувається, коли миша проходить над об’єктом Label1? ________________________________ Що відбувається, коли миша залишає об’єкт Label1? ________________________________________ 10. У папці Delphi Projects створіть папку «Змінення властивостей об’єктів» і збережіть там проект. Контрольні запитання 1. Коли виникає подія OnClick? _________________________________________________________ 2. Коли виникає подія OnMouseMove? __________________________________________________ 3. Коли виникає подія OnMouseLeave? __________________________________________________ 4. На якій вкладці Інспектора об’єктів можна створювати процедури обробки подій? ___________ 5. Як позначається в програмі заголовок форми? _____Form1.Caption_____ Напис на кнопці? ________________________ Колір форми? ____________________________ Текст у текстовому полі? __________________ Напис на мітці? __________________________ Колір напису на мітці? ____________________ Колір текстового поля? ____________________ Властивість Caption об’єкта Form1 Знак присвоювання (встановлення) Нове значення властивості Крапка з комою
  • 4. Лабораторна робота №3. Змінні, числа та рядки Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7). 2. Розмістіть на формі компоненти Label (2 мітки), Button (кнопку) та Edit (2 текстових поля), як показано на мал. 1а 3. Змініть відповідні властивості об’єктів (це робиться у вікні Інспектора об’єктів), щоб форма набула вигляду, як на мал. 1б Мал. 1а Мал. 1б 4. Подумайте. Чим відрізняється властивості форми Caption та Name від властивостей Height, Width, Left, Top? _________________________________________________________________________________________________ _________________________________________________________________________________________________ 5. Властивості Caption та Name являють собою рядки символів, або просто рядки, що можуть містити будь-які символи. Властивості Height, Width, Top, Left і т.д. являють собою цілі числа. Отже, в Delphi можуть бути щонайменше два типи величин: рядки та цілі числа. Рядки в Delphi називаються string Цілі числа в Delphi називаються integer. 6. Приклад 1. Припустимо, треба створити програму, яка складає два рядки. Для цього: Створіть процедуру-обробник події OnClick кнопки Button1 (в Інспекторі об’єктів на вкладці Events). В процедурі TForm1.Button1Click додайте наступний текст (той, що написаний червоним): procedure TForm1.Button1Click(Sender: TObject); var a:string; b:string; {червоним написано те, що треба додати в процедуру} begin end; Ми тільки-но додали в процедуру дві змінні a і b, причому ці змінні є рядками, тому що при їх описанні ми використали слово string, яке означає рядок. Про те, що ми додаємо змінні (описуємо змінні), свідчить ключове слово var. Додайте в процедуру 3 наступні команди (написані червоним): procedure TForm1.Button1Click(Sender: TObject); var a:string; b:string; begin a:=Edit1.Text; b:=Edit2.Text; ShowMessage(a+b); {червоним написано те, що треба додати в процедуру} end; Запустіть програму. Введіть що-небудь у текстові поля. Натисніть кнопку. Що відбувається? __________________ _________________________________________________________________________________________________ Розглянемо докладніше ці три команди. Перша команда a:=Edit1.Text складається з трьох частин: а, :=, Edit1.Text. Ця команда означає, що змінна а набуде значення, яке зараз міститься у властивості Edit1.Text, тобто після виконання цієї команди у змінну а буде записано значення, яке користувач ввів у перше текстове поле. Друга команда аналогічна першій: у змінну b записується текст другого текстового поля. Остання команда ShowMessage(a+b) виводить на екран вікно повідомлення, в якому є рядок a+b і кнопка ОК.
  • 5. Замість цих трьох команд можна було використати одну: Створіть у папці Delphi Projects папку «Складання рядків» і збережіть туди програму. Потім закрийте проект, скористувавшись командою FileClose All. 7. Приклад 2. Припустимо, треба скласти програму, яка складає два цілих числа. Для цього: Почніть новий проект (FileNewApplication). Розмістіть на формі відповідні компоненти, щоб форма набула наступного вигляду (мал. 2): Мал. 2 Створіть процедуру-обробник події OnClick кнопки Button1 (в Інспекторі об’єктів на вкладці Events). В процедурі TForm1.Button1Click додайте наступний текст (той, що написаний червоним): procedure TForm1.Button1Click(Sender: TObject); var a:integer; b:integer; {червоним написано те, що треба додати в процедуру} begin end; Ми тільки-но додали в процедуру дві змінні a і b, причому ці змінні є цілими числами, тому що при їх описанні ми використали слово integer, яке означає ціле число. Про те, що ми додаємо змінні (описуємо змінні), свідчить ключове слово var. Додайте в процедуру 3 наступні команди (написані червоним): procedure TForm1.Button1Click(Sender: TObject); var a:integer; b:integer; begin a:=StrToInt(Edit1.Text); b:=StrToInt(Edit2.Text); ShowMessage( IntToStr(a+b) ); {червоним написано те, що треба додати в процедуру} end; Розглянемо докладніше ці три команди. Перша команда a:=StrToInt(Edit1.Text); складається з трьох частин: а, :=, StrToInt(Edit1.Text). Чому не можна написати просто a:=Edit1.Text, як у попередньому завданні? Тому що зараз змінна а типу integer, тобто ціле число, а властивість Edit1.Text типу string, тобто рядок. Числа не можна присвоювати рядкам і навпаки. Тому, щоб можна було здійснити операцію присвоювання, треба рядок Edit1.Text перевести в ціле число за допомогою команди StrToInt. Друга команда аналогічна першій: у змінну b записується число з другого текстового поля. Остання команда ShowMessage( IntToStr(a+b) ). Чому не можна було написати просто ShowMessage(a+b), як у попередньому завданні? Тому що команда ShowMessage виводить на екран лише рядки. Створіть у папці Delphi Projects папку «Складання рядків» і збережіть туди програму. Потім закрийте проект, скористувавшись командою FileClose All.
  • 6. Лабораторна робота №4. Розв’язування задач за допомогою Delphi з використанням типів integer, real, string Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Заповніть таблиці: Тип даних Назва в Delphi Вираз (обчислення) Тип результату Цілі числа string + string Раціональні числа integer + integer Рядки integer – integer integer * integer integer / integer (!) real (+ - * /) real real (+ - * /) integer 2. Відомий фрагмент програми: var a, b : integer; c, d : real; s, t : string; Заповніть таблицю (якщо вираз помилковий з точки зору Delphi, то впишіть «помилка»): Вираз Тип виразу Вираз Тип виразу a+b IntToStr(a+b) a+c FloatToStr(s) a/c StrToFloat(t) a/b FloatToStr(d – a) s+t IntToStr(c+b) s+a StrToInt(b – a) d+a IntToStr (b/a) 3. Заповніть пропуски: Команда ShowMessage може виводити на екран лише _____________ і не може ________ 4. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7). 5. Продивіться та повторіть приклад розв’язання задач у Delphi. Задача 1. У тісному трюмі піратської бригантини капітан Флінт та боцман Федя ділили одне й те саме число на різні дільники: капітан Флінт з похмурою усмішкою на M, а боцман Федя зі спокійним виразом обличчя на N. Боцман Федя отримав результат K. Який результат отримав Флінт? Вхідні дані. Числа M, N і K вводяться з клавіатури. Вихідні дані. Результат Флінта виводиться на монітор. Розв’язання. Очевидно, щоб узнати задумане число, треба N помножити на К, а щоб узнати результат Флінта, необхідно це число розділити на M. Отже, результат Флінта можна обчислити за формулою (N*K)/M або N*K/M Створіть у Delphi новий проект і розмістіть на формі компоненти, як на мал. нижче: Створіть обробник події OnClick кнопки Button1. Нам знадобляться 3 змінних: m, n і k, причому ці числа можуть бути не тільки цілими, а раціональними. Тому потрібно об’являти змінні типу real (введіть рядки, написані червоним): procedure TForm1.Button1Click(Sender: TObject); var m,n,k:real; begin end; Зверніть увагу, що змінні одного типу можна описувати через кому! Зверніть увагу, що змінні одного типу можна описувати через кому!
  • 7. Далі треба присвоїти змінним m, n, k те, що користувач ввів з клавіатури. Додайте у процедуру рядки: m:=StrToFloat(Edit1.Text); n:=StrToFloat(Edit2.Text); k:=StrToFloat(Edit3.Text); Надалі обчислення проводяться за відомою вже формулою (додайте в процедуру наступний рядок): ShowMessage(FloatToStr(n*k/m)); Програма готова. Перевірте правильність її роботи. Зауваження до задачі 1. 1) Її можна розв’язати іншим способом, не вводячи змінних m, n, k, а написавши просто ShowMessage(FloatToStr(StrToFloat(Edit2.Text)* StrToFloat(Edit3.text)/ StrToFloat(Edit1.Text))); 2) Можна «красиво» вивести результат, наприклад так: ShowMessage(‘Флінт отримав число ’+FloatToStr(n*k/m)); Задача 2. У іноземного диверсанта було завдання: темною ніччю підірвати N загальноосвітніх шкіл (при розв’язанні вважати, що N націло ділиться на 3). Диверсант перевиконав завдання на 1/3 його частини. Скільки щасливих діточок зможуть відпочити від загальної освіти, якщо відомо, що у кожній підірваній школі мучилися M учнів? Вхідні дані. Число шкіл N та число учнів кожної школи M вводяться з клавіатури. Вихідні дані. Число відпочиваючих учнів виводиться на монітор. Розв’язання. Треба було підірвати N шкіл, але диверсант підірвав на третину більше, тобто N+N/3 школи. Якщо в кожній школі було M учнів, то всього їх було M*(N+N/3). За цією формулою й будемо розв’язувати задачу. Розмістіть на формі необхідні компоненти: За смислом задачі M та N – цілі числа, тому змінні m і n будемо об’являти типу integer (додайте в процедуру написане червним): procedure TForm1.Button1Click(Sender: TObject); var m,n:integer; begin end; Потім присвоюємо нашим змінним необхідні значення (додайте у процедуру): m:=StrToInt(Edit1.Text); n:=StrToInt(Edit2.Text); Обчислюємо та виводимо результат за формулою: ShowMessage(FloatToStr(m*(n+n/3))); Запустіть програму на виконання. 6. Розв’яжіть наступні задачі. Задача 3. Сумний дядя Боря запропонував задумливій тьоті Олі вийти за нього заміж. Тьотя Оля обіцяла подумати, думала N років і відмовилась. Сумний дядя Боря запропонував їй іще подумати. Задумлива тьотя Оля думала на M років довше, ніж першого разу, і погодилася. Скільки років сумний дядя Боря не втрачав надії, що задумлива тьотя Оля вийде за нього заміж? Вхідні дані. Числа років M, N вводяться з клавіатури. Вихідні дані. Результат виводиться на монітор. Задача 4. Колі та Толі купили по M пиріжків. Коля з’їв свої пиріжки за X хвилин і став з’їжджати з глузду від заздрощів, глядячи, як Толя їсть кожний пиріжок по Y хвилин. Як довго буде з’їжджати з глузду Коля? Вхідні дані. Число пиріжків М і числа хвилин X, Y вводяться з клавіатури. (X,Y не обов’язково цілі). Вихідні дані. Час з’їжджання з глузду Колі виводиться на монітор. Використовуємо StrToFloat, тому що m, n, k типу real Використовуємо FloatToStr, тому що n*k/m - вираз типу real Використовуємо StrToInt, тому що m, n, типу integer Використовуємо FloatToStr, тому що m*(n+n/3) - вираз типу real: в ньому присутнє ділення
  • 8. Лабораторна робота №5. Розв’язування математичних задач за допомогою Delphi з використанням типів integer, real, string Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Ознайомтеся з таблицею 1 та заповніть таблицю 2. Таблиця 1 Таблиця 2 Математичний вираз Запис у Delphi Математичний вираз Запис у Delphi sin x sin(x) 2𝑥2 − 3𝑦 4𝑥 (2*x*x – 3*y)/(4*x) cos x cos(x) √4𝜋 + |𝑥| sqrt(4*pi+abs(x)) √ 𝑥 sqrt(x) 1 – cos2 |x| 1 – cos(abs(x))*cos(abs(x)) |x| abs(x) 1 3 𝜋𝑅2 𝐻 (1/3)*pi*R*R*H x2 x*x або sqr(x) 𝑥 + 2𝑦 4𝑧 x3 x*x*x √1 − 𝑠𝑖𝑛2 𝑥 π pi 4 3 𝜋𝑅3 ex exp(x) √|𝑥| Ціла частина х trunc(x) |−√ 𝑥| Дробова частина х x – trunc(x) 2𝜋𝑅 Округлене х до цілих round(x) cos(2𝑥 + 𝜋 4𝑧 ) 2. Ознайомтеся та повторіть приклади розв’язування задач у Delphi. Задача 1. Знайдіть площу рівностороннього трикутника зі стороною a см, а також радіус описаного навколо нього кола. Вхідні дані. Сторона а трикутника вводиться з клавіатури. Вихідні дані. Площа трикутника та радіус описаного кола виводяться на екран. Розв’язання. Площа правильного трикутника обчислюється за формулою 𝑆 = 𝑎2 √3 4 , радіус описаного кола 𝑅 = 𝑎 √3 . За цими формулами й будемо виконувати обчислення. Створіть новий проект і розмістіть на формі компоненти, як на мал. нижче: Створіть обробник події OnClick кнопки для обчислення площі. Напишіть туди наступний код: procedure TForm1.Button1Click(Sender: TObject); var S,a:Real; begin a:=StrToFloat(Edit1.Text); //вводимо а S:=a*a*sqrt(3)/4; //обчислюємо площу ShowMessage('Площа: '+FloatToStr(S)); //виводимо площу на екран end; Створіть обробник події OnClick кнопки для обчислення радіусу. Напишіть туди наступний код: procedure TForm1.Button2Click(Sender: TObject); var R,a:Real; begin a:=StrToInt(Edit1.Text); //вводимо а R:=a/sqrt(3); //обчислюємо радіус ShowMessage('Радіус: '+FloatToStr(R)); //виводимо радіус на екран end; Запустіть програму та перевірте правильність її роботи. Задача 2. Дано функцію 𝑓(𝑥) = 𝑥2+cos 𝑥 2 . Обчислити f(x) при довільному значенні х. Вхідні дані. Х вводиться з клавіатури. Вихідні дані. Значення f(x) виводиться на екран. Розв’язання. Створіть форму:
  • 9. Напишіть обробник події OnClick кнопки: procedure TForm1.Button2Click(Sender: TObject); var x,fx:real; begin x:=StrToFloat(Edit1.Text); fx:=(x*x+cos(x))/2; ShowMessage(FloatToStr(fx)); end; Запустіть програму на виконання. 3. Розв’яжіть наступні задачі. Задача 3. Дано прямокутний трикутник з гіпотенузою с і гострим кутом α (в градусах). Обчислити другий гострий кут і катети. Вхідні дані. Довжина гіпотенузи с і гострий кут α вводиться з клавіатури. Вихідні дані. Другий гострий кут і катети виводяться на екран. Вказівки. Другий гострий кут β=900 – α. Катети можна обчислити за формулами: перший 𝑎 = 𝑐 sin 𝛼𝜋 1800, другий b = 𝑐 𝑐𝑜𝑠 𝛼𝜋 1800. Задача 4. Обчислити об’єм правильної чотирикутної піраміди зі стороною основи а і висотою h. Вхідні дані. Сторона основи а і висота h вводяться з клавіатури. Вихідні дані. Об’єм виводиться на екран. Вказівка. 𝑉 = 1 3 𝑆оснℎ = 1 3 𝑎2 ℎ. Задача 5. Обчислити площу трикутника, якщо дано три його сторони. Вхідні дані. Сторони трикутника a, b, c вводяться з клавіатури. Вихідні дані. Площа трикутника виводиться на екран. Вказівка. 𝑆 = √𝑝(𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐), де 𝑝 = 𝑎+𝑏+𝑐 2 (формула Герона для площі трикутника) Задача 6. Одна труба наповнює басейн за M годин, а інша за N годин. За скільки годин вони наповнять басейн, працюючи разом? Вхідні дані. Часи M і N вводяться з клавіатури. Вихідні дані. Час наповнення басейну обома трубами виводиться на екран. Задача 7. Одна бригада виконує роботу за M годин, а дві разом виконали її за N годин. За скільки годин виконає роботу друга бригада, працюючи одна? Вхідні дані. Часи M і N вводяться з клавіатури. Вихідні дані. Час виконання роботи другою бригадою виводиться на екран. Задача 8. Дано два катети прямокутного трикутника. Визначити радіус описаного навколо нього кола. Вхідні дані. Катети прямокутного трикутника a і b вводяться з клавіатури. Вихідні дані. Довжина радіуса описаного кола виводиться на екран. Вказівка. Радіус описаного кола дорівнює половині гіпотенузи, тобто 𝑅 = 𝑐 2 = √𝑎2+𝑏2 2 . Задача 9. Знайти периметр квадрата, рівновеликого прямокутнику зі сторонами M, N. Вхідні дані. Сторони прямокутника M,N вводяться з клавіатури. Вихідні дані. Периметр квадрата виводиться на екран. Вказівка. Рівновеликими називаються фігури, що мають рівну площу. Задача 10. Обчислити площу рівностороннього трикутника зі стороною а. Вхідні дані. Сторона трикутника а вводиться з клавіатури. Вихідні дані. Площа трикутника виводиться на екран. Вказівка. Площа рівностороннього трикутника обчислюється за формулою 𝑆 = 𝑎2 √3 4 .
  • 10. Лабораторна робота №6. Використання оператора if – then для перевірки вхідних даних Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Створіть у Delphi новий проект і розв’яжіть задачу: Якщо Слюника обізвати Хрямзиком, він почне битися ногами і не заспокоїться, доки не вдарить того, хто обізвав, кожною ногою по N разів. Одного разу Бряка його обізвала M разів і отримала за це К ударів. Скільки ніг у Слюника? Вхідні дані. Число ударів кожною ногою N, число обзивань M і загальне число отриманих ударів K вводиться з клавіатури. Вихідні дані. Число ніг Слюника виводиться на екран. Вказівка. Число ніг Слюника K/(M*N). Припустимо, розв’язана задача має такий вигляд: procedure TForm1.Button1Click(Sender: TObject); var m,n,k:integer; begin m:=StrToInt(Edit1.Text); n:=StrToInt(Edit2.Text); k:=StrToInt(Edit3.Text); ShowMessage(FloatToStr(K/(M*N))); end; 2. Запустіть програму на виконання і введіть N=5, M=4, K=51. Число ніг за програмою буде 2.55, але цей результат не має смислу. Очевидно, що вхідні дані до задачі були неправильними, якщо маємо неправильний результат. Виникає проблема: а чи можна, щоб при отриманні неправильного результату програма повідомляла про це, а при отриманні правильного – просто виводила його на екран? 3. Ознайомтеся з поняттями цілої та дробової частини числа. Заповніть пропуски нижче. Ціла частина числа 5,45 дорівнює 5. Дробова частина його 0,45. Ціла частина числа 6,51 дорівнює 6. Дробова частина його 0,51. Ціла частина числа 7,8 дорівнює ____. Дробова частина його ____. Ціла частина числа 0,6 дорівнює ____. Дробова частина його ____. Ціла частина числа 9 дорівнює ____. Дробова частина його ____. Ціла частина числа 10,5 дорівнює ____. Дробова частина його ____. Ціла частина числа 0,025 дорівнює ____. Дробова частина його ____. Ціла частина числа х в Delphi позначається trunc(x). Звідси, дробова частина його буде х - trunc(x). trunc (3.28) = _________ trunc (6.83) = ________ 4.8 – trunc (4.8) = ________ trunc (2.56) = _________ trunc (8.54) = ________ 5.6 – trunc (5.6) = ________ Якщо ціла частина числа дорівнює самому числу, то таке число ціле. Наприклад, trunc(5) =5, trunc(38) = 38, trunc(0) = 0. Заповніть таблицю: Твердженя Так чи Ні Твердженя Так чи Ні Твердженя Так чи Ні Твердженя Так чи Ні 4.5 = trunc(4.5) 7.8 – trunc(7.8)=0.8 trunc(2.5)-2=0 trunc(4.8/2)=2.4 10 = trunc(10) 5.6 – trunc(5) = 5 trunc(3.6) = 3.6 trunc(4.8/2)=2 trunc(4)=trunc(4.5) trunc(2.6)-trunc(3.7) = -1 trunc(4.8)/2=2.4 trunc(7) = 7 4. Оберіть правильний варіант: x:=3.5; z:=4.2 y:=0.5; a:=0.8 trunc(x+y)=x+y (так/ні) trunc(z+a)=z+a (так/ні) trunc(x-y)=x-y (так/ні) trunc(z-a)=z-a (так/ні) trunc(x/y)=x/y (так/ні) trunc(z/a)=z/a (так/ні) trunc(x*y)=x*y (так/ні) trunc(z*a)=z*a (так/ні) trunc(x/(0.5*y))=x/(0.5*y) (так/ні) trunc(6*z/a)=6*z/a (так/ні) 5. Замініть останній рядок процедури на такий: if trunc(K/(M*N))=K/(M*N) then ShowMessage(FloatToStr(K/(M*N))) else ShowMessage(‘Помилка!’); 6. Запустіть програму на виконання і знову введіть N=5, M=4, K=51. Спробуйте ввести інші числа. 7. В останньому рядку були використані ключові слова if, then, else. Слово if означає «якщо», після нього пишеться логічна умова, тобто твердження, яке або істинне або хибне. Якщо логічна умова істинна, то виконується та команда, що стоїть після слова then, яке означає «то потім», «значить». Якщо ж логічна умова хибна, то виконується та команда, яка стоїть після слова else, яке означає «інакше». if – «якщо» Логічна умова then – «то» Після then пишеться команда, яка виконується, якщо логічна умова істинна else – «інакше» »
  • 11. В нашому випадку логічна умова – це умова trunc(K/(M*N))=K/(M*N), яка може бути істинною або хибною в залежності від значень змінних M, N, K. Ця умова фактично означає «число ніг Слюника ціле». Якщо вона істинна, то виконується команда, що стоїть після then: ShowMessage(FloatToStr(K/(M*N))), тобто результат просто виводиться на екран. Якщо ж вона хибна, то виконується команда, що стоїть після else: ShowMessage(‘Помилка!’), тобто на екран виводиться повідомлення про помилку. 8. Приклад 2. Якщо малюка Кузю зважити разом з бабусею, то отримаємо N кг, а якщо зважити бабусю без Кузі, отримаємо M кг. Скільки важить Кузя без бабусі? Розв’язання. Очевидно, що Кузя важить N – M кг. Але з боку користувача можливий неправильний ввід: він може ввести, що Кузя з бабусею важить 70 кг, а бабуся важить 75 кг, і тоді Кузя буде мати від’ємну масу мінус 5 кілограмів. Щоб уникнути таких казусів, треба перед тим, як видавати відповідь, перевірити, що N>M, а не навпаки. Створіть у Delphi новий проект і повторіть розв’язання задачі: procedure TForm1.Button1Click(Sender: TObject); var M,N:real; begin N:=StrToFloat(Edit1.Text); M:=StrToFloat(Edit2.Text); if N>M then ShowMessage('Кузя важить '+FloatToStr(N-M)+' кг') else ShowMessage('Неправильно введені дані!'); end; Спробуйте ввести такі числа, що задовольняють умові задачі та такі, що не задовольняють її. 9. Розв’яжіть наступні задачі, виконуючи перевірку вхідних даних. 1) Петіни друзі придумали задачу про Петю: «Наш друг попався якось нам ввечері на дорозі, і кожен з нас дав йому по шиї 3 рази. Всього Петя отримав N разів по шиї. Скільки нас було?» Вхідні дані. Число ударів по шиї N вводиться з клавіатури. Вихідні дані. Число друзів Петі виводиться на екран. Вказівка. Щоб дані були правильними, N повинно націло ділитися на 3, тоді число друзів буде цілим. 2) Петя придумав задачу про своїх друзів: «Мої друзі об’їлися грушами, і їм довелося пити касторку. Всього друзі випили по 10 ложок кожний. В кожному тюбику по N ложок, а друзі випили всього К тюбиків. Скільки в мене друзів?» Вхідні дані. Число ложок, що випив кожен друг N та число тюбиків К вводяться з клавіатури. Вихідні дані. Число друзів Петі виводиться на екран. Вказівка. Якщо вхідні дані введено правильно, число Петіних друзів буде цілим! 3) Напишіть програму, яка за введеним з клавіатури числом А визначає його модуль |A|. Вхідні дані. Число А вводиться з клавіатури. Вихідні дані. Модуль числа А виводиться на екран. 4) Функція y=sign(x) визначається так: 𝑠𝑖𝑔𝑛(𝑥) = [ 1, якщо 𝑥 > 0 0, якщо 𝑥 = 0 −1, якщо 𝑥 < 0 Напишіть програму, що визначає sign(x) за даним числом x. Вхідні дані. Число х вводиться з клавіатури. Вихідні дані. Значення sign(x) виводиться на екран. 10. Контрольні запитання Заповніть пропуски: Ключове слово if означає _________ Ключове слово then означає _________ Ключове слово else означає _________ Після слова if пишеться _____________________________ Після слова then пишеться команда, яка виконується, коли _____________________________________________________ Після слова else пишеться команда, яка виконується, коли _____________________________________________________
  • 12. Лабораторна робота №7. Розв’язування задач за допомогою оператора if – then. Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Продивіться та повторіть у Delphi приклад розв’язання задач. Задача 1. Бука задумала число Х, а Бяка – число Y. Вони поспорили між собою, що коли Бякине число буде більше Букиного рівно вдвічі, то Бяка покаже Буці язика, а коли Букине число буде відвічі більше Бякиного, то Бука вдарить Бяку по лобі. В усіх інших випадках перемагає дружба. Напишіть програму, яка б по заданих числах X та Y виводила б результат їхнього спору. Вхідні дані. Букине число Х та Бякине число Y вводяться з клавіатури. Вихідні дані. Результат спору виводиться на екран. Розв’язання Напишіть обробник події OnClick кнопки: procedure TForm1.Button1Click(Sender: TObject); var buka, baka: integer; begin buka:=StrToInt(Edit1.Text); baka:=StrToInt(Edit2.Text); if buka=2*baka then ShowMessage('Бука вдарить Бяку') else if baka=2*buka then ShowMessage('Бяка покаже Буці язика') else ShowMessage('Перемогла дружба'); end; Задача 2. Іван - дурак ішов по дорозі і бачить: стоїть стовп, а на ньому три написи: наліво підеш – ще дурнішим станеш, направо підеш – до МММ попадеш, а прямо підеш – хтозна куди попадеш. Напишіть програму, яка за даним напрямком (наліво, направо або прямо) вказує, що станеться з Іваном. Вхідні дані. Напрямок, за яким піде Іван, у вигляді слів «наліво», «направо», «прямо» вводиться з клавіатури. Вихідні дані. Подальша доля Івана виводиться на екран. Розв’язання Обробник події OnClick кнопки: рrocedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text='направо' then ShowMessage('Іван попаде до МММ') else if Edit1.Text='наліво' then ShowMessage('Іван стане ще дурнішим') else if Edit1.Text='прямо' then ShowMessage('Іван попаде хтозна куди') else ShowMessage('Недопустимий напрямок! Можна вводити наліво, направо, прямо'); end; Задача 3. Дівчинка Груня погано запам’ятовує цифри, але добре пам’ятає дні тижня. Допоможіть Груні визначитися, який номер у кожного дня тижня (понеділок – 1, вівторок – 2, середа – 3 і т.д.) Вхідні дані. День тижня вводиться з клавіатури. Вихідні дані. Номер дня тижня виводиться на екран. Обробник події OnClick кнопки: procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text='понеділок' then ShowMessage('1') else if Edit1.Text='вівторок' then ShowMessage('2') else if Edit1.Text='середа' then ShowMessage('3') else if Edit1.Text='четвер' then ShowMessage('4') else if Edit1.Text='п''ятниця' then ShowMessage('5') else if Edit1.Text='субота' then ShowMessage('6') else if Edit1.Text='неділя' then ShowMessage('7') else ShowMessage('Такого дня тижня не існує'); end; 2. Прочитайте теоретичні відомості. Часто буває так, що логічне висловлювання складається з кількох більш простих висловлювань, тобто являється складеним. Наприклад, x>0 – це просте висловлювання, x<5 – також просте висловлювання. А от (x>0) та (x<5) – це складне висловлювання, яке складається з двох простих. (x>0) або (у<5) – також складне висловлювання, в якому зв’язкою служить слово або. Висловлювання не вірно, що х>0 також є логічним висловлюванням. В Delphi слова та, або, не вірно, що позначаються так: Слово В Delphi та and або or невірно, що not Задача 4. Перевірити, чи належить число Х проміжку (-4; 4). Вхідні дані. Число Х вводиться з клавіатури. Вихідні дані. На екран виводяться слова «належить», якщо Х є (-4; 4) або «не належить», якщо Х є (-4; 4).
  • 13. Розв’язання Обробник події OnClick кнопки: procedure TForm1.Button1Click(Sender: TObject); var x:real; begin x:=StrToFloat(Edit1.Text); if (x>-4) and (x<4) then ShowMessage('належить') else ShowMessage('не належить'); end; 3. Розв’яжіть наступні задачі. Задача 5. Якщо третьокласник Коля не зустріне по дорозі жодного першокласника, то він без пригод дійде туди, куди ішов. Якщо він зустріне одного першокласника, то ця пригода минеться для нього щасливо, якщо двох – то напівщасливо, якщо трьох – нещасливо, а якщо чотирьох і більше – він взагалі не дійде. Написати програму, яка б за заданим числом першокласників визначала, що станеться з Колею. Вхідні дані. Число першокласників вводяться з клавіатури. Вихідні дані. Результат зустрічі виводиться на екран («без пригод», «щасливо», «напівщасливо», «нещасливо», «не дійде»). Задача 6. Якщо першокласник Вітя спробує закопати свій щоденник з двійками на глибину меншу, ніж 0,5 м, його швидко викопає собака Жучка і віднесе батькам. Якщо Вітя спробує закопати його на глибину 0,5 – 1 м, то для нього це буде оптимальним варіантом. Якщо глибина закопування буде більшою, ніж 1 м, то він наткнеться на високовольтну лінію і йому буде все одно, вдалося закопати щоденник чи ні. Напишіть програму, яка за заданою глибиною закопування визначатиме, що станеться. Вхідні дані. Глибина закопування вводиться з клавіатури. Вихідні дані. Подія, що відбудеться далі, виводиться на екран («Жучка викопає», «Оптимальний варіант», «Віті буде все одно»). Задача 7. Перевірити, чи належить число X проміжку [10; 20]. Вхідні дані. Число Х вводиться з клавіатури. Вихідні дані. На екран виводяться слова «належить» або «не належить». Задача 8. Перевірити, чи належить число Х проміжку [a, b]. Вхідні дані. Числа Х, a, b вводяться з клавіатури. Вихідні дані. На екран виводяться слова «належить» або «не належить». Задача 9. Перевірити, чи належить число Х хоча б одному з проміжків (-10; -5) та (5; 10). Вхідні дані. Число Х вводиться з клавіатури. Вихідні дані. На екран виводяться слова «належить» або «не належить». Задача 10. Перевірити, чи належить число Х хоча б одному з проміжків (a, b) та (c, d). Вхідні дані. Числа Х, a, b, c, d вводяться з клавіатури. Вихідні дані. На екран виводяться слова «належить» або «не належить». Задачі 11 – 13 (про належність точки прямокутнику). Дано координати точки X, Y. Визначити, чи належить вона прямокутнику, зображеному на мал. нижче: Вхідні дані. Координати точки X, Y вводяться з клавіатури. Вихідні дані. Належність точки прямокутнику виводиться на екран («належить», «не належить»). Задача 11 Задача 12 Задача 13
  • 14. Лабораторна робота №8 Команда InputBox та об’єкт MEMO Прізвище, ім’я учня _______________________________________________________ Клас ____ Завдання 1. Прочитайте теоретичні відомості про команду InputBox та виконайте завдання. Досі ми вводили дані з клавіатури, використовуючи текстові поля Edit. Реалізувати ввід рядків з клавіатури можна й іншим способом – за допомогою команди InputBox. Якщо команда ShowMessage виводить дані на екран, то команда InputBox призначена для вводу даних. Створіть форму, на якій розмістіть лише одну кнопку (Button). Створіть обробник події-щиглика по кнопці Button1. В обробнику напишіть наступне: procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=InputBox('Введите заголовок окна','Заголовок окна:','byka'); Form1.Caption:=s; end; Запустіть програму. При щиглику по кнопці відбувається наступне: з’являється вікно, в якому користувач може ввести довільний рядок. Це вікно виводиться командою InputBox: Дефолт-значення, або значення за умовчанням – це таке значення рядка, яке буде у випадку, коли користувач нічого не введе, а просто натисне ОК. Якщо третій параметр – дефолт-значення – не порожній, тобто не дорівнює '' , то значення за умовчанням з’являється в рядку вводу вікна, як показано на малюнку. Зазвичай другий та третій параметри команди встановлюються порожніми. Наприклад, команда InputBox('Введите заголовок окна','',''); виведе вікно, що показано на мал. нижче: Завдання. Дано зображення вікон, які виводяться командою InputBox. Напроти кожного зображення напишіть команду, яка це вікно виводить. InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox( ____________________, ____________________, ___________________ ) InputBox('Введите заголовок окна','Заголовок окна:','byka'); Перший параметр Заголовок вікна Третій параметр Дефолт-значення Другий параметр Напис у вікні
  • 15. 2. Прочитайте теоретичні відомості про об’єкт MEMO та виконайте завдання. Компонент MEMO знаходиться на вкладці Standard головного вікна Delphi, там же, де й компоненти Label, Button та Edit. Створіть новий проект та розмістіть компонент Memo на формі. Запустіть програму. Компонент Memo являє собою багаторядковий текстовий редактор. Введіть декілька довільних рядків у текстовому полі. Закрийте програму та поверніться до Delphi. В Інспекторі об’єктів знайдіть властивість Lines компонента Memo. Введіть туди 3 рядки: «Іванов», «Петров», «Сидоров». Нумерація рядків в об’єкті Memo починається не з 1, а з 0!!! Тобто, в нашому компоненті зараз 3 рядки: нульовий, перший і другий. 0-й рядок: «Іванов» 1-й рядок: «Петров» 2-й рядок: «Сидоров» Для того, щоб по номеру рядка отримати власне рядок, використовується команда Memo1.Lines.Strings[x] (результат - string), де х – номер рядка. (тобто, замість х в команді Memo1.Lines.Strings треба вказати номер рядка). Команда Memo1.Lines.Strings[0] видасть 0-й рядок МЕМО, Memo1.Lines.Strings[1] видасть 1-й рядок і т.д. Розмістіть на формі кнопку Button, підпишіть її «Показати рядок», створіть обробник події-щиглика по ній і напишіть там: ShowMessage(Memo1.Lines.Strings[0]); Запустіть програму. Що відбувається при запуску? ________________________________________________________ Напишіть в обробнику 1 замість 0. Запустіть програму. Що відбувається? _____________________________________ Напишіть в обробнику 2 замість 1. Запустіть програму. Що відбувається? _____________________________________ Для того, щоб узнати число рядків Memo, треба використати команду Memo1.Lines.Count (результат - integer) Розмістіть на формі ще одну кнопку Button, підпишіть її «Число рядків МЕМО», створіть обробник події-щиглика по ній і напишіть там: ShowMessage(IntToStr(Memo1.Lines.Count)); Перевірте роботу програми. Для того, щоб додати рядок в Memo, можна використовувати команду Memo1.Lines.Add Розмістіть на формі ще одну кнопку Button, підпишіть її «Додати рядок», створіть обробник події-щиглика по ній і напишіть там: Memo1.Lines.Add('Козлов'); Запустіть програму та клацніть по кнопці кілька разів. Що відбувається? ______________________________________ Для того, щоб видалити рядок, треба використовувати команду Memo1.Lines.Delete(х), де х – номер рядка. Команда Memo1.Lines.Delete(0) видалить 0-й рядок МЕМО, Memo1.Lines.Delete(1) видалить 1-й рядок і т.д. Розмістіть на формі ще кнопку Button, підпишіть її «Видалити 0-й рядок», створіть обробник події-щиглика по ній і напишіть там: Memo1.Lines.Delete(0); Запустіть програму та клацніть по кнопці кілька разів. Що відбувається? ______________________________________ Для того, щоб зберегти текст з МЕМО у файл, необхідно використовувати команду Memo1.Lines.SaveToFile, в якій вказати ім’я файлу. Розмістіть на формі ще кнопку Button, підпишіть її «Зберегти», створіть обробник події-щиглика по ній і напишіть там: Memo1.Lines.SaveToFile('d:1.txt'); Запустіть програму. Натисніть кнопку. Перевірте правильність роботи програми. Для того, щоб завантажити з файлу текст у компонент MEMO, необхідно використовувати команду Memo1.Lines.LoadFromFile, у якій вказати ім’я файлу. Розмістіть на формі ще кнопку Button, підпишіть її «Завантажити», створіть обробник події-щиглика по ній і напишіть там: Memo1.Lines.LoadFromFile('d:1.txt'); Запустіть програму. Повністю видаліть текст з МЕМО. Натисніть кнопку. Перевірте правильність роботи програми. 3. Заповніть таблицю Що треба зробити За допомогою якої команди Що треба зробити За допомогою якої команди Отримати рядок Memo за його номером Завантажити з файлу текст у Memo Узнати число рядків Memo Зберегти текст з Memo у файл Додати рядок в Memo Видалити рядок з Memo Об’єкт MEMO