Такой цикл функционируют следующим образом. Сначала выполняется код тела цикла, затем производится булевская проверка, и если в ее результате возвращается true, данный код выполняется снова, и так повторяется до тех пор, пока после проверки не будет возвращено значение false, в этом случае цикл завершается.
Структура цикла do выглядит, как показано ниже, и подразумевает, что выражение <условие> должно возвращать одно из булевских значений:
do
{ <код, подлежащий выполнению в цикле>
} while (<условие>);
Пример (алгоритм описан выше)
int N,C,i;
float S=0;
string M=”Неверное N”,M1=”Неверная оценка”;
do
{ Console.WriteLine("Введите число учеников");
N=Convert.ToInt32(Console.ReadLine());
if (N<0||N>25) Console.WriteLine ({0},M);
}while(N<0||N>25);
Console.WriteLine("Введите оценки");i=0;
do
do
{C= Convert.ToInt32(Console.ReadLine());
if(C<2||Ci>5) Console.WriteLine ({0},M1);
}while (C<2||C>5); S+=C;i++;}
while(i<N);
S/=N;
Console.WriteLine("Средний балл {0}”,S);
Console.ReadKey();
Здесь цикл do используется не только для обработки вектора оценок, но и для организации ввода с контролем.
Цикл while
|
|
Этот цикл очень похож на цикл do, но имеет одно важное отличие: булевская проверка в нем выполняется в начале, а не в конце цикла. Если после выполнения этой проверки возвращается false, код в теле цикла вообще не выполняется. Вместо этого сразу выполняется код, следующий непосредственно за циклом.
Структура цикла while:
while (<условие>)
{ <код, подлежащий выполнению в цикле>
}
Перепишем тот же пример с циклом while для обработки вектора.
int N,C,i;
float S=0;
string M=”Неверное N”,M1=”Неверная оценка”;
do
{ Console.WriteLine("Введите число учеников");
N=Convert.ToInt32(Console.ReadLine());
if (N<0||N>25) Console.WriteLine ({0},M);
}while(N<0||N>25);
Console.WriteLine("Введите оценки");i=0;
while(i<N)
{do
{C= Convert.ToInt32(Console.ReadLine());
if(C<2||Ci>5) Console.WriteLine ({0},M1);
}while (C<2||C>5); S+=C;i++;};
S/=N;
Console.WriteLine("Средний балл {0}”,S);
Console.ReadKey();