Домашняя страница библиотеки_c AVR

Синтаксис языка C

Библиотека языка C GNU glibc

 Страницы развития библиотеки_с AVR

Главная страница

Инструкция пользователя

Содержание библиотеки_c

Часто задаваемые вопросы

Содержание по алфавиту

Демонстрационные проекты


 

Циклические конструкции

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

 

Конструкция while

Цикл while имеет следующий синтаксис.

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

{

// Выполнение тела цикла, если выражение истинно

}

Другими словами, циклы while имеет смысл использовать в тех случаях, ко­гда соответствующий оператор или блок операторов необходимо выполнять до тех пор, пока условное выражение истинно. Пример формирования строки, со­стоящей из нечетных цифр:

int  с,   i;

const char str[] = "0123456789";

char OddNums[5];                  //Строка для хранения нечетных цифр

с = 0;                          //Счетчик циклов

i = 0;                           //Индекс массива OddNums

while (с < 10)              //До тех пор, пока с меньше 10, . ..

{

//Если остаток от деления с на 2 = 1, то записываем в i-ю позицию массива OddNums с-й

//элемент строки str, после чего значение i автоматически инкрементируется

if ((с % 2) == 1) OddNums[i++] = str[c];

с++;                            //с = с + 1 .

}

 

Конструкция for

Цикл for имеет следующий синтаксис.

for   (выражение1;   выражение2;   выражение3)

{

//  Выполнение  тела цикла

}

Выражение 1 выполняется только один раз при входе в цикл, и обычно пред­ставляет собой оператор присваивания некоторого начального значения счетчику цикла. Выражение2 — это условное выражение, определяющее момент выхода из цикла (цикл выполняется до тех пор, пока оно равно TRUE или 1).

Выражение3 — еще один оператор присваивания, в котором обычно изменяется счетчик цикла или некоторая переменная, влияющая на выполнение условия в выражении2. Вы­ражения могут быть представлены любыми операторами, включая пустые (то есть, вместо выражения можно поставить только символ точки с запятой).

Циклы while и for в большинстве случаев взаимозаменяемы. Так, представ­ленный выше пример для цикла while, можно переписать в следующем виде:

int  с,   i;                                            ,

const char str[] = "0123456789";

char OddNums[5];                              //Строка для хранения нечетных цифр

i = 0;                                       //Индекс массива OddNums

for     =0;   с  <   10;   с++)              //До  тех  пор,   пока   с  меньше   10,...

if   ((с   %   2)   ==  1)   OddNums[i++]   =  str[c];

В одних ситуациях удобнее применять циклы for, в других — while. Досто­инством циклов for является более наглядная инициализация и организация из­менения счетчика цикла, С другой стороны, циклы while более гибкие и обеспе­чивают больше возможностей для реализации нестандартных программных реше­ний при организации повторяющихся вычислений.

 

Конструкция do-while

Кроме циклов while и for, в которых вначале выполняется проверка истин­ности условия цикла, и только потом управление передается блоку операторов цикла, в языке C имеется также конструкция do-while. Она отличается от первых двух тем, что в ней вначале выполняется блок операторов, и только потом прове­ряется выполнение условия. Другими словами, цикл do-while всегда выполняет­ся как минимум один раз, вне зависимости от условия цикла.Цикл do-while имеет следующий синтаксис:

do

{

// Выполнение блока операторов цикла

}

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

 

 

 

Организация бесконечных циклов

Для организации бесконечного цикла в качестве условного выражения в кон­струкции while или do-while можно просто указать значение TRUE или 1:

while(1)   блок_операторов;

В случае циклов for это будет выглядеть следующим образом:

for   (;;)   блок_операторов;

 

Операторы break и continue

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

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

Hosted by uCoz