§ 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, Переглядів: 5545