Сторінка 1

четвер, 15 лютого 2018 р.

Відображення даних у табличній формі

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
  1. Поясніть порядок налаштування вигляду елемента StringGrid1 для відображення одновимірного масиву.
  2. Яка властивість компонента StringGrid1 відповідає за можливість редагування вмісту клітинок таблиці StringGrid?
Діємо разом
  • Вправа 1. Розробіть проект, у якому стовпець із п'яти слів, які користувач вводить у багаторядкове поле, буде розміщуватись у рядку таблиці.
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus, створіть новий проект, розмістіть на екранній формі об'єкти, як показано на скріншотах,
    Компонент StringGrid
    Обмін даними
    і надайте значення їхнім властивостям згідно поданої таблиці:
    Таблиця властивостей для проекту Обмін даними
  2. Створіть процедуру опрацювання події натиснення кнопки Сформувати. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: а - масив рядків, i - лічильник номерів рядків у багаторядковому текстовому полі та номерів у таблиці виведення.
  3. var i: integer;
        a : array [1..5] of string;
  4. У вікні редактора коду запишіть команди для зчитування даних з текстового поля, формування написів у таблиці та заповнення клітинок таблиці. 
  5. begin
       StringGrid1.Cells[0,1] := 'a';
       for i:= 1 to 5 do
           begin
             a[i] := Memo1.Lines[i-1];
             StringGrid1.Cells[i,0] := IntToStr(i);
             StringGrid1.Cells[i,1] := a[i];
           end;
    end;
  6. Виконайте проект і проаналізуйте результати. Якщо є помилки, виправте їх і збережіть зміни. 
  • Вправа 2. Створіть проект, у якому необхідно заповнити таблицю з клавіатури і знайти середнє арифметичне елементів масиву.
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus і створіть новий проект, розмістіть на екранній формі об'єкти, як на скріншоті (заповніть таблицю вручну з клавіатури, використовуючи контекстне меню компонента StringGrid1)
    Зміна властивостей StringGrid
    і введіть програмний код. 
  2. procedure TForm1.Button1Click(Sender: TObject);
    var   a: array[1..6] of Integer;
    sum: Integer;  // сума елементів
    sr: Real;   // середнє арифметичне
    i: Integer;  // індекс
    begin
      // введення масиву
      { Функція Length() повертає довжину рядка. Вважаємо, що якщо комірка порожня, то відповідний елемент масиву дорівнює нулю }
      For i := 1 to 6 do
       If Length(StringGrid1.Cells[i-1, 1]) <> 0
        Then a[i] := StrToInt(StringGrid1.Cells[i-1, 1])
        else a[i] := 0;
      // опрацювання масиву
      sum := 0;
      For i := 1 to 6 do sum := sum + a[i];
      sr := sum / 6;
      Label1.Caption := 'Сума елементів: ' + IntToStr(sum) + #13#10 + 'Середнє арифметичне: ' + FloatToStr(sr); { #73#/0 — службові символи повернення каретки і перенесення рядка відповідно }
    end;
  3. Запустіть проект на виконання і проаналізуйте результати виконання.
    Середнє арифметичне елементів таблиці
    У разі появи помилок, виправте їх і збережіть зміни.
  • Вправа 3. Створіть проект для обчислення середнього значення десяти дійсних чисел з діапазону 9,0-10,0, отриманих у ході деякого експерименту.
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus і створіть новий проект, розмістіть на екранній формі об'єкти, як на скріншоті,
    Середнє значення
    надайте значення їхнім властивостям згідно таблиці.
    Таблиця властивостей для проекту Середнє значення
  2. Створіть процедуру опрацювання події натиснення кнопки Розрахувати. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: a - масив дйсних чисел, s - середнє значення, i - номер (індекс) елемента масиву.
  3. var i : integer;
        s : real;
        a : array [1..10] of real;
  4. У вікні редактора коду запишіть команди введення значень елементів масиву, їх опрацювання та виведення елементів масиву. Зверніть увагу на те, що елементи масиву генеруються випадково. А для перетворення значення елемента дійсного типу в рядковий використано команду FlaotToStrF - перетворення дійсного числа з фіксованою крапкою із 3 цифр, серед яких 2 - у дробовій частині, у рядкову величину: FloatToStrF(a[i], ffFixed, 3, 2).
  5. begin
        Randomize;
        StringGrid1.Cells[0,1] := 'a';
        s := 0;
        for i := 1 to 10 do
            begin
              a[i] := Random + 9.0;
              StringGrid1.Cells[i,0] := IntToStr(i);
              StringGrid1.Cells[i,1] := FloatToStrF(a[i], ffFixed, 3, 2);
              s := s + a[i];
            end;
        s := s/10;
        Edit1.Text := FloatToStrF(s, ffFixed, 2, 2);
    end; 
  6. Запустіть проект на виконання, проаналізуйте результат, якщо є помилки, виправте їх і збережіть зміни.
  • Створення проекту з використанням мови Python
  1. Відкрийте середовище програмування мовою Python, створіть новий файл і збережіть його під іменем Середнє значення.
  2. У вікні редактора коду введіть команди. Зверніть увагу на те, що для округлення дійсного числа можна застосовувати команду round(величина, порядок), яка не потребує підключення бібліотеки math.
  3. # імпорт модуля генерування випадкових чисел
    import random
    # створюємо порожній список
    a = []
    # вказуємо змінну для обчислення середнього початкового значення
    s = 0
    for i in range(10):
        # додаємо згенеровані виипадковим чином елементи до списку
        a.append(round((random.random() + 9.0), 2))
        # знаходимо суму елементів списку
        s += a[i]
    # знаходимо середнє значення елементів списку
    s = s / 10
    # виводимо згенерований список
    print(a)
    # виводимо середнє значення
    print(round(s, 2))
  4. Запустіть проект на виконання і перевірте, чи відповідають умові завдання отримані результати. Якщо є помилки, виправте їх, збережіть зміни.
