Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор циклу for

Приклад

Оператор продовження continue

Оператор розриву break

Приклад 2.

Приклад 1.

Оператор циклу з постумовою do … while


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

do
<оператор>;
while (<логічний_вираз>);

Ситуації, що призводять до виходу з циклу, аналогічні наведеним для циклу while із передумовою. Характерним є те, що тіло циклу виконається хоча б один раз. Цикл do... while припиняє виконання, коли умовний вираз обертається в 0 (хибно).

printf ("Підтверджуєте? Так чи ні?(y/n);");
do
scanf("%c",&ch);
while (ch!='y' && ch!='n')

#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);
}

 


Синтаксис:

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;
}


Синтаксис:

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.

 


Оператор for забезпечує циклічне повторення деякого оператора певне число разів. Оператор, який повторюється називається тілом циклу. Повторення циклу зазвичай здійснюється з використанням деякої змінної (лічильника), яка змінюється при кож­но­му виконанні тіла циклу. Завершується, коли лічильник досягає заданого значення.

Синтаксис оператора:

for([ініціалізація];[перевірка_умови];[нове_значення])
оператор;

Звернемо увагу на те, що кожен з трьох виразів може бути відсутнім. Перший вираз служить для ініціалізації лічильника, другий - для перевірки кінця циклу, а третій вираз - для зміни значення лічильника. Формально роботу циклу можна описати такими кроками:

1. якщо перший вираз (ініціалізація) присутній, то він обчислюється;

2. обчислюється вираз умови (якщо він присутній). Якщо умова виробляє значення 0, тобто вона невірна, цикл припиняється, у протилежному випадку він буде продовжений;

3. виконується тіло циклу;

4. якщо присутній вираз зміни лічильника, то він обчислюється;

5. надалі перехід до пункту під номером 2.

Поява у будь-якому місці циклу оператора continue призведе до негайного переходу до пункту 4.

Приклад використання циклу for

/* друк парних чисел у проміжку від 500 до 0 */
#include <stdio.h>
void main(void)
{
long i;
for(i=500;i>=0;i-=2)
printf("\n%ld",i);
printf("\n");
}

Для того, щоб продемонструвати гнучкість даного різновиду циклу, розглянемо інші варіанти цієї ж програми. У першому випадку представимо весь перелік обчислень лише в одному операторі for, за яким слідує порожній оператор:

#include <stdio.h>
int main(void)
{
long i;
for(i=500;i>=0;printf("\n%ld",i),i-=2);
}

Другий варіант використовує оператор continue:

#include <stdio.h>
int main(void)
{
long i;
for(i=500;i>=0;i--)
if (i%2 == 1)
continue;
else
printf("\n %ld", i);
printf("\n");
}

Справа програміста, який з варіантів обрати - надати перевагу більш стислому викладанню або навіть взагалі скористатися іншим оператором. Цікаво, що різновид циклу for можна звести до циклу while наступним чином:

for(вираз1;вираз2;вираз3)
оператор;

/* далі - аналогічний цикл while */

вираз1;
while (вираз2)
{
оператор;
вираз3;
}

Інша справа - чи є в такій заміні необхідність? Не завжди гнучкість переважає стислість та навпаки. Справа за конкретною ситуацією. Зрештою, вибір циклу може бути й справою смаку конкретного програміста - саме йому вирішувати, які оператори застосувати для вірного запису того чи іншого алгоритму.

 

<== предыдущая лекция | следующая лекция ==>
Оператор циклу з передумовою while | Характеристики слухового відчуття. Звукові вимірювання
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 434; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.