Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование операторов break и continue в циклах.

Поиск

3.9.1. Оператор break

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

Оператор break позволяет прервать работу цикла, в котором он записан, и после его срабатывания управление передается оператору, который расположен после цикла.

На практике break записывается не самостоятельно в операторе цикла, а в составе условного оператора, истинность которого и определяет окончание роботы цикла.

Структура программ с использованием оператора break:

for ()

{...;

z=...;

if(z<0) break;

.....

}

 

Оператор continue

 

Оператор continue – позволяет пропустить следующую за ним группу операторов и возобновить работу цикла на следующем шаге цикла.

На практике continue записывается не самостоятельно в операторе цикла, а в составе условного оператора, истинность которого и определяет переход на следующий шаг.

Структура программы с использованием оператораcontinue

while()

{

y=...

if(y <0) continue;

...

}

Пример 3.17: Задано выражение, с помощью которого вычисляется у

  для  ряда значений х: xнач=5 xkон=-5 dx=-0.5

Найти сумму значений y.

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

void main ()

{

 float xn=5, xk=-5, x, s=0, y,dop, xsh=-0.5, a;

 int i, n;

n=((xk-xn)/xsh)+1;

x=xn;

printf("введите значении а");

scanf(“%f”,&a);

for (i=1;i<=n;i++)

{     dop=a+x;

if (dop<0) break;

y=x*x/sqrt(dop);

s=s+y;

printf("%d %5.2f %5.2f\n",i, x, y);

x=x+xsh;

}

printf("s=%5.2f\n",s); 

}

При значении а=1, результаты будут иметь вид, хотя по расчетов циклов должно быть 21.

i x y
1 5.00 10.21
2 4.50 8.63
3 4.00 7.16
4 3.50 5.77
5 3.00 4.50
6 2.50 3.34
7 2.00 2.31
8 1.50 1.42
9 1.00 0.71
10 0.50 0.20
11 0.00 0.00
12 -0.50 0.35

 

S=44.61

 

Пример 3.18: Задано выражение, с помощью которого вычисляется у

для  ряда значений х – xнач==-3.14 xkон=6.28 xsh==3.14/20

При анализе выражения, можно заметить, что поскольку значения синуса изменяется в пределах от -1 до +1, периодически подкоренное выражения будут становиться отрицательными. Эти случаи следует пропускать. Воспользуемся для этого оператором continue

void main ()

{

float xn, xk, x, y, dop, xsh;

int i=0;

xn=-3.14; xk=6.28;

xsh=3.14/20;

   

x=xn-xsh;

do

{

i=i++;

x=x+xsh;

dop=0.5-sin(x);

if (dop<=0) continue;

y=(x*x+5)/sqrt(dop);

printf("%d %5.2f %5.2f\n",i, x, y);

}

while (x<=xk);

 }

Результаты будут иметь вид. Некоторые промежуточные шаги пропущены.

 

i x y
1 -3.14 20.98
2 -2.09 8.03
3 -1.05 5.22
4 -0.00 7.07
7 3.14 21.05
8 4.19 19.28
9 5.23 27.70
10 6.28 62.65

 

Сложные (вложенные) циклы

Сложный цикл образуется, когда один цикл входит в другой цикл и т.д.

Уровень вложенности цикла – количество вложенных друг в друга циклов.

Пример 3.17 вложенного цикла:

Вычислить

f = 2,7*sin(x) + 1,3*cos(y),

где величины x и y изменяются следующим образом:      

-3 ≤ x ≤ 3 Δx = 0,1   

-4 ≤ y ≤ 4 Δy = 0,2

Рассмотрим 3 варианта реализации:

1. С использованием цикла while;

float x = -3, y;

while (x<=3)

{

y = -4;

while (y <=4)

{

f = 2.7*sin(x) + 1.3*cos(y);

printf(“x=%.1 y=%.1f f=%.3f\n”, x, y, f);

y + = 0.2;

}

x +=0.1;

  }

2. С использованием цикла do while;

float x = -3, y;

do

{  

y = -4;

do

{

f = 2.7*sin(x) + 1.3*cos(y);

printf(“x=%.1 y=%.1f f=%.3f\n”, x, y, f);

y+ = 0.2;

}

while (y <=4)

 

x+=0.1;

}

while (x<=3)

 

3. С использованием цикла for.

 

float x, y;

for (x=-3; x<=3; x+=0.1)

for (y=-4; y<=4; y+=0.2)

{

f=2.7*sin(x)+1.3*cos(y);

printf(“x=%.1 y=%.1f f=%.3f\n”, x, y, f);

}

Контрольные вопросы для самопроверки

1. Для чего используется оператор переключения switch?

2. Форма записи оператора переключения switch.

3. Когда срабатывает ветвь default?

4. Для чего предназначены операторы цикла?

5. Как  работают операторы цикла?

6. Как выглядит структура цикла с постусловием?

7. Схема работы цикла do... whileс постусловием.

8. Как выглядит структура цикла  с предусловием?

9. Схема работы  цикла while с предусловием.

10. Схема работы  цикла for.

11. Назначение оператора break.  

12. Назначение оператора continue.

13. Как используется вложенный оператор цикла?


 



Поделиться:


Последнее изменение этой страницы: 2021-04-04; просмотров: 56; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.14.208 (0.007 с.)