Працюємо в парах
  • Запропонуйте приклади проектів, у яких доцільно вводити значення табличної величини, використовуючи:
  1. Текстові поля чи написи.
  2. Генерування випадкових чисел.
  3. Багаторядкове поле.
  4. Таблицю рядків.
  5. Вікно повідомлення.
Виконуємо самостійно
  • Завдання 1. Створіть проект у середовищі Lazarus під назвою Розклад уроків, у якому назви уроків формують табличну величину з іменем lessons за допомогою вікна введення, а результат виводиться у вигляді таблиці.
    Проект Розклад уроків
    Проаналізуйте програмний код, наведений нижче і скористайтеся ним для реалізації проекту.
  • procedure TForm1.Button1Click(Sender: TObject);
    var i : integer;
        lessons : array[1..5] of string;
    begin
       StringGrid1.Cells[0,1] := 'Предмет';  // створення заголовка в першому рядку таблиці (відлік від 0)
       for i:= 1 to 5 do
           begin
             lessons[i] := Memo1.Lines[i-1];
             StringGrid1.Cells[i,0] := IntToStr(i);
             StringGrid1.Cells[i,1] := lessons[i];
           end;
    end;
  • Завдання 2. Створіть у середовищі Lazarus проект під назвою Зріст, у якому вводиться масив цілих чисел, що відповідають зросту ваших однокласників, і масив з, відповідно, їхніми іменами, а у таблицю виводиться об'єднана інформація про зріст і відповідні імена.
    Проект Зріст
    Проаналізуйте програмний код і використайте його для реалізації проекту.
  • procedure TForm1.Button1Click(Sender: TObject);
    var i: integer;
        h: array[1..10] of integer;
        students: array[1..10] of string;
    begin
       StringGrid1.Cells[0,0] := 'Учні';
       StringGrid1.Cells[0,1] := 'Зріст';
       for i:= 1 to 10 do
           begin
             h[i] := StrToInt(Memo1.Lines[i-1]);
             students[i] := Memo2.Lines[i-1];
             StringGrid1.Cells[i,0] := students[i];
             StringGrid1.Cells[i,1] := IntToStr(h[i]);
           end;
    end;
  • Завдання 3. Використовуючи мову програмування Python створіть програму, яка виконає перестановку елементів місцями у списку з 10 дійсних чисел, що стоять на парних і непарних місцях.
  1. Відкрийте середовище програмування мовою Python, створіть новий файл і збережіть його під іменем Перестановка.
  2. У вікні редактора коду введіть команди.
  3. # імпорт модуля генерування випадкових чисел
    import random
    # створюємо порожній список
    a = []
    for i in range(10):
        # додаємо елементи, згенеровані виипадковим чином, до списку
        a.append(round(random.uniform(-10, 10), 1))
    # виводимо згенерований список
    print(a)
    for i in range(0, 10, 2):
        # видаляємо елемент із списку a
        element = a.pop(i)
        # вставляємо видалений елемент у правильну позицію
        a.insert(i + 1, element)
    # виводимо список із перестановками
    print(a)
  4. Запустіть проект на виконання і проаналізуйте результат.
  • Завдання 4. Створіть проект у середовищі Lazarus, у якому виконується перестановка місцями у списку з 10 дійсних чисел, що стоять на парних і непарних місцях.
  1. Створіть новий проект. Змініть властивості Caption форми, розмістіть на формі компоненти і налаштуйте їхні властивості згідно із скріншотом. 
    Проект Перестановка елементів
  2. Створіть процедуру обробки події для кнопки Виконати перестановку. Таблиця StringGris1 має таку структуру: перший рядок таблиці - це індекси масиву з 10 цілих чисел (масив заповнюється випадковими цілими числами), другий рядок таблиці - виведення елементів масиву, третій рядок таблиці - перестановка місцями елементів масиву, що стоять на парних і непарних місцях, четвертий рядок таблиці - обнулення елементів з парними індексами, які містяться у другому рядку таблиці. Програмний код реалізації проекту може бути наступним.
  3. procedure TForm1.Button1Click(Sender: TObject);
    var a : array[1..10] of integer;
        i, c : integer;
    begin
      Randomize;
      for i := 1 to 10 do
          begin
               a[i] := Random(20);
               StringGrid1.Cells[i-1,0] := IntToStr(i);
               StringGrid1.Cells[i-1,1] := IntToStr(a[i]);
          end;
      i := 1;
      while i <= 9 do
            begin
              c := a[i];
              a[i] := a[i+1];
              a[i+1] := c;
              i := i + 2;
            end;
      for i := 1 to 10 do
          StringGrid1.Cells[i-1,2] := IntToStr(a[i]);
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var  i : integer;
    begin
      for i := 1 to 10 do
          begin
               if StrToInt(StringGrid1.Cells[i-1,0]) mod 2 <> 0
                 then
                     StringGrid1.Cells[i-1,3] := StringGrid1.Cells[i-1,1]
                 else
                     StringGrid1.Cells[i-1,3] := IntToStr(0);
          end;
    end;
  4. Перевірте роботу програми, у разі появи помилок, виправте їх. Збережіть зміни.
