Сторінка 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 клас, автори: Бондаренко О. О., Ластовецький В. В., Пилипчук О. П., Шестопалов Є. А.)