ОГЛАВЛЕНИЕ

Материалы

Организация символов с помощью FOR

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

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

В одной строке этот оператор определяет сразу три составляющие, отделяемые друг от друга точкой с запятой:

Формально этот оператор эквиалентен последовательности операторов:

В следующей программе оператор for служит для организации и печати последовательных чисел Фибоначчи, не превосходящих m. Проверка k<=m происходит перед каждым (в том числе и перед первым) выполнением тела цикла. Тело цикла выполняется, если проверочное выражение истинно. Затем следует изменение параметра: k=k+1; этот оператор, кстати, формирует очередное число Фибоначчи, а оператор j=k-j; хранит предыдущее.

Как и в операторе while, тело цикла for может состоять из единственного оператора или из нескольких, заключенных в скобки. Следующяя программа (пример 4.5) предназначена для печати гистопрограммы длин читаемых слов (признак конца слова - пробел, запятая или "\n"). Оператор for управляет циклом, состоящим по сути из одного оператора if , так что скобки можно было бы опустить. Для построения гистопрограммы выбран символ, внутреннее представление которого в коде ASCII численно равно 220.

В скобках после ключевого слова for можно размещать выражения. Однако выражение1 и выражение3 не обязаны присваивать начальное значение и изменять параметр цикла, а выражение2 не обязано быть проверкой условия. Но компилятор всегда интерпретирует выражение2 как истинну или ложь (ложь- двоичный нуль, истина - все остальное). Любое из трех может быть опущено, хотя точка с запятой должна остаться. Допускается даже такой вырожденный случай: for(;;);. Он означает бесконечный цикл, так как пропущенное выражение2 всегда трактуется как истина.

В Си есть еще операция " , " (запятая), которая чаще всего используется в операторе for. Пара выражений, разделенных запятой, вычисляются слева направо. В каждой из трех составляющих оператора for можно помещать несколько выражений, разделенных запятыми. Этот прием часто используют, например, для синхронного изменения двух индексов при обработке массивов. В качестве примера приведем функцию substr, которая позволяет из задонной строки s1 выделить подстроку s2 указанной длины L, начиная с k-го по порядку символа (нумерация символов начинается с нуля). Функция принимает также параметр m- общее кол-во символов в исходной строке, чтобы контролировать возможный выход за ее пределы.

Преимущество оператора for - компактность и объединение в одной строке трех операторов управления циклом - особенно заметно проявляется во вложенных циклах. Очередная прогрпмма предназначена для упорядочения целых чисел по возрастанию. Функция sor реализует один из наиболее простых алгоритмов сортировки - метод "пузырька".

Еще один пример со вложенными циклами демонстрирует программа. Она использует одну полезную при обработке текстов функцию index. Функция index определяет , входит ли в некоторую строку s1 заданная подстрока s2 и выдает положение (индекс) в строке s1 , начиная с которого строка s2 содержится в s1. Если s2 не входит в s1, то функция возращает '-1'.

<<<Назад   |   Далее>>>
Hosted by uCoz