Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
30.05.2015
Размер:
411.65 Кб
Скачать
        1. Оператор цикла do while

Структура оператора:

do

оператор

while (выражение);

Рисунок 7

Оператор do while определяет действия, которые циклически выполняются до тех пор, пока проверяемое выражение не станет ложным, или равным нулю (см. рис.Error: Reference source not found). Оператор do while – это цикл с постусловием; решением, выполнять или нет в очередной раз тело цикла, принимается после его прохождения. Поэтому тело цикла будет выполнено по крайней мере один раз. Оператор, образующий тело цикла, может быть как простым, так и составным.

Пример 1:

do{

printf("Введите любой символ: ");

scanf("%s",&c);

printf("Симовол = %c; его код = %d\n", n, n);

} while ( c != 'q' );

В этом примере выполняется абсолютно то же самое, что и в приведенном выше для организации ввода символов.

Пример 2:

do{

printf("Введите количество строк в массиве (1..5): ");

scanf("%d",&m);

} while ( m<1 || m>5 );

Здесь в качестве "условия" проверяется значение, введенное в качестве количества строк матрицы. В случае истинности, что на самом деле означает, что число введено неправильное, количество строк запрашивается вновь.

        1. Вложенные циклы

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

Вложенным называется цикл, находящийся внутри другого цикла (рисунок 8).

Рисунок 8 – Изображение на блок-схеме вложенных циклов

При работе с двумерными массивами, для перебора всех элементов массива (например, он описан как double mm[razm1][razm2]), очень удобно пользоваться приведенной ниже конструкцией. Здесь цикл с параметром ind1 является внешним, в котором задается текущий номер строки в массиве mm, а цикл с параметром ind2 – внутренним, в котором задается текущий номер столбца. Таким образом, каждое сочетание ind1 и ind2 позволяет обратиться к каждому элементу массива:

for (ind1=0; ind1 < razm1; ind1++)

{

for (ind2=0; ind2 < razm2; ind2++)

{

... – операторы, использующие соответствующий элемент массива; например:

mm[ind1][ind2] = Pi * (ind1+ind2);

}

}

a = mm[ind1][ind2]; /* – неправильно, т.к. оба цикла уже закончились, и оба индекса уже приняли "плохое" значение. */

      1. Другие управляющие операторы

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

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

        1. Оператор break

Оператор break можно использовать внутри любой из трех форм цикла и конструкции switch. Его выполнение приводит к тому, что управление программой, минуя оставшуюся часть тела цикла или конструкцию switch, содержащую данный оператор, передается на следующую (за этим циклом или за конструкцией switch) команду.

Пример:

switch (number)

{

case 4: printf("Это хороший выбор.\n");

break;

case 5: printf("Это неплохой выбор.\n");

break;

default: printf("Это плохой выбор.\n");

}

Соседние файлы в папке Методические указания