Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб Делфи.doc
Скачиваний:
6
Добавлен:
19.11.2019
Размер:
898.56 Кб
Скачать

Л абораторна робота №4. Розв’язування задач за допомогою Delphi з використанням типів integer, real, string

Прізвище, ім’я учня _______________________________________________________ Клас ____

Завдання

  1. Заповніть таблиці:

Тип даних

Назва в Delphi

Вираз (обчислення)

Тип результату

Цілі числа

string + string

Раціональні числа

integer + integer

Рядки

integer – integer

integer * integer

integer / integer

(!)

real (+ - * /) real

real (+ - * /) integer

  1. В

    Зверніть увагу, що змінні одного типу можна описувати через кому!

    ідомий фрагмент програми: 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)

  1. Заповніть пропуски: Команда ShowMessage може виводити на екран лише _____________ і не може ________

  2. Запустіть середовище програмування (ПускВсе программыBorland Delphi 7Delphi 7).

  3. Продивіться та повторіть приклад розв’язання задач у 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);

v

Зверніть увагу, що змінні одного типу можна описувати через кому!

ar

m,n,k:real;

begin

end;

Далі треба присвоїти змінним m, n, k те, що користувач ввів з клавіатури. Додайте у процедуру рядки:

m

Використовуємо StrToFloat, тому що m, n, k типу real

:=StrToFloat(Edit1.Text);

n:=StrToFloat(Edit2.Text);

k:=StrToFloat(Edit3.Text);

Надалі обчислення проводяться за відомою вже формулою (додайте в процедуру наступний рядок):

S

Використовуємо FloatToStr, тому що n*k/m - вираз типу real

howMessage(FloatToStr(n*k/m));

Програма готова. Перевірте правильність її роботи.

Зауваження до задачі 1.

  1. Її можна розв’язати іншим способом, не вводячи змінних m, n, k, а написавши просто

ShowMessage(FloatToStr(StrToFloat(Edit2.Text)* StrToFloat(Edit3.text)/ StrToFloat(Edit1.Text)));

  1. Можна «красиво» вивести результат, наприклад так:

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, n, типу integer

m:=StrToInt(Edit1.Text);

n:=StrToInt(Edit2.Text);

Обчислюємо та виводимо результат за формулою:

S

Використовуємо FloatToStr, тому що m*(n+n/3) - вираз типу real: в ньому присутнє ділення

howMessage(FloatToStr(m*(n+n/3)));

Запустіть програму на виконання.

  1. Розв’яжіть наступні задачі.

Задача 3. Сумний дядя Боря запропонував задумливій тьоті Олі вийти за нього заміж. Тьотя Оля обіцяла подумати, думала N років і відмовилась. Сумний дядя Боря запропонував їй іще подумати. Задумлива тьотя Оля думала на M років довше, ніж першого разу, і погодилася. Скільки років сумний дядя Боря не втрачав надії, що задумлива тьотя Оля вийде за нього заміж?

Вхідні дані. Числа років M, N вводяться з клавіатури.

Вихідні дані. Результат виводиться на монітор.

Задача 4. Колі та Толі купили по M пиріжків. Коля з’їв свої пиріжки за X хвилин і став з’їжджати з глузду від заздрощів, глядячи, як Толя їсть кожний пиріжок по Y хвилин. Як довго буде з’їжджати з глузду Коля?

Вхідні дані. Число пиріжків М і числа хвилин X, Y вводяться з клавіатури. (X,Y не обов’язково цілі).

Вихідні дані. Час з’їжджання з глузду Колі виводиться на монітор.