Види навчальної діяльності
Обговорюємо
- У чому полягає особливість пошуку елемента лінійної таблиці, який відповідає заданій умові?
- З якою метою впорядковують дані в лінійній таблиці?
- Чим відрізняється алгоритм пошуку найменшого елемента лінійної таблиці від алгоритму пошуку найбільшого елемента?
Виконуємо самостійно
- Завдання 1. Створіть проект у середовищі Lazarus під назвою Кількість опадів. Згідно умови, дано таблицю кількості опадів протягом року за місяцями. Необхідно визначити: кількість опадів за рік; місяць, в якому кількість опадів була найменшою; місяць, в якому кількість опадів була найбільшою; місяці, в які кількість опадів була менша від 40 мм, та кількість таких місяців. Реалізуйте також обчислення середнього арифметичного значень кількості опадів за рік.
- Створіть новий проект. Розробіть інтерфейс програми згідно скріншотів.
- Опишіть масиви-константи для збереження назв місяців і кількостей опадів як глобальні.
- У процедурі обробки події OnCreate для форми запрограмуйте виведення назв місяців до рядка заголовків стовпців, а значення елементів масиву кількостей опадів - до першого рядка таблиці.
- Створіть процедуру обробки події OnClick для командної кнопки Кількість опадів за рік, мм, користуючись алгоритмом знаходження суми елементів масиву. Реалізуйте обчислення середнього арифметичного кількості опадів за рік.
- Створіть процедуру обробки події OnClick для командної кнопки Найсухіший місяць, користуючись алгоритмом знаходження найменшого елемента масиву.
- Створіть процедуру обробки події OnClick для командної кнопки Найвологіший місяць, користуючись алгоритмом знаходження найбільшого елемента масиву.
- Створіть процедуру обробки події OnClick для командної кнопки Місяці, в які кількість опадів менша від 40, користуючись алгоритмом визначення кількості елементів із заданою властивістю. Додайте до цієї процедури команди для обчислення k - кількості елементів масиву, що задовольняють вищезгаданій умові, і виведення значення цієї кількості.
- Реалізуйте обробку події OnClick при натисненні кнопки Очистити результати.
- Перевірте роботу програми. Виправте помилки, якщо такі з'являться, збережіть зміни.
- Зробіть висновок: як застосовувати типові алгоритми опрацювання одновимірних масивів для розв'язування задач.
var
Form1: TForm1;
const month: array[1..12] of string = ('січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень');
data: array[1..12] of integer = (54, 13, 30, 15, 40, 32, 10, 20, 46, 60, 56, 38);
implementation
// заповнення таблиці даними про місяці і дані опадів
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
StringGrid1.Cells[0,0] := 'місяць';
StringGrid1.Cells[0,1] := 'дані';
For i := 1 to 12 do
begin
StringGrid1.Cells[i,0] := month[i];
StringGrid1.Cells[i,1] := IntToStr(data[i]);
end;
end;
// Обчислення кількості опадів за рік - сума елементів масиву даних про опади
procedure TForm1.Button1Click(Sender: TObject);
var i, sum: Integer;
begin
sum := 0;
For i := 1 to 12 do
sum := sum + data[i];
ListBox1.Items.Add('Кількість опадів за рік: ' + IntToStr(sum) + ' мм.');
ListBox1.Items.Add('Середнє значення: ' + FormatFloat('0.##', sum/12) + ' мм.');
end;
// Найсухіший місяць - найменший елемент масиву (впорядкування за спаданням)
procedure TForm1.Button2Click(Sender: TObject);
var i, c: Integer;
prap: boolean;
m: string;
begin
Repeat
prap := False;
For i := 1 to 11 do
If data[i] < data[i+1] Then
begin
c := data[i];
data[i] := data[i+1];
data[i+1] := c;
m := month[i];
month[i] := month[i+1];
month[i+1] := m;
prap := True;
end;
Until prap = False;
ListBox1.Items.Add('Найсухіший місяць в році: ' + month[12] + '.');
end;
// Найвологіший місяць - найбільший елемент масиву (впорядкування за спаданням)
procedure TForm1.Button3Click(Sender: TObject);
var i, c: Integer;
prap: boolean;
m: string;
begin
Repeat
prap := False;
For i := 1 to 11 do
If data[i] < data[i+1] Then
begin
c := data[i];
data[i] := data[i+1];
data[i+1] := c;
m := month[i];
month[i] := month[i+1];
month[i+1] := m;
prap := True;
end;
Until prap = False;
ListBox1.Items.Add('Найвологіший місяць в році: ' + month[1] + '.');
end;
// Місяці, в які кількість опадів менша від 40 та їх кількість
procedure TForm1.Button4Click(Sender: TObject);
var i, k: Integer;
begin
k := 0;
ListBox1.Items.Add('Місяці, в які кількість опадів менша від 40:');
For i := 1 to 12 do
begin
if StrToInt(StringGrid1.Cells[i,1]) < 40 then
begin
k := k + 1;
ListBox1.Items.Add(StringGrid1.Cells[i,0]);
end;
end;
ListBox1.Items.Add('Кількість місяців з опадами менше 40 мм: ' + IntToStr(k) + '.');
end;
// Очищення результатів виведення
procedure TForm1.Button5Click(Sender: TObject);
begin
ListBox1.Clear;
end;
- Завдання 2. Cтворіть проект Магазин одягу. Згідно умови, у магазині одягу є гнучка система зміни цін. Кожного тижня товар змінював свою ціну згідно таблиці. Створіть проект, у якому за введеною вартістю товару можна обчислити значення ціни товару протягом кожного тижня та вивести її на екран у вигляді таблиці (списку) значень. Зверніть увагу, щоб знайти результат збільшення ціни price на 1%, виконують дію price*1.01; щоб зменшити на 1%, виконують дію price*0.99.
- Cтворення проекту з використанням мови Python
- Відкрийте середовище програмування мовою Python, створіть новий файл і збережіть його під іменем Магазин одягу.
- У вікні редактора коду введіть команди.
- Запустіть проект на виконання і проаналізуйте результат.
- Змініть код програми, наприклад, зменшіть/збільшіть % зміни цін на товари, додайте ще один тиждень зміни ціни тощо.
price = float(input('Введіть вартість товару (у грн.): '))
discount = [1.1, 1.05, 0.93, 0.90]
up_down = 'підвищення'
result = 0
print('Зміна значень ціни товару протягом 4-ох тижнів: ')
for i in range(len(discount)):
if i == 0:
result = price * discount[0]
else:
if discount[i] >= 1:
up_down = 'підвищення'
result = result * discount[i]
else:
up_down = 'зниження'
result = result * discount[i]
print('У {0} тиждень ціна товару становить {1:0.2f} грн. ({2} на {3}%)'.format(i + 1, result, up_down, round(abs(100 - discount[i] * 100))))
- Cтворення проекту з використанням мови Object Pascal
- Створіть новий проект. Розмістіть на формі компоненти і налаштуйте їхні властивості згідно із скріншотом.
- Таблицю з початковими даними заповніть за допомогою пункту Змінити StringGrid... контекстного меню компонента.
- Проаналізуйте програмний код, поданий нижче, і реалізуйте проект.
- Перевірте роботу програми. Виправте помилки, якщо такі з'являться, збережіть зміни.
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
s: real;
a: array[1..4, 1..2] of real;
begin
s := StrToFloat(Edit1.Text);
a[1,2] := s * StrToFloat(StringGrid1.Cells[1,1]);
StringGrid1.Cells[1,2] := FloatToStr(a[1,2]);
for i := 2 to 4 do
begin
a[i,2] := a[i-1,2] * StrToFloat(StringGrid1.Cells[i,1]);
StringGrid1.Cells[i,2] := FloatToStr(a[i,2]);
end;
end;
Домашнє завдання
- Опрацювати підручник: §32-§36 с. 179-202 (Інформатика, 9 клас, автори: Бондаренко О. О., Ластовецький В. В., Пилипчук О. П., Шестопалов Є. А.)