Скачати
|
Лабораторна робота 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) і двічі клюкніть мишею на ній (див. мал. нижче)
Кнопка (Button) |
Що відбулося? ______________________________________________________________________________
15. Створіть на диску D: папку Delphi Projects, а в ній папку Перший проект. Користуючись кнопкою Save All (Зберегти Все), збережіть вашу програму в папку Перший проект, а потім запустіть програму.
16. Закрийте середовище програмування.
17. Зайдіть в папку Перший проект. Знайдіть та запустіть файл Project1.exe
Лабораторна робота №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 (Події).
Вкладка Events |
Подія OnClick |
Тут треба двічі клацнути мишею |
Знайдіть подію OnClick (при кліці). Подія OnClick кнопки Button1 виникає тоді, коли користувач клюкне по ній. Клацніть двічі мишею по порожньому текстовому полі напроти властивості (див. мал.)
3)
Процедура, що обробляє подію OnClick об’єкта Button1 |
Відбудеться перехід до вікна коду, в якому з’являться наступні рядки:
procedure TForm1.Button1Click(Sender: TObject);
begin
Тут, між словами begin та end, можна писати те, що відбуватиметься, коли користувач клюкне мишею по кнопці |
end;
Напишіть між словами begin та end:
Form1.Caption := ‘а воно робе!’ ;
Властивість Caption об’єкта Form1 |
Нове значення властивості |
Крапка з комою |
Знак присвоювання (встановлення) |
Запустіть програму. Клюкніть мишею на кнопці. Що відбувається? ____________________________
_____________________________________________________________________________________
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_____
Напис на кнопці? ________________________ Колір форми? ____________________________
Текст у текстовому полі? __________________ Напис на мітці? __________________________
Колір напису на мітці? ____________________ Колір текстового поля? ____________________
Лабораторна робота №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 те, що користувач ввів з клавіатури. Додайте у процедуру рядки:
Використовуємо StrToFloat, тому що m, n, k типу real |
m:=StrToFloat(Edit1.Text);
n:=StrToFloat(Edit2.Text);
k:=StrToFloat(Edit3.Text);
Надалі обчислення проводяться за відомою вже формулою (додайте в процедуру наступний рядок):
Використовуємо FloatToStr, тому що n*k/m – вираз типу real |
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;
Потім присвоюємо нашим змінним необхідні значення (додайте у процедуру):
Використовуємо StrToInt, тому що |
m:=StrToInt(Edit1.Text);
n:=StrToInt(Edit2.Text);
Обчислюємо та виводимо результат за формулою:
Використовуємо FloatToStr, тому що m*(n+n/3) – вираз типу real: в ньому присутнє ділення |
ShowMessage(FloatToStr(m*(n+n/3)));
Запустіть програму на виконання.
6. Розв’яжіть наступні задачі.
Задача 3. Сумний дядя Боря запропонував задумливій тьоті Олі вийти за нього заміж. Тьотя Оля обіцяла подумати, думала N років і відмовилась. Сумний дядя Боря запропонував їй іще подумати. Задумлива тьотя Оля думала на M років довше, ніж першого разу, і погодилася. Скільки років сумний дядя Боря не втрачав надії, що задумлива тьотя Оля вийде за нього заміж?
Вхідні дані. Числа років M, N вводяться з клавіатури.
Вихідні дані. Результат виводиться на монітор.
Задача 4. Колі та Толі купили по M пиріжків. Коля з’їв свої пиріжки за X хвилин і став з’їжджати з глузду від заздрощів, глядячи, як Толя їсть кожний пиріжок по Y хвилин. Як довго буде з’їжджати з глузду Коля?
Вхідні дані. Число пиріжків М і числа хвилин X, Y вводяться з клавіатури. (X,Y не обов’язково цілі).
Вихідні дані. Час з’їжджання з глузду Колі виводиться на монітор.
Лабораторна робота №5. Розв’язування математичних задач за допомогою Delphi
з використанням типів integer, real, string
Прізвище, ім’я учня _______________________________________________________
Клас ____
Завдання
1. Ознайомтеся з таблицею 1 та заповніть таблицю 2.
Таблиця 1 Таблиця 2
Математичний вираз |
Запис у Delphi |
|
Математичний вираз |
Запис у Delphi |
sin x |
sin(x) |
|
|
(2*x*x – 3*y)/(4*x) |
cos x |
cos(x) |
|
|
sqrt(4*pi+abs(x)) |
|
sqrt(x) |
|
|
1 – cos(abs(x))*cos(abs(x)) |
|x| |
abs(x) |
|
|
(1/3)*pi*R*R*H |
x2 |
x*x або sqr(x) |
|
|
|
x3 |
x*x*x |
|
|
|
π |
pi |
|
|
|
ex |
exp(x) |
|
|
|
Ціла частина х |
trunc(x) |
|
| | |
|
Дробова частина х |
x – trunc(x) |
|
|
|
Округлене х до цілих |
round(x) |
|
|
|
2. Ознайомтеся та повторіть приклади розв’язування задач у Delphi.
Задача 1. Знайдіть площу рівностороннього трикутника зі стороною a см, а також радіус описаного навколо нього кола.
Вхідні дані. Сторона а трикутника вводиться з клавіатури.
Вихідні дані. Площа трикутника та радіус описаного кола виводяться на екран.
Розв’язання. Площа правильного трикутника обчислюється за формулою , радіус описаного кола . За цими формулами й будемо виконувати обчислення.
Створіть новий проект і розмістіть на формі компоненти, як на мал. нижче:
Створіть обробник події 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. Дано функцію . Обчислити 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 – α. Катети можна обчислити за формулами: перший , другий
b .
Задача 4. Обчислити об’єм правильної чотирикутної піраміди зі стороною основи а і висотою h.
Вхідні дані. Сторона основи а і висота h вводяться з клавіатури.
Вихідні дані. Об’єм виводиться на екран.
Вказівка. .
Задача 5. Обчислити площу трикутника, якщо дано три його сторони.
Вхідні дані. Сторони трикутника a, b, c вводяться з клавіатури.
Вихідні дані. Площа трикутника виводиться на екран.
Вказівка. (формула Герона для площі трикутника)
Задача 6. Одна труба наповнює басейн за M годин, а інша за N годин. За скільки годин вони наповнять басейн, працюючи разом?
Вхідні дані. Часи M і N вводяться з клавіатури.
Вихідні дані. Час наповнення басейну обома трубами виводиться на екран.
Задача 7. Одна бригада виконує роботу за M годин, а дві разом виконали її за N годин. За скільки годин виконає роботу друга бригада, працюючи одна?
Вхідні дані. Часи M і N вводяться з клавіатури.
Вихідні дані. Час виконання роботи другою бригадою виводиться на екран.
Задача 8. Дано два катети прямокутного трикутника. Визначити радіус описаного навколо нього кола.
Вхідні дані. Катети прямокутного трикутника a і b вводяться з клавіатури.
Вихідні дані. Довжина радіуса описаного кола виводиться на екран.
Вказівка. Радіус описаного кола дорівнює половині гіпотенузи, тобто .
Задача 9. Знайти периметр квадрата, рівновеликого прямокутнику зі сторонами M, N.
Вхідні дані. Сторони прямокутника M,N вводяться з клавіатури.
Вихідні дані. Периметр квадрата виводиться на екран.
Вказівка. Рівновеликими називаються фігури, що мають рівну площу.
Задача 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(‘Помилка!’);
if – |
then – «то» |
Після then пишеться команда, яка виконується, якщо логічна умова істинна |
else – |
Логічна умова |
6. Запустіть програму на виконання і знову введіть N=5, M=4, K=51. Спробуйте ввести інші числа.
7. В останньому рядку були використані ключові слова if, then, else. Слово if означає «якщо», після нього пишеться логічна умова, тобто твердження, яке або істинне або хибне. Якщо логічна умова істинна, то виконується та команда, що стоїть після слова 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) визначається так:
Напишіть програму, що визначає 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(‘Введите заголовок окна’,’Заголовок окна:’,‘byka’); |
|
Перший параметр Заголовок вікна |
|
|
Третій параметр Дефолт-значення |
Дефолт-значення, або значення за умовчанням – це таке значення рядка, яке буде у випадку, коли користувач нічого не введе, а просто натисне ОК. Якщо третій параметр – дефолт-значення – не порожній, тобто не дорівнює ” , то значення за умовчанням з’являється в рядку вводу вікна, як показано на малюнку.
Зазвичай другий та третій параметри команди встановлюються порожніми. Наприклад, команда
InputBox(‘Введите заголовок окна’,”,”);
виведе вікно, що показано на мал. нижче:
Завдання. Дано зображення вікон, які виводяться командою InputBox. Напроти кожного зображення напишіть команду, яка це вікно виводить.
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
|
InputBox( ____________________, ____________________, ___________________ ) |
2. Прочитайте теоретичні відомості про об’єкт MEMO та виконайте завдання.
Об’єкт 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 |
|
Leave a Reply
Щоб відправити коментар вам необхідно авторизуватись.