Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lek5_cpp_ukr.rtf
Скачиваний:
2
Добавлен:
18.11.2019
Размер:
277.63 Кб
Скачать

3. Оператор циклу з передумовою while

      Оператор while використовується для організації циклічного виконання оператора або серії операторів, поки виконується певна умова.

      Синтаксис :

while (<логічний вираз>)

      оператор;

Рис. 2. Синтаксис оператора 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; }

4. Оператор циклу з постумовою do … while       Оператор do…while використовується для організації циклічного виконання оператора або серії операторів, які називаються тілом циклу, до тих пір, поки умова не стане хибною.       Синтаксис : do       <оператор>; while (<логічний_вираз>);

Рис. 3. Синтаксис оператора 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); }

5. Оператор розриву break       Синтаксис : break;       Оператор розриву break перериває виконання операторів do, for, while або switch. В операторі switch він використовується для завершення блоку case. В операторах циклу - для негайного завершення циклу, що не зв'язане з перевіркою звичайної умови завершення циклу. Коли оператор break зустрічається всередині оператора циклу, то здійснюється негайний вихід з циклу і перехід до виконання оператору, що слідує за оператором циклу.       Приклад : main() {       int i;       for (i=0;i<1000;i++)       {             printf("%d - %d\n",i,i*i*i);             if (i*i*i>=10000) break;       }       return 0; }

6. Оператор продовження continue       Синтаксис : continue;       Оператор continue передає управління на наступну ітерацію в операторах циклу do, for, while. Він може розміщуватися тільки в тілі цих операторів. В операторах do і while наступна ітерація починається з обчислення виразу умови. Для оператора for наступна ітерація починається з обчислення виразу зміни значення лічильника.       Приклад : while (i-- > 0) {       x=f(i);       if (x == 1) continue;             else y=x*x; }       В даному прикладі тіло циклу while виконується якщо i більше нуля. Спочатку значення f(i) присвоюється змінній x;потім, якщо x не рівний 1, то y присвоюється значення квадрата числа х, і управління передається на "заголовок" циклу, тобто на обчислення виразу (i-- > 0). Якщо ж х рівний 1, то виконується оператор продовження continue, і виконання продовжується з "заголовку" оператора циклу while, без обчислення квадрата x.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]