Алгоритми з повтореннями для опрацювання величин. Цикл із передумовою.
Урок 61
8
Алгоритми з повтореннями.�Цикл із передумовою
Розділ 8 § 39
Для організації повторення дій (циклів) при записі алгоритмів мовою Lazarus використовують три різновиди операторів циклу:
Повторення (цикл) — це форма організації дій, за якою та сама послідовність дій виконується кілька разів доти, поки є істинною деяка умова.
з параметром
з передумовою
з післяумовою
8
© Вивчаємо інформатику teach-inf.at.ua
Алгоритми з повтореннями.�Цикл із передумовою
Розділ 8 § 39
Серію команд, що повторюється під час виконання циклу, називають тілом циклу.
Кожне виконання тіла циклу називають ітерацією.
8
© Вивчаємо інформатику teach-inf.at.ua
Оператор циклу�з передумовою While
Розділ 8 § 39
Оператор повторення While (цикл «Поки») призначений для організації повторного виконання оператора, поки залишається істинною умова виконання циклу.
Синтаксис оператора:
While <умова> do
begin
<оператори тіла циклу>
end;
Вираз логічного типу
Оператори, які виконуються при кожній ітерації
8
© Вивчаємо інформатику teach-inf.at.ua
Оператор циклу�з передумовою While
Розділ 8 § 39
Виконання оператора циклу While починається з обчислення значення логічного виразу — умови повторення циклу. Якщо умова:
Істинна
Хибна
то виконуються оператори тіла циклу і керування повертається на перевірку умови
то виконується оператор, який є наступним після оператора While
8
© Вивчаємо інформатику teach-inf.at.ua
Оператор циклу�з передумовою While
Розділ 8 § 39
Необхідно задавати початкові значення змінних, використовуваних у циклі.
Якщо при першій перевірці умова виявиться хибною, тіло циклу While не виконається жодного разу.
8
© Вивчаємо інформатику teach-inf.at.ua
Оператор циклу�з передумовою While
Розділ 8 § 39
8
© Вивчаємо інформатику teach-inf.at.ua
Оператор циклу�з передумовою While
Розділ 8 § 39
Логіка цього циклу змушує програму працювати вічно (нескінченний цикл).
Num := 0;
While Num < 20 do
Label1.Caption := IntToStr(Num)
Для переривання нескінченного циклу треба натиснути сполучення клавіш
8
© Вивчаємо інформатику teach-inf.at.ua
Оператор циклу�з передумовою While
Розділ 8 § 39
Щоб побачити зміну значень у ході виконання циклу, в тіло циклу включать виклик методу:
Application.ProcessMessages
8
© Вивчаємо інформатику teach-inf.at.ua
Розділ 8 § 39
var A: Integer;
begin
А := 1; // Початкове значення А
While А о 100 do
begin
А := А + 1;
Label1.Caption := IntToStr(A);
Application.ProcessMessages; // обробка повідомлень
Sleep(100); // зупинка на 0,1 с
end;
end;
Поки А менше за 100, збільшувати значення А на одиницю і виводити значення змінної у Label.
Для призупинення роботи програми на 100 мілісекунд використано процедуру Sleep.
8
© Вивчаємо інформатику teach-inf.at.ua
Алгоритм обчислення суми n членів числової послідовності
Розділ 8 § 39
Алгоритм обчислення n-го члена послідовності натуральних чисел і суми п членів складається з таких дій:
1
задаються початкові значення А, — першого члена послідовності,�n — кількості членів, які потрібно обчислити;
2
задаються початкові значення лічильника членів послідовності�(і := 0) і суми (S := 0);
3
поки номер і-то члена послідовності, який обчислено, не досягне значення n— заданої кількості членів, повторюються дії: номер поточного доданка збільшується на 1; обчислюється значення наступного доданка А, обчислене значення А додається до суми S.
8
© Вивчаємо інформатику teach-inf.at.ua
Алгоритм обчислення суми n членів числової послідовності
Розділ 8 § 39
Знайти суму 20 елементів послідовності чисел
2,5; 3,0; 3,5; 4,0...
// Задаються початкові значення:
S := 0; // суми S
і := 0; // лічильника доданків і
А := 2.5; // доданка А
While і < 20 do begin
S := S + A; // додається до суми S
А := А + 0.5; // обчислюється наступне значення доданка А
і := і + 1
end;
8
© Вивчаємо інформатику teach-inf.at.ua
Розділ 8 § 39
var і: Integer; A, S: Double;
begin
// Задаються:
S:=1; // початкове значення суми S
А:=1; // значення першого доданка А
і:=1; // номер першого доданка
While A>0.01 do begin
і := і + 1;
А := 1/і; // Обчислення доданка А
S := S + А;
Label2.Caption := FormatFloat('0.####', A);
end;
Edit1.Text := FormatFloat('0.###', S);
end;
8
© Вивчаємо інформатику teach-inf.at.ua
Домашнє завдання
Проаналізувати
§ 39, ст. 190-195
Розділ 8 § 39
8
© Вивчаємо інформатику teach-inf.at.ua
Питання для самоперевірки
Розділ 8 § 39
8
© Вивчаємо інформатику teach-inf.at.ua
Працюємо за комп’ютером
Вправа 39, ст.194-195
Розділ 8 § 39
8
© Вивчаємо інформатику teach-inf.at.ua
Дякую за увагу!
8