Книга: Язык Си - руководство для начинающих

КАКОЙ ЦИКЛ ЛУЧШЕ?

КАКОЙ ЦИКЛ ЛУЧШЕ?

     После того как вы решили, что вам необходимо использовать оператор цикла, возникает вопрос: циклом какого вида лучше всего воспользоваться? Во-первых, решите, нужен ли вам цикл с предусловием или же с постусловием. Чаще вам нужен будет цикл с предусловием. По оценкам Кернигана и Ритчи; в среднем циклы с постусловием (do while) составляют только 5% общего числа используемых циклов. Существует несколько причин, по которым программисты предпочитают пользоваться циклами с. предусловием; в их числе один общий принцип, согласно которому лучше посмотреть, куда вы прыгаете, до прыжка, а не после. Вторым моментом является то, что программу легче читать, если проверяемое условие находится в начале цикла. И наконец, во многих случаях важно, чтобы тело цикла игнорировалось полностью, если условие вначале не выполняется.

     Положим, вам необходимо использовать цикл с предусловием. Что лучше: цикл for или цикл while? Отчасти это дело вкуса, поскольку все, что вы можете сделать с помощью одного, вы можете сделать и с помощью другого. Для превращения цикла for в цикл while нужно опустить первое и третье выражения:

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

Такая спецификация эквивалентна записи

while(проверка условия)

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

инициализация;

while (проверка условия)

{

тело;

коррекция;

}

Данная запись по своим функциональным возможностям эквивалентна следующей:

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

     Исходя из соображений стиля программирования, применение цикла tor представляется более предпочтительным в случае, когда в цикле используется инициализация и коррекция переменной, а применение цикла while - в случае, когда этого нет. Поэтому использование цикла while вполне оправданно в случае

while((ch = getchar( )) != EOF)

Применение цикла for представляется более естественным в случаях, когда в циклах осуществляется счет прохождений с обновлением индекса:

for (count = 1; count <= 100; count++)

Оглавление книги


Генерация: 1.260. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз