1 of 32

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

За новою програмою

Урок 45

9

2 of 32

Запитання

Розділ 6 § 6.2

  1. Яка величина називається табличною?
  1. Що таке елемент табличної величини? Із чого складається його ім'я?
  1. Як описується таблична величина в рядку var?

9

© Вивчаємо інформатику teach-inf.at.ua

3 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Розглянемо кілька типових задач опрацювання табличних величин:

обчислення суми значень усіх її елементів

обчислення суми і кількості значень елементів, що відповідають певним умовам

знаходження найбільшого та найменшого елементів

пошук заданого елемента

9

© Вивчаємо інформатику teach-inf.at.ua

4 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Такі задачі досить часто розв'язують на практиці. Наведемо лише кілька прикладів.

Так, синоптики визначають,

Найбільшу, найменшу та середню температуру за день

Середню кількість опадів протягом місяця

тощо

9

© Вивчаємо інформатику teach-inf.at.ua

5 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

У процесі визначення переможців у деяких змаганнях відкидають найбільшу та найменшу оцінки суддів і обчислюють середнє арифметичне тих оцінок, що залишилися.

9

© Вивчаємо інформатику teach-inf.at.ua

6 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Адміністрацію вашого навчального закладу може цікавити, скільки учнів 9-х класів мають семестрові оцінки з інформатики:

10

11

12

Чи є у вашому класі учні, що отримали оцінку 8 за останню практичну роботу, тощо.

9

© Вивчаємо інформатику teach-inf.at.ua

7 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

У всіх задачах, які розглянемо в цьому пункті, будемо вводити значення елементів табличної величини з багаторядкового текстового поля, значення інших змінних — з текстових полів.

Якщо результатом є значення елементів табличної величини

Якщо результатом є значення інших змінних

то виводитимемо їх у багаторядкове текстове поле

то виводитимемо їх у написи

9

© Вивчаємо інформатику teach-inf.at.ua

8 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Для розв'язування цих задач створимо процедури, що оброблятимуть подію Click для кнопки. Аналогічно ви зможете створювати процедури, які будуть обробляти інші події для кнопки або події для інших об'єктів.

Розглядатимемо табличні величини з 10 елементів. Якщо кількість елементів табличної величини інша, то потрібно внести до наведених текстів процедур відповідні зміни.

9

© Вивчаємо інформатику teach-inf.at.ua

9 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Задача 1. Визначити суму значень усіх елементів табличної величини.

Опрацювання елементів табличної величини здійснюватиметься з використанням циклу. Використаємо змінну

для накопичування суми значень елементів табличної величини. Перед циклом надамо їй значення

s

0

9

© Вивчаємо інформатику teach-inf.at.ua

10 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

У циклі послідовно переглядатимемо елементи табличної величини та додаватимемо їхні значення до змінної s.

procedure TForm1.Button1Click(Sender: TObject);

var a: array [1..10] of real; i: integer; s: real;

begin

for і := 1 to 10 do a[i] := StrToFloat(Memo1.Lines[i-1]); {дані з рядків багаторядкового текстового поля перевести в дійсні числа та присвоїти відповідним елементам табличної величини}

s := 0; {початкове значення для змінної, значення якої визначатиме суму значень елементів табличної величини}

for і := 1 to 10 do s := s + a[i]; {додавання до змінної s значення чергового елемента табличної величини}

Label1.Caption := FloatToStr(s); // виведення результату в напис

end;

9

© Вивчаємо інформатику teach-inf.at.ua

11 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Звертаємо вашу увагу: якщо в циклі використовується команда змінення значення певної величини, у даній задачі:

s := s + а[і]

То перед циклом цій змінній обов'язково потрібно присвоїти початкове значення, у даній задачі:

s := 0

9

© Вивчаємо інформатику teach-inf.at.ua

12 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Задача 2. Визначити, скільки разів задане дійсне число трапляється серед значень елементів табличної величини.

Очевидно, що для розв'язування цієї задачі потрібно переглянути послідовно значення всіх елементів табличної величини, порівняти кожне з них із заданим числом, і якщо деяке з них дорівнює цьому числу, то збільшити лічильник таких елементів на 1.

9

© Вивчаємо інформатику teach-inf.at.ua

13 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Текст відповідної процедури:

procedure TForm1.Button1Click(Sender: TObject);

var a: array [1..10] of real; i, k: integer; x: real;

Begin

for і := 1 to 10 do a[i] := StrToFloat(Memo1.Lines[i-1]); {введення значень елементів табличної величини}

х := StrToFloat (Edit1.Text); // введення заданого числа

