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

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

§ 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