Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР7-С++-05 апреля-2012.doc
Скачиваний:
19
Добавлен:
15.09.2019
Размер:
2.45 Mб
Скачать

1.7. Оператор цикла while

Назначение. Организация многократного повторения фрагмента программы.

Синтаксис:

while (Логическое_выражение)

{

// тело цикла;

}

Здесь тело цикла — один или несколько операторов, в общем случае составной оператор. «Логическое_выражение» — это выражение условия завершения цикла.

Выполнение. Тело цикла выполняется, когда Логическое_выражение имеет значение «истинно» (отлично от 0). Когда Логическое_выражение «ложно», управление передается оператору, стоящему за циклом.

Пример.

Найдем сумму n чисел натурального ряда

Параметр цикла i ∈ [1,n], Δi = 1. Тело цикла S = S + i.

{

int n, Sum = 0;

int i;

printf ("\nВведите число элементов прогрессии \n");

scanf ("%d", &n);

i = 1;

while (i <= n)

{

Sum += i; // очередное сложение

i++; // увеличение слагаемого

}

printf("Сумма арифметической прогрессии %d", Sum);

}

Поскольку значение суммы не зависит от порядка суммирования, то в стиле С алгоритм запишется так:

i = n;

Sum = 0;

while (i) // пока i отлично от 0

Sum += i – –;

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

1.5.4.1. Оператор цикла while

Оператор цикла while называется циклом с предусловием. С помощью данного оператора реализуется цикл, который выполняется до тех пор, пока истинно условие цикла (рис. 7.ччч). Синтаксис данного оператора следующий:

while(<условие>)

{

<тело цикла>

}

Операторы тела цикла повторяются до тех пор, пока условие истинно.

Рис. 7.

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

Схема выполнения оператора while следующая:

1. Вычисляется выражение.

2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.

3. Процесс повторяется с пункта 1.

Это важно

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

внутри операторов for и while можно использовать локальные переменные, которые должны быть объявлены с определением соответствующих типов;

тело цикла while может быть составным (обязательно использовать {});

оператор while может быть вложенным.

Цикл с предусловием имеет следующий формат:

whi1e(<условие>) <тело цикла>;

Вычисляется условие. Если оно истинно, то выполняется тело цикла и осуществляется переход в начало цикла для оче­редной проверки условия.

Пример 3.3

Вычислить сумму чисел от 1 до заданного числа n.

# include<stdio.h>

void main()

{ int a,s;

printf("Введите n");

scanf("%d",&n); s=0;

a=1;

while(a<=n) { s=s+a;

a=a+1;

}

printf(" Сумма равна %d",s);

}

1. Оператор цикла с предусловием

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

код цикла

организует повторение операторов кода цикла до тех пор, пока выражение истинно (не равно 0), если выражение = 0 (ложно) при первом входе, то код цикла не выполнится ни разу. Если код цикла состоит более чем из одного оператора, то организуется блок.