Інформатика 7 клас - Пилипчук О.П. - Аспект 2015 рік
2. Алгоритми з повторенням і розгалуженням
2.9. Цикл з передумовою
У випадку, коли число повторень тіла циклу заздалегідь невідоме, а задається лише умова виконання циклу, використовуються цикли з умовою, а саме цикл з передумовою та цикл з післяумовою. У цьому параграфі розглянемо перший з них.
Оператор циклу з передумовою має вигляд:
While <умова> Do <тіло циклу>;
або
Поки <умова> Виконати <тіло циклу>;
Виконання оператора циклу з передумовою починається з перевірки умови, записаної після слова While. Якщо вона виконується, то виконується тіло циклу, потім знову перевіряється умова і т.д.
Якщо під час чергової перевірки з’ясується, що умова не виконується, то тіло циклу виконуватися не буде. Керування перейде до оператора, що після циклу.
Примітки
- Якщо тіло циклу складається з кількох операторів, то вони об’ єднуються службовими словами Begin-End.
- У тілі циклу обов’язково має бути оператор, що впливає на істинність умови, інакше станеться зациклювання: оператори тіла циклу будуть повторюватися «вічно».
Приклад №1
Підрахувати кількість цифр заданого натурального числа n.
Розв’язування
Раніше ми виділяли цифри двоцифрових та трицифрових чисел. У цьому ж випадку ми не знаємо скільки цифр має число.
Тому, поки число не стане рівне 0, будемо виконувати таку послідовність команд: збільшувати лічильник кількості цифр числа на одиницю, а число зменшувати в 10 разів (за допомогою цілочисельного ділення позбавлятимемося останньої цифри числа).
Program Example;
Var m, n, k: integer;
Begin
Write( ' Введіть натуральне число: ');
Readln (n);
m: = n; {копіюємо введене число}
k: = 0; {змінна-лічильник кількості цифр}
While m<>0 Do
Begin
k: = k + 1; {збільшуємо лічильник цифр}
m:=m div 10 {відкидаємо останню цифру} End;
Writeln (' У числі ', n,' - ', k, ' цифр')
End.
Роботу цієї програми цікаво спостерігати в покроковому режимі виконання, слідкуючи за зміною значень m і k.
Приклад №2
Підрахувати суму цифр заданого натурального числа n.
Розв’язування
Щоб розв’язати цю задачу, досить зробити незначні зміни в попередній програмі. Потрібно, як і раніше, відділяти останню цифру числа, але перед цим її потрібно запам’ятовувати в додаткову змінну (наприклад, а) і додавати до суми S .
Фрагмент програми:
While m<>0 Do
Begin
a:=m mod 10;
s:=s+a; m:=m div 10
End;
Питання для самоконтролю:
- У яких випадках використовується цикл із передумовою та які особливості його запису?
- У даному фрагменті програми обчислення кількості цифр числа а знайдіть помилку та виправте її.
ck: = 0;
While a>=0 Do
Begin
ck:=ck+1;
a:=a div 10 End;
- Дано послідовність операторів:
a:=1; b:=1;
While a+b<8 Do
Begin a:=a+1; b:=b+2 End;
s:=a+b;
Скільки разів буде повторюватись тіло циклу? Якими будуть значення змінних а, b і s після виконання цієї послідовності операторів?
- Якими будуть значення змінних а і b після виконання послідовності операторів:
a:=1; b:=1;
while a<=3 Do a:=a+1; b:=b+1;
- Знайдіть значення змінної s після виконання таких операторів:
а) s:=0; i:=0;
While i<5 Do i:=i+1; s:=s+100 div i;
б) s:=0; i:=0;
While i>1 Do
Begin s:=s+10 0 div і; i:=i-1 End;
- Яким умовам повинно задовольняти значення змінної k, щоб такі цикли були нескінченними:
а) While c<0 Do c:=c+k;
б) While k<>0 Do k:=k+1;
в) While k<>0 Do k:=k+2;