Домашнє завдання
  • Опрацювати підручник: §35 с. 194-197 (Інформатика, 9 клас, автори: Бондаренко О. О., Ластовецький В. В., Пилипчук О. П., Шестопалов Є. А.)

середу, 14 лютого 2018 р.

Алгоритми опрацювання табличних величин

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
  1. Яким є алгоритм розв'язування задач, у яких передбачено опрацювання деякої сукупності даних?
  2. Які є способи зміни значень елементів масиву мовами програмування Object Pascal і Python?
  3. Які елементи управління в середовищі Lazarus можна використати для введення і виведення елементів масиву?
  4. Як описати алгоритм зміни значень табличних елементів мовами програмування Object Pascal і Python?
  5. Як описати алгоритм знаходження суми чи добутку значень табличних елементів мовами програмування Object Pascal і Python?
  6. Як описати алгоритм знаходження суми чи кількості табличних елементів, що відповідають заданим умовам, мовами програмування Object Pascal і Python
Діємо разом
  • Вправа 1. Розробіть проект, у якому елементи табличної величини a, яка містить 10 цілих чисел, змінюються їх квадратами.
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus, створіть новий проект, розмістіть на екранній формі об'єкти, як показано на скріншоті,
    Квадрати значень
    і надайте значення їхнім властивостям згідно поданої таблиці:
    Таблиця властивостей для проекту Квадрати значень
  2. Створіть процедуру опрацювання події натиснення кнопки Виконати. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: а - масив цілих чисел, i - номер (індекс) елемента масиву.
  3. var i: integer;
        a : array [1..10] of integer;
  4. У вікні редактора коду запишіть команди введення, опрацювання та виведення елементів масиву. Зверніть увагу на те, що багаторядкове поле містить текстові дані, тому для опрацювання їх спочатку слід перетворити на цілі числа, а потім виведення результату подати рядками. 
  5. begin
      for i := 0 to 9 do
            begin
                a[i+1] := StrToInt(Memo1.Lines[i]);
                a[i+1] := Sqr(a[i+1]);
                Memo2.Lines[i] := IntToStr(a[i+1]);
            end;
    end;
  6. Виконайте проект. Введіть у багаторядкове поле ліворуч послідовно 10 натуральних чисел, натискаючи після кожного клавішу Enter. Перевірте на цьому тестовому прикладі, чи відповідають умові завдання дії, пов'язані з об'єктами управління екранної форми. Якщо є помилки, виправте їх. 
  • Створення проекту з використанням мови Python
  1. Відкрийте середовище програмування мовою Python, створіть новий файл і збережіть його під іменем Квадрати значень.
  2. У вікні редактора коду введіть команди.
  3. import math
    # створюємо новий список
    a = []
    for i in range(10):
        # додаємо введені елементи до списку в області виконання проекту
        a.append(int(input('Введіть елемент списку: ')))
        # змінюємо значення введеного елемента списку
        a[i] = a[i] ** 2
    # виводимо результуючий список
    print(a)
  4. Запустіть проект на виконання. Введіть значення елементів списку і проаналізуйте отриманий результат. Якщо є помилки, виправте їх, збережіть зміни.
  • Вправа 2. Створіть програму для знаходження кількості елементів лінійної таблиці із 10 цілих чисел, які дорівнюють значенню її першого елемента.
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus і створіть новий проект, розмістіть на екранній формі об'єкти, як на скріншоті, надайте значення їхнім властивостям самостійно.
    Кількість елементів
  2. Створіть процедуру опрацювання події натиснення кнопки Виконати. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: a - масив цілих чисел, k - кількість елементів масиву, i - номер (індекс) елемента масиву.
  3. var i, k: integer;
        a : array [1..10] of integer;
  4. У вікні редактора коду запишіть команди введення значень елементів масиву, їх опрацювання та виведення кількості елементів, які дорівнюють першому елементу, враховуючи, що нумерація в багаторядковому текстовому полі починається з 0.
  5. begin
      k := 0;
      a[1] := StrToInt(Memo1.Lines[0]);
      for i := 1 to 9 do
          begin
            a[i+1] := StrToInt(Memo1.Lines[i]);
            if a[i+1] = a[1] then k := k + 1;
          end;
      Edit1.Text := IntToStr(k);
    end;
  6. Запустіть проект на виконання, проаналізуйте результат, якщо є помилки, виправте їх і збережіть зміни.
  • Створення проекту з використанням мови Python
  1. Відкрийте середовище програмування мовою Python, створіть новий файл і збережіть його під іменем Кількість елементів.
  2. У вікні редактора коду введіть команди.
  3. # створюємо новий список
    a = []
    # k - змінна, яка зберігатиме кліькість елементів списку, що дорівнюють першому
    k = 0
    for i in range(10):
        # додаємо введені елементи до списку
        a.append(int(input('Введіть елемент списку: ')))
    # шукаємо елементи у списку, які рівні з першим
    for i in range(9):
        if a[i+1] == a[0]:
            k += 1
    # виводимо кількість елементів, рівних першому
    print(k)
  4. Запустіть проект на виконання і перевірте, чи відповідають умові завдання отримані результати. Якщо є помилки, виправте їх, збережіть зміни.
