2. 8
Оператор циклу з післяумовою
REPEAT
Оператор циклу Repeat використовують у тих
випадках, коли потрібно спочатку виконати деяку
послідовність дій, а потім визначити, чи є потреба
повторювати ці дії ще раз. Синтаксис оператора Repeat:
Repeat <оператори тіла циклу>
Until <умова>;
Вираз логічного
типу
оператори, які виконуються
при кожній ітерації
Розділ 6
§ 6.7
3. 8
Оператор циклу з післяумовою
REPEAT
Виконання оператора циклу Repeat
починається з виконання вказівок, які
входять у тіло циклу, після чого
обчислюється вираз умова. Якщо умова:
Хибна Істинна
то оператори
тіла циклу
повторюються
цикл Repeat припиняє
свою роботу і
виконується наступний
оператор програми
Розділ 6
§ 6.7
4. 8
Оператор циклу з післяумовою
REPEAT
Вивести парні числа від 2 до 12.
var k: Integer;
Begin
k := 0;
Repeat
k := k + 2;
Label1.Caption := IntToStr(k);
Until k > 10;
end;
Блок операторів між Repeat і Until
обов'язково виконується хоча б один раз.
Розділ 6
§ 6.7
5. 8
Оператор циклу з післяумовою
REPEAT
Останнім надруковано число 12, оскільки при:
k = 10
умова ще була хибною,
відбулась ще одна ітерація,
і в тілі циклу k отримало
значення 12.
Розділ 6
§ 6.7
6. 8
Оператор циклу з післяумовою
REPEAT
Знайти найменшу кількість перших натуральних
чисел, потрібну для того, щоб одержати суму, більшу за
1000.
var N, S: Integer;
begin
N := 0; S := 0;
Repeat
N := N + 1; S := S + N;
Until S > 1000;
Edit1.Text := IntToStr(N);
end;
Розділ 6
§ 6.7
7. 8
Оператор циклу з післяумовою
REPEAT
Знайти суму цифр натурального числа N, кількість
цифр у якому невідома.
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;
Розділ 6
§ 6.7
8. 8
Оператор циклу з післяумовою
REPEAT
Полічити кількість слів у введеному користувачем тексті.
Вважатимемо, що слова відокремлюються виключно одним
пробілом, а перший і останній символи текста (рядка S) не є
пробілами. Отже, кількість слів у рядку S на 1 більша за
кількість пробілів. Для введення текстового рядка
використовується компонент Memo (вкладка Standard на
палітрі компонентів): він дозволяє вводити багаторядковий
текст із клавіатури як значення властивості Text типу String.
Розділ 6
§ 6.7
9. 8
Оператор циклу з післяумовою
REPEAT
var S: String;
i, count: Integer;
begin
S := Memo1.Text; i := 0;
If length(S) > 0 Then begin // Якщо довжина рядка S ненульова,
Count := 1; // є хоч одне слово
Repeat
і := і + 1; // Перебираємо кожен символ рядка S
if S[i] = ' ' // Якщо знайдено пропуск
Then count := count + 1; // то збільшуємо лічильник слів на 1
Until і >= length(S);
end
Else count := 0;
Edit1.Text := IntToStr(count);
end;
Розділ 6
§ 6.7
10. 8
Оператор циклу з післяумовою
REPEAT
Проект запущений на
виконання
Розділ 6
§ 6.7
12. 8
Питання для самоперевірки
1. Поясніть синтаксис і порядок виконання
оператора циклу з післяумовою.
2. Чи може виникнути ситуація, за якої тіло циклу
Repeat не виконається жодного разу?
3. Дано фрагмент програмного коду. Доповніть
таблицю.
Розділ 6
§ 6.7
13. 8
Питання для самоперевірки
4. Якого значення набуде змінна F після виконання циклу?
і := 1; F := 2;
Repeat
і := і + 1; F := F * і
Until і < 6;
5. Поясніть призначення оператора циклу:
Repeat
х := StrToFloat(lnputBox(‘Введення X', Введіть додатне число', '0'));
Until х > 0;
6. Складіть програму для знаходження найменшої
кількості перших парних чисел, потрібної для
того, щоб одержати суму, більшу від 100.
Розділ 6
§ 6.7