Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки та санітарно-гігієнічних норм.
Повторіть правила безпечної роботи за комп’ютером.
Завантажте і встановіть: Середовище програмування Лазарус (для тих, хто не завантажив)
Контекст: Ви допомагаєте волонтерській організації підбити підсумки збору коштів за тиждень. Кожен елемент масиву — це сума донату, що надійшов за один день.
Завдання: Напишіть програму, яка обчислить загальну суму зібраних коштів за весь період.
Алгоритм: Створіть "скарбничку" (змінну s = 0) і додавайте до неї кожен щоденний внесок, переглядаючи весь список.
Procedure TForm1.Button1Click(Sender: TObject);
var a: array [0..9] of real; i: integer; s: real;
begin
for i := 0 to 9 do a[i] := StrToFloat(Memo1.Lines[i]); // дані з рядка багаторядкового текстового поля перевести в дійсне число і присвоїти елементу одновимірного масиву
s := 0; // початкове значення для змінної, значення якої визначатиме суму значень елементів одновимірного масиву
for i := 0 to 9 do s := s + a[i]; // додавання до змінної s значення чергового елемента одновимірного масиву
Label1.Caption := FloatToStr(s); // виведення результату в напис
end;
Звертаємо вашу увагу: якщо в циклі використовується команда змінення значення певної величини
(у даній задачі s := s + a[i]),
то перед циклом цій змінній обов’язково потрібно присвоїти початкове значення (у даній задачі s := 0).
Контекст: Адміністратор вебпорталу має дані про кількість переглядів сторінки за кожен день місяця. Йому потрібно дізнатися, скільки разів за цей час траплялася аномально низька або конкретна кількість відвідувачів (наприклад, рівно 100).
Завдання: Визначити, скільки днів у масиві значень відвідуваності число дорівнює заданому показнику $X$.
Алгоритм: Використайте "лічильник", який спрацьовує лише тоді, коли дані за день збігаються з шуканим числом.
Для тих, хто вивчає Pascal
Procedure TForm1.Button1Click(Sender: TObject);
var a: array [0..9] of real; i, k: integer; x: real;
begin
for i := 0 to 9 do a[i] := StrToFloat(Memo1.Lines[i]); // введення значень елементів одновимірного масиву
x := StrToFloat(Edit1.Text); // введення заданого числа
k := 0; // лічильник кількості елементів одновимірного масиву, що дорівнюють заданому числу – їх поки що не трапилося жодного
for i := 0 to 9 do
if a[i] = x then k := k + 1; // збільшення на 1 значення лічильника, якщо значення чергового елемента одновимірного масиву дорівнює заданому числу
Label1.Caption := IntToStr(k) + ‘ рази’; // виведення результату в напис з додаванням пояснювального тексту
end;
Контекст: Система моніторингу на складі медикаментів фіксує температуру щогодини. Якщо температура підніметься до критичної позначки (наприклад, +25°C), партія ліків може зіпсуватися.
Завдання: Швидко перевірити, чи зафіксовано в масиві хоча б одне значення, що дорівнює критичному.
Оптимізація: Як тільки датчик знайде небезпечну температуру, програма має негайно вивести "Увага!" і зупинити пошук, не перевіряючи решту даних (економія ресурсів системи).
Алгоритм «Швидкого реагування» (Оптимізований пошук)
Щоб програма працювала максимально швидко, ми використаємо метод «сигнального прапорця».
Встановлення «прапорця»: Створимо логічну змінну f (прапорець), яка спочатку має значення false. Це означає: «Шукане число поки що не знайдено».
Розумний пошук: Запустимо цикл для перевірки елементів масиву. Як тільки ми натрапимо на елемент, що дорівнює заданому числу, ми виконуємо дві дії:
Змінюємо значення f на true («Знайдено!»).
Негайно зупиняємо цикл командою break.
Чому це важливо? Якщо ми шукаємо помилку в системі з мільйоном записів і вона виявилася на другому кроці, команда break дозволить не перевіряти решту 999 998 елементів, зберігаючи ресурси комп'ютера.
Фінальний звіт: Після завершення роботи циклу (або його переривання) програма перевіряє стан прапорця f. Якщо він став true — виводимо підтвердження, якщо залишився false — повідомляємо про відсутність збігів.
Для тих, хто вивчає Pascal
Procedure TForm1.Button1Click(Sender: TObject);
var a: array [0..9] of real; i: integer; x: real; f: boolean;
begin
for i := 0 to 9 do a[i] := StrToFloat(Memo1.Lines[i]);
x := StrToFloat(Edit1.Text);
f := false; // задане число поки що не знайдено
for i := 0 to 9 do
if a[i] = x
then begin
f := true; // задане число є серед значень елементів одновимірного масиву
break; // перериваємо виконання циклу, бо число є в одновимірному масиві
end;
if f then Label1.Caption := ‘Число є’
else Label1.Caption := ‘Числа немає’;
end;
Контекст: У системі обліку кафе зберігаються суми всіх операцій. Деякі з них — це повернення коштів (від’ємні значення), а деякі — реальні продажі (додатні значення).
Завдання: Обчислити середній чек тільки для успішних продажів (додатних значень).
Алгоритм:
Проігноруйте від’ємні суми.
Додайте всі додатні суми в одну змінну.
Порахуйте кількість таких продажів.
Поділіть суму на кількість (врахуйте випадок, якщо продажів взагалі не було, щоб програма не "вилетіла").
Для тих, хто вивчає Pascal
Procedure TForm1.Button1Click(Sender: TObject);
var a: array [0..9] of real; i, k: integer; s, m: real;
begin
for i := 0 to 9 do a[i] := StrToFloat(Memo1.Lines[i]);
s := 0; // початкове значення суми додатних значень елементів масиву
k := 0; // початкове значення кількості додатних значень елементів масиву
for i := 0 to 9 do
if a[i] > 0 then
begin
s := s + a[i]; // додавання додатного значення елемента масиву до їх суми
k := k + 1; // збільшення на 1 кількості додатних значень елементів масиву
end;
if k = 0 then Label1.Caption := ‘Додатних елементів у масиві немає’
else
begin
m := s/k; // обчислення середнього арифметичного
Label1.Caption := Середнє арифметичне: ‘ + FloatToStr(m); // виведення середнього арифметичного
end;
end;
Збережіть усі файли та скриншоти.
Завантажте їх у розділ Ваші роботи на платформі Google ClassRoom.
"Інформатика, 9 клас" (Й.Я. Ривкінд та їнші):
Прочитайте та розберіть теоретичний матеріал пункту 5.2 (стор. 243-248), вправи 1, 2 (стор. 254).
Дайте усні відповіді на усні питання 1-3 (стор. 254).