Працюємо в парах
  • Мовами програмування Object Pascal і Python, запишіть фрагмент програми, у якій будуть реалізовані такі завдання:
  1. 5-му елементу лінійної таблиці A рядкового типу з 10 елементів надати значення 123.
  2. першому елементу лінійної таблиці А цілого типу з 10 елементів надати значення 8-го елемента цієї ж таблиці.
  3. Елементу з номером i лінійної таблиці А дійсного типу надати значення 19.81.
  4. 7-му елементу лінійної таблиці Number цілого типу з 10 елементів надати деяке конкретне значення.
  5. 2-му елементу лінійної таблиці Number дійсного типу з 10 елементів надати значення вмісту цієї ж клітинки, збільшене вдвічі.
  • Мовами програмування Object Pascal і Python, запишіть фрагмент програми, у якій перевірятимуться такі умови:
  1. Вміст першого елемента лінійної таблиці Year рядкового типу дорівнює значенню високосний.
  2. Вміст кожного елемента лінійної таблиці A дійсного типу належить заданому відрізку [a, b].
  3. Вміст 6-го елемента лінійної таблиці А дійсного типу не перевищує значення величини H.
  4. Вміст 5-го елемента лінійної таблиці з іменем Book цілого типу не збігається з 15-тим елементом цієї ж таблиці, збільшеним утричі.
  5. Вміст 7-го елемента лінійної таблиці А дійсного типу не перевищує дійсного числа K і вміст елемента лінійної таблиці з іменем City літерного типу дорівнює Київ.
  • Масив A[1..5] заповнено числами 3, 8, 5, 7, 6. Виконайте дії з елементами масиву:
  • a) For i:=1 to 5 do A[i]:=-A[i];
    b) For i:=1 to 5 do
           if A[i] mod 3 = 0 Then A[i]:=A[i] div 3;
    c) For i:=1 to 5 do
           if i mod 2 = 0 Then A[i]:=0;
    d) S:=0; For i:=1 to 5 do S:=S+A[i];
    e) P:=1; For i:=1 to 5 do If A[i]<=5 Then P:=P*A[i];
    f) K:=0; For i:=1 to 5 do If A[i]>5 Then K:=K+1;
    
  • Дано масив А[1..5]. Запишіть команди для реалізації завдань: 
  1. Ввести з клавіатури значення елементів масиву. 
  2. Знайти добуток елементів масиву. 
  3. Знайти мінімальний елемент масиву. 
  4. Знайти кількість додатних елементів масиву.
