Сторінка 1

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

Елементи управління для задання логічного значення величини (прапорець, перемикач)

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
      1. Як мовами програмування Free Pascal і Python реалізувати вкладені розгалуження? Як у мові програмування Python позначають операторні дужки для запису групи команд, які в мові Free Pascal записують службовими словами begin та end?
      2. Які елементи управління можна використати на формі для передавання у програму логічних значень?
      3. У чому різниця між елементами управління прапорець і перемикач та для чого застосовують групи цих елементів?
      Діємо разом
      • Вправа 1. Складіть проект Замовлення квітів в середовищі Lazarus для оформлення електронного замовлення квітів за зразком
        У проекті натиснення кнопки Оформити замовлення викликає виведення відповідного тексту в текстовому полі, яке захищене від змін, а натиснення кнопки Завершити – закриває вікно форми.
      1. Завантажте середовище Lazarus і створіть новий проект. 
      2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям. Змініть шрифт і розмір текстових написів на формі.
      3. Задайте значення False для властивості Enabled текстового поля для виведення значення.
      4. Створіть процедуру опрацювання події натиснення кнопки Оформити замовлення. У вікні редактора коду введіть програмний код:
        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;
      5. Створіть процедуру опрацювання події натиснення кнопки Завершити. У вікні редактора коду введіть програмний код: 
        procedure TForm1.Button2Click(Sender: TObject);
        begin
          Form1.Close;
        end;
      6. Запустіть проект на виконання. Перевірте, чи відповідають умові завдання дії, пов'язані з об'єктами управління (прапорцями і перемикачами) екранної форми. Якщо є помилки - виправте їх.
      7. Збережіть проект і завершіть роботу із середовищем програмування.
      • Вправа 2У середовищі програмування мовою Python розробіть проект Килимки, за яким можна визначити, яку максимальну кількість квадратних килимків зі стороною c, де с  - ціле число, потрібно використати, щоб застелити кімнату з підлогою розміром a x b, де a і b – цілі числа. У проекті слід також визначити, яка площа не буде накрита килимками, якщо їх не можна накладати чи підгинати. Передбачте також ситуацію, коли розмір килимка перевищує розмір підлоги кімнати.
      1. У середовищі програмування мовою Python створіть новий файл з іменем Килимки.
      2. В області програмного коду запишіть команди за зразком:
        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()
      3. Запустіть проект на виконання. Доберіть тестові дані та перевірте правильність складеної програми. Збережіть проект. Завершіть роботу із середовищем програмування.
      Працюємо в парах
      • Поміркуйте, якого логічного значення набуває логічний вираз, записаний мовами програмування 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