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 |