Сторінка 1

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

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

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
      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