Народна Освіта » Інформатика » § 39. Алгоритми з повтореннями. Цикл із передумовою

НАРОДНА ОСВІТА

§ 39. Алгоритми з повтореннями. Цикл із передумовою

Цикл із передумовою

Повторення (цикл) — це алгоритмічна структура, за допомогою якої та сама послідовність дій виконується кілька разів.

Для запису алгоритмів із повторенням (циклів) мовою Object Pascal використовують три види операторів циклу: з параметром, з передумовою і з післяумовою.

Серію команд, що повторюється під час виконання циклу, називають тілом циклу.

Кожне виконання тіла циклу називають ітерацією.

оператор циклу з передумовою WhMe

Оператор повторення While (цикл «Поки») призначений для організації повторного виконання серії команд, поки залишається істинною умова виконання циклу.

Синтаксис оператора:

While <умова> do <оператор>;

 

Тут <умова> — логічний вираз, що є умовою виконання циклу;

<оператор> — простий або складений оператор, який виконується при кожній ітерації.

Виконання оператора циклу While починається з обчислення значення логічного виразу — умови повторення циклу. Якщо умова істинна, то виконуються оператори тіла циклу і керування повертається на перевірку умови.

Якщо ж умова хибна, то виконується оператор, який є наступним після оператора While.

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

Для різних початкових значень змінної X визначити значення цієї змінної після виконання циклу та кількість повторень:

While X <= 10 do X := X + 1;

Початкове значення Х

Значення Х

після виконання циклу

Кількість повторень

7

11

4

10

11

1

15

15

0

Наведений фрагмент програми ілюструє нескінченний цикл.

Num := 0;

While Num < 20 do

Labell.Caption := IntToStr(Num)

У тілі циклу змінна Num має постійне значення, тому умова Num <20 (0 < 20) завжди правильна і поданий цикл є нескінченним.

Для переривання нескінченного циклу треба натиснути сполучення клавіш Ctrl + Break.

Щоб побачити зміну значень у ході виконання циклу, в тіло циклу включають виклик методу Application.ProcessMessages.

Розробити програму-таймер, що буде послідовно виводити числа від 1 до 100 з інтервалом 0,1 с.

 

Нехай змінна А містить поточне значення числа, що виводиться. Поки А менше за 100, збільшувати значення A на одиницю і виводити значення змінної у Label (рис. 39.1). Для призупинення роботи програми використати процедуру Sleep, var A: Integer; begin

A := 1; // початкове значення А

While A < 100 do begin

A := A + 1;

LabelTCaption := IntToStr(A);

Application.ProcessMessages; // опрацювання повідомлень Sleep(100); // зупинка на 0,1 с end; end;

Г Алгоритм обчислення суми n членів числової послідовності

Розглянемо алгоритм обчислення n-го члена деякої послідовності чисел і суми n її членів:

1) задати значення А χ — першого члена послідовності, n — кількості членів, які потрібно обчислити;

2) задати початкові значення лічильника членів послідовності (і := 0) і суми (S := 0);

3) поки номер ї-го члена послідовності, який обчислено, не досягне значення n — заданої кількості членів, повторювати дії: • номер поточного доданка збільшити на 1;

• обчислити значення наступного доданка А;

• обчислене значення А додати до суми S.

Знайти суму 20 елементів послідовності чисел 2,5; 3,0; 3,5; 4,0...

{ Задаються початкові значення }

S := 0; // суми S

і := 0; // лічильника доданків

A := 2.5; // першого доданка А WhMe і < 20 do begin

S := S + A; // А додається до суми S A := A + 0.5; // обчислюється наступне значення доданка А i := i + 1 end;

 

Знайти суму всіх елементів послідовності ,1111

1, —, —, —, —..., значення яких не менше за 2 3 4 5

0,01 (рис. 39.2). var i: Integer; A, S: Double; begin

{ Задаються початкові значення }

S := 0; // суми S

A := 1; // першого доданка А

i := 0; // лічильника доданків

While A > 0.01 do begin S := S + A; i := i + 1;

A := 1/ i; // обчислення поточного доданка А Label2.Caption := FormatFloat('0.####', A); end;

Edit1.Text := FormatFloat('0.###', S); end;

Питання для самоперевірки

1. Дайте означення циклу як алгоритмічної структури.

2. Поясніть синтаксис і правила виконання оператора циклу з передумовою.

3. В якому випадку тіло циклу While не виконається жодного разу?

4. Визначте значення змінної S після виконання операторів:

а) S := 0; i := 0; While i < 5 do i: = i + 1; S := S + i;

б) S := 0; i := 5; While i > 1 do begin S := S + i; i := i - 1; end;

5. Складіть програму для знаходження суми чисел, кратних 3, які розташовані в інтервалі (100; 300).

6. Складіть програму для знаходження суми десяти елементів послідовності 1,0; 1,2; 1,4; 1,6...

Вправа 39

Розробити проект «Числа Фібоначчі», призначений для обчислення n-го числа Фібоначчі.

 

Числами Фібоначчі називають числа, які знаходять за таким правилом:

F1 = F2 = 1; F= F . + F 2.

F1 =F2= 1, тому обчислення починається з п = 3.

Для обчислення n-го числа Фібонач-чі виконується така послідовність дій (рис. 1):

1) виділяються змінні А і В для зберігання двох поточних чисел Фібоначчі F і F ;

п-1 п-2’

2) сума чисел А + В заноситься в змінну С;

3) на наступній ітерації циклу:

• В=F стає (п - 2)-м членом ряду, тому А := В;

• С=Fn стає (п - 1)-м членом, тому В := С.

1) Створіть новий проект.

2) Розробіть інтерфейс програми згідно з рис. 2.

 

3) Опишіть змінні, необхідні для реалізації алгоритмів виконання завдань:

• n — змінна цілого типу для збереження номера шуканого елемента послідовності чисел Фібоначчі;

• і — змінна цілого типу для збереження номера поточного елемента послідовності;

• А, В, C — змінні цілого типу для збереження (і - 2)-го, (і - 1)-го, і-го елементів послідовності при кожній ітерації циклу.

4) Створіть процедуру обробки події onclick для кнопки Обчислити число з номером n. У програмному коді процедури ButtonIClick запишіть оператори для обчислення n перших чисел Фібоначчі: n := StrTointCEditI .Text);

A := I; B := I; i := 2;

While i < n do begin i := i + 1;

C := A + B;

A := B; B := C;

Application.ProcessMessages; // опрацювання повідомлень Sleep(500); // зупинка на 0,5 с

Edit2.Text := IntToStr (C); end;

5) Запустіть проект на виконання. Перевірте роботу програми. Збережіть проект у папці Вправа 39.

6) Додайте на форму компонент Edit. Доповніть програмний код операторами для обчислення суми n перших чисел Фібоначчі і виведення результату до створеного текстового поля (Edit3). Перевірте дію кнопки.

Комп’ютерне тестування

Виконайте тестове завдання 39 з автоматичною перевіркою на сайті interactive.ranok.com.ua.

 

Це матеріал з підручника Інформатика 8 клас Бондаренко

 

Категорія: Інформатика

Автор: admin от 7-10-2016, 22:43, Переглядів: 3279