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

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

do

оператор

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

Рисунок 8

Оператор 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. Вложенные циклы

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

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

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

При работе с двумерными массивами, для перебора всех элементов массива (например, он описан как 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]; /* – неправильно, т.к. оба цикла уже закончились, и оба индекса уже приняли "плохое" значение. */

15

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