Види навчальної діяльності
Діємо разом
- Вправа 1. На гральній дошці, яка має форму прямокутної таблиці із 5 стовпців і 5 рядків, випадково розміщуються білі і чорні фігури. У середовищі Lazarus створіть проект Гра, у якому після запуску гри фігури розташовуються у таблиці випадковим чином й виводиться повідомлення, фігур якого кольору на полі для гри виявилося більше.
- Створення проекту з використанням мови Object Pascal
- Відкрийте середовище Lazarus, створіть новий проект, розмістіть на екранній формі об'єкти, подані на скріншоті, надайте значення їхнім властивостям самостійно.
- Створіть процедуру опрацювання події натиснення кнопки Старт. Скористайтеся програмним кодом, поданим нижче, для реалізації проекту.
- Виконайте проект. Виправте помилки, якщо такі з'являться, збережіть зміни.
procedure TForm1.Button1Click(Sender: TObject);
var a: array[1..5,1..5] of string;
i, j, k: integer;
begin
Randomize;
k := 0;
for i := 1 to 5 do
for j := 1 to 5 do
begin
if random(2) = 0 then
a[i,j] := 'w' // w - white (білий)
else
a[i,j] := 'b'; // b - black (чорний)
StringGrid1.Cells[i,j] := a[i,j];
// обчислення кількості білих фігур
if StringGrid1.Cells[i,j] = 'w' then k := k + 1;
end;
Edit1.Text := IntToStr(k);
Edit2.Text := IntToStr(25 - k);
end;
- Вправа 2. У деяких видах спортивних змагань виступ спортсмена оцінюється десятьма суддями. Із сукупності виставлених ними балів вилучається найвищий і найнижчий бали. На основі решти балів обчислюється середнє арифметичне, яке й зараховується спортсмену як оцінка його виступу. Судді користуються системою, виставляючи оцінки від 0 до 10. Розробіть проект Спортивні змагання, у якому за виставленими суддівськими оцінками та вказаними правилами розрахунку визначити середню оцінку виступу спортсмена.
- Створення проекту з використанням мови Object Pascal
- Відкрийте середовище Lazarus і створіть новий проект, розмістіть на екранній формі об'єкти, як на скріншоті, надайте значенням їхнім властивостям самостійно.
- Створіть процедуру опрацювання події OnCreate, проаналізуйте і використайте наступний програмний код у цій процедурі.
- Створіть процедуру опрацювання події натиснення кнопки Підсумок. Скористайтеся наступним програмним кодом для даної процедури.
- Виконайте проект. Виправте помилки, якщо такі з'являться, збережіть зміни.
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
StringGrid1.Cells[0,0] := 'Суддя';
StringGrid1.Cells[0,1] := 'Оцінка';
for i := 1 to 10 do
StringGrid1.Cells[i,0] := IntToStr(i);
end;
procedure TForm1.Button1Click(Sender: TObject);
var i, max, min: integer;
s: real;
a: array[1..10] of integer;
begin
// введення елементів масиву випадково із діапазону
Randomize;
for i := 1 to 10 do
begin
a[i] := random(10);
StringGrid1.Cells[i,1] := IntToStr(a[i]);
end;
// пошук найбільшого, найменшого елемента масиву та суми значень елементів
max := a[1];
min := a[1];
s := a[1];
for i := 2 to 10 do
begin
if a[i] < min then min := a[i];
if a[i] > max then max := a[i];
s := s + a[i];
end;
s := s - min - max;
s := s / 8;
Edit1.Text := FloatToStr(s);
end;
- Запишіть оператор для обчислення суми елементів першого рядка масиву A[1..5,1..5].
- Запишіть фрагмент програмного коду для заміни нулями парних елементів масиву A[1..5,1..5].
- Знайдіть максимальний елемент другого стовпця масиву B[1..4,1..5].
Виконуємо самостійно
- Завдання 1. У 5 міст відправили вагони з десятьма різними видами товарів. Створіть проект Товарообіг у середовищі Lazarus для обчислення загальної маси продукції, відправленої в кожне місто, і загальної маси продукції кожного виду товару.
- У середовищі Lazarus створіть новий проект і розмістіть на екранній формі об'єкти, як на скріншоті, надайте значенням їхнім властивостям самостійно.
- Опишіть глобальні змінні і константу для збереження масивів: towns - назви 5-ти міст, goods - масив із 10 назв різних видів товарів, mass - двовимірний масив цілих значень маси товару кожного виду.
- Створіть процедуру опрацювання події OnCreate проаналізувавши і скориставшись поданим нижче програмним кодом.
- Створіть процедуру обробки події OnClick для кнопки Обчислити. Використайте для цього програмний код, поданий нижче.
- Перевірте роботу програми, запустивши проект на виконання. Виправте помилки, якщо такі з'являться, збережіть зміни.
const towns: array[1..5] of string = ('Київ', 'Луцьк', 'Дніпро', 'Одеса', 'Харків'); // масив назв міст
var
Form1: TForm1;
goods: array[1..10] of string; // масив товарів
mass: array[1..5,1..10] of integer; // масив значень маси товарів
implementation
procedure TForm1.FormCreate(Sender: TObject);
var i, j: Integer;
begin
ComboBox1.Items.Clear; // очищення списку Обрати місто
ComboBox2.Items.Clear; // очищення списку Обрати товар
For i := 1 to 5 do
begin
// формування у таблиці назв міст
StringGrid1.Cells[0,i] := towns[i];
// заповнення списку Обрати місто
ComboBox1.Items.Add(towns[i]);
end;
For i := 1 to 10 do
begin
// формування у таблиці назв товарів
goods[i] := 'Товар' + IntToStr(i);
StringGrid1.Cells[i,0] := goods[i];
// заповнення списку Обрати товар
ComboBox2.Items.Add(goods[i]);
end;
// заповнення масиву mass і таблиці значеннями маси товару випадковим чином
Randomize;
for i := 1 to 5 do
for j := 1 to 10 do
begin
mass[i,j] := random(100) + random(50);
StringGrid1.Cells[j,i] := FloatToStr(mass[i,j]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i, j, s_town, s_good, row, col: Integer;
begin
s_town := 0; // сума маси продукції, відправленої в обране місто
s_good := 0; // сума маси продукції обраного виду товару
// вибір із списку міст
row := ComboBox1.ItemIndex;
If row <> -1 then
begin
for j := 1 to 10 do
s_town := s_town + mass[row+1,j];
Edit1.Text := IntToStr(s_town);
end
else
Edit1.Text := '';
// вибір із списку товарів
col := ComboBox2.ItemIndex;
If col <> -1 then
begin
for i := 1 to 5 do
s_good := s_good + mass[i,col+1];
Edit2.Text := IntToStr(s_good);
end
else
Edit2.Text := '';
end;
- Завдання 2. Створіть проект Робота з двовимірним масивом у середовищі Lazarus. Заповніть двовимірний масив a[1..6,1..7] випадковими цілими числами з діапазону [-50;50] і визначте: а) суму елементів k-того рядка; б) середні арифметичні значення елементів кожного рядка; в) максимальні значення для кожного стовпця; г) кількість додатних елементів k-того рядка.
- Створіть інтерфейс програми згідно зразка. Для таблиці StringGrid1 задайте значення властивостей ColCount = 8, RowCount = 7.
- Опишіть масив a[1..6,1..7] як глобальний.
- У процедурі обробки події OnCreate для форми запрограмуйте: виведення заголовків рядків і стовпців таблиці StringGrid1; заповнення масиву a випадковими числами з діапазону [-50;50] і виведення значень елементів до таблиці StringGrid1.
- У процедурі обробки події OnClick для кнопки Сума елементів рядка запрограмуйте: введення номера рядка k з текстового поля Edit1; знаходження суми елементів k-того рядка; виведення значення суми в текcтове поле Edit2.
- Створіть процедуру обробки події OnClick для кнопки Середні арифметичні по рядках. Проаналізуйте, які дії виконуються для кожного рядка програмного коду, поданого нижче.
- Створіть процедуру обробки події OnClick для кнопки Максимальні у стовпцях, скориставшись наступним програмним кодом.
- Створіть процедуру обробки події OnClick для кнопки Кількість додатних рядка, скориставшись наступним програмним кодом (номер рядка задається в текстовому полі Edit5).
- Перевірте роботу програми. Збережіть проект.
var
Form1: TForm1;
a: array[1..6,1..7] of Integer;
implementation
procedure TForm1.FormCreate(Sender: TObject);
var i, j:integer;
begin
Randomize;
For i := 1 to 6 do StringGrid1.Cells[0,i] := IntToStr(i);
For j := 1 to 7 do StringGrid1.Cells[j,0] := IntToStr(j);
For i := 1 to 6 do
For j := 1 to 7 do
begin
a[i,j] := random(100) - 50; // обчислення елемента масиву a
StringGrid1.Cells[j,i] := IntToStr(a[i,j]); // виведення a[i,j]
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s_row, j, k: integer;
begin
s_row := 0; // сума у вибраному рядку
k := StrToInt(Edit1.Text); // номер рядка
for j := 1 to 7 do
begin
s_row := s_row + StrToInt(StringGrid1.Cells[j,k]);
end;
Edit2.Text := IntToStr(s_row);
end;
procedure TForm1.Button2Click(Sender: TObject);
var i, j, sum: integer;
sr: real;
r: String;
begin
r := '';
For i := 1 to 6 do
begin
sum := 0; // перед початком додавання сума обнуляється
For j := 1 to 7 do sum := sum + a[i,j]; // додавання елементів і-го рядка
sr := sum / 7; // середнє арифметичне і-го рядка
r := r + FormatFloat('0.0', sr) + ' '; // формування рядка відповіді r
end;
Edit3.Text := r;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i, j, max_col: integer;
r: String;
begin
r := '';
For j := 1 to 7 do
begin
max_col := StrToInt(StringGrid1.Cells[j,1]);
For i := 1 to 6 do
if StrToInt(StringGrid1.Cells[j,i]) > max_col then
max_col := StrToInt(StringGrid1.Cells[j,i]);
r := r + IntToStr(max_col) + ' '; // формування рядка відповіді r
end;
Edit4.Text := r;
end;
procedure TForm1.Button4Click(Sender: TObject);
var k_row, j, k: integer;
begin
k_row := 0; // кількість додатних у вибраному рядку
k := StrToInt(Edit5.Text); // номер рядка
for j := 1 to 7 do
begin
if StrToInt(StringGrid1.Cells[j,k]) > 0 then
k_row := k_row + 1;
end;
Edit6.Text := IntToStr(k_row);
end;
Домашнє завдання
- Опрацювати підручник: §39 с. 217-222 (Інформатика, 9 клас, автори: Бондаренко О. О., Ластовецький В. В., Пилипчук О. П., Шестопалов Є. А.)