![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Оператор while використовується для організації циклічного виконання оператора або серії операторів, поки виконується певна умова.
Синтаксис:
while (<логічний вираз>)
оператор;
Рис. 1.7. Синтаксис оператора while
Цикл закінчується у наступних випадках:
1. умовний вираз у заголовку приймає нульове значення;
2. у тілі циклу досягнуто місця, де розташований оператор break;
3. у тілі циклу виконаний оператор return;
У перших двох випадках керування передається оператору, розташованому безпосередньо за циклом, у третьому випадку активна на той момент функція завершує свою роботу, повертаючи якесь значення.
Знову ж таки нерідкою помилкою програмістів, що працювали раніше на Паскалі, є використання замість оператора порівняння (==) оператора присвоювання (=). Наприклад, наступний фрагмент створить нескінчений цикл:
/* некоректне використання оператору циклу */
int main(void)
{
int j=5;
while(j=5) /* змінній j присвоїти значення 5 */
{
printf("%d\n",j);
j++;
}
}
Компілятор Сі попередить про некоректне присвоювання в даному випадку, виправити яке особливих труднощів не викличе.
Втім, часто такий цикл використовується для перевірки відповіді користувача на питання з програми ("так чи ні?"):
/* фрагмент використання while */
printf ("Підтверджуєте? Так чи ні?(y/n);");
scanf("%c",&ch);
while (ch!='y' && ch!='n')
{
printf("\n Відповідайте так чи ні.. (y/n);");
scanf("%c",&ch);
}
Тіло циклу почне виконуватися, якщо користувач введе будь-який символ, відмінний від у або n. Цикл виконується доти, доки користувач не введе або 'у', або 'n'.
Цікаво розглянути й наступний приклад, що застосовує оператор while у функції підрахунку факторіалу:
long factorial(int number)
{
long total;
total=number;
while (--number)
total*=number;
return total;
}
1.6.4 Оператор циклу з постумовою do … while
Оператор do…while використовується для організації циклічного виконання оператора або серії операторів, які називаються тілом циклу, до тих пір, поки умова не стане хибною.
Синтаксис:
do
<оператор>;
while (<логічний_вираз>);
Рис. 1.8. Синтаксис оператора do … while
Ситуації, що призводять до виходу з циклу, аналогічні наведеним для циклу while із передумовою. Характерним є те, що тіло циклу виконається хоча б один раз. На відміну від Паскаля, в якому цикл з постумовою repeat operator until умова виконується, поки умова невірна, цикл do... while навпаки припиняє виконання, коли умовний вираз обертається в нуль (стає невірним).
Приклад 1.
printf ("Підтверджуєте? Так чи ні?(y/n);");
do
scanf("%c",&ch);
while (ch!='y' && ch!='n')
Приклад 2.
#include<stdio.h>
#include<conio.h>
void main()
{
int n,i;
float fact;
printf("Програма обчислення n!.\n");
printf("Введiть число n:\n");
scanf("%d",&n);
i = 1;
fact = 1;
do {
fact *= i;
i++;
} while (i <= n);
printf("n!==%g",fact);
}
Дата публикования: 2015-01-23; Прочитано: 371 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!