Сторінка 1

субота, 21 січня 2017 р.

Складання та виконання алгоритмів з елементом управління «список, що розкривається»

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
      1. Які елементи управління можна використати на формі для передавання у програму логічних значень?
      2. У чому різниця між елементами управління прапорець і перемикач та для чого застосовують групи цих елементів?
      3. До яких елементів управління належить список: тих, що передають у програму текстові значення чи логічних?
      Діємо разом
      • Вправа 1. Розробіть проект Кольорова форма в середовищі Lazarus,
        у якому форма змінюватиме свої властивості – колір і розмір залежно від обраних перемикачів у групах Колір та Розмір.

      1. Завантажте середовище Lazarus і створіть новий проект. 
      2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям. Зауважте, в програмі використайте елементи управління RadioGroup (мають назви на зразку Колір і Розмір відповідно). Змініть шрифт і розмір текстових написів на формі.
      3. Створіть процедуру опрацювання події натиснення кнопки Пуск. У вікні редактора коду введіть команди для зміни кольору (в даному випадку - червоного) екранної форми залежно від увімкненого перемикача:
        if RadioGroup1.ItemIndex = 0 then
            Form1.Color:=clRed;
      4. Введіть команди зміни розміру форми за зразком: 
        if RadioGroup2.ItemIndex = 0 then
            begin
               Form1.Height:=250;
               Form1.Width:=400
            end;
      5. Для середнього розміру оберіть висоту 450, ширину 600, а для великого - 650, 800 відповідно. 
      6. Запустіть проект на виконання. Перевірте, чи відповідають умові завдання дії, пов'язані з об'єктами управління екранної форми. Якщо є помилки - виправте їх.
      7. Збережіть проект і завершіть роботу із середовищем програмування.
      • Вправа 2Розробіть проект Картка учасника змагань в середовищі програмування мовою Python, у якому користувач вводить прізвище та ім'я та по батькові в текстове поле; позначає прапорцями вид змагання; зі списку, що розкривається, обирає вікову групу. Після натиснення кнопки Зареєструватись отримує у вікні повідомлення про підтвердження реєстрації.
      1. У середовищі програмування мовою Python створіть новий файл з іменем Картка.
      2. В області програмного коду запишіть команди за зразком:
        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()
      3. Проаналізуйте програмний код і поміркуйте, які команди використовуються для створення об'єкта "список, що розкривається". 
      4. Запустіть проект на виконання: 
      5. Перевірте, чи для запропонованих значень ви отримали очікуваний результат:
      6. Збережіть проект. Завершіть роботу із середовищем програмування.
      Працюємо в парах
      • Поміркуйте, чи можна реалізувати проект Картка учасника змагань у середовищі 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