Виконуємо самостійно
  • Завдання 1. Створіть проект у середовищі Lazarus під назвою Надбавка, у якому заробітна плата 10 працівників деякого підприємства, подана дійсними величинами в лінійній таблиці, збільшується на задане число відсотків. Вікно екранної форми може мати такий вигляд.
    Надбавка до заробітної плати
    Проаналізуйте програмний код, наведений нижче і скористайтеся ним для реалізації проекту.
  • procedure TForm1.Button1Click(Sender: TObject);
    var i : integer;
        salary : array[1..10] of Real;
        k : real;
    begin
        k := StrToFloat(Edit1.Text);
        for i := 1 to 10 do
            salary[i] := StrToFloat(Memo1.Lines[i-1]);
        for i := 1 to 10 do
            Memo2.Lines.Add(FloatToStr(salary[i] + (salary[i] * k / 100)));
    
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Memo1.Clear;
      Memo2.Clear;
      Edit1.Text := '';
    end; 
  • Завдання 2. Створіть у середовищі Lazarus програму для для виконання завдання: масив numbers[1..50] заповнено випадковими числами в межах від 1 до 100. Визначити, скільки елементів масиву відрізняються від останнього елемента. Вікно екранної форми може мати вигляд.
    Кількість елементів, відмінних від останнього
    Проаналізуйте програмний код і використайте його для реалізації проекту.
  • procedure TForm1.Button1Click(Sender: TObject);
    var i, k, element : integer;
        numbers : array [1..50] of integer;
    begin
      Memo1.Clear;
      Randomize;
      k := 0;
      for i := 1 to 50 do
          begin
               numbers[i] := Random(100);
               Memo1.Lines.Add(IntToStr(numbers[i]));
          end;
    
      element := StrToInt(Memo1.Lines[49]);
      for i := 0 to 48 do
          begin
            if StrToInt(Memo1.Lines[i]) <> element
               then k := k + 1;
          end;
      Edit1.Text := IntToStr(k);
    end; 
  • Завдання 3. Використовуючи мову програмування Python, створіть програму за допомогою якої знаходять суму додатних і кількість від'ємних елементів лінійної таблиці дійсного типу.
  1. Відкрийте середовище програмування мовою Python, створіть новий файл і збережіть його під іменем Підрахунок.
  2. У вікні редактора коду введіть команди.
  3. # імпорт модуля генерування випадкових чисел
    import random
    # створюємо порожній список
    a = []
    # вказуємо змінну s для обчислення суми доатних елементів
    s = 0
    # вказуємо змінну k для обчислення кількості від'ємних елементів
    k = 0
    for i in range(10):
        # додаємо згенеровані виипадковим чином елементи до списку
        a.append(round(random.uniform(-10, 10), 1))
    for i in range(10):
        if a[i] >= 0:
            s += a[i]
        else:
            k += 1
    # виводимо згенерований список
    print(a)
    # виводимо суму додатних елементів
    print(round(s, 2))
    # виводимо кількість від'ємних елементів
    print(round(k, 2))
  4. Запустіть проект на виконання і проаналізуйте результат.
  • Завдання 4. У магазині обслужили за день n (n <= 200) покупців, кожен з яких витратив на покупки не більше за k (k <= 500) гривень. Створіть проект у середовищі Lazarus, у якому визначте денний прибуток магазину і середню суму споживчого чека. Знайдіть кількість покупців, які витратили на покупки суму, більшу за середній чек за день.
  1. Створіть новий проект. Змініть властивості Caption форми, розмістіть на формі компоненти і налаштуйте їхні властивості згідно із скріншотом. Текстове поле Edit1 призначене для введення кількості покупців, поле Memo1 - для виведення значень елементів масиву, список ListBox1 - для виведення результатів обчислень.
    Денний прибуток
  2. Опишіть змінні, необхідні для розв'язування задачі, як глобальні, тому що областю видимості для них є процедури обробки події обох кнопок Заповнити масив і Обчислити прибуток.
  3. var
      Form1: TForm1;
      buyers : array[1..200] of integer;
      sr: real;
      n : integer;
    
    implementation 
  4. Властивості ScrollBars елемента керування Memo1 задайте значення ssAutoVertical. Створіть процедуру обробки події для кнопки Заповнити масив.
  5. var i : integer;
    begin
      Randomize;
      Memo1.Clear;
      n := StrToInt(Edit1.Text);
      for i := 1 to n do
          begin
            buyers[i] := 1 + Random(500);
            Memo1.Lines.Add(IntToStr(buyers[i]));
          end;  
  6. Створіть процедуру обробки події для кнопки Обчислити прибуток. Результати обчислення виведіть у поле списку ListBox1.
  7. var i, sum : integer;
    begin
      sum := 0;
      for i := 1 to n do
           sum := sum + buyers[i];
      ListBox1.Items.Add('Денний прибуток: ' + IntToStr(sum) + ' грн.');
      sr := sum/n;
      ListBox1.Items.Add('Середній чек: ' + FormatFloat('0.##', sr) + ' грн.');  
  8. Створіть процедуру обробки події для кнопки Знайти кількість чеків. Запишіть команди для знаходження кількості елементів масиву, значення яких більші за середнє значення. Результати обчислень виведіть у поле списку ListBox1.
  9. var i, k: integer;
    begin
      k := 0;
      for i := 1 to n do
           if buyers[i] > sr then k := k + 1;
      ListBox1.Items.Add('Кількість чеків,');
      ListBox1.Items.Add('більших за середній: ' + IntToStr(k));
    end;
  10. Перевірте роботу програми, у разі появи помилок, виправте їх. Збережіть зміни.
