Инструкция do - while
Цикл с инструкцией do.. while используется в том случае, если последовательность действий надо выполнить несколько раз, причем количество повторений заранее не известно и может быть определено во время работы программы.
Относится к итерационным процессам.
В этом виде цикла условие стоит после тела цикла, поэтому этот цикл называют с постусловием. Тело цикла повторяется, пока выполняется условие. Тело цикла первый раз выполняется без проверки условия. Выход из цикла при не выполнении условия.
Эта циклическая инструкция работает по принципу: «Повторить — пока выполняется условие».
Ее синтаксис выглядит следующим образом:
do
{
Инструкции тела цикла;
}
while (Условие);
Пример. Программа использует цикл, в котором в консоль выводится последовательность чисел.
static void Main(string[] args)
{
int i = 0;
do
{
Console.WriteLine("i = {0} ", i);
i = i + 1;
}
while (i < 10);
Console.ReadKey();
}
Инструкция do…while выполняется следующим образом:
1. Сначала выполняются находящиеся между do…while инструкции тела цикла.
|
|
2. Затем вычисляется значение выражения условия.
3. Если значение выражения условия истинно (True), то инструкции тела цикла выполняются еще раз.
4. Если значение выражения условия ложно (False), то выполнение цикла прекращается и выполняется следующий оператор, предусмотренный ходом выполнения программы.
Цикл do…while используется для организации приближенных вычислений с заданной точностью, задач поиска и обработки данных в массиве или в файле.
Задача7. Вычислить наибольшее положительное целое число n, удовлетворяющее условию: 3n5 - 690n £ 7.
static void Main(string[] args)
{
int n = 1;
do n = n + 1;
while (3 * Math.Pow(n, 5) - 690 * n <= 7);
Console.WriteLine("n = {0 } ", n - 1);
Console.ReadKey();
}
Задача8. Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел, которые вводятся с клавиатуры.
static void Main(string[] args)
{
int s = 0, a = 0, n = 0; double m;
Console.WriteLine("Введите положительные числа");
Console.WriteLine("Для выхода из цикла введите 0");
do
{
s = s + a;
Console.Write(">> ");
a = Convert.ToInt16(Console.ReadLine());
n = n + 1;
}
while (a > 0);
n = n - 1;
Console.WriteLine("n = {0} ", n);
Console.WriteLine("s = {0} ", s);
m = s / n;
Console.WriteLine("m = {0,5:f} ", m);
Console.ReadKey();
}