§ 40. Алгоритми з повтореннями. Цикл із післяумовою
Оператор циклу з післяумовою REPEAT
Оператор циклу Repeat використовують у тих випадках, коли потрібно спочатку виконати деяку послідовність дій, а потім визначити, чи є потреба повторювати ці дії ще раз.
Синтаксис оператора Repeat:
Repeat <оператор>
Until <умова>;
Тут <умова> — логічний вираз, що є умовою виходу з циклу;
<оператор> — оператор, який виконується при кожній ітерації (тіло циклу).
Порядок виконання циклу Repeat:
1) виконується <оператор> — вказівки, які входять у тіло циклу;
2) перевіряється <умова>. Якщо умова хибна, то оператори тіла циклу повторюються, якщо ж умова істинна — цикл Repeat припиняє свою роботу і виконується наступний оператор програми.
Тіло циклу — блок операторів між Repeat і Until — обов’язково виконується хоча б один раз.
Вивести парні числа від 2 до 12 (рис. 40.1). var k: Integer; begin k := 0;
Repeat
k := k + 2;
Labell.Caption := IntToStr(k);
Until k >= 12; end;
Визначити, скільки перших натуральних чисел потрібно додати, щоб одержати суму, більшу за 1000 (рис. 40.2). var η, S: Integer; begin-
n := 0; S := 0;
Repeat
n := n + 1; S := S + n;
Until S > 1000;
Editl .Text := IntToStr(n); end;
Знайти суму цифр натурального числа n (рис. 40.3). var n, d, S: Integer; begin
n := StrToInt(Edit1.Text);
S := 0;
Repeat
d := n mod 10; { знайдено останню цифру числа }
S := S + d; // цифра d додається до суми n := n div 10; // відкидається остання цифра числа n Until n=0; { Якщо n = 0, цикл припиняє роботу, оскільки всі цифри числа розглянуто }
Edit2.Text := IntToStr(S); end;
Полічити кількість слів у введеному користувачем тексті (рис. 40.4). Вважатимемо, що слова відокремлюються виключно одним пробілом, а перший і останній символи текста (рядка S) не є пробілами. Отже, кількість слів у рядку S на 1 більша за кількість пробілів. Для введення текстового рядка використовується компонент Мето
(вкладка Standard на Палітрі компонентів): він дозволяє вводити багаторядковий текст із клавіатури як значення властивості Text. var S: String;
i, count: Integer;
begin
S := Memd .Text; i := 0;
I f length(S) > 0 Then begin // Якщо довжина рядка S не нульова, count := 1; // є хоч одне слово
Repeat
i := i + 1; // Перевіряється кожен символ рядка S
If S[i] = ' ' // Якщо знайдено пропуск,
Then count := count + 1; // то збільшується лічильник слів на 1 Until i >= length(S); end
Else count := 0;
Edit2.Text := IntToStr(count); end;
Питання для самоперевірки
1. Поясніть, як виконується оператор циклу з післяумовою.
2. Чи може виникнути ситуація, за якої тіло циклу Repeat не виконається жодного разу?
3. Дано фрагмент програмного коду. Доповніть таблицю.
Фрагмент програмного коду |
Початкове значення Х |
Значення Х після виконання циклу |
Скільки повторень відбулося |
7 |
|||
10 |
|||
11 |
4. Якого значення набуде змінна F після виконання циклу? і := 1; F := 2;
Repeat
і := і + 1; F := F * і UntM і < 6;
5. Поясніть призначення оператора циклу:
Repeat
x := StrToFloat(InputBox('Bведення X', 'Введіть додатне число', '0')); Until x > 0;
6. Складіть програму для знаходження найменшої кількості перших парних чисел, потрібної для того, щоб одержати суму, більшу від 100.
Вправа 40
ПОСЛІДОВНІСТЬ чим |
-ini *і |
||
Ввести числа |
І |
||
Кількість чисел 5, Середнє арифметичне pjj |
Організувати введення послідовності натуральних чисел, яка завершується 0. Знайти кількість і середнє арифметичне введених чисел.
1) Створіть новий проект.
2) Розробіть інтерфейс програми згідно з рисунком.
3) Створіть процедуру обробки події onclick для кнопки Ввести числа.
4) У програмному коді процедури ButtonIClick запишіть оператори: var A, K, S: Integer; Sr: Real; begin
K := 0; S := 0;
Repeat
{ введення чисел за допомогою функції InputBox }
A := StrToInt(InputBox('Введення чисел', 'A=>', '0'));
K := K + 1; // лічильник чисел, що вводяться S := S + A; // додавання введеного числа до суми Until A = 0; // цикл припиняє роботу, якщо А = 0 — вводиться 0 Editl .Text := IntToStr(K-I); { виведення кількості чисел без урахування останнього введеного 0 }
Sr := S / (K-1); // обчислення середнього арифметичного Edit2.Text := FloatToStr(Sr); end;
5) Запустіть проект на виконання. Перевірте роботу програми для різних наборів чисел. Збережіть проект у папці Вправа 40.
6) Змініть програмний код так, щоб програма визначала порядковий номер n найменшого з уведених чисел.
Алгоритм знаходження найменшого (мінімального) з уведених чисел та його номера:
1) змінній Min присвоїти значення першого з уведених чисел, а змінній n — значення 1;
2) кожне наступне число порівняти з Min. Якщо це число менше за Min (A < Min), то змінній Min присвоїти значення цього числа (Min := A), а змінній n — його порядковий номер.
Після введення А = 0 цикл припиняє роботу, Min містить мінімальне число з уведеної послідовності, а змінна n — порядковий номер цього числа в послідовності.
Комп’ютерне тестування
Виконайте тестове завдання 40 з автоматичною перевіркою на сайті interactive.ranok.com.ua.
Це матеріал з підручника Інформатика 8 клас Бондаренко
Автор: admin от 7-10-2016, 22:44, Переглядів: 3461