Домашнє завдання
  • Опрацювати підручник: §34 с. 189-193 (Інформатика, 9 клас, автори: Бондаренко О. О., Ластовецький В. В., Пилипчук О. П., Шестопалов Є. А.)

неділю, 11 лютого 2018 р.

Багаторядкове текстове поле

Увага! Під час роботи з комп'ютером дотримуйтеся правил безпеки і санітарно-гігієнічних норм.
Види навчальної діяльності
Обговорюємо
  1. Які елементи управління використовують для введення чи виведення значень табличних величин у середовищі Lazarus?
  2. Чим відрізняється елемент управління Memo від елементів Edit і Label у середовищі Lazarus?
  3. Яка властивість компонента Memo містить список наявних елементів?
  4. Як визначити кількість елементів у списку Memo1.Lines?
  5. Як запрограмувати вставку елемента в кінець списку поля Memo1?
Діємо разом
  • Вправа 1. Знайдіть суму цілих чисел, які вводяться з клавіатури у поле Memo. кількість чисел не перевищує 100.
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus, створіть новий проект, розмістіть на екранній формі об'єкти Memo1, Button1, Edit1, надайте значення їхнім властивостям самостійно.
    Сума чисел багаторядкового поля
  2. Створіть процедуру опрацювання події натиснення кнопки Знайти суму. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: numbers - масив цілих чисел, n - кількість елементів масиву, sum - сума елементів списку-масиву, i - номер (індекс) елемента масиву.
  3. var numbers: array[1..100] of Integer; {масив для збереження чисел}
        n, i, sum: integer;  
  4. У вікні редактора коду запишіть команди для обчислення суми елементів масиву (списку), які будуть введені з клавіатури і запустіть проект на виконання.
  5. begin
      n := Memo1.Lines.Count;
      sum := 0;
      for i := 1 to n do numbers[i] := StrToInt(Memo1.Lines[i-1]);
      for i :=1 to n do sum := sum + numbers[i];
      Edit1.Text := IntToStr(sum);
    end;
  • Вправа 2. Розробіть проект для розв'язування такої задачі: "Масив numbers[1..10] заповнити випадковими цілими числами в межах від 1 до 100 і вивести значення елементів масиву в поле Memo1. Визначити, в якому рядку списку Memo1 знаходиться елемент, що дорівнює цілому числу (значення вводиться в поле Edit1) і результат записати в поле Memo2".
  • Створення проекту з використанням мови Object Pascal
  1. Відкрийте середовище Lazarus і створіть новий проект, розмістіть на екранній формі об'єкти, як на скріншоті, надайте значенням їхнім властивостям.
    Пошук рядка у списку
  2. Створіть процедуру опрацювання події натиснення кнопки Знайти елемент. У вікні редактора коду опишіть змінні, які будуть використовуватись у проекті: numbers - масив цілих чисел, який заповнюється випадковим чином від 1 до 100, k - ціле число, яке вводиться в поле Edit1 і шукається в масиві, i - номер (індекс) елемента масиву.
  3. var i, k: integer;
        numbers : array [1..10] of integer;
  4. У вікні редактора коду в тілі програми запишіть команди для очищення обох полів Memo, зберігання значення шуканого числа, введеного у поле Edit1, у змінну k, заповнення масиву за допомогою функції генерування цілих чисел і запису елементів масиву у поле Memo1.  
  5. Randomize;
    Memo1.Clear;  // очищення поля Memo1
    Memo2.Clear;  // очищення поля Memo2
    k := StrToInt(Edit1.Text);
    for i := 1 to 10 do numbers[i] := Random(100); // заповнення масиву випадковими цілими числами
    for i := 1 to 10 do Memo1.Lines.Add(IntToStr(numbers[i])); // додавання елементів масиву у Memo1
  6. Доповніть програму, введенням наступного коду, який здійснює пошук у полі Memo1 рядка із значенням введеного числа k і виводить інформацію про результати пошуку у поле Memo2 та виконайте проект.
  7. for i := 0 to Memo1.Lines.Count - 1 do
            begin
              if StrToInt(Memo1.Lines[i]) = k
                 then
                     Memo2.Lines.Add('Знайдено в рядку ' + IntToStr(i))
                 else
                     Memo2.Lines.Add('Не знайдено в рядку ' + IntToStr(i))
            end;
