русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Циклы for


Дата добавления: 2013-12-23; просмотров: 963; Нарушение авторских прав


 

Синтаксис:

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

оператор;

При выполнении цикла for сначала осуществляется инициализация. Она выполняется в начале цикла и больше никогда не повторяется. Обычно этот оператор инициализирует переменную, управляющую циклом. Затем происходит проверка_условия, называемая условием окончания цикла. Если проверка_условия дает значение "истина", то выполняется один или несколько операторов внутри цикла. Если произошел вход в цикл, то после выполнения всех операторов внутри цикла осуществляется коррекция. Если же проверка_условия дала значение "ложь", то операторы внутри цикла и оператор коррекции игнорируются и управление передается оператору, следующему за циклом. Цикл for с несколькими операторами внутри:

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

оператор_а;

оператор_b;

оператор_с;

оператор_n;

}

Если нужно выполнить несколько операторов, то необходимы фигурные скобки для их объединения с управляющей структурой цикла.

Пример: выполняется суммирование первых пяти целых чисел. Подразумевается, что переменные isum и lvalue предварительно описаны как целые:

isum = 0;

for(ivalue=1; lvalue <= 5: ivalue++)

isum -t-= lvalue;

После инициализации переменной isum значением 0, выполняется цикл for. Во-первых, переменная lvalue устанавливается в 1 (это осуществляется только один раз); во-вторых, значение lvalue сравнивается с условием окончания цикла <==5. Поскольку результат сравнения — "истина", к переменной isum добавляется 1. Как только оператор выполнился, значение переменной управления циклом {lvalue) увеличивается на 1. Этот процесс повторяется еще четыре раза до тех пор, пока значение lvalue не увеличится до 6 и цикл не закончится.

Аналогичный фрагмент можно записать на C++ следующим образом:



for(int ivalue=1; ivalue <= 5; ivalue++)

isum -<<-= ivalue;

Можно объявлять и инициализировать переменную управления циклом внутри цикла for. Это очень важное дополнение для программистов, заботящихся о структурированности программы и о правильности расположения объявлений переменных. Можно объявлять переменные непосредственно перед тем оператором, в котором они используются. В предыдущем примере допустимо локальное объявление переменной lvalue, так как она используется только для вычисления isum — переменной, имеющей большую, чем lvalue, область действия. Взгляните, однако, на следующий пример:

int isum = 0;

for(int ivalue=1; ivalue <= 5; ivalue++)

isum += ivalue;

Чтобы добиться структурированности проектирования и отладки, лучше всего использовать локализованные объявления всех переменных. Редко бывает, когда в программе оправдано объявление некоторой переменной в нестандартном месте, в результате чего затрудняется чтение, проверка и возможность редактирования программы.

Значение, используемое в циклах for в качестве переменной управления циклом, не всегда изменяется на 1 (при помощи операции ++). В следующем примере суммируются все нечетные числа до 9:

iodd sum = 0;

for(iodd_value=1; iodd_value <= 9; iodd_value+=2)

iodd_sum += iodd_value;

В этом примере переменная управления циклом iodd_value инициализируется значением 1 и увеличивается на 2.

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

#include <stdio.h>

#define CARRAY_SIZE 10 main()

{

int ioffset;

char carray[CARRAY_SIZE];

for(ioffset = 0; ioffset < CARRAY_SIZE; ioffset++)

carray [ioffset] = getchar();

for (ioffset = CARRAY_SIZE - 1; ioffset >= 0; ioffset--)

putchar(carray[ioffset]);

return(0);

}

В этом примере в первом цикле for инициализируется переменная ioffset, получая значение 0, затем символы считываются до тех пор, пока имеются свободные элементы в массиве carray. Во втором цикле for переменная управления циклом ioffset получает значение смещения последнего элемента массива, и до тех пор, пока в ioffset содержится допустимое смещение, символы печатаются в обратном порядке. Такая процедура может иметь смысл для синтаксического анализа некоторого инфиксного выражения, преобразованного в префиксное.

Если используются несколько циклов for, то необходимо в соответствующих местах ставить фигурные скобки для правильного выполнения операторов:

 

#include <stdio.h>

main()

{

int iouter val, iinner val;

for(iouter_val = 1; iouter_val <== 4; iouter_vai++) {

printf("\n%3d --",iouter_val);

for(iinner_val = 1; iinner_val <= 5; iinner vai++ )

printf("%3d",iouter_val * iinner_val);

}

return(0);

}

Результат:

1-- 1 2 3 4 5

2-- 2 4 6 8 10

3-- 3 6 9 12 15

4-- 4 8 12 16 20

Если внешний цикл for был записан без фигурных скобок, как в следующем фрагменте:

#include <stdio.h>

main()

{

int iouter vai, iinner val;

for(iouter_val = 1; iouter val <= 4; iouter val++)

printf("\n%3d --",iouter_val);

for(iinner_val = 1; iinner_val <= 5; iinner_val++ )

printf("%3d",iouter_val * iinner_val);

return(0);

}

Результат:

1 –

2 –

3 –

4 – 5 10 15 20 25

Если вокруг первого цикла for нет фигурных скобок, то с циклом связан только первый оператор printf(). После того, как оператор printf() выполнится 5 раз, происходит переход ко второму циклу for. Во внутреннем цикле последнее значение переменной iouter_val (5) используется для вычисления значений, печатаемых оператором printf().



<== предыдущая лекция | следующая лекция ==>
Оператор цикла for, while и do-while | Цикл while


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.704 сек.