Программирование >>  Аргументация конструирования 

1 ... 14 15 16 [ 17 ] 18 19 20 ... 108


Вложенныекоманды1/и/и1&и1нил

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

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

Внешний цикл суммирует полученные суммы значений последовательностей до тех

пор, пока накопленная сумма примет отличное от нуля значение.

вводится последовательность чисел.

Числа суммируются, пока пользователь не введет отрицательное число.

Этот процесс будет повторяться,

пока обцая сумма не станет равной О,

#include <stdio.h> tinclude <iostream.h>

int main(ir.t arg, char* pszArgs[]) {

<< суммирует

<< последовательности чисел.\п Ввод каждой < ательности завершается вводом отрицательного числа \п Чтобы завериитв ввод последователвностей, нужно ввести\пдва отрицателвных числа подрядХп ; внешний цикл работает с последовательностями чисел int accumulator;

начинаем ввод очередной последователвности чисел accumulator = 0;

cout << ХпВведите очередную последовательность\п ;

бесконечный цикл for (;;)

введение очередного числа int value = 0;

cout Введите очередное чксло: cin value;

если оно отрицательное... If (value < 0}

... выходим из цикла break;

...иначе добавляем число к



общей сумме

accumulator = accumulator + value;

Вывод результата вычислений. . . cout ХпОбщая сумма равна

accumulator

<< \п ;

I / если накопленная общая сумма чисел последовательности не равна нулю, начинаем работать со следующей

последовательностью

} while (accumulator != 0) ; cout Программа завершена\n ;

return 0;

Последняя управляющая инструкция эффективна, если существует необходимость

выбора при ограниченном количестве возможных вариантов. Она похожа на усложненную инструкцию if, которая вместо проверки одного условия анализирует множество разных возможностей:

switch (выражение) {

case cl;

переходим сюда, если выражение == cl

break;

case c2:

переходим сюда, если выражение == с2 break; default:

если ни одно условие не выполнено, переходим сюда

Значением выражения должно быть целое число (int, long или char); cl, с2, сЗ должны быть константами. Инструкция switch выполняется следующим образом: сначала вычисляется значение выражения, а затем оно сравнивается с константами, указанными после служебного слова case. Если константа соответствует значению выражения, то программа передает управление этой ветви. Если ни один вариант не подходит, выполняется условие default.

Рассмотрим для примера следующий фрагмент программы:

cout Введите 1, 2 или 3: ; cin >> choice;

switch (choice) {

case 1:

обработка случая 1

break; case 2:

обработка случая 2

break;



case 3:

обработка случая 3 break;

default:

cout << В! ввели не 1, не 2 и не 3\п

Еще раз напомню, что инструкция switch эквивалентна ненной инструкции if (с однако, если рассматривается более

случаев, структура switch оказывается нагляднее.

Для выхода из инструкции необходимо использовать команды

break, иначе управление будет переходить от одного случая к следующему.




1 ... 14 15 16 [ 17 ] 18 19 20 ... 108

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