Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-ОСНОВЫ ПРОГРАММИРОВАНИЯ.doc
Скачиваний:
88
Добавлен:
10.04.2015
Размер:
650.24 Кб
Скачать
      1. Оператор continue

Если оператор continue встретился в операторе цикла, то он передает управление на начало следующей итерации цикла. В циклах while и do-while – на проверку условия, в цикле for – на приращение. Этот оператор необходим, если надо закончить текущую итерацию цикла и не выполнять оставшиеся операторы, а сразу перейти к следующей итерации цикла.

ПРИМЕР 25:

Задание

Напечатать натуральные числа до 1000, кратные семи.

Решение

#include <sidio.h>

void main( )

{ int i;

for(i=7; i<1000; i++)

{ if (i%7!=0) continue;

printf(“%4d”, i);

}

}

/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/

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

Этот оператор имеет вид:

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

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

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

ПРИМЕР 26:

Задание

Вычислить значение выражения у=100/х при х, введённом с клавиатуры.

Эта задача уже рассматривалась выше. Обработка ошибок производилась с помощью цикла while. Теперь для этой цели применим оператор goto.

Решение

#include <stdio.h>

void main ( )

{ float x, y;

arg:

puts(“Введите аргумент х, не равный нулю.”); scanf(“%f”, &x);

if (x==0) goto arg;

y=100/x;

printf(“\n При х=%5.2f y=%f”, x, y);

}

/*1*/ /*2*/ /*3*/ /*4*/ /*5*/ /*6*/ /*7*/ /*8*/ /*9*/

Пояснение

Здесь argимя метки оператора puts, к которому произойдёт передача управления в случае, если будет введён х, равный нулю.

ПРИМЕР 27:

Что будет выведено на экран в результате работы фрагмента программы:

int i;

for ( i = 1; i < 9; i ++ ){ continue; break;}

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

/*1*/

/*2*/

/*3*/

Ответ:

i = 9

Пояснение

В результате инициализации параметр цикла (переменная i) получает значение 1. Повторяемая группа операторов выполняется 8 раз. При каждом повторении оператор break; игнорируется. Операция инкремента (увеличения значения переменной на 1) i ++, выполненная 8 раз, приведёт к тому, что переменная получит значение 9, которое и будет выведено на экран.

ПРИМЕР 28:

Что будет выведено на экран в результате работы фрагмента программы:

int i;

for(i=1;i<9;i ++){ break; continue; }

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

/*1*/

/*2*/

/*3*/

Ответ:

i = 1

Пояснение

В результате работы оператора break; при первом же выполнении повторяемой группы работа оператора цикла завершается. На экран будет выведено значение 1, присвоенное переменной i при инициализации.

ПРИМЕР 29:

Что будет выведено на экран в результате работы фрагмента программы:

int i; clrscr();

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

printf( “\n %d * %d = %d” , i, i, i*i); printf("\n i = %d", i);

/*1*/

/*2*/

/*3*/

Ответ:

1 * 1 = 1

2 * 2 = 4

3 * 3 = 9

4 * 4 = 16

5 * 5 = 25

6 * 6 = 36

7 * 7 = 49

8 * 8 = 64

9 * 9 = 81

i = 10

Пояснение

В результате работы оператора цикла 9 раз выполняется первый из операторов printf строки /*3*/, выводя на экран квадраты чисел. Второй оператор printf этой строки выполняется один раз после завершения выполнения оператора цикла, выводя на экран с новой строки значение переменной i.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]