Величини текстового типу
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
Наведіть приклади значень текстових величин.
-
Чим відрізняються значення символьного та рядкового типів?
-
Як описати величини символьного та рядкового типів мовами програмування? Що спільного та які є відмінності в описі текстових величин мовами Free Pascal і Python?
-
Які спільні властивості мають текстове поле й текстовий напис? Які є особливі властивості текстового поля?
-
У яких випадках у середовищі програмування Lazarus властивості Enabledтекстового поля слід надати значення False?
-
Яка функція призначена для створення текстового поля для введення даних після підключення модуля віконного інтерфейсу користувача у програмах, створених мовою програмування Python?
Діємо разом
-
Вправа 1. У середовищі програмування Lazarus розробіть проект Вітальна листівка за зразком у якому у відповідні текстові поля на екранній формі користувач вносить ім'я адресата привітання, подію та ім'я автора привітання.
-
Завантажте середовище Lazarus і створіть новий проект.
-
Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти та надайте значень їх властивостям, щоб після запуску проекту на виконання можна було отримати привітання, наприклад, подане на скріншоті:
-
Створіть процедуру опрацювання події: натиснути кнопку Сформувати листівку. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: person (адресат), ev (подія), nik (ім'я автора). Укажіть їх тип - string (рядковий).
var person, ev, nik : string;
-
Проаналізуйте фрагмент програмного коду, за допомогою якого текст, введений у текстові поля екранної форми, присвоєно значенням властивості Caption для написів на формі. При цьому текстові поля із запитаннями стануть невидимим:
person := Edit1.Text;
Label6.Caption := person;
Label6.Visible := True;
Edit1.Visible := False;
Label1.Visible := False;
ev := Edit2.Text;
Label7.Caption := ev;
Label7.Visible := True;
Edit2.Visible := False;
Label3.Visible := False;
nik := Edit3.Text;
Label8.Caption := nik;
Label8.Visible := True;
Edit3.Visible := False;
Label5.Visible := False;
-
Запустіть проект на виконання. Перевірте, чи дії, пов'язані з об'єктами управління екранної форми, відповідають умові завдання. Якщо є помилки – виправте їх.
-
Збережіть проект і завершіть роботу із середовищем програмування.
-
Вправа 2. У середовищі програмування мовою Python розробіть проект, у якому користувач буде вводити день тижня, натискати кнопку Гаразд, й отримувати у вікні із заголовком Увага! таке повідомлення: Сьогодні - "день тижня, який було введено".
-
У середовищі програмування мовою Python створіть новий файл з іменем Нагадування.
-
Проаналізуйте програмний код і змініть значення властивостей об'єктів, які використовуються у програмному коді так, щоб вони реалізовували завдання:
import tkinter
import tkinter.messagebox
main = tkinter.Tk()
# створення об'єкта для отримання значення з текстового поля
str_var = tkinter.StringVar()
# опрацювання події натиснення кнопки
def button_click():
tkinter.messagebox.showinfo('Program', 'Hello: ' + str_var.get())
#створення текстового напису та його розміщення на головній формі
label = tkinter.Label(text='Enter your name:')
label.pack()
#створення текстового поля та його розміщення на головній формі
edit = tkinter.Entry(main, textvariable=str_var)
edit.pack()
#створення кнопки та розміщення об'єкта на головній формі
button = tkinter.Button(main, text='Click me!', command=button_click)
button.pack()
#запуск опрацювання подій програми
main.mainloop()
-
Запустіть проект на виконання. Перевірте, чи результат для введеного дня тижня п'ятниця відповідає скріншотам:
-
Збережіть проект.
Працюємо в парах
-
Поміркуйте, як мовами програмування Free Pascal і Python записати введене слово у зворотному порядку. Складіть відповідні програми в обраному середовищі програмування та порівняйте їх.
Виконуємо самостійно
-
Завдання. Складіть програму мовою Python, за допомогою якої із введеного слова інформатика будуть утворюватися слова форма, романтика. Проаналізуйте фрагмент програмного коду і запишіть команди виведення отриманих значень (запустіть проект на виконання і у вікні виконання програми введіть значення інформатика, збережіть проект.)
s = input('Введіть слово: ')
s1 = s[2:7]
s2 = s[4] + s[3] + s[5:7] + s[1] + s[7:]
Домашнє завдання
-
Опрацювати підручник: §22 с. 143-150
Складання алгоритмів опрацювання текстових величин
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
Які дії можна виконувати з текстовими величинами?
-
Які функції використовують у мовах програмування для опрацювання текстових величин?
Діємо разом
-
Вправа 1. Розробіть проект у середовищі Lazarus, у якому в текстові поля, розміщені у верхній частині форми, користувач вводить день, місяць і рік свого народження та після натиснення кнопки Пуск у відповідному текстовому написі формується дата народження.
-
Завантажте середовище Lazarus і створіть новий проект.
-
Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти та надайте значень їх властивостям згідно зразка:
-
Створіть процедуру опрацювання події: натиснути кнопку Пуск. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті:
var d, m, y, rez : string;
-
У вікні редактора коду запишіть команди присвоювання значень змінним d, m, y, за зразком:
d := Edit1.Text;
-
Запишіть вираз для отримання значення змінної rez:
rez := d + '.' + m + '.' + y;
-
Надайте властивості Text текстового поля значення змінної rez для відображення повної дати народження:
Edit4.text := rez;
-
Запустіть проект на виконання. Введіть дані у текстові поля, натисніть кнопку Пуск і перевірте правильність роботи програми. Якщо є помилки – виправте їх.
-
Збережіть проект і завершіть роботу із середовищем програмування.
-
Вправа 2. Розробіть у середовищі Lazarus проект, після запуску якого до текстових полів екранної форми користувач вводитиме прізвище, ім'я і по батькові. Після натиснення кнопки Старт до відповідного текстового поля будуть виводитися прізвище та ініціали.
-
Завантажте середовище Lazarus і створіть новий проект.
-
Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти та надайте значень їх властивостям згідно зразка:
-
Властивість Enabled текстового поля для відображення прізвища та ініціалів надайте значення False, щоб користувач не міг змінити вміст цього поля з клавіатури.
-
Для опрацювання символів українського алфавіту у вікно редактора коду в розділ uses допишіть модуль LazUTF8.
-
Створіть процедуру опрацювання події: натиснуто кнопку Старт. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті:
var last_name, first_name, surname, full_name : string;
-
У вікні редактора коду запишіть команди присвоювання значень змінним last_name, first_name, surname:
last_name := Edit1.Text;
first_name := Edit2.Text;
surname := Edit3.Text;
-
Запишіть команду знаходження значення змінної величини full_name:
full_name := last_name + ' ' + UTF8copy(first_name, 1, 1) + '.' + UTF8copy(surname, 1, 1) + '.';
-
Запишіть команду виведення отриманого значення змінної full_name у текстове поле, захищене від редагування:
Edit4.Text := full_name;
-
Запустіть проект на виконання. введіть дані в текстові поля. Натисніть кнопкуСтарт і перевірте правильність роботи програми. Якщо є помилки - виправте їх.
-
Збережіть проект і завершіть роботу із середовищем.
Працюємо в парах
-
У програмі, написаній мовою програмування Free Pascal чи Python, використовуючи значення текстової змінної s1, отримали s2.
Складіть відповідний програмний код. Перевірте, чи однакові засоби отримання значення змінної s2 із змінної s1 у вибраній мові програмування використав кожний з вас.
Виконуємо самостійно
-
Завдання. Розробіть проект Калькулятор у середовищі Lazarus, у якому в текстові поля вводять числа, після натиснення кнопки з позначкою математичної дії в текстовому полі, яке захищене від змін, отримують результат як на зразку.
Скористайтеся фрагментом програмного коду для однієї із арифметичних дій:
procedure TForm1.Button1Click(Sender: TObject);
var a, b: real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
Edit3.Text:= FloatToStr(a+b);
end;
Домашнє завдання
-
Опрацювати підручник: §22 с. 143-150
Налагодження програм
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
Чому програмний код у проекті може не виконатися взагалі, або в програмі можуть бути отримані неправильні результати?
-
Яких помилок допускаються при складанні програм у середовищах програмування?
-
З якою метою у програмах, написаних мовами програмування, використовують коментарі?
Діємо разом
-
Вправа. Складіть програму у середовищі програмування мовою Python, щоб зі слова s1 отримати слово s2.
Проаналізуйте фрагмент програмного коду, доповніть його для усіх випадків з таблиці, напишіть коментарі до рядків коду:
s = input('Введіть слово "рекомендація": ')
s1 = s[3] + s[9:11] + s[6] + s[2] + s[8]
print(s1)
Працюємо в парах
-
Поміркуйте, у чому схожість процесу налагодження програми в середовищі програмування та редагування тексту в середовищі текстового процесора.
Виконуємо самостійно
-
Завдання. У середовищі програмування мовою Python розробіть проект Шифрувальник, у якому в текстове поле вводять слово з 5 літер, а після натиснення кнопки Старт у вікні повідомлення отримують результат за правилами, описаними в таблиці:
Проаналізуйте програмний код поданий нижче
import tkinter
import tkinter.messagebox
main = tkinter.Tk()
# створення об'єкта для отримання значення з текстового поля
str_var = tkinter.StringVar()
# опрацювання події натиснення кнопки
def button_click():
# отримання значення введеного рядка і присвоєння змінній s
s = str_var.get()
#шифрування
s1 = # запишіть відсутній програмний код
s2 = # запишіть відсутній програмний код
#s3 = s[0] + s[4] + s[1] + s[4] + s[2] + s[4] + s[3] + s[4] + s[4]*2
#s4 = str(ord(s[0])) + str(ord(s[1])) + str(ord(s[2])) + str(ord(s[3])) + str(ord(s[4]))
#s5 = chr(ord(s[0])+1) + chr(ord(s[1])+1) + chr(ord(s[2])+1) + chr(ord(s[3])+1) + chr(ord(s[4])+1)
# виведення вікна повідомлення
tkinter.messagebox.showinfo('Шифрування відбулось!', '1 спосіб: ' + s1 + '\n' +
'2 спосіб: ' + s2 + '\n' +
'3 спосіб: ' + s3 + '\n' +
'4 спосіб: ' + s4 + '\n' +
'5 спосіб: ' + s5)
#створення текстового напису та його розміщення на головній формі
label = tkinter.Label(text='Введіть слово для шифрування:')
label.pack()
#створення текстового поля та його розміщення на головній формі
edit = tkinter.Entry(main, textvariable=str_var)
edit.pack()
#створення кнопки та розмішення об'єкта на головній формі
button = tkinter.Button(main, text='Шифрувати!', command=button_click)
button.pack()
#запуск опрацювання подій програми
main.mainloop()
розкоментуйте рядки коду, допишіть власний код для реалізації завдання, виконайте програму і у разі виявлення помилок - виправте їх: Очікуваний результат виконання програми показаний на скріншотах:
Домашнє завдання
-
Опрацювати підручник: §22 с. 152-155
Складання і налагодження програм на опрацювання текстових величин
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
У чому полягає процес налагодження програми?
-
З якою метою у програмах, написаних мовами програмування, використовують коментарі?
-
Як аналізувати результати виконання програм?
Працюємо в парах
-
Поміркуйте, і створіть засобами тестового процесора порівняльну таблицю процесу налагодження програми у проектах, створених у середовищі Lazarus і середовищі програмування Python.
Виконуємо самостійно
-
Завдання 1. Створений проект Перетворення тексту у середовищі програмування Lazarus
Після його запуску у вікні повідомлення користувачі отримують відомості про синтаксичні помилки:
Відшукайте помилки у програмному коді та виправте їх. Запустіть проект на виконання та перевірте наявність логічних помилок у програмному коді.
-
Завдання 2. Для обчислень значень виразів у середовищі програмування Python розроблено проект Обчислення виразів, програмний код якого показано нижче
-
from math import cos, pi
-
print('Проект: Обчислення виразів')
-
-
x = float(input('x = '))
-
y = float(input('y = '))
-
-
# вираз 1
-
z1 = (abs(x) + abs(y)) / (1 + abs(x*y))
-
print(z1)
-
-
# вираз 2
-
z2 = 1 + abs(y-x) + pow(y-x, 2)/2 + pow(abs(y-x), 3) / 3
-
print(z2)
-
-
# вираз 3
-
z3 = 2 * y / cos(x-pi/6)
-
print(z3)
-
-
# вираз 4
-
z4 = x / (1 + x * x / (3 + pow(2 * x, 2)))
print(z4)
Реалізуйте проект для тестових значень, обраних самостійно, та порівняйте результат виконання програми з результатом, отриманим за допомогою інженерного режиму стандартної програми Калькулятор.
-
Завдання 3. У середовищі програмування Python розроблений проектРозрядні одиниці, у якому в текстове поле вводять 4-значне ціле число, натискають кнопку Розкласти й у текстовому полі отримують запис числа у вигляді суми розрядних одиниць. Наприклад, для введеного числа 5843 отримують 5*1000+8*100+4*10+3*1.
Розкоментуйте відповідні рядки програмного коду для реалізації завдання, доберіть тестові значення для перевірки на наявність помилок під час виконання програми, за потреби внесіть зміни у програмний код проекту
import tkinter
import tkinter.messagebox
main = tkinter.Tk()
# створення об'єкта для отримання значення з текстового поля
str_var = tkinter.StringVar()
# опрацювання події натиснення кнопки
def button_click():
# отримання значення введеного рядка і присвоєння змінній s
s = str_var.get()
# розкладання числа (яке є текстовим рядком) у вигляді суми розрядних одиниць
# тут введіть відсутній програмний код
# виведення вікна повідомлення
tkinter.messagebox.showinfo('Сума розрядних одиниць: ', suma)
#створення текстового напису та його розміщення на головній формі
label = tkinter.Label(text='Введіть чотиризначне число:')
label.pack()
#створення текстового поля та його розміщення на головній формі
edit = tkinter.Entry(main, textvariable=str_var)
edit.pack()
#створення кнопки та розміщення об'єкта на головній формі
button = tkinter.Button(main, text='Розкласти', command=button_click)
button.pack()
#запуск опрацювання подій програми
main.mainloop()
Домашнє завдання
-
Опрацювати підручник: §22 с. 156
Опрацювання величин логічного типу
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
У чому різниця між описами порівняння величин мовами програмування Free Pascal і Python?
-
Як визначити значення логічного виразу, що містить логічні операції and, orта not? Як для пошуку відповіді на це запитання можна використати таблиці істинності?
-
Які засоби для перетворення логічних даних в інші типи передбачені у мові програмування Python?
-
Чим відрізняються описи оператора повного розгалуження мовами програмування Free Pascal та Python?
-
Наведіть приклади, коли у програмі варто застосовувати оператор неповного розгалуження.
Діємо разом
-
Вправа 1. Розробіть проект у середовищі Lazarus, у якому за введеним значенням температури води буде визначатись її агрегатний стан.
-
Завантажте середовище Lazarus і створіть новий проект.
-
Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям.
-
Задайте значення False для властивості Enabled текстового поля для виведення значення
-
Створіть процедуру опрацювання події натиснення кнопки Визначити. У вікні редактора коду введіть програмний код і зверніть увагу на структуру команди розгалуження:
-
procedure TForm1.Button1Click(Sender: TObject);
-
var t: real;
-
begin
-
t:=StrToFloat(Edit1.Text);
-
if t < 0 then Edit2.text:='Вода перебуває в твердому стані'
-
else
-
if t > 100 then Edit2.Text:='Вода перебуває у газоподібному стані'
-
else Edit2.Text:='Вода перебуває у рідкому стані'
end;
-
Запустіть проект на виконання. Введіть значення температури, наприклад 25. Перевірте отриманий результат. Установіть, яка умова відповідає отриманому значенню.
-
Запустіть проект на виконання ще раз для значення -10,5. Поясніть, чому проект не виконується. Внесіть зміни до проекту так, щоб користувач міг задавати температуру води дійсним числом. Зауважте, що дійсне число, яке вводиться в текстове поле, записується із десятковою комою, а в програмному коді використовують число, записане з десятковою крапкою.
-
Збережіть проект і завершіть роботу із середовищем програмування.
-
Вправа 2. У середовищі програмування мовою Python розробіть проект, за допомогою якого можна визначити, чи введений текст складається з одного слова, чи з декількох.
-
У середовищі програмування мовою Python створіть новий файл з іменем Текст.
-
В області програмного коду запишіть команди за зразком:
import tkinter
import tkinter.messagebox
main = tkinter.Tk()
# створення об'єкта для отримання значення з текстового поля
str_var = tkinter.StringVar()
# опрацювання події натиснення кнопки
def button_click():
# отримання значення введеного рядка і присвоєння змінній s
s = str_var.get()
# перевірка умови: пропуск входить у рядок s чи ні
if ' ' in s:
# виведення повідомлення при істинній умові
tkinter.messagebox.showinfo('Результат', 'введено кілька слів')
else:
# виведення повідомлення при хибній умові
tkinter.messagebox.showinfo('Результат', 'введено одне слово')
#створення текстового напису та його розміщення на головній формі
label = tkinter.Label(text='Введіть текст')
label.pack()
#створення текстового поля та його розміщення на головній формі
edit = tkinter.Entry(main, textvariable=str_var)
edit.pack()
#створення кнопки та розміщення об'єкта на головній формі
button = tkinter.Button(main, text='Перевірити', command=button_click)
button.pack()
#запуск опрацювання подій програми
main.mainloop()
-
Запустіть проект на виконання. Доберіть тестові дані та перевірте правильність складеної програми. Збережіть проект. Завершіть роботу із середовищем програмування.
Працюємо в парах
-
Поміркуйте, чим буде відрізнятись порядок розробки проекту про агрегатний стан води в середовищі програмування мовою Python від його створення в середовищі Lazarus. Реалізуйте цей проект.
Виконуємо самостійно
-
Завдання 1. У середовищі програмування Lazarus розробіть проект Мішень, у якому за введеними в текстові поля дійсними числами x та y у вікні повідомлення буде виведено повідомлення «Вітаємо! Влучний постріл!», якщо точка з координатами (x; y) належить заштрихованій області, та повідомлення «Шкода, не влучив!» - в іншому разі.
Орієнтовний зразок інтерфейсу програми:
-
Завдання 2. У середовищі програмування мовою Python розробіть проект, у якому виконується перевірка, чи дане слово є паліндромом(можна прочитати зліва направо так само, як справа наліво). Наприклад, слово «око» - це паліндром. Передбачте засоби, які слід використати для того, щоб слово «Пилип» теж було визначене як паліндром, ураховуючи різницю між великими та малими літерами. Проаналізуйте програмний код і реалізуйте власну програму:
-
import tkinter
-
from tkinter import messagebox
-
main = tkinter.Tk()
-
-
# створення об'єкта для отримання значення з текстового поля: Введіть слово
-
word_var = tkinter.StringVar()
-
-
# опрацювання події натиснення кнопки
-
def button_click():
-
# отримання значення введеного рядка і присвоєння змінній word
-
word = word_var.get()
-
# напишіть програмний код, який враховує різницю між великими та малими літерами
-
-
# перевірка чи є слово паліндромом
-
if word_edit == word_edit[::-1]:
-
# виведення повідомлення про те, що слово є паліндромом
-
tkinter.messagebox.showinfo('Результат', 'Слово '+ word + ' є паліндромом.')
-
else:
-
# виведення повідомлення про те, що слово не є паліндромом
-
tkinter.messagebox.showinfo('Результат', 'Слово '+ word + ' не є паліндромом.')
-
#створення текстового напису та його розміщення на головній формі
-
label = tkinter.Label(text='Введіть слово')
-
label.pack()
-
-
#створення текстового поля та його розміщення на головній формі
-
edit = tkinter.Entry(main, textvariable=word_var)
-
edit.pack()
-
-
#створення кнопки та розміщення об'єкта на головній формі
-
button = tkinter.Button(main, text='Перевірити слово', command=button_click)
-
button.pack()
-
-
#запуск опрацювання подій програми
main.mainloop()
Домашнє завдання
-
Опрацювати підручник: §24 с. 157-161
Елементи управління для задання логічного значення величини (прапорець, перемикач)
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
Як мовами програмування Free Pascal і Python реалізувати вкладені розгалуження? Як у мові програмування Python позначають операторні дужки для запису групи команд, які в мові Free Pascal записують службовими словами begin та end?
-
Які елементи управління можна використати на формі для передавання у програму логічних значень?
-
У чому різниця між елементами управління прапорець і перемикач та для чого застосовують групи цих елементів?
Діємо разом
-
Вправа 1. Складіть проект Замовлення квітів в середовищі Lazarusдля оформлення електронного замовлення квітів за зразком
У проекті натиснення кнопки Оформити замовлення викликає виведення відповідного тексту в текстовому полі, яке захищене від змін, а натиснення кнопки Завершити – закриває вікно форми.
-
Завантажте середовище Lazarus і створіть новий проект.
-
Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям. Змініть шрифт і розмір текстових написів на формі.
-
Задайте значення False для властивості Enabled текстового поля для виведення значення.
-
Створіть процедуру опрацювання події натиснення кнопки Оформити замовлення. У вікні редактора коду введіть програмний код:
-
procedure TForm1.Button1Click(Sender: TObject);
-
var s, t: string;
-
begin
-
s:='';
-
t:='';
-
if CheckBox1.Checked then s:=s+CheckBox1.Caption+', ';
-
if CheckBox2.Checked then s:=s+CheckBox2.Caption+', ';
-
if CheckBox3.Checked then s:=s+CheckBox3.Caption+', ';
-
if CheckBox4.Checked then s:=s+CheckBox4.Caption+', ';
-
if CheckBox5.Checked then s:=s+CheckBox5.Caption+', ';
-
if RadioButton1.Checked
-
then t:=t+'у кошику.'
-
else
-
if RadioButton2.Checked
-
then t:=t+'в звичайному пакуванні.'
-
else
-
t:=t+'в особливому пакуванні.';
-
Edit1.Text:='Ви обрали '+s+t;
end;
-
Створіть процедуру опрацювання події натиснення кнопки Завершити. У вікні редактора коду введіть програмний код:
-
procedure TForm1.Button2Click(Sender: TObject);
-
begin
-
Form1.Close;
end;
-
Запустіть проект на виконання. Перевірте, чи відповідають умові завдання дії, пов'язані з об'єктами управління (прапорцями і перемикачами) екранної форми. Якщо є помилки - виправте їх.
-
Збережіть проект і завершіть роботу із середовищем програмування.
-
Вправа 2. У середовищі програмування мовою Python розробіть проектКилимки, за яким можна визначити, яку максимальну кількість квадратних килимків зі стороною c, де с - ціле число, потрібно використати, щоб застелити кімнату з підлогою розміром a x b, де a і b – цілі числа. У проекті слід також визначити, яка площа не буде накрита килимками, якщо їх не можна накладати чи підгинати. Передбачте також ситуацію, коли розмір килимка перевищує розмір підлоги кімнати.
-
У середовищі програмування мовою Python створіть новий файл з іменем Килимки.
-
В області програмного коду запишіть команди за зразком:
-
import tkinter
-
from tkinter import ttk
-
from tkinter import messagebox
-
main = tkinter.Tk()
-
# заголовок вікна
-
main.title('Килимки')
-
-
# створення об'єкта для отримання значення з текстового поля: Ширина підлоги
-
a_var = tkinter.StringVar()
-
-
# створення об'єкта для отримання значення з текстового поля: Довжина підлоги
-
b_var = tkinter.StringVar()
-
-
# створення об'єкта для отримання значення з текстового поля: Розмір квадратного килимка (довжина сторони)
-
c_var = tkinter.StringVar()
-
-
# опрацювання події натиснення кнопки
-
def button_click():
-
-
# присвоєння значення довжини і ширини підлоги з полів введення у відповідні змінні a та b
-
a = int(a_var.get());
-
b = int(b_var.get());
-
c = int(c_var.get());
-
-
# Присвоюємо значення порожнього рядка змінній result, яка буде зберігати результат
-
result = ''
-
# площа одного килимка
-
s_kulumok = c*c
-
# площа підлоги
-
s_pidloga = a*b
-
# коли розмір килимка перевищує розмір кімнати
-
if s_kulumok > s_pidloga:
-
# виведення повідомлення про завеликий розмір килимка
-
tkinter.messagebox.showwarning('Увага!', 'Розмір килимка перевищує розмір підлоги кімнати.')
-
else:
-
# кількість квадратних килимків, якими можна застелити підлогу
-
k = int(s_pidloga/s_kulumok)
-
# плоша, що залишилася не застеленою
-
s_zalushok = s_pidloga - k*s_kulumok
-
result = 'Максимальна кількість килимків: ' + str(k) + '\n' + 'Не накрита площа: ' + str(s_zalushok) + ' кв.м.'
-
# виведення повідомлення про кількість килимків
-
tkinter.messagebox.showinfo('Результат', result)
-
-
#створення текстового напису Ширина підлоги та його розміщення на головній формі
-
label = tkinter.Label(text='Ширина підлоги')
-
label.pack()
-
-
#створення текстового поля Ширина підлоги та його розміщення на головній формі
-
edit = tkinter.Entry(main, textvariable=a_var)
-
edit.pack()
-
-
#створення текстового напису Довжина підлоги та його розміщення на головній формі
-
label = tkinter.Label(text='Довжина підлоги')
-
label.pack()
-
-
#створення текстового поля Довжина підлоги та його розміщення на головній формі
-
edit = tkinter.Entry(main, textvariable=b_var)
-
edit.pack()
-
-
#створення текстового напису Сторона килимка та його розміщення на головній формі
-
label = tkinter.Label(text='Сторона килимка')
-
label.pack()
-
-
#створення текстового поля Сторона килимка та його розміщення на головній формі
-
edit = tkinter.Entry(main, textvariable=c_var)
-
edit.pack()
-
-
#створення кнопки та розміщення об'єкта на головній формі
-
button = tkinter.Button(main, text='Обчислити', command=button_click)
-
button.pack()
-
-
#запуск опрацювання подій програми
main.mainloop()
-
Запустіть проект на виконання. Доберіть тестові дані та перевірте правильність складеної програми. Збережіть проект. Завершіть роботу із середовищем програмування.
Працюємо в парах
-
Поміркуйте, якого логічного значення набуває логічний вираз, записаний мовами програмування Free Pascal і Python
Виконуємо самостійно
-
Завдання 1. У середовищі програмування Lazarus розробіть проект Оцінки, за яким у текстове поле виводиться опис досягнутого рівня на основі шкільної оцінки, яка обирається з елемента управління (оберіть самостійно – прапорці, перемикачі). Орієнтовний зразок інтерфейсу проекту:
В цьому проекті використано елемент управління RadioGroup для групування перемикачів
Для використання групи прапорців виберіть елемент управління CheckGroup
Скористайтеся фрагментом програмного коду для реалізації завдання:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Radiogroup1.ItemIndex = 0 then
Edit1.Text:='початковий рівень'
else
if Radiogroup1.ItemIndex = 1 then
Edit1.Text:='середній рівень'
else
if Radiogroup1.ItemIndex = 2 then
Edit1.Text:='достатній рівень'
else
Edit1.Text:='високий рівень';
end;
-
Завдання 2. У середовищі програмування Lazarus розробіть проектВеселка, у якому після вибору кольору та натиснення кнопки Показати, відкривається допоміжна екранна форма, колір якої відповідає обраному на головній формі.
Проаналізуйте використання команди розгалуження case у фрагменті програмного коду і з'ясуйте, як вказуються значення кольорів тла допоміжної форми
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
case RadioGroup1.ItemIndex of
0: Form2.Color:= clRed;
1: Form2.Color:= TColor($000080FF);
2: Form2.Color:= clYellow;
3: Form2.Color:= clGreen;
4: Form2.Color:= clSkyBlue;
5: Form2.Color:= clBlue;
6: Form2.Color:= clPurple;
end;
end;
Домашнє завдання
-
Опрацювати підручник: §24 с. 161-165
Складання та виконання алгоритмів з елементом управління «список, що розкривається»
Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
-
Які елементи управління можна використати на формі для передавання у програму логічних значень?
-
У чому різниця між елементами управління прапорець і перемикач та для чого застосовують групи цих елементів?
-
До яких елементів управління належить список: тих, що передають у програму текстові значення чи логічних?
Діємо разом
-
Вправа 1. Розробіть проект Кольорова форма в середовищі Lazarus,
у якому форма змінюватиме свої властивості – колір і розмір залежно від обраних перемикачів у групах Колір та Розмір.
-
Завантажте середовище Lazarus і створіть новий проект.
-
Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям. Зауважте, в програмі використайте елементи управління RadioGroup (мають назви на зразку Колір і Розмір відповідно). Змініть шрифт і розмір текстових написів на формі.
-
Створіть процедуру опрацювання події натиснення кнопки Пуск. У вікні редактора коду введіть команди для зміни кольору (в даному випадку - червоного) екранної форми залежно від увімкненого перемикача:
-
if RadioGroup1.ItemIndex = 0 then
Form1.Color:=clRed;
-
Введіть команди зміни розміру форми за зразком:
-
if RadioGroup2.ItemIndex = 0 then
-
begin
-
Form1.Height:=250;
-
Form1.Width:=400
end;
-
Для середнього розміру оберіть висоту 450, ширину 600, а для великого - 650, 800 відповідно.
-
Запустіть проект на виконання. Перевірте, чи відповідають умові завдання дії, пов'язані з об'єктами управління екранної форми. Якщо є помилки - виправте їх.
-
Збережіть проект і завершіть роботу із середовищем програмування.
-
Вправа 2. Розробіть проект Картка учасника змагань в середовищі програмування мовою Python, у якому користувач вводить прізвище та ім'я та по батькові в текстове поле; позначає прапорцями вид змагання; зі списку, що розкривається, обирає вікову групу. Після натиснення кнопки Зареєструватись отримує у вікні повідомлення про підтвердження реєстрації.
-
У середовищі програмування мовою Python створіть новий файл з іменем Картка.
-
В області програмного коду запишіть команди за зразком:
-
import tkinter
-
from tkinter import ttk
-
from tkinter import messagebox
-
main = tkinter.Tk()
-
-
# заголовок вікна
-
main.title('Картка учасника змагань')
-
-
# створення об'єкта для отримання значення з текстового поля: Прізвище, ім'я, по батькові
-
name_var = tkinter.StringVar()
-
-
# створення об'єкта для отримання значення з прапорця: Біг на 100 м
-
bool_var1 = tkinter.BooleanVar()
-
-
# створення об'єкта для отримання значення з прапорця: Стрибки у довжину
-
bool_var2 = tkinter.BooleanVar()
-
-
# створення об'єкта для отримання значення з прапорця: Човниковий біг
-
bool_var3 = tkinter.BooleanVar()
-
-
# створення об'єкта для отримання значення з спсику, що розкривається: молодша, середня, старша
-
choice_var = tkinter.StringVar()
-
-
# опрацювання події натиснення кнопки
-
def button_click():
-
# присвоєння змінній s значення порожнього рядка
-
s = ''
-
# отримання значення введеного рядка і присвоєння змінній s
-
s += name_var.get() + ', ви обрали: '
-
# перевірка умови на вибір прапорців і присвоєння в разі істинності умови змінній s значення прапорця
-
if bool_var1.get():
-
s += 'біг на 100 м, '
-
if bool_var2.get():
-
s += 'стрибки у довжину, '
-
if bool_var3.get():
-
s += 'човниковий біг, '
-
-
# додавання до змінної s значення групи
-
s += 'у віковій категорії ' + choice_var.get()
-
-
# виведення повідомлення про реєстрацію
-
tkinter.messagebox.showwarning('Реєстрація', s)
-
-
#створення текстового напису та його розміщення на головній формі
-
label = tkinter.Label(text='Прізвище, ім\'я, по батькові')
-
label.pack()
-
-
#створення текстового поля та його розміщення на головній формі
-
edit = tkinter.Entry(main, textvariable=name_var)
-
edit.pack()
-
-
#створення прапорців на головній формі
-
check1 = ttk.Checkbutton(main, text='Біг на 100 м', variable=bool_var1)
-
check1.pack()
-
-
check2 = ttk.Checkbutton(main, text='Стрибки у довжину', variable=bool_var2)
-
check2.pack()
-
-
check3 = ttk.Checkbutton(main, text='Човниковий біг', variable=bool_var3)
-
check3.pack()
-
-
#створення списку, що розкривається, на головній формі
-
choice = ttk.Combobox(main, textvariable=choice_var)
-
choice['values'] = ('молодша.', 'середня.', 'старша.')
-
choice.pack()
-
-
#створення кнопки та розміщення об'єкта на головній формі
-
button = tkinter.Button(main, text='Зареєструватись', command=button_click)
-
button.pack()
-
-
#запуск опрацювання подій програми
main.mainloop()
-
Проаналізуйте програмний код і поміркуйте, які команди використовуються для створення об'єкта "список, що розкривається".
-
Запустіть проект на виконання:
-
Перевірте, чи для запропонованих значень ви отримали очікуваний результат:
-
Збережіть проект. Завершіть роботу із середовищем програмування.
Працюємо в парах
-
Поміркуйте, чи можна реалізувати проект Картка учасника змагань у середовищі Lazarus. Визначте, що доцільніше використовувати при створенні екранної форми - відповідні елементи управління чи їх групи? Розробіть проект, розподіливши ролі: один створює інтерфейс програми, а другий - пише програмний код опрацювання подій.
Виконуємо самостійно
-
Завдання 1. У середовищі програмування Lazarus розробіть проект Правила дорожнього руху, за яким можна визначити, чи не порушив правила дорожнього руху водій, який проїхав відстань s за час t, якщо на шляху встановлено одне із запропонованих обмежень на швидкість: 40 км/год, 60 км/год, 90 км/год.
Передбачте, що дані вводяться в текстові поля, обмеження обираються за допомогою елементів управління (наприклад, перемикачів, як на зразку),
а результат – виводиться у вікні повідомлення
-
Завдання 2. Відомо таке співвідношення ідеальної ваги та зросту людини за віком: від значення росту людини в см беруться останні дві цифри; якщо вік людини до 25 років, то її вага має становити на 5 кг менше від одержаного двоцифрового числа, для людей від 25 до 45 років – дорівнювати цьому двоцифровому числу, а для старших за 45 років – двоцифрове число потрібно збільшити на 5. У середовищі програмування мовою Python розробіть проект Ідеальна вага, у якому користувач вводить у текстове поле свій зріст у см та вагу, обирає діапазон віку, до якого він належить.
Після натиснення кнопки запуску проекту у вікні повідомлення (чи в текстовому полі) отримують висновок: вага ідеальна, надлишкова вага, недостатня вага.
Скористайтеся програмним кодом, поданим нижче, для створення власної програми:
import tkinter
from tkinter import ttk
from tkinter import messagebox
main = tkinter.Tk()
# заголовок вікна
main.title('Ідеальна вага')
# створення об'єкта для отримання значення з текстового поля: Зріст людини
height_var = tkinter.StringVar()
# створення об'єкта для отримання значення з текстового поля: Маса людини
m_var = tkinter.StringVar()
# створення об'єкта для отримання значення з спсику, що розкривається: до 25 років, від 25 до 45 років, від 45 років
choice_var = tkinter.StringVar()
# опрацювання події натиснення кнопки
def button_click():
# визначаємо останні дві цифри в значенні зросту людини
h = int(height_var.get())
dig = h % 100
print(dig)
# отримання значення введеного рядка Маса людини і присвоєння змінній m
m = int(m_var.get())
# обчислюємо співвілношення ідеальної ваги та зросту людини
print(choice_var.get())
result = 0
if choice_var.get() == 'до 25 років':
result = dig - 5
elif choice_var.get() == 'від 25 до 45 років':
result = dig
else:
result = dig + 5;
# виведення повідомлення про вагу людини
if m > result:
tkinter.messagebox.showinfo('Результат', 'У вас надлишкова вага.')
elif m < result:
tkinter.messagebox.showinfo('Результат', 'У вас недостатня вага.')
else:
tkinter.messagebox.showinfo('Результат', 'У вас ідеальна вага.')
#створення текстового напису Зріст людини та його розміщення на головній формі
label = tkinter.Label(text='Зріст людини')
label.pack()
#створення текстового поля Зріст людини та його розміщення на головній формі
edit = tkinter.Entry(main, textvariable=height_var)
edit.pack()
#створення текстового напису Маса людини та його розміщення на головній формі
label1 = tkinter.Label(text='Маса людини')
label1.pack()
#створення текстового поля Маса людини та його розміщення на головній формі
edit1 = tkinter.Entry(main, textvariable=m_var)
edit1.pack()
#створення текстового напису Вік людини та його розміщення на головній формі
label2 = tkinter.Label(text='Вік людини')
label2.pack()
#створення списку, що розкривається, на головній формі
choice = ttk.Combobox(main, textvariable=choice_var)
choice['values'] = ('до 25 років', 'від 25 до 45 років', 'за 45 років')
choice.pack()
#створення кнопки та розміщення об'єкта на головній формі
button = tkinter.Button(main, text='Розрахувати', command=button_click)
button.pack()
#запуск опрацювання подій програми
main.mainloop()
Домашнє завдання
-
Опрацювати підручник: §24 с. 166-169