Тема 5. Операторы итерации
Определение оператора итерации "Оператор итерации повторяет оператор или блок операторов, пока не будет выполнено заданное условие завершения".
С# поддерживает три различных оператора цикла, способных удовлетворить разным запросам программистов. Далее рассматривается их синтаксис и общая форма.
Цикл while повторяет одиночный или составной оператор (последний называется телом цикла), пока логическое выражение в условии цикла равно true (см. слайд). Когда условие цикла принимает значение false, поток управления переходит на строку, следующую за циклом while. Синтаксический блок имеет вид.
Оператор while::=
while (<Условие цикла>)
<Тело цикла>
где:
<Условие цикла>::= <Логическое выражение>
<Тело цикла>::= <Оператор>;
::= <Составной оператор>;
Примечание: Тело цикла повторяется до тех пор, пока <Условие цикла> истинно (true).
Ключевое слово while(пока) выбрано подходящим образом — семантику цикла можно высказать обычным языком:
|
|
Пока (условие цикла истинно) повторять тело цикла.
Для иллюстрации работы цикла while рассмотрим следующий пример.
Пример. Написать программу, которая выводит последовательность чисел от 0 до 10.
using System;
class qqq
{
public static void Main()
{
int index=0;
while(index<=10)
{
Console.WriteLine(index);
index++;
}
Console.ReadLine();
}
}
Цикл while начинается с ключевого слова while, за которым следует заключенное в скобки условие index <= 5. Тело цикла заключено в фигурные скобки и представляет собой составной оператор, исполнение которого повторяется в цикле. Переменная indexявляется частью условия циклаи, очевидно, отвечает за его завершение. Таким образом, нужно обратить внимание на те точки кода, где изменяется значение index.
Ключевые моменты:
• инициализация index значением 0, ее называют инициализацией счетчика цикла;
• увеличение indexна 1называется обновлением цикла.
Пока условие index < =10 равно true,тело цикла повторяется. После инициализации index равен 0, по этой причине, когда цикл выполняется первый раз, index <=10равно true, а значит, тело цикла исполняется. Поэтому первый раз на консоль выводится 0, далее index увеличивается на 1 (т.е. значение переменной становится равным 1). Поток управления возвращается в и проверяет условие. Так как indexравно 1, условие index < =10 все еще справедливо, что приводит к повторению тела цикла (выводу значения и увеличению index ).
С каждым исполнением тела цикла index все больше приближается к моменту, когда условие index < =10 станет равным false. Так происходит до тех пор пока index не становится равным 10 Поток управления вновь переходит в условие, где условие index < =10 на этот раз дает false,что приводит к завершению цикла и передаче управления оператору, следующему за циклом while.
|
|
Задание. Написать программу, которая вычисляет среднее из введенных пяти чисел.
using System;
class qqq
{
public static void Main()
{
int index=1, sum=0, a;
double average = 0;
while(index<=5)
{
Console.WriteLine("Введите число"+index);
a=Convert.ToInt32(Console.ReadLine());
sum=sum+a;
index++;
}
average = (double)sum/(index-1);
Console.WriteLine("Среднее равно" +average);
Console.ReadLine();
}
}