Сторінка 1

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

Складання та виконання алгоритмів з повтореннями та розгалуженнями для опрацювання величин

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
      1. Як описати алгоритмічну структуру розгалуження мовами програмування Free Pascal та Python?
      2. Як описати алгоритмічну структуру повторення мовами програмування Free Pascal та Python?
      3. Як описати операції над величинами різних типів мовами програмування Free Pascal та Python?
      4. Для чого на електронних формах використовують елементи управління перемикач, прапорець, список?
      Виконуємо самостійно
      • Завдання 1. В Україні за споживання електроенергії визначено такий порядок оплати залежно від спожитого обсягу: вартість 1 кВт при споживанні електроенергії до 100 кВт за місяць – 0,71 грн., від 100 кВт до 600 кВт – 1,29 грн., понад 600 кВт – 1,64 грн. Деяким споживачам надається пільговий обсяг безоплатного користування електроенергію, наприклад, 30 кВт. Якщо така пільга є, то її віднімають від спожитого обсягу, а далі розрахунок здійснюється за прийнятими тарифами. Розробіть у середовищі програмування Lazarus проект Оплата за електроенергію, у якому користувач вносить у текстове поле обсяг спожитої електроенергії, та позначає за допомогою елементів управління (визначте самостійно) наявність пільги. Після натиснення кнопки Розрахувати отримує у вікні повідомлення суми для оплати за електроенергію. Орієнтовний вигляд екранної форми і результати виконання програми у вікнах повідомлень:
        Проаналізуйте програмний код, де враховується пільговий обсяг електроенергії:
      • procedure TForm1.Button1Click(Sender: TObject);
        var result, outgo, privilege, price1, price2, price3: real;
        begin
             privilege:=30;
             price1:=0.71;
             price2:=1.29;
             price3:=1.64;
             outgo:=StrToFloat(Edit1.Text);
             if CheckBox1.Checked = True then outgo:=outgo-privilege;
             if outgo < 100 then
                result:=price1*outgo
             else if (outgo >= 100) and (outgo < 600) then
                result:=price2*outgo
             else
                result:=price3*outgo;
             MessageDlg('Сума для оплати за електроенергію:' + #13#10 + FloatToStr(result) + ' грн.', mtInformation, [mbOk], 0);
        end;
      • Завдання 2У магазині на деякі товари (молоко, фрукти, овочі, печиво) прийняли систему знижок: товар, який не проданий за тиждень, наступного тижня дешевшає на 10%, ще через тиждень – на 20% і т.д. Розробіть у середовищі Lazarus проект Знижки, у якому користувач обирає товар й у текстове поле вносить номер тижня покупки
        Після натиснення кнопки Розрахувати у вікні повідомлення – отримує ціну товару на дату покупки
        Візьміть до уваги, що відсотки знижки розраховуються, починаючи із другого тижня за формулою:
        Проаналізуйте рядки програмного коду, де вибираються товари, і як обчислюється ціна товару зі знижкою, в залежності від порядкового номера тижня:
      • procedure TForm1.Button1Click(Sender: TObject);
        var n, i: integer;
            price, p_milk, p_fruits, p_vegetables, p_cookies:real;
            result: string;
        begin
           n:=StrToInt(Edit1.Text);
           p_milk:=30;
           p_fruits:=55;
           p_vegetables:=25;
           p_cookies:=15;
           if ComboBox1.ItemIndex = 0 then
                  price:=p_milk
           else if ComboBox1.ItemIndex = 1 then
                  price:=p_fruits
           else if ComboBox1.ItemIndex = 2 then
                  price:=p_vegetables
           else
                  price:=p_cookies;
        
           if n >= 2 then
              begin
                 i:=2;
                 while i <= n do
                       begin
                            price:=price*(100-i*10)/100;
                            i:=i+1;
                       end;
                 result:='Ціна товару зі знижкою: ' + FloatToStr(price) + ' грн.' + #13#10 + 'на ' + IntToStr(n) + ' тижні.';
              end
           else
               result:='Ціна товару: ' + FloatToStr(price) + ' грн.' + #13#10 + 'Знижка відсутня.';
           MessageDlg(result, mtInformation, [mbOk], 0);
        end;
      • Завдання 3. Один дідусь у селі вирішив розводити кроликів. Він знає, що ще в ХІІІ ст. Леонардо Пізанський вивів формулу закону розмноження кроликів, яка визначає ряд чисел, що отримали назву чисел Фібоначчі: 1, 1, 2, 3, 5, 8… Можна помітити, що починаючи з третього числа, кожне наступне дорівнює сумі двох попередніх, тобто має місце формула: 
        Розробіть проект у середовищі програмування мовою Python, за яким після натиснення кнопки Розрахувати за введеним у текстове поле порядковим номером, що визначає послідовність етапу розмноження кроликів, у вікні повідомлення буде відображено відповідне число Фібоначчі. Наприклад, програма може мати такий вигляд екранної форми і відповідний результат:
        Скористуйтеся програмним кодом, поданим нижче, для аналізу роботи алгоритму повторення:
      • import tkinter
        from tkinter import ttk
        from tkinter import messagebox
        main = tkinter.Tk()
        main.title('Кролеферма')
        
        # створення об'єкта для отримання значення з текстового поля: Етап розведення кроликів
        n_var = tkinter.StringVar()
        
        # опрацювання події натиснення кнопки
        def button_click():
            
            # отримання значення введеного рядка Етап розведення кроликів і присвоєння змінній n
            n = int(n_var.get())
            
            fibonacci = 0
            fib1 = 1
            for i in range(n):
                fib2 = fib1
                fib1 = fibonacci
                fibonacci = fib1 + fib2
        
            # виведення повідомлення кількість кроликів на вибраному етапі розведення    
            tkinter.messagebox.showinfo('Число кроликів', str(fibonacci))
                
        #створення текстового напису Введіть номер тижня та його розміщення на головній формі
        label = tkinter.Label(text='Етап розведення кроликів')
        label.pack()
        
        #створення текстового поля Етап розведення кроликів та його розміщення на головній формі
        edit = tkinter.Entry(main, textvariable=n_var)
        edit.pack()
        
        #створення кнопки та розміщення об'єкта на головній формі
        button = tkinter.Button(main, text='Отримати число кроликів', command=button_click)
        button.pack()
        
        #запуск опрацювання подій програми
        main.mainloop()
      • Завдання 4Члени математичного гуртка ознайомились із поняттям факторіала числа – добутку натуральних чисел від 1 до даного числа: 
        Розробіть проект у середовищі програмування мовою Python, з допомогою якого можна буде порівняти значення факторіала числа та його квадрата. Спроектуйте інтерфейс екранної форми і вікна повідомлення (наприклад, як на зразку)
        і проаналізуйте програмний код для реалізації завдання:
      • import tkinter
        from tkinter import ttk
        from tkinter import messagebox
        main = tkinter.Tk()
        main.title('Порівняння')
        
        # створення об'єкта для отримання значення з текстового поля: Введіть число
        n_var = tkinter.StringVar()
        
        # опрацювання події натиснення кнопки
        def button_click():
            
            # отримання значення введеного рядка Етап розведення кроликів і присвоєння змінній n
            n = int(n_var.get())
            # початкове значення факторіала = 1
            factorial = 1
            # result - змінна для зберігання результатів порівнння, початкове значення - порожній рядок
            result = ''
            # знаходження факторіала введеного числа
            for i in range(2, n+1):
                factorial = factorial * i
            # порівняння квадрата і факторіала введеного числа 
            if factorial > n*n: 
                result = '>'
            elif factorial < n*n:
                result = '<'
            else:
                result = '='
            # виведення повідомлення про порівняння факторіала числа та його квадрата    
            tkinter.messagebox.showinfo('Порівняння', 'Факторіал числа дорівнює: ' + str(factorial) + '\nКвадрат числа дорівнює: ' + str(n*n) + '\nФакторіал числа ' + str(result) + ' Квадрат числа')
                
        #створення текстового напису Введіть число та його розміщення на головній формі
        label = tkinter.Label(text='Введіть число')
        label.pack()
        
        #створення текстового поля Введіть число та його розміщення на головній формі
        edit = tkinter.Entry(main, textvariable=n_var)
        edit.pack()
        
        #створення кнопки та розміщення об'єкта на головній формі
        button = tkinter.Button(main, text='Порівняти', command=button_click)
        button.pack()
        
        #запуск опрацювання подій програми
        main.mainloop()
      Домашнє завдання
      • Опрацювати підручник: §25 с. 170-177

      Складання та реалізація алгоритмів з повтореннями для опрацювання величин

      Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
      Види навчальної діяльності
      Обговорюємо
          1. Що спільного й чим відрізняються цикли while та repeat у мові програмування Free Pascal?
          2. Поясніть, коли припиняється виконання команд у тілі циклу для циклів із передумовою, післяумовою та циклу з лічильником. Чи можна вимушено перервати виконання циклу?
          3. Чим відрізняються способи отримання випадкового значення величини в мовах програмування Free Pascal та Python?
          Діємо разом
          • Вправа 1. Число називається простим, якщо воно ділиться без остачі тільки на одиницю й на себе. Розробіть програму у середовищі Lazarus, за допомогою якої буде перевірятись, чи є простим число введене в текстове поле. 
          1. Завантажте середовище Lazarus і створіть новий проект. 
          2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям
          3. Змініть шрифт і розмір текстових написів на формі.
          4. Створіть процедуру опрацювання події натиснення кнопки Перевірити:
            procedure TForm1.Button1Click(Sender: TObject);
            var n, i: integer;
            begin
               n := StrToInt(Edit1.Text);
               i := 1;
               repeat
                  i := i+1
               until n mod i = 0;
               if n = i then
                  Edit2.Text := 'введене число просте'
               else
                  Edit2.Text := 'введене число не просте'
            end;
          5. Запустіть проект на виконання для чисел: 15, 19. Перевірте отриманий результат.
          6. Збережіть проект і завершіть роботу із середовищем програмування.
          • Вправа 2Складіть програму мовою програмування Python, яка реалізує гру Відгадай число між комп'ютером та користувачем. Користувач не більше ніж за 6 спроб має відгадати «задумане» число з діапазону від 1 до 20. Якщо користувач відгадає, то на екран виводиться повідомлення про кількість спроб, якщо ні – виводиться «задумане» число..
          1. У середовищі програмування мовою Python створіть новий файл з іменем Відгадай число.
          2. В області програмного коду запишіть команди за зразком:
          3. import random
            guessesTaken = 0
            myName = input('Привіт! Як тебе звати? ')
            number = random.randint(1, 20)
            print('Отже, ' + myName + ', я задумав число від 1 до 20.')
            while guessesTaken < 6:
                guess = int(input('Спробуй відгадати. '))
                guessesTaken += 1
                if guess < number:
                    print('Твоє число менше від задуманого.')
                elif guess > number:
                    print('Твоє число більше за задумане.')
                else:
                    break
            if guess == number:
                print('Дуже добре, ' + myName + '! Для відгадування тобі знадобилося ' + str(guessesTaken) + ' разів!')
            else:
                print('Ні. Число, яке я задумав: ' + str(number))
          4. Проаналізуйте програмний код кожного рядка, запустіть проект на виконання. Якщо є помилки - виправте їх.
          5. Збережіть проект і завершіть роботу із середовищем програмування.
          Працюємо в парах
          • Поміркуйте, чим відрізнятиметься проект Відгадай число, створений мовою програмування Python, від аналогічного, розробленого мовою програмування Free Pascal. Реалізуйте такий проект у середовищі Lazarus.
          Виконуємо самостійно
          • Завдання 1. Розробіть проект у середовищі програмування Lazarus, у якому із тексту, який вводиться з клавіатури, буде виводитися та його частина, що розташована: а) до першої крапки; б) від другої крапки й до кінця. Екранна форма може мати такий вигляд:
            Використайте програмний код для процедур опрацювання подій натиснення кнопок: для першої кнопки
            procedure TForm1.Button1Click(Sender: TObject);
            var s, result: string;
                i, d: integer;
            begin
              d := length(Edit1.Text);
            
              s := Edit1.Text;
              for i:= 0 to d do
                  if copy(s, i, 1) = '.' then
                       begin
                         result:=copy(s, 0, i-1);
                         break
                       end;
              MessageDlg(result, mtInformation, [mbOk], 0);
            end;
            і для другої кнопки
            procedure TForm1.Button2Click(Sender: TObject);
            var s, result: string;
                k, i, d: integer;
            begin
                d := length(Edit1.Text);
                k := 0;
                s := Edit1.Text;
                for i:= 0 to d do
                    if copy(s, i, 1) = '.' then
                         begin
                           k := k + 1;
                           if k = 2 then
                                begin
                                     result:=copy(s, i+1, d);
                                     break
                                end;
                         end;
                MessageDlg(result, mtInformation, [mbOk], 0);
            end;     
            Проаналізуйте програмний код, де використовуються функції обробки текстових величин.
          • Завдання 2Розробіть проект у середовищі програмування мовою Python, у якому у введеному виразі, що містить арифметичні операції без дужок і математичних функцій, у повідомленні буде виводитись, які дії потрібно виконати.
            Проаналізуйте програмний код, поданий нижче, зверніть увагу на використання у програмі операторів розгалуження і повторення:
          • import tkinter
            from tkinter import ttk
            from tkinter import messagebox
            main = tkinter.Tk()
            main.title('Повідомлення, які дії виконати у виразі')
            
            # створення об'єкта для отримання значення з текстового поля: Введіть вираз
            text_var = tkinter.StringVar()
            
            # опрацювання події натиснення кнопки
            def button_click():
                # отримання значення введеного рядка і присвоєння змінній text
                text = text_var.get()
                # k_plus, k_minus, k_division, k_product  - змінні, що позначатимуть кіьбкість відповідних арифметичних операцій
                k_plus, k_minus, k_division, k_product = 0, 0, 0, 0
                # обчислюємо довжину введеного тексту
                d = len(text)
                # result - змінна для зберігання результуючого рядка
                result = 'У виразі необхідно виконати такі дії: \n'
                # виконуємо обхід у циклі по тексту для пошуку знаків арифметичних операцій (+ - * /)
                for i in range(d):
                    if text[i] == '+':
                        k_plus += 1
                    elif text[i] == '-':
                        k_minus += 1
                    elif text[i] == '*':
                        k_product += 1
                    elif text[i] == '/':
                        k_division += 1
                    else:
                        pass
                if k_product != 0:
                    result += 'множення, ' + str(k_product) + ' разів\n'
                if k_division != 0:
                    result += 'ділення, ' + str(k_division) + ' разів\n'
                if k_plus != 0:
                    result += 'додавання, ' + str(k_plus) + ' разів\n'
                if k_minus != 0:
                    result += 'віднімання, ' + str(k_minus) + ' разів'         
                # виведення повідомлення про дії у арифметичному виразі
                tkinter.messagebox.showinfo('Дії у виразі', result)
                    
            #створення текстового напису Введіть вираз та його розміщення на головній формі
            label = tkinter.Label(text='Введіть вираз')
            label.pack()
            
            #створення текстового поля Введіть вираз та його розміщення на головній формі
            edit = tkinter.Entry(main, textvariable=text_var)
            edit.pack()
            
            #створення кнопки та розміщення об'єкта на головній формі
            button = tkinter.Button(main, text='Вивести повідомлення', command=button_click)
            button.pack()
            
            #запуск опрацювання подій програми
            main.mainloop()
          Домашнє завдання
          • Опрацювати підручник: §25 с. 174-177

          Складання та реалізація алгоритмів із циклом з лічильником

          Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
          Види навчальної діяльності
          Обговорюємо
              1. Чим відрізняються способи зміни значення лічильника в циклі з лічильником у мовах програмування Free Pascal та Python?
              2. Як в операторах циклу в мовах програмування Free Pascal та Python організовують виконання декількох команд у тілі циклу?
              3. У яких випадках доцільніше використовувати цикл з лічильником?
              Діємо разом
              • Вправа 1. Розробіть у середовищі програмування мовою програмування Python проект, за допомогою якого можна визначити, скільки слів введено в текстове поле, якщо відомо, що між словами міститься лише один пропуск. 
              1. У середовищі програмування мовою Python створіть новий файл з іменем Кількість слів.
              2. В області програмного коду запишіть команди за зразком:
              3. import tkinter
                from tkinter import ttk
                from tkinter import messagebox
                main = tkinter.Tk()
                main.title('Кількість слів у реченні')
                
                # створення об'єкта для отримання значення з текстового поля: Введіть речення
                row_var = tkinter.StringVar()
                
                # опрацювання події натиснення кнопки
                def button_click():
                    # початкові дані: s - кількість слів (спочатку дорівнює нулю), z - рядок, що складається з одного пропуску
                    s = 0
                    z = ' '
                    # отримання значення введеного рядка і присвоєння змінній st  
                    st = row_var.get()
                    # визначення довжини рядка
                    k = len(st)
                    # проходимо за допомогою циклу від початку рядка до кінця, фіксуючи кожне слово, якщо зустрінемо пропуск 
                    for i in range(0, k):
                        if st[i] == z:
                            s = s + 1 # s++
                    # виведення повідомлення про кількість слів у реченні
                    tkinter.messagebox.showinfo('Результат', str(s+1))
                        
                #створення текстового напису Введіть речення та його розміщення на головній формі
                label = tkinter.Label(text='Введіть речення')
                label.pack()
                
                #створення текстового поля Введіть речення та його розміщення на головній формі
                edit = tkinter.Entry(main, textvariable=row_var)
                edit.pack()
                
                #створення кнопки та розміщення об'єкта на головній формі
                button = tkinter.Button(main, text='Визначити', command=button_click)
                button.pack()
                
                #запуск опрацювання подій програми
                main.mainloop()
              4. Запустіть проект на виконання. Перевірте, чи результат для введеного тексту, як на скріншоті, відповідає значенню 3:
              5. Збережіть проект і завершіть роботу із середовищем програмування.
              • Вправа 2Розробіть проект у середовищі програмування Lazarus, за допомогою якого можна визначити найбільший спільний дільник двох цілих чисел (НСД).
              1. Завантажте середовище Lazarus і створіть новий проект. 
              2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям
              3. Змініть шрифт і розмір текстових написів на формі.
              4. Створіть процедуру опрацювання події натиснення кнопки Визначити:
                procedure TForm1.Button1Click(Sender: TObject);
                var a, b: integer;
                begin
                   a := StrToInt(Edit1.Text);
                   b := StrToInt(Edit2.Text);
                   while (a <> 0) and (b <> 0) do
                         begin
                           if a > b then
                              a := a mod b
                           else
                              b := b mod a
                         end;
                   Edit3.Text := 'Найбільший спільний дільник ' + IntToStr(a+b);
                end;
              5. Проаналізуйте програмний код, запустіть проект на виконання. Якщо є помилки - виправте їх.
              6. Збережіть проект і завершіть роботу із середовищем програмування.
              Працюємо в парах
              • Поміркуйте, як скласти схему для узагальнення опису циклів із повторенням мовами програмування Free Pascal та Python. Побудуйте таку схему у середовищі текстового процесора. За потреби, доповніть схему новими даними.
              Досліджуємо
              • Завдання. Виконайте фрагменти програм, написані мовою програмування Python
              • а) друкується таблиця множення на 9
              • for i in range(1, 11):
                    for j in range(1, 11):
                        result = i * j
                        print(str(i) + ' * ' + str(j) + ' = ' + str(result))
                    print()
              • б) друкуються квадрати чисел від 10 до 1; 
              • for i in range(10, 0, -1):
                    print(i*i)
              • в) знаходиться сума цілих чисел від 1 до 10; 
              • n = 10
                s = 0
                for i in range(1, n+1):
                    s += i    
                print('Сума цілих чисел з діапазону від 1 до ' + str(n) + ' дорівнює ' + str(s))
              • г) обчислюється добуток парних чисел першого десятка; 
              • d = 1
                for i in range(1, 11):
                    if i % 2 == 0:
                        d *= i    
                print('Добуток парних чисел першого десятка дорівнює ' + str(d))
              • ґ) визначається кількість введених речень (речення закінчуються крапкою, знаком оклику чи знаком питання)
              • r = input('Введіть текст:\n')
                d = len(r)
                s = 0
                for i in range(0, d):
                    if r[i] in ('.', '!', '?'):
                        s += 1    
                print('Кількість введених речень ' + str(s))
                Зверніть увагу на оператори циклу, які використовуються в програмах.
              Домашнє завдання
              • Опрацювати підручник: §25 с. 172-174

              Алгоритми з повтореннями мовою програмування (цикл з передумовою)

              Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
              Види навчальної діяльності
              Обговорюємо
                  1. Які оператори для опису алгоритмічної структури повторення використовують у програмах мовою програмування Free Pascal?
                  2. Чим відрізняються оператори для опису алгоритмічної структури повторення в мові програмування Python від подібних операторів циклу в мові програмування Free Pascal?
                  3. Як в операторах циклу в мовах програмування Free Pascal та Python організовують виконання декількох команд у тілі циклу?
                  Діємо разом
                  • Вправа 1. Фермер вирощує новий сорт рослин для годівлі тварин. Він дослідив закономірність, що після кожного зрізу, який здійснюється через тиждень (один раз на два тижні) не більше 5 разів, кількість зеленої маси збільшується за формулою s = s + (i - 1) * i, де і – номер тижня, s – кількість зеленої маси. Розробіть проект у середовищі програмування мовою Python, за яким буде визначено, чи встигне фермер зібрати n одиниць зеленої маси.
                  1. У середовищі програмування мовою Python створіть новий файл з іменем Урожай.
                  2. В області програмного коду запишіть команди за зразком:
                  3. import tkinter
                    from tkinter import ttk
                    from tkinter import messagebox
                    main = tkinter.Tk()
                    main.title('Урожай')
                    
                    # створення об'єкта для отримання значення з текстового поля: Потреба зеленої маси
                    z_var = tkinter.StringVar()
                    
                    # опрацювання події натиснення кнопки
                    def button_click():
                        # початкові дані: i - номер тижня, s - кількість зеленої маси, при першому зрізі s=1
                        s = 1
                        i = 1
                        # отримання значення введеного рядка і присвоєння змінній k  
                        k = int(z_var.get())
                        # обчислюємо збільшення зеленої маси за формулою s = s + (i-1) * i за 10 тижнів
                        while i <= 10:
                            s += (i-1) * i
                            i += 2
                        # виведення повідомлення про зібрання кількості зеленої маси
                        if k <= s:
                            tkinter.messagebox.showinfo('Результат', 'Встигне отримати ' + str(s) + '.')
                        else:
                            tkinter.messagebox.showinfo('Результат', 'Не встигне отримати.')
                            
                    #створення текстового напису Введіть потребу зеленої маси та його розміщення на головній формі
                    label = tkinter.Label(text='Введіть потребу зеленої маси')
                    label.pack()
                    
                    #створення текстового поля Введіть потребу зеленої маси та його розміщення на головній формі
                    edit = tkinter.Entry(main, textvariable=z_var)
                    edit.pack()
                    
                    #створення кнопки та розміщення об'єкта на головній формі
                    button = tkinter.Button(main, text='Визначити', command=button_click)
                    button.pack()
                    
                    #запуск опрацювання подій програми
                    main.mainloop()
                  4. Запустіть проект на виконання. Перевірте, чи отримаєте ви для значення 50 повідомлення "Встигне отримати 141".
                  5. Збережіть проект і завершіть роботу із середовищем програмування.
                  • Вправа 2Розробіть проект у середовищі програмування Lazarus, у якому за введеним початковим і кінцевим значеннями температури та кроком їх зміни в текстове поле буде виведений список відповідних температур за шкалою Фаренгейта, якщо для такого переведення використовуються формулу:
                  1. Завантажте середовище Lazarus і створіть новий проект. 
                  2. Змініть значення властивостей об'єкта Form1, розмістіть на формі об'єкти, як на зразку, та надайте значень їх властивостям
                    Зверніть увагу на використання у програмі елемента управління ListBox для відображення списку температур  
                    Змініть шрифт і розмір текстових написів на формі.
                  3. Створіть процедуру опрацювання події натиснення кнопки Отримати список температур:
                    procedure TForm1.Button1Click(Sender: TObject);
                    var t1, t2, k, tf : real;
                    begin
                      t1 := StrToFloat(Edit1.Text);
                      t2 := StrToFloat(Edit2.Text);
                      k := StrToFloat(Edit3.Text);
                      while t1 <= t2 do
                         begin
                            tf := 9/5*t1 + 32;
                            ListBox1.Items.Add(FloatToStr(tf));
                            t1 := t1 + k
                         end;
                    end;
                  4. Запустіть проект на виконання. Введіть початкове і кінцеве значення температур за шкалою Цельсія, крок зміни і отримайте значення за шкалою Фаренгейта. Якщо є помилки - виправте їх.
                  5. Поміркуйте, як записуються значення температури у вигляді списку в полі ListBox. Яка частина програмного коду це виконує? 
                  6. Збережіть проект і завершіть роботу із середовищем програмування.
                  Працюємо в парах
                  • Поміркуйте, чим відрізнятиметься проект Урожай, створений мовою програмування Python, від аналогічного, розробленого мовою програмування Free Pascal. Реалізуйте такий проект у середовищі Lazarus. 
                  Досліджуємо
                  • Завдання. Яких значень буде надано змінним, імена яких трапляються в командах, у результаті виконання таких фрагментів програм (для різних значень вхідних даних): 
                  Домашнє завдання
                  • Опрацювати підручник: §25 с. 170-172

                  субота, 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