Сторінка 1

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

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

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