Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по С Живицкая (Мет пособие).doc
Скачиваний:
112
Добавлен:
15.06.2014
Размер:
2.11 Mб
Скачать

2.2.1.Операторы организации циклов.

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

2.2.1.1. Оператор for

Формат:

for ( инициализация; условие; изменение ) тела цикла;

а) инициализация – это установка начального значения переменной цикла;

б) условие – для проверки выполнения условия продолжения цикла;

в) изменение – для изменения управляющей переменной на каждой итерации (шаге);

Цикл for работает до тех пор, пока условие истинно, любая из 3-х частей в цикле for может отсутствовать, но необходимо тогда наличие оператора, разрывающего цикл;

Пример №1.

for ( ; ; ) { }; - бесконечный цикл

Пример№2.

Осуществить вывод чисел от 1 до 10 включительно.

# include < stdio.h >

main ( )

{ int x;

for (x=1; x < = 10, x++) print f (" % d ", x);

}

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

2.2.1.2.Оператор while

Формат оператора:

while (условие) {тело цикла};

Условие может быть любое выражение имеющее ненулевое (истинное или нулевое ложное значение). Цикл выполняется, пока условие истинно, когда условие становится ложным, выполняется строка, следующая за циклом.

Пример:

# include < stdio.h >

void main (void)

{ int i = 1;

while ( (getchar ( )) ! = 'A' ) i++;

print f ( "символ A % d-и ",i );

}

2.2.1.3.Оператор цикла do-while.

В отличие от цикла for и while, цикл do-while проверяет условие в конце, т.е. тело в цикле всегда выполняется, по крайней мере, один раз.

Формат оператора

do {тело цикла} while (условие)

Тело цикла выполняется до тех пор, пока условие не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется один раз.

Пример:

# include < stdio.h >

main ( )

{ int i = 0;

do i++; while ( ( getchar ( ) )! = 'A' );

print f ("символ A % d-й," i );

}

Примечание: 1) Возможной ошибкой при программировании цикла любого типа является запись такого условия, которое никогда не прекратит выполнение цикла.

|while (a); print f ("Бесконечный цикл");

Данная программа будет бесконечна, выводить на экран дисплея беск. цикл в случае, если а = 0.

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

Пример:

|for (a = 0, a < ZNAK; a++ );

3) Допускается вложенность одних циклов в другие.

4) В теле цикла могут использоваться операторы break; exit ( );continue.

Оператор break обеспечивает принудительное окончание цикла менуя условия. Функция exit находящаяся в стандартной библиотеке вызывает немедленное окончание работы программы и форсирует возврат в операционную систему. Оператор continue вызывает прекращение очередной и начало следующей операции.

2.2.2. Операторы выбора.

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

2.2.2.1.Оператор if – else(если…иначе)

Формат оператора:

If (условие) оператор 1;

else оператор 2;

Где оператор может быть простым или составным (составной оператор – это группа операторов заключенные в фигурные скобки). Оператор else не обязателен, если условие истинно (т.е. любое значение кроме 0) выполняется блок операторов следующих за if. Если условие ложно (выполняется оператор 12) следующий за else.

В случае отсутствия else, если условие применяет истинное значение, выполняется оператор 1, а если ложное оператор 1 пропускается, т.е. в этом случае оператор 2 будет выполнен всегда.

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

Пример №1.

# include < stdio.h >

void main (void)

{ int a;

scanf (" % d ", & a);

if (= = 5)

print f (" a равно 5");

else print f ("a не равно 5");

}

Пример №2.

|

Z = 0;

if (n>0)

if (a>b)

Z = a;

else Z = b;

put char (Z);

|

В данном случае else относится ко второму оператору if.

Пример №3.

Z = 0;

if (a>0) {

if (a>b)

Z = a;

}

else

Z = b;

put char (Z);

Интерпритация программ в обоих случаях различная.