Працюємо в парах
  1. Запишіть оператор, призначений для виведення п'ятого рядка зі списку Memo1 у текстове поле Edit1.
  2. Визначте, для чого в біометричний паспорт додають чип. Як він програмується та як з нього зчитати дані?
Виконуємо самостійно
  • Завдання. Створити програму-перекладач з української мови на англійську і навпаки.
  1. У середовищі Lazarus створіть новий проект. Змініть значення властивості Caption форми, розмістіть на формі два компоненти Memo. Властивості ScrollBars елементів Memo1, Memo2 надайте значення ssVertical для появи вертикальних смуг прокручування.
  2. За допомогою редактора рядків масив Memo1.Lines заповніть українськими словами, масив Memo2.Lines - їхніми англійськими відповідниками. 
  3. Розмістіть на формі компоненти Label, Button, Edit і налаштуйте їхні властивості згідно із скріншотом.
    Програма-перекладач
  4. Опишіть глобальні змінні для збереження масивів слів: eng_words і ukr_words.
  5. var
      Form1: TForm1;
      eng_words, ukr_words : array[0..100] of string;
    
    implementation 
  6. Створіть процедуру OnClick для кнопки Заповнити масиви слів. Запишіть оператори для заповнення масивів eng_words і ukr_words масивами Memo1.Lines і Memo1.Lines.
  7. var i : integer;
    begin
         for i := 0 to Memo1.Lines.Count - 1 do
             begin
               ukr_words[i] := Memo1.Lines[i];
               eng_words[i] := Memo2.Lines[i];
             end;
    end;
  8. Створіть процедуру обробки події OnClick для кнопки Перекласти англійською. Запишіть оператори для перекладу українського слова на англійську мову.
  9. var i: integer;
        s: string;
    begin
         s := Edit1.Text; // вводимо слово, яке бажаємо перекласти
         i := -1;
         repeat
            i := i + 1;          // збільшуємо індекс елемента
         until ukr_words[i] = s; // поки не знайдемо слово s
         Edit2.Text := eng_words[i]; {виводимо елемент із масиву англійських слів
         із таким індексом, як у слова s у масиві українських слів}
    end; 
  10. Створіть процедуру обробки події OnClick для кнопки Перекласти українською.
  11. var i: integer;
        s: string;
    begin
        s := Edit4.Text; // вводимо слово, яке бажаємо перекласти
        i := -1;
        repeat
            i := i + 1;         // збільшуємо індекс елемента
        until eng_words[i] = s; // поки не знайдемо слово s
        Edit3.Text := ukr_words[i]; {виводимо елемент із масиву українських слів
        із таким індексом, як у слова s у масиві англійських слів}
    end; 
  12. Перевірте роботу програми.
    Програма-перекладач
Домашнє завдання
  • Опрацювати підручник: §33 с. 184-189 (Інформатика, 9 клас, автори: Бондаренко О. О., Ластовецький В. В., Пилипчук О. П., Шестопалов Є. А.)