Операторы цикла for, while и do-while

Операторы цикла for, while и do-while

Программирование » C/C++ » Операторы цикла for, while и do-while

Введение

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

Оператор for

Основная форма цикла for имеет следующий вид:

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

Инициализация используется для присвоения начального значения параметру цикла. Проверка условия это условное выражение определяющее завершение цикла т.е. если значение условного выражения истинна, то цикл продолжает выполняться, а если значение условного выражения ложно, то происходит выход из цикла. После выхода из цикла идет переход к следующему оператору программы. Изменение это выражение определяющее как будет меняться параметр цикла. Оператор может быть блоком операторов т.е. он может быть заключен в фигурные скобки {}. Обратите внимание на то, что разделы инициализация, проверка условия и изменение отделены друг от друга точкой с запятой. В операторе for сначала проверяется условие и если значение условия "истинно", то идёт выполнение тела цикла (блока операторов или простого оператора). Рассмотрим пример:

#include <stdio.h>

void main(void)

{

int i; // это у нас будет параметром цикла

for(i=0;i<5;i++) printf("%d\n", i);

}

Эта программа выводит на экран числа от 0 до 4. Числа будут выводиться до тех пор, пока i (параметр цикла) не будет равен 5. Так как значение условного выражения 5<5 есть ложь, то следовательно цикл завершается.

Давайте рассмотрим заголовок for

i=0 - инициализация

i<5 - условие выполнения цикла

i++ - Изменение или приращение

А теперь давай сделаем так, чтобы числа выводились в обратном порядке

#include <stdio.h>

void main(void)

{

int i; // это у нас будет параметром цикла

for(i=4;i>=0;i--) printf("%d\n", i);

}

Числа будут выводиться в обратном порядке т.е. 4 3 2 1 0. Тут в условном выражении мы использовали операцию отношения >=. Следовательно, когда i будет равняться 0 цикл выполнится и на экране появиться символ 0 (он будет последний). А вот на следующем шаге цикла, когда i будет равняться -1, значение условного выражения -1>=0 будет ложным и цикл не выполниться.

i=4 - инициализация

i>=0 - условие выполнения цикла

i-- - Изменение или приращение

Параметром цикла не обязательно должно быть целое число. Например следующая программа выводит последовательность чисел с плавающей точкой (float). Шаг (изменение) будет равен 0.5.

#include <stdio.h>

void main(void)

{

float i;

for(i=0.00; i<=5; i=i+0.5) printf("%.2f ", i);

}

Программа выведет на экран следующую последовательность чисел:

0.00 0.50 1.00 1.50 2.00 2.50 3.00 3.50 4.00 4.50 5.00

Так же с помощью цикла можно вывести буквы алфавита:

#include <stdio.h>

void main(void)

{

unsigned char ch; // Объявление беззнакового char

for(ch='A'; ch<='Z'; ch++) printf("%c ", ch);

}

Результат работы программы будет такой:

A B C D E F ......................... Z

Давайте рассмотрим и такую программу:

#include <stdio.h>

void main(void)

{

unsigned char ch;

for(ch='A'; ch!='Y';) scanf("%c", &ch);

}

Цикл в этой программе будет выполняться до тех пор, пока мы не введем символ 'Y'. Обратите внимание на то, что раздела изменение нет т.е. это не обязательный раздел. Он может быть опущен.

С помощью оператора цикла for можно организовать бесконечный цикл:

#include <stdio.h>

void main(void)

{

for(;;) printf("A");

}

Эта программа будет печатать букву А до бесконечности. Если вы работаете в Borland C++ 3.11, то для выхода из этого цикла можно использовать комбинацию клавиш Ctrl+Break.

Оператор while

В языке С кроме оператора for существует ещё оператор цикла while. Основная форма оператора while:

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

Цикл выполняется до тех пор, пока условие принимает значение "истинно". Как только условие принимает значение "ложно", цикл завершается и идёт переход к следующему оператору программы. Как и в цикле for, в цикле while сначала проверяется условие. Оператор может быть простым, составным (блоком) или пустым оператором. Рассмотрим следующую программу:

#include <stdio.h>

void main(void)

{

unsigned char ch;

int flag; // флаг выхода

flag=1;

while(flag)

{

ch=getch();

if(ch==27) flag=0;

else

printf("%c",ch);

}

}

Программа будет выводить введенные вами символы. Если нажмете клавишу ESC (код 27), то произойдет выход из цикла, так как flag будет равен 0. Функция getch() читает символ с клавиатуры и возвращает его код.

Оператор do-while

Основное отличие оператора цикла do-while от операторов for и while заключается в том, что условие проверяется в конце оператора цикла. А от сюда следует, что тело (блок операторов) оператора do-while всегда выполняется хотя бы один раз.

Пример программы:

#include <stdio.h>

void main(void)

{

unsigned char ch;

do

{

ch=getch();

printf("%c",ch);

}

while(ch!=27);

}

Эта программа аналогична предыдущей. Она выводит вводимые символы на экран.




Бардин П.Б. http://proger.ru/

Отзывы (через аккаунты в социальных сетях Вконтакте, Facebook или Google+):

Оставить отзыв с помощью аккаунта ВКонтакте:

Оставить отзыв с помощью аккаунта FaceBook:

Оставить отзыв с помощью аккаунта Google+: