Программирование >>  Структурное программирование 

1 ... 39 40 41 [ 42 ] 43 44 45 ... 342


2. Начальное значение управляющей переменной.

3. Приращение (или уменьшение), на кото1юе изменяется управляющая переменная в каждом цикле.

4. Условие проверки, не достигнуто ли конечное значение управляющей переменной (т.е. надо ли продолжать циклы).

Рассмотрим простую программу, показанную на рис. 2.16, которая печатает числа от 1 до 10. Объявление

int counter = 1;

определяет имя управляющей переменной (counter), объявляет переменную как целую, резервируя для нее соответствующее место в памяти, и задает ее начальное значение 1. Объявления, в которых задается начальное значение, являются фактически выполняемыми операторами.

Это объявление и задание начального значения переменной counter можно было бы сделать операторами

int counter; counter = 1;

Здесь само объявление не является выполняемым оператором, а присваивание осуществляется отдельным оператором. Можно использовать оба эти метода для задания начальных значений переменных.

Оператор

++counter

увеличивает счетчик на 1 при каждом выполнении цикла. Условие продолжения цикла в структуре while проверяет, меньше или равно значение управляющей переменной числа 10 (последнего значения, при котором условие истинно). Заметьте, что тело этой структуры while выполняется и при значении управляющей переменной, равном 10. Выполнение цикла заканчивается, когда значение управляющей переменной превысит 10 (т.е. переменная counter станет равной 11).

Операция

Ассоциативность

Тип операций

слева направо

круглые скобки

+ - + - (тип)

справа налево

унарные

/ %

слева направо

мультипликативные

слева направо

аддитивные

слева направо

поместить в/взять из

< <= > >=

слева направо

отношение

слева направо

проверка на равенаво

справа налево

условная

+= -= *= /= % =

справа налево

присваивание

Рис. 2.15. Приоритеты операций, описанных ранее в данной книге



return 0; успешное окончание

1 2 3 4 5 6 7 8 9

Рис 2.16. Повторение, управляемое счетчиком

Программа рис. 2.16 может быть сделана более компактной, если переменной counter задать начальное значение О и заменить структуру while следующей:

while (++couner <= 10)

cout counter endl;

Этот код экономит один оператор, поскольку инкремент выполняется непосредственно в условии структуры while до того, как это условие проверяется. Этот код также устраняет скобки, заключающие в себе тело while, поскольку теперь while содержит всего один оператор. Кодирование в подобной сжатой манере дается практикой.

Типичная ошибка программирования 2.11

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

Хороший стиль программирования 2.12

Управляйте количеавом повторений цикла с помощью целой переменной. Хороший стиль программирования 2.13

Записывайте с отступом операторы тела каждой управляющей структуры.

Повторение, управляемое счетчиком #include <iostream.h>

main () {

int counter =1; Задание начального значения

while (counter <= 10) { условие повторения

cout << counter << endl; ++counter; увеличение



2.14. Структура повторения for (ЦИКЛ)

Структура повторения for содержит все элементы, необходимые для повторения, управляемого счетчиком. Чтобы проиллюстрировать моп];ь структуры for, давайте перепишем программу рис. 2.16. Результат этого представлен на рис. 2.17. Ниже описана работа этой программы.

Когда структура for начинает выполняться, управляющей переменной counter задается начальное значение 1. Затем проверяется условие продолжения цикла counter <= 10. Поскольку начальное значение counter равно 1, это условие удовлетворяется, так что оператор тела структуры печатает значение counter, равное 1. Затем управляющая переменная counter увеличивается на единицу в выражении counter-H- и цикл опять начинается с проверки условия его продолжения. Поскольку значение counter теперь 2, предельная величина не превышена, так что программа снова выполняет тело цикла. Этот процесс продолжается, пока управляющая переменная counter не увеличится до 11 - это приведет к тому, что условие продолжения цикла нарушится и повторение прекратится. Выполнение программы продолжится с первого оператора, расположенного после структуры for (в данном случае с оператора return в конце программы).

Рис. 2.18 в сжатом виде показывает структуру for из программы рис. 2.17. Заметьте, что структура for делает все - она определяет каждый элемент, необходимый для повторения, управляемого счетчиком с управляющей переменной. Если в теле for имеется более одного оператора, то для определения тела цикла требуются фигурные скобки.

Отметим, что рис. 2.17 использует условие продолжения цикла counter <= 10. Если программист некорректно напишет counter < 10, то цикл выполнится всего 9 раз. Это типичная логическая ошибка, называемая ошибкой занижения (или завышения) на единицу.

Типичная ошибка программирования 2.12

Использование неправильной операции отношения или использование неправильного конечного значения счетчика цикла в условиях структур while или for может приводить к ошибке занижения (или завышения) на единицу.

Хороший стиль программирования 2.14

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

Хороший стиль программирования 2.15

Слишком большая глубина вложенности может сделать программу трудной для понимания. Как правило, старайтесь избегать более трех уровней отступов.

Хороший стиль программирования 2.16

Вертикальные пробелы над и под управляющими структурами вместе с отступами в телах этих структур по отношению к их заголовкам создают двумерный эффект, облегчающие чтение программы.



1 ... 39 40 41 [ 42 ] 43 44 45 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика