Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Комбинирование циклов разных типов




В программе можно использовать любые комбинации вложенных циклов всех типов: while, for и do...while, если этого требует логика построения программы. В приведенной ниже программе, например, используется цикл while, вложенный внутрь цикла for. В программе осуществляется преобразование десяти значений температуры, находящихся в пределах от 0 до 100. Значения вводятся с клавиатуры.

/*mixed.c*/main() { int temp, count; float celsius; for (count = 1; count <= 10; count++) { printf("Введите значение температуры в пределах от 1 до 100: "); scanf("%d", &temp); while (temp < 0 || temp > 100) { printf("Ошибка, повторите ввод: "); scanf("%d", &temp); } celsius = (5.0 / 9.0) * (temp - 32); printf("%d градусов по Фаренгейту соответствует %6.2f по Цельсию\n", temp, celsius); } }

Внешний цикл for повторяется ровно 10 раз. Внутренний цикл будет повторяться до тех пор, пока пользователь не введет правильные данные.

Проектирование программы

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

Во-первых, следует выбрать, какой цикл — for, do...while или while — вы будете использовать. Начните с вопроса:

  • Знаю ли я, сколько раз нужно повторить цикл, а если нет, то буду ли знать к моменту запуска программы на выполнение?

Если вы отвечаете на этот вопрос утвердительно, то используйте цикл for. Если ответ отрицательный, то ответьте на следующий вопрос:

  • Нужно ли мне, чтобы цикл был обязательно выполнен, по меньшей мере, один раз?

Если на этот вопрос вы ответили положительно, вам следует использовать цикл do...while, если отрицательно — можно использовать цикл while.

Допустим для примера, что вы хотите рассчитать среднее арифметическое значение последовательности чисел. Если неизвестно точное количество чисел в последовательности, вам следует использовать циклы do...while или while, но не цикл for. Возможно, вы хотите предоставить пользователю возможность прекратить выполнение программы сразу после ее запуска, без того, чтобы цикл был выполнен хотя бы один раз. Следовательно, надо использовать цикл while.

Но как прекратить повторение циклов? Необходимо, чтобы пользователь мог как-то сообщить программе, что он уже закончил ввод данных и хочет завершить процедуру ввода. Одним из способов, позволяющих сделать это, является вывод на экран запроса, в котором после каждого повтора цикла пользователю предлагается продолжить или закончить ввод. Но такая процедура требует двух вводов на каждый повтор цикла, а именно, числа, которое добавляется в данные, и символа Y (y), указывающего на желание продолжить ввод.

Возможно, более удобным вариантом является использование некоторого значения, которое, будучи введенным, укажет программе на необходимость завершения процедуры. Пример программы, в которой используется такой способ, приведен в Листинге 2. Выполнение этой программы прекращается после ввода отрицательного числа. Ввод первого значения находится за пределами цикла, так что программу можно остановить сразу же после запуска, путем ввода первого отрицательного значения. При вводе каждого положительного числа происходит увеличение счетчика на единицу, а число добавляется к сумме введенных значений. Обратите внимание, каждое последующее число вводится в самом конце цикла непосредственно перед тем, как while проверяет условие до начала следующего повторения.

 

Отметьте также, что условие

if (count > 0)

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





Поделиться с друзьями:


Дата добавления: 2017-03-12; Мы поможем в написании ваших работ!; просмотров: 260 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2541 - | 2236 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.