Поділіться своєю думкою про онлайн уроки інформатики. Пройдіть анонімне опитування на головній сторінці сайту
Доброго дня, діти! Сьогодні ми з вами поговоримо про дуже цікаву і практичну тему — події, обробники подій та вікна повідомлень. Уявіть, якби ваші улюблені програми та ігри не реагували на ваші дії: клацання миші, натискання клавіш або введення тексту. Було б нудно, чи не так? Саме завдяки подіям і їх обробникам комп'ютерні програми стають інтерактивними і зручними у використанні.
Актуальність теми
Події — це невід'ємна частина сучасних програм. Вони забезпечують взаємодію користувача із програмою. Наприклад, натискання кнопки "Відправити" у соціальних мережах викликає обробку події, яка відправляє ваше повідомлення. Або ж ігри: рух персонажа, стрільба, відкриття інвентаря — усе це події. Вивчення подій і обробників є важливим етапом у розумінні принципів програмування.
Вікна повідомлень — це зручний спосіб повідомити користувача про стан програми, попросити підтвердження чи попередити про помилку. Вони додають зручності та ефективності програмам.
Основні теоретичні відомості
Що таке подія? Подія — це будь-яка дія, що може статися в програмі або операційній системі. Наприклад:
Клацання миші;
Натискання клавіші;
Зміна тексту в полі введення.
Що таке обробник подій? Обробник подій — це функція або процедура, яка виконується у відповідь на певну подію. Наприклад, якщо ви натиснули кнопку, обробник події виконає код, пов'язаний із цією кнопкою.
Вікна повідомлень: Вікна повідомлень — це спеціальні діалогові вікна, які відображають інформацію або просять виконати певну дію. У Python для цього часто використовується бібліотека tkinter, а в Lazarus — компонент MessageDlg.
Приклад коду обробника події:
У Python (tkinter):
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def on_button_click():
messagebox.showinfo("Повідомлення", "Ви натиснули кнопку!")
window = tk.Tk()
button = tk.Button(window, text="Натисни мене", command=on_button_click)
button.pack()
window.mainloop()
У Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Ви натиснули кнопку!');
end;
Задачі
Умова: Створити програму, яка виводить повідомлення "Привіт, світе!" при натисканні кнопки.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def on_click():
messagebox.showinfo("Привіт", "Привіт, світе!")
window = tk.Tk()
button = tk.Button(window, text="Привіт", command=on_click)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Елементи форми:
TButton (Button1).
Код:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Привіт, світе!');
end;
Умова: Програма повинна перевіряти, чи число є парним або непарним, і виводити відповідне повідомлення.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def check_number():
num = int(entry.get())
if num % 2 == 0:
messagebox.showinfo("Результат", "Число парне.")
else:
messagebox.showinfo("Результат", "Число непарне.")
window = tk.Tk()
entry = tk.Entry(window)
entry.pack()
button = tk.Button(window, text="Перевірити", command=check_number)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Елементи форми:
TEdit (Edit1);
TButton (Button1);
TLabel (Label1).
Код:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
var
num: Integer;
begin
num := StrToInt(Edit1.Text);
if num mod 2 = 0 then
ShowMessage('Число парне.')
else
ShowMessage('Число непарне.');
end;
Умова: Введіть два числа та оберіть операцію (додавання, віднімання, множення або ділення). Програма повинна вивести результат.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def calculate():
num1 = int(entry1.get())
num2 = int(entry2.get())
operation = entry3.get()
if operation == "+":
result = num1 + num2
elif operation == "-":
result = num1 - num2
elif operation == "*":
result = num1 * num2
elif operation == "/":
result = num1 / num2
else:
messagebox.showerror("Помилка", "Невідома операція!")
return
messagebox.showinfo("Результат", f"Результат: {result}")
window = tk.Tk()
entry1 = tk.Entry(window)
entry1.pack()
entry2 = tk.Entry(window)
entry2.pack()
entry3 = tk.Entry(window)
entry3.pack()
button = tk.Button(window, text="Обчислити", command=calculate)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Елементи форми:
TEdit (Edit1, Edit2, Edit3);
TButton (Button1);
TLabel (Label1).
Код:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
var
num1, num2: Double;
operation: String;
result: Double;
begin
num1 := StrToFloat(Edit1.Text);
num2 := StrToFloat(Edit2.Text);
operation := Edit3.Text;
if operation = '+' then
result := num1 + num2
else if operation = '-' then
result := num1 - num2
else if operation = '*' then
result := num1 * num2
else if operation = '/' then
result := num1 / num2
else
begin
ShowMessage('Невідома операція!');
Exit;
end;
ShowMessage('Результат: ' + FloatToStr(result));
end;
Умова: Створіть програму, яка виводить повідомлення "Привіт, учню!" при натисканні кнопки.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def greet():
messagebox.showinfo("Привітання", "Привіт, учню!")
window = tk.Tk()
button = tk.Button(window, text="Привіт!", command=greet)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TButton на форму.
У властивості Caption кнопки задати текст "Привіт!".
Подія: налаштувати обробник OnClick.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Привіт, учню!');
end;
Умова: Створіть програму, яка запитує ім'я користувача в текстовому полі та виводить привітання з цим іменем при натисканні кнопки.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def greet_user():
name = entry.get()
messagebox.showinfo("Привітання", f"Привіт, {name}!")
window = tk.Tk()
entry = tk.Entry(window)
entry.pack()
button = tk.Button(window, text="Сказати привіт", command=greet_user)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TEdit на форму (для введення імені).
Додати компонент TButton (кнопка "Привіт").
Налаштувати обробник OnClick для кнопки.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Привіт, ' + Edit1.Text + '!');
end;
Умова: Створіть програму, в якій натискання кнопки змінює текст у полі.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
def change_text():
label.config(text="Текст змінено!")
window = tk.Tk()
label = tk.Label(window, text="Початковий текст")
label.pack()
button = tk.Button(window, text="Змінити текст", command=change_text)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TLabel на форму (з початковим текстом "Початковий текст").
Додати компонент TButton (кнопка "Змінити текст").
Налаштувати обробник OnClick для кнопки.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Текст змінено!';
end;
Ці задачі допоможуть учням краще зрозуміти роботу з подіями, обробниками подій та вікнами повідомлень. Завдання прості, зрозумілі й швидкі у виконанні, що робить їх ідеальними для початківців.
Умова: Створіть програму, яка підраховує, скільки разів було натиснуто кнопку, і виводить цей лічильник на екрані.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
counter = 0
def count_clicks():
global counter
counter += 1
label.config(text=f"Натискань: {counter}")
window = tk.Tk()
label = tk.Label(window, text="Натискань: 0")
label.pack()
button = tk.Button(window, text="Натисни мене", command=count_clicks)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TLabel на форму (початковий текст: "Натискань: 0").
Додати компонент TButton (кнопка "Натисни мене").
Налаштувати обробник OnClick для кнопки.
Оголосити глобальну змінну для лічильника.
Код у Lazarus:
pascal
Копіювати код
var
ClickCounter: Integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(ClickCounter);
Label1.Caption := 'Натискань: ' + IntToStr(ClickCounter);
end;
initialization
ClickCounter := 0;
Умова: Створіть програму, яка перевіряє, чи є введене число парним або непарним, і показує результат у вікні повідомлення.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def check_parity():
try:
number = int(entry.get())
if number % 2 == 0:
messagebox.showinfo("Результат", "Число парне")
else:
messagebox.showinfo("Результат", "Число непарне")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть ціле число!")
window = tk.Tk()
entry = tk.Entry(window)
entry.pack()
button = tk.Button(window, text="Перевірити", command=check_parity)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TEdit на форму (для введення числа).
Додати компонент TButton (кнопка "Перевірити").
Налаштувати обробник OnClick для кнопки.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
var
Number: Integer;
begin
try
Number := StrToInt(Edit1.Text);
if Number mod 2 = 0 then
ShowMessage('Число парне')
else
ShowMessage('Число непарне');
except
ShowMessage('Будь ласка, введіть ціле число!');
end;
end;
Умова: Створіть програму, яка перевіряє, чи є введене число додатним, від’ємним чи нулем, і виводить відповідне повідомлення.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
from tkinter import messagebox
def check_sign():
try:
number = float(entry.get())
if number > 0:
messagebox.showinfo("Результат", "Число додатне")
elif number < 0:
messagebox.showinfo("Результат", "Число від'ємне")
else:
messagebox.showinfo("Результат", "Число дорівнює нулю")
except ValueError:
messagebox.showerror("Помилка", "Будь ласка, введіть число!")
window = tk.Tk()
entry = tk.Entry(window)
entry.pack()
button = tk.Button(window, text="Перевірити", command=check_sign)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TEdit на форму (для введення числа).
Додати компонент TButton (кнопка "Перевірити").
Налаштувати обробник OnClick для кнопки.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
var
Number: Double;
begin
try
Number := StrToFloat(Edit1.Text);
if Number > 0 then
ShowMessage('Число додатне')
else if Number < 0 then
ShowMessage('Число від''ємне')
else
ShowMessage('Число дорівнює нулю');
except
ShowMessage('Будь ласка, введіть число!');
end;
end;
Умова: Створіть програму, яка відображає певний текст у мітці, коли користувач натискає на кнопку.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
def show_message():
label.config(text="Привіт! Ви натиснули кнопку.")
window = tk.Tk()
label = tk.Label(window, text="")
label.pack()
button = tk.Button(window, text="Натисни мене", command=show_message)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TLabel на форму (початковий текст порожній).
Додати компонент TButton (кнопка "Натисни мене").
Налаштувати обробник OnClick для кнопки.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Привіт! Ви натиснули кнопку.';
end;
Умова: Створіть програму, яка збільшує число в мітці на одиницю кожного разу, коли користувач натискає кнопку.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
counter = 0
def increase_number():
global counter
counter += 1
label.config(text=f"Число: {counter}")
window = tk.Tk()
label = tk.Label(window, text="Число: 0")
label.pack()
button = tk.Button(window, text="Збільшити", command=increase_number)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TLabel на форму (початковий текст: "Число: 0").
Додати компонент TButton (кнопка "Збільшити").
Налаштувати обробник OnClick для кнопки.
Оголосити глобальну змінну для збереження числа.
Код у Lazarus:
pascal
Копіювати код
var
Counter: Integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(Counter);
Label1.Caption := 'Число: ' + IntToStr(Counter);
end;
initialization
Counter := 0;
Умова: Створіть програму, яка змінює колір тексту в мітці на червоний після натискання кнопки.
Розв'язок на Python
python
Копіювати код
import tkinter as tk
def change_color():
label.config(fg="red", text="Текст став червоним!")
window = tk.Tk()
label = tk.Label(window, text="Звичайний текст", fg="black")
label.pack()
button = tk.Button(window, text="Змінити колір", command=change_color)
button.pack()
window.mainloop()
Розв'язок на Lazarus
Алгоритм створення проєкту:
Додати компонент TLabel на форму (початковий текст: "Звичайний текст").
Додати компонент TButton (кнопка "Змінити колір").
Налаштувати обробник OnClick для кнопки.
Код у Lazarus:
pascal
Копіювати код
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Font.Color := clRed;
Label1.Caption := 'Текст став червоним!';
end;
Інструкція: Виберіть одну правильну відповідь на кожне запитання. Після кожного питання подано правильну відповідь.
Питання 1-10: Теоретичні основи
Що таке подія у програмуванні?
A) Код, який виконується автоматично при запуску програми.
B) Дія, яка відбувається в програмі (наприклад, натискання кнопки).
C) Змінна, яку можна редагувати під час виконання програми.
D) Інструкція для збереження даних.
Правильна відповідь: B
Що таке обробник подій?
A) Компонент, який змінює вигляд форми.
B) Процедура або функція, яка виконується у відповідь на подію.
C) Операція для маніпулювання масивами.
D) Список команд для закриття програми.
Правильна відповідь: B
Що з перерахованого є прикладом події?
A) Натискання кнопки.
B) Результат виконання алгоритму.
C) Пошук даних у файлі.
D) Завантаження ОС.
Правильна відповідь: A
Як називається елемент у Python, який викликає обробник подій?
A) Віджет.
B) Подія.
C) Інтерфейс.
D) Мітка.
Правильна відповідь: A
Яка з подій в Lazarus виконується при натисканні кнопки?
A) OnKeyPress
B) OnClick
C) OnMouseOver
D) OnActivate
Правильна відповідь: B
Що означає команда messagebox.showinfo у Python?
A) Відображення вікна повідомлення з інформацією.
B) Створення мітки на формі.
C) Виконання циклу.
D) Збереження файлу.
Правильна відповідь: A
Який з елементів є прикладом графічного інтерфейсу?
A) Клас.
B) Мітка (Label).
C) Масив.
D) Функція.
Правильна відповідь: B
Для чого використовується метод bind у Python?
A) Для додавання змінних у форму.
B) Для прив’язки події до обробника.
C) Для зміни кольору тексту.
D) Для запуску циклу.
Правильна відповідь: B
Яка властивість кнопки в Lazarus змінює її текст?
A) Text
B) Caption
C) Name
D) Label
Правильна відповідь: B
Що таке TButton у Lazarus?
A) Елемент для введення тексту.
B) Елемент для створення кнопок.
C) Елемент для малювання.
D) Елемент для збереження файлу.
Правильна відповідь: B
Питання 11-20: Практичне використання
Що відбудеться, якщо у Lazarus двічі клацнути на кнопці у режимі конструктора?
A) Відкриється код обробника подій для цієї кнопки.
B) Кнопка змінить свій колір.
C) Кнопка видалиться з форми.
D) Нічого не зміниться.
Правильна відповідь: A
Як у Python викликати функцію після натискання кнопки?
A) Використати метод command.
B) Використати цикл.
C) Використати оператор if.
D) Використати змінну.
Правильна відповідь: A
Яка функція у Python відкриває вікно повідомлення?
A) TkMessageBox.show()
B) messagebox.showinfo()
C) info.showMessage()
D) MessageBox()
Правильна відповідь: B
Що відбудеться, якщо у Lazarus ввести невірний тип для властивості?
A) Програма буде скомпільована з помилками.
B) Програма продовжить працювати без помилок.
C) Програма автоматично виправить тип.
D) Програма виведе вікно повідомлення.
Правильна відповідь: A
Яка подія в Lazarus викликається при натисканні на елемент на формі?
A) OnShow
B) OnClick
C) OnClose
D) OnResize
Правильна відповідь: B
Який метод у Python дозволяє прив’язати подію до кнопки?
A) .bind()
B) .addEventListener()
C) .onClick()
D) .click()
Правильна відповідь: A
Як в Python обробити подію натискання клавіші?
A) Використати метод bind для прив'язки клавіші.
B) Використати метод click.
C) Використати оператор if.
D) Використати метод keyPress.
Правильна відповідь: A
Яка подія в Lazarus викликається при закритті форми?
A) OnClose
B) OnActivate
C) OnDeactivate
D) OnResize
Правильна відповідь: A
Що таке "обробник подій" у Python?
A) Змінна, яка зберігає дані про події.
B) Код, який виконується у відповідь на подію (наприклад, натискання кнопки).
C) Клас, який управляє всіма подіями програми.
D) Інтерфейс для створення кнопок.
Правильна відповідь: B
Який з наступних типів подій НЕ є подією натискання кнопки?
A) OnClick
B) OnMouseDown
C) OnEnter
D) OnHover
Правильна відповідь: D
Питання 21-30: Завдання на логічне мислення
Як у Lazarus змінити колір фону форми?
A) Вибрати властивість Color і змінити її значення.
B) Використати команду SetBackgroundColor.
C) Використати метод ChangeBackground().
D) Нічого не змінювати.
Правильна відповідь: A
Що відбудеться, якщо в Python використовувати команду root.mainloop()?
A) Викликається основний цикл програми, і програма починає обробляти події.
B) Програма завершується.
C) Програма починає відображати вікна повідомлень.
D) Програма не реагує на події.
Правильна відповідь: A
Що таке вікно повідомлення в Lazarus?
A) Спеціальний тип елемента, який відображає повідомлення.
B) Форма, яка містить тільки текстові поля.
C) Спеціальний вікно для введення даних.
D) Програма для виведення результатів.
Правильна відповідь: A
Як у Python створити просте вікно повідомлення?
A) Використовувати метод messagebox.showinfo().
B) Використовувати команду alert().
C) Використовувати функцію show().
D) Використовувати конструкцію print().
Правильна відповідь: A
Що потрібно для обробки подій у Python?
A) Використовувати цикл обробки подій.
B) Використовувати метод bind для кожної події.
C) Створити обробник для кожної кнопки.
D) Використовувати команду click.
Правильна відповідь: B
Як у Lazarus обробляється подія закриття форми?
A) Через подію OnClose.
B) Через подію OnExit.
C) Через подію OnDeactivate.
D) Через подію OnResize.
Правильна відповідь: A
Що робить метод destroy() у Python для елементів графічного інтерфейсу?
A) Видаляє елемент з екрану.
B) Змінює колір елемента.
C) Викликає подію натискання на кнопку.
D) Відновлює форму до початкових налаштувань.
Правильна відповідь: A
Яка подія Lazarus реагує на зміну розміру форми?
A) OnResize
B) OnClick
C) OnEnter
D) OnMove
Правильна відповідь: A
Як у Python визначити, чи було натискання на клавішу в певному вікні?
A) Використовувати метод keyPress.
B) Використовувати метод bind для клавіші.
C) Використовувати метод click.
D) Використовувати метод windowKey().
Правильна відповідь: B
Як у Lazarus обробляється подія зміни тексту в полі вводу?
A) Через подію OnChange.
B) Через подію OnClick.
C) Через подію OnKeyPress.
D) Через подію OnResize.
Правильна відповідь: A
До оцінювання за критерієм Групи результатів 1 (ГР1) "Працює з інформацією, даними, моделями" підходять питання:
Питання 2 (Обробник подій)
Питання 6 (messagebox.showinfo у Python)
Питання 10 (Обробка подій у Lazarus)
Питання 13 (messagebox.showinfo у Python)
Питання 14 (Правильність типів у Lazarus)
Питання 17 (Обробка події натискання клавіші)
Питання 21 (Колір фону форми у Lazarus)
Питання 25 (Обробка подій у Python)
Питання 28 (Подія зміни розміру форми у Lazarus)
До оцінювання за критерієм Групи результатів 2 (ГР2) "Створює інформаційні продукти" підходять питання:
Питання 3 (Приклад події)
Питання 5 (Натискання кнопки в Lazarus)
Питання 7 (Графічний інтерфейс)
Питання 8 (Метод bind у Python)
Питання 9 (Властивість Caption у Lazarus)
Питання 11 (Натискання кнопки у Lazarus)
Питання 12 (Прив’язка події до кнопки у Python)
Питання 15 (Обробка події натискання кнопки в Lazarus)
Питання 16 (Метод bind для кнопок у Python)
Питання 18 (Подія закриття форми у Lazarus)
Питання 19 (Обробник подій у Python)
До оцінювання за критерієм Групи результатів 3 (ГР3) "Працює в цифровому середовищі" підходять питання:
Питання 1 (Що таке подія у програмуванні)
Питання 4 (Елемент у Python, який викликає обробник подій)
Питання 6 (messagebox.showinfo у Python)
Питання 20 (Типи подій натискання кнопки)
Питання 23 (Вікно повідомлення в Lazarus)
Питання 24 (Створення вікна повідомлення в Python)
Питання 29 (Перевірка натискання клавіші у Python)
Питання 30 (Обробка події зміни тексту в полі вводу в Lazarus)
До оцінювання за критерієм Групи результатів 4 (ГР4) "Безпечно та відповідально працює з інформаційними технологіями" підходять питання:
Питання 2 (Обробник подій)
Питання 6 (messagebox.showinfo у Python)
Питання 14 (Невірні типи в Lazarus)
Питання 26 (Подія закриття форми в Lazarus)
Питання 28 (Зміна розміру форми в Lazarus)
Перелік питань по критеріях:
Група результатів 1 (ГР1):
Питання: 2, 6, 10, 13, 14, 17, 21, 25, 28
Група результатів 2 (ГР2):
Питання: 3, 5, 7, 8, 9, 11, 12, 15, 16, 18, 19
Група результатів 3 (ГР3):
Питання: 1, 4, 6, 20, 23, 24, 29, 30
Група результатів 4 (ГР4):
Питання: 2, 6, 14, 26, 28