Операторы передачи управления 


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



ЗНАЕТЕ ЛИ ВЫ?

Операторы передачи управления



Оператор прерывания блока break

Оператор break можно использовать, чтобы прервать текущий блок цикла while, do, for или выполнение case в составе switch. Вот, например, фрагмент программы:

int a=1;

while (a<10)

{

printf("%d ", a);

a++;

}

При его выполнении на экран будет выведена строка: 1 2 3 4 5 6 7 8 9

Теперь добавим оператор break, который прервет выполнение цикла, как только а будет без остатка делиться на 5:

int a=1;

while (a<10)

{

if (a%5==0) break;

printf("%d ", a);

a++;

}

Теперь, как и следовало ожидать, на экран выдастся: 1 2 3 4

Оператор завершения итерации цикла continue

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

 

Пример.  

#include <stdio.h>

void main()

{

int y;

printf("Мы будем вычислять значение функции y=2*x+5\n");

printf("в промежутках [1,6] и [13,18].\n");

for(int x=1; x<=18; x++)

{

  if (x>6 && x<13) continue;

y=2*x+5;

printf("x=%d y=%d\n",x,y);

}

}

Оператор прерывания программы exit

Для экстренного прерывания работы программы можно использовать функцию exit(). Ее заголовок:

void exit(int);

Программа прерывается, в какой бы функции и блоке ни встретился вызов exit(). Например, в результате работы этой программы:

#include <stdio.h>

#include <stdlib.h>

void anyfunc()

{

printf("111");

exit(1);

printf("222");

}

void main()

{

anyfunc();

printf("333");

exit(0);

printf("444");

}

на экран выведется только 111.

Параметр функции – это значение, которое программа возвращает в операционную систему. Принято возвращать 0 при нормальном выходе из процесса и код ошибки в случае сбоя.

Оператор безусловного перехода

Практически во всех языках программирования присутствует атавизм – оператор безусловного перехода. В языке С++ он называется goto и имеет следующий синтаксис:

goto идентификатор;

Этот оператор передает управление в точку, где объявлен идентификатор:

goto again;

...

again:

a=10;

После выполнения инструкции goto again; выполнится оператор a=10;.

Оператор goto остался с тех времен, когда в языках программирования либо отсутствовали, либо были неразвитыми средства структуризации программ. Например, в языке Fortran и в первых версиях Basic без этого оператора было не обойтись.

Современные программисты относятся к оператору безусловного перехода крайне отрицательно, и недаром. Помимо того, что он затрудняет чтение (а значит, модификацию и отладку) программы, он еще и может служить источником ошибок, например, зацикливания. Любой код с оператором goto в современных языках высокого уровня можно – и нужно – переписать без него.

// фрагмент с goto

int a=1;

again:

printf("%d ", a);

a++;

if (a<10)

goto again;

// тот же фрагмент в нормальном структурном виде

while (a<10)

{

printf("%d ", a);

a++;

}

Наш фрагмент всего из нескольких строчек, но часто нерадивые программисты используют goto для перехода через большую часть кода. Понятно, что в этом случае отследить ошибку будет значительно сложнее. Причем считается, что безусловный переход вперед по коду безопаснее перехода назад, т.к. в последнем случае возможно случайное зацикливание.

Итак, оператор безусловного перехода существует, но применять его – дурной тон.

 


Содержание

Глава II. Управляющие структуры.. 1

6. Операторы ветвления. 2

6.1. Условный оператор if 2

6.2. Оператор switch. 5

7. Операторы цикла. 7

7.1. Цикл с параметром (цикл for) 8

7.2. Цикл с предусловием (цикл while) 12

7.3. Цикл с постусловием (цикл do … while) 15

7.4. Вложенные циклы.. 17

8. Операторы передачи управления. 21

8.1. Оператор прерывания блока break. 21

8.2. Оператор завершения итерации цикла continue. 21

8.3. Оператор прерывания программы exit 22

8.4. Оператор безусловного перехода. 23

 



Поделиться:


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

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