Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ.docx
Скачиваний:
15
Добавлен:
01.04.2025
Размер:
797.27 Кб
Скачать

6.2.3. Оператор do-while

В цикле do-while проверка условия проводится после выполнения тела цикла:

do ОP while(ЛВ)

Действие

     выполняется ОР;

     если ЛВ истинно, повторяется выполнение ОР, в противном случае осуществляется переход к оператору, следующему за while.

Если в цикле должно выполняться несколько операторов, они заключаются в {}. Данный цикл носит название цикла с постусловием, т. е. при любом ЛВ тело цикла выполняется хотя бы один раз.

С использованием ранее записанной формулы разложения вычислим y=sin(x) с точностью :

#include <stdio.h>

#include <math.h>

#define EPS 0.001

int main(void)

{

float x,S=0,U;

int i=0;

printf("\n Input x→");

scanf("%f",&x);

U=x;

do

{

S+=U;

++i;

U*=(−x)*x;

U/=2*i*(2*i+1);

}

while (fabs (U)>EPS);

printf("\n sin(%6.3f)=%7.3f",x,S);

return 0;

}

6.3. Операторы перехода

В ряде случаев возникают ситуации, когда необходимо прервать выполнение блока операторов вне зависимости от каких-либо условий.

В языке C определены четыре оператора перехода: break, continue, return и goto. Операторы break и continue можно использовать в любом из операторов цикла. Заметим, что вход в тело цикла из оператора, расположенного вне этого цикла, невозможен. Возможны выход из цикла до его нормального завершения и обход части цикла при некоторых условиях.

Оператор break, как отмечено ранее, можно также использовать в операторе switch. Операторы return и goto можно использовать в любом месте внутри функции.

6.3.1. Оператор break

Оператор break применяется в двух случаях. Во-первых, в операторе switch с его помощью прерывается выполнение последовательности case. Во-вторых, оператор break используется для немедленного прекращения выполнения цикла без проверки его условия и передачи управления оператору, следующему после оператора цикла.

Например, в программе

#include <stdio.h>

int main(void)

{

int num, count=0;

for(;;count ++)

{

printf("\n num→");

scanf("%d",&num);

if (num<0) break;

}

printf("\n count=%d",count);

return 0;

}

последовательно вводятся целые числа, и подсчитывается число введенных до первого отрицательного числа. После этого ввод чисел прекращается. Оператор break использован в условии оператора if для выхода из цикла.

6.3.2. Оператор continue

Можно сказать, что оператор continue немного похож на оператор break. Оператор break вызывает прерывание цикла, а continue – прерывание текущей итерации цикла и переход к следующей итерации.

Пример программы: производится генерация случайных чисел с помощью функции rand() до тех пор, пока не будет найдено 10 нечетных чисел.

При генерации четного числа выполняется оператор continue, передающий управление на начало цикла:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

InitRoutin() /*создаем функцию инициализации генератора случайных чисел*/

{

printf("Инициализация генератора случайных чисел \n");

srand(time(NULL)); /*объявлена в time.h*/

return 0;

}

int main(void)

{

int count=0;

for (InitRoutin(); count<10;)

{

int val=rand(); /*rand()–генератор случайных чисел, объявлена в stdlib.h*/

if (val %2==0) /*проверка на четность*/

{

putchar ('.');

continue;

}

count ++;

printf ("Найдено нечетное число: %d\n",val);

}

return 0;

}