Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки та санітарно-гігієнічних норм.
Повторіть правила безпечної роботи за комп’ютером.
Завдання. Побудуйте математичну модель і створіть проєкт за допомогою циклу з післяумовою для визначення, на скільки років вкладник має покласти х грн до банку, щоб отримати від банку не менше ніж а грн, якщо банк щорічно збільшує вклад на р %.
Побудуємо математичну модель для цієї задачі:
вхідні дані: сума вкладених грошей (х), щорічне збільшення вкладу (р %), сума грошей, не менше якої потрібно отримати від банку (а);
кінцеві результати: кількість років (n);
формули: сума грошей через кожний рік: х = х + х * р / 100.
Відповідний проєкт мовою програмування наведено на малюнку.
Перед циклом змінній n для кількості років присвоюється значення 0, тому що вкладник тільки поклав суму х грн у банк. Вклад буде лежати в банку доти, доки він буде менше потрібної суми а грн. Вкладник забере гроші з банку тільки тоді, коли сума грошей стане рівною або перевищить а грн. Тому логічним виразом циклу з післяумовою буде нерівність x >= a.
У тілі циклу дві команди на обчислення: перша для обчислення суми вкладу через рік (x := x + x * p / 100), а друга для збільшення кількості років на 1 (n := n + 1). Змінна n – кількість років набуває в проєкті тільки цілих значень, а всі інші змінні можуть набувати як цілі, так і дробові значення.
Так як тіло циклу з після умовою в будь-якому випадку виконується завжди хоча б раз до перевірки умови, то після виконання його кількість років збільшиться на 1. А у випадку, якщо число вкладених грошей х введено більше або рівне за кінцеву суму а, то n повинне дорівнювати 0. Тому перевірку умови чи х >= а необхідно зробити до виконання циклу з післяумовою.
Хід роботи:
Відкрийте вікно середовища розробки.
Розмістіть на формі поля, написи і кнопку, як це наведено на малюнку.
Створіть заготовку процедури – обробник події Click для кнопки.
Уведіть фрагмент проєкту:
procedure TForm1.Button1Click(Sender: TObject);
var x, p, a: real; n: integer;
begin
x := StrToFloat (Edit1.Text);
p := StrToFloat (Edit2.Text);
a := StrToFloat (Edit3.Text);
n := 0;
if x >= a then Edit4.Text := 'Грошей і так вистачає'
else begin
Repeat
x := x + x*p/100;
n := n + 1;
Until x >= a;
Edit4.Text := IntToStr (n);
end;
end;
Запустіть проєкт на виконання.
Уведіть для тестування проєкту набір вхідних даних, для якого команди тіла циклу не виконуватимуться жодного разу, наприклад, x = 1000, p = 20, a = 500.
Проаналізуйте результат виконання проєкту та порівняйте його з очікуваним.
Уведіть для тестування проєкту набір вхідних даних, щоб команди тіла циклу виконувалися 1 раз (x = 10000, p = 20, a = 12000). Запишіть його в зошит.
Проаналізуйте результат виконання проєкту та порівняйте його з очікуваним.
Виконайте проєкт ще для 2–3 наборів вхідних даних.
Закрийте всі відкриті вікна.