Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C#_04 / Class_04. Операторы цикла.docx
Скачиваний:
15
Добавлен:
19.04.2015
Размер:
231.35 Кб
Скачать

Оператор цикла while (цикл с предусловием)

Оператор цикла while используется для организации циклического выполнения тела цикла, пока выполняется некоторое условие:

while (<выражение>) <тело оператора>;

В конструкции while вычисляется выражение. Если его значение true, то выполняется тело оператора и выражение вычисляется снова. Этот цикл продолжается до тех пор, пока значение выражения не станет false, после чего выполнение программы продолжается с места после тела оператора. Оператор, стоящий после закрывающей скобки, задает тело цикла.

Пример 5. Вычислить сумму чисел от 1 до 100.

Способ 1

Способ 2

int s = 0, i = 1;

while(i <= 100)

{

s = s + i; i++;

}

int s = 0; i = 100;

while(i > 0)

{

s = s + i; i--;

}

В теле цикла к сумме s (изначально = 0) прибавляется слагаемое i (изначально = 1) и это слагаемое увеличивается на 1.

Цикл закончит свое выполнение, когда слагаемое i станет равным 101 и не будет выполняться условие i <= 100.

В теле цикла к сумме s (изначально = 0) прибавляется слагаемое i (изначально = 100) и это слагаемое уменьшается на 1.

Цикл закончит свое выполнение, когда слагаемое i станет равным нулю и не будет выполняться условие i > 0.

В данном примере два оператора в теле цикла можно заменить одним, например, так:

Способ 3

Способ 4

Способ 5

int s = 0, i = 1;

while(i <= 100)

s += i++;

int s = 0; i = 100;

while(i > 0)

s += i--;

int s = 0, i = 0;

while(i < 100)

s += i++;

Способ 5 аналогичен способу 3. Различие выделено красным цветом. Разберитесь самостоятельно, как здесь работает цикл.

Пример 6. Найти наибольший общий делитель (НОД) двух натуральных чисел p и q.

Классическая задача на правильный выбор оператора цикла. Рассмотрим «медленный НОД», в котором большее из двух чисел уменьшается на значение меньшего, пока числа не сравняются. Цикл for использовать нельзя, т.к. число итераций заранее неизвестно. Для учёта случая равных p и q проверку условия следует выполнять перед первой итерацией:

Console.Write("p=");

int p = int.Parse(Console.ReadLine());

Console.Write("q=");

int q = int.Parse(Console.ReadLine());

int pp = p, qq = q;

while (p != q)

if (p > q) p -= q;

else q -= p;

Console.WriteLine("НОД({0},{1})={2}", pp,qq,p);

Пример 7. Найти сумму цифр заданного натурального числа n.

В данной задаче необходимо извлекать из числа десятичные цифры и добавлять их к сумматору. Легче эти цифры брать из младшего десятичного разряда и, разделив число на 10, удалять их из числа. Очевидно, что цикл работает, пока число больше 0.

Console.Write("n=");

int n = int.Parse(Console.ReadLine());

int s=0;

while (n > 0)

{ s += n % 10;

n /= 10;

}

Console.WriteLine("Сумма цифр равна {0}", s);

Соседние файлы в папке C#_04