Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОИВТ_Ч1.doc
Скачиваний:
8
Добавлен:
07.11.2018
Размер:
1.27 Mб
Скачать

4.5.5.Оператор goto

Оператор goto используется для безусловной передачи управления внутри функции от одного оператора к другому. Синтаксис оператора goto:

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

Управление передается на оператор в теле функции, помеченной указанным идентификатором. Пример:

#include <stdio.h> // подключение библиотеки stdio.h

void main(void) // основная функция main

{ int a; // объявление переменных a

scanf ( "%d", &a); // ввод значений переменной a с клавиатуры

if(a>=0) goto label1; // переход на метку label1, если а>=0

a=0; // присвоение переменной а значения 0

label1:printf( "a = %d\n", a); // вывод значения переменной a

}

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

Если все-таки применяется оператор goto, то целесообразно придерживаться следующих рекомендаций:

- не входите внутрь блока извне;

- не входите внутрь оператора if или else конструкции if else или оператора switch;

- не входите внутрь итерационной структуры (оператора цикла) извне этой структуры.

4.6.Циклы

Циклы, или итерационные структуры, позволяют повторять выполнение отдельных операторов или групп операторов. Число повторений в некоторых случаях фиксировано, а в других определяется в процессе счета на основе одной или нескольких проверок условий.

Циклы завершаются в следующих случаях:

- обратилось в нуль условное выражение в заголовке цикла.;

- в теле цикла выполнился оператор break;

- в теле цикла выполнился оператор return.

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

Бывают циклы с проверкой условия перед началом выполнения тела цикла (top-testing), по окончании выполнения тела (bottom-testing) или внутри тела (middle-testing). Ниже рассмотрены все указанные типы циклов.

4.6.1.Цикл while

Синтаксис цикла while (пока):

while ( условное_выражение ) оператор

Ясно, что в цикле типа while проверка условия производится перед выполнением тела цикла (оператор). Если результат вычисления условного выражения не равен нулю, то выполняется оператор (или группа операторов). Перед входом в цикл while в первый раз обычно инициализируют одну или несколько переменных для того, чтобы условное выражение имело какое-либо значение. Оператор или группа операторов, составляющих тело цикла, должны, как правило, изменять значения одной или нескольких переменных, входящих в условное выражение, чтобы в конце концов выражение обратилось в нуль, и цикл завершился.

Потенциальной ошибкой при программировании цикла while, как, впрочем, и цикла любого другого типа, является запись такого условного выражения, которое никогда не прекратит выполнение цикла. Такой цикл называется бесконечным (например цикл: while (a) printf(“Circle”), где а - любое число, отличное от 0. Цикл будет бесконечно выводить на экран дисплея текст Circle) . Пример:

#include <stdio.h> // подключение библиотеки stdio.h

void main(void) // основная функция main

{ int a; // объявление переменных a

scanf ( "%d", &a); // ввод значений переменных a и с клавиатуры

while(a>=0) // цикл повторяется пока а>=0

{ printf( "a = %d\n", a); // вывод значения переменной a

a--; // уменьшение значения переменной а на один

}

}

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