к := 0; {лічильник кількості елементів табличної величини, що дорівнюють заданому числу, — їх поки що не траплялося жодного}

for і := 1 to 10 do

If a[i] = х Then k := k + 1; {збільшення на 1 значення лічильника, якщо значення чергового елемента табличної величини дорівнює заданому числу}

Label1.Caption := IntToStr(k) + ‘разів’; {виведення результату в напис з додаванням пояснювального тексту}

end;

9

© Вивчаємо інформатику teach-inf.at.ua

14 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Задача 3. Визначити, чи є задане дійсне число серед значень елементів даної табличної величини.

Цю задачу можна було б розв'язати аналогічно до попередньої: визначити, скільки елементів табличної величини дорівнюють заданому числу, і якщо ця кількість:

дорівнює 0

більше 0

то заданого числа серед значень елементів табличної величини

то задане число серед значень елементів табличної величини

немає

є

9

© Вивчаємо інформатику teach-inf.at.ua

15 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Але такий метод розв'язування цієї задачі є нераціональним.

Уявіть собі, що задане число є значенням уже першого елемента табличної величини. Тоді всі інші її елементи переглядати вже не потрібно, і це значно економить час розв'язування цієї задачі, особливо якщо кількість елементів табличної величини велика.

9

© Вивчаємо інформатику teach-inf.at.ua

16 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Для реалізації раціонального методу розв'язування цієї задачі використаємо змінну логічного типу f і нехай її значення,

false

true

означатиме, що заданого числа серед значень елементів табличної величини

означатиме, що задане число серед значень елементів табличної величини

немає

є

9

© Вивчаємо інформатику teach-inf.at.ua

17 of 32

Обчислення суми значень і кількості елементів табличної величини

Розділ 6 § 6.2

Перед початком перегляду значень елементів табличної величини присвоїмо змінній f значення false, адже задане число в табличній величині поки що не знайшлося. Порівнюватимемо в циклі послідовно значення елементів табличної величини із заданим числом, і якщо одне з них дорівнює заданому числу, то змінимо значення змінної f на true та перервемо виконання циклу командою break (англ. break — переривати).

Виведення реалізуємо залежно від значення змінної:

f

9

© Вивчаємо інформатику teach-inf.at.ua

18 of 32

Текст відповідної процедури:

Розділ 6 § 6.2

procedure TForm1.Button1Click(Sender: TObject);

var a: array [1..10] of real; i: integer; x: real; f: boolean;

begin

for і := 1 to 10 do a[i] := StrToFloat(Memo1.Lines[i-1]);

x := StrToFloat(Edit1.Text);

f := false; // задане число поки що не траплялося

for і := 1 to 10 do

If а[і] = х

Then begin

f := true; // задане число є серед значень елементів табличної величини

break; // перериваємо виконання циклу, бо задане число є в табличній величині

end;

If f = true Then Label1.Caption := ‘Число є’

Else Label1.Caption := 'Числа немає’;

end;

9

© Вивчаємо інформатику teach-inf.at.ua

19 of 32

Задачі на змінювання значень елементів масиву

Розділ 6 § 6.2

Заміна значень усіх елементів масиву

Алгоритм розв'язування задачі: послідовно перебрати всі елементи масиву і значення чергового елемента змінити за певним правилом наприклад,

змінити знак елементів на протилежний

надати всім елементам нульові значення

збільшити значення всіх елементів на певну величину

Подвоїти значення елементів масиву A[1..N].

For і := 1 to N do A[i] := A[i]*2;

9

© Вивчаємо інформатику teach-inf.at.ua

20 of 32

Задачі на змінювання значень елементів масиву

Розділ 6 § 6.2

Заміна значень із перевіркою умови

Алгоритм розв'язування задачі: послідовно перебрати всі елементи масиву; якщо черговий елемент відповідає деякій умові, його значення змінити за певним правилом. Як умова може перевірятися значення елемента масиву на кратність деякому числу, додатність, рівність нулю тощо.

Може перевірятися також і значення індексу елемента масиву (наприклад, змінюються елементи, що стоять на парних місцях).

9

© Вивчаємо інформатику teach-inf.at.ua

21 of 32

Задачі на змінювання значень елементів масиву

Розділ 6 § 6.2

Від'ємні елементи масиву А замінити числом 25.

For і := 1 to N do

If A[i] < 0 Then A[i] := 25;

Елементи масиву А, що мають парні індекси, замінити нулем.

For і := 1 to N do

If і mod 2 = 0 Then A[i] := 0;

9

