Оператор for является
самой популярной структурой для организации
циклов. В общем случае его можно представить так :
for( выражение1; выражение2; выражение3) оператор; В одной строке этот оператор определяет сразу три составляющие, отделяемые друг от друга точкой с запятой: а) начальное значение параметра цикла(выражение1), б) условие оканчания цикла (выражение2) , в) закон изменения параметра цикла(выражение3). Формально этот оператор эквиалентен последовательности операторов
В следующей программе (пример 4.4) оператор for служит для организации и печати последовательных чисел Фибоначчи, не превосходящих m. Проверка k<=m происходит перед каждым (в том числе и перед первым) выполнением тела цикла. Тело цикла выполняется, если проверочное выражение истинно. Затем следует изменение параметра: k=k+1; этот оператор, кстати, формирует очередное число Фибоначчи, а оператор j=k-j; хранит предыдущее. Пример 4.4
Как и в операторе while,
тело цикла for может состоять из
единственного оператора или из нескольких,
заключенных в скобки. Следующяя программа
(пример 4.5) предназначена для печати
гистопрограммы длин читаемых слов (признак конца
слова - пробел, запятая или "\n"). Оператор for
управляет циклом, состоящим по сути из
одного оператора if , так что скобки
можно было бы опустить. Для построения
гистопрограммы выбран символ, внутреннее
представление которого в коде ASCII численно
равно 220. Пример 4.5
В Си есть еще операция ", " (запятая), которая чаще всего используется в операторе for. Пара выражений, разделенных запятой, вычисляются слева направо. В каждой из трех составляющих оператора for можно помещать несколько выражений, разделенных запятыми. Этот прием часто используют, например, для синхронного изменения двух индексов при обработке массивов. В качестве примера приведем функцию substr, которая позволяет из задонной строки s1 выделить подстроку s2 указанной длины L, начиная с k-го по порядку символа (нумерация символов начинается с нуля). Функция принимает также параметр m- общее кол-во символов в исходной строке, чтобы контролировать возможный выход за ее пределы(пример 4.6). Пример 4.6
Преимущество оператора for - компактность и объединение в одной строке трех операторов управления циклом - особенно заметно проявляется во вложенных циклах. Очередная прогрпмма(пример 4.6) предназначена для упорядочения целых чисел по возрастанию. Функция sor реализует один из наиболее простых алгоритмов сортировки - метод "пузырька". Пример 4.6
Еще один пример со вложенными циклами демонстрирует программа (пример 4.7). Она использует одну полезную при обработке текстов функцию index. Функция index определяет , входит ли в некоторую строку s1 заданная подстрока s2 и выдает положение (индекс) в строке s1 , начиная с которого строка s2 содержится в s1. Если s2 не входит в s1, то функция возращает '-1'. Пример 4.7
|