© Вивчаємо інформатику teach-inf.at.ua

22 of 32

Задачі на пошук у масиві елемента із заданою властивістю

Розділ 6 § 6.2

Визначення кількості елементів із заданою властивістю

Визначити кількість додатних елементів масиву А.

К := 0; {лічильник елементів із заданою властивістю}

For і := 1 to N do

If A[i] > 0 Then К := K+1;

9

© Вивчаємо інформатику teach-inf.at.ua

23 of 32

Задачі на пошук у масиві елемента із заданою властивістю

Розділ 6 § 6.2

Визначення найбільшого (найменшого) елемента масиву A[i..N]

Алгоритм розв'язування задачі: припустити, що найбільшим є перший елемент масиву, після чого послідовно перебрати елементи масиву, починаючи з другого; якщо черговий елемент більший за максимальний, його значення запам'ятати як максимальне.

Часто крім значення максимального елемента потрібно знайти і його індекс.

9

© Вивчаємо інформатику teach-inf.at.ua

24 of 32

Задачі на пошук у масиві елемента із заданою властивістю

Розділ 6 § 6.2

Визначити індекс найбільшого числа в масиві А[1..N].

Мах := А[1]; {змінна для збереження найбільшого значення елемента}

К := 1; // змінна для збереження індексу найбільшого елемента

For і := 2 to N do {перебираємо елементи, починаючи з другого}

If A[i] > Max Then begin

{ якщо і-й елемент більший за Мах, значення Мах замінюється на значення А[і]; у змінній К запам'ятовуємо значення індексу і }

Мах := А[і]; К := і; end;

Edit1.Text := 'Найбільший елемент має індекс ' + IntToStr(K);

Edit2.Text := 'Мах=' + IntToStr(Max);

9

© Вивчаємо інформатику teach-inf.at.ua

25 of 32

Задачі на пошук у масиві елемента із заданою властивістю

Розділ 6 § 6.2

Визначення номера першого елемента масиву, значення якого відповідає умові

Алгоритм розв'язування задачі: збільшувати індекс і доти, доки елемент з індексом і не задовольнятиме даній умові та величина i не перевищуватиме розмірність масиву. Якщо після виходу з циклу і > N, це означає, що в масиві не знайдено елемента, значення якого відповідає умові.

9

© Вивчаємо інформатику teach-inf.at.ua

26 of 32

Задачі на пошук у масиві елемента із заданою властивістю

Розділ 6 § 6.2

Визначити номер першого елемента масиву А[1..N], значення якого дорівнює Р.

і :=0;

Repeat

i:= i+1

Until A[i] = P Or (i > N); {N — кількість елементів в масиві А}

If і <= N Then Edit1.Text := 'i=' + IntToStr(i)

else Edit1.Text := 'значення не знайдене';

9

© Вивчаємо інформатику teach-inf.at.ua

27 of 32

Задачі на пошук у масиві елемента із заданою властивістю

Розділ 6 § 6.2

Задачі на знаходження суми (добутку) елементів

Знайти добуток всіх елементів масиву А[1..N].

Р := 1;

For і := 1 to N do P := Р*А[і];

Знайти суму додатних елементів масиву A[1..N].

S:=0;

For і := 1 to N do

If A[i] > 0 Then S := S+A[i];

9

© Вивчаємо інформатику teach-inf.at.ua

28 of 32

Розгадайте ребус

Масив

Розділ 6 § 6.2

9

© Вивчаємо інформатику teach-inf.at.ua

29 of 32

Дайте відповіді на запитання

  1. Для розв'язування яких задач опрацювання табличної величини можна використати наведені фрагменти?

а) s := 0; for і := 1 to 10 do s := s + a[i];

б) k := 0; for і := 1 to 10 do If a[i] < 0 Then k := k + 1;

в) k := 0; for і := 1 to 10 do If a[i] = x Then k := k + 1;

  1. З якою метою у наведеному фрагменті використано змінну f?

f := false;

for і := 1 to 10 do If a[i] = x Then begin

f := true;

break; end;

Розділ 6 § 6.2

9

© Вивчаємо інформатику teach-inf.at.ua

30 of 32

Домашнє завдання

Проаналізувати

§ 6.2, ст. 165-167

Розділ 6 § 6.2

9

© Вивчаємо інформатику teach-inf.at.ua

31 of 32

Працюємо за комп’ютером

Сторінка

172-173

Розділ 6 § 6.2

9

© Вивчаємо інформатику teach-inf.at.ua

32 of 32

Дякую за увагу!

За новою програмою

Урок 45

9