Оператор цикла do-while
Цикл do-while подобен while в том, что тело цикла повторяется до тех пор, пока логическое выражение равно true. Важное различие состоит в том, что тело цикла, расположенное между ключевыми словами do и while, запускается до того, как проверяется значение логического выражения. Следовательно, тело цикла do-while выполняется хотя бы один раз (даже если логическое условие изначально несправедливо).
Оператор while::=
do
<Тело цикла>
while (<Условие цикла>)
где:
<Условие цикла>::= <Логическое выражение>
<Тело цикла> ::= <Оператор>;
::= <Составной оператор>;
Выбор между циклом while и do-while зависит от конкретной вычислительной задачи. В большинстве случаев, вполне подходит цикл со входным условием while. Например, если цикл используется для прохождения по списку чисел (или любых других объектов), следует учесть, что список может быть и пустым. В этом случае цикл не должен исполняться ни разу. Применение цикла do-while в такой ситуации дает ошибочный код.
Хотя цикл do-while используется не так часто, как while, он хорошо подходит для решения определенных вычислительных задач. Одна из таких задач связана с тем блоком программы, который постоянно запрашивает, получает, обрабатывает и выводит информацию, введенную пользователем. Часто ввод обрабатывается в цикле. В этом случае он должен быть получен до использования. Другими словами, тело цикла, где обрабатывается ввод, должно исполниться хотя бы один раз до проверки его условия. Именно по такой схеме и работает цикл с выходным условием do-while.
Задание. Напишите программу калькулятор с использованием меню, которое по окончании работы запрашивала бы продолжать или нет. Если продолжать, то вновь происходит запрос на введение чисел, если нет, то программа выводит сообщение «Завершение работы». В качестве основы используйте программу калькулятор с оператором switch. Программа должна хотя бы раз сработать.
using System;
class class1
{
public static void Main()
{
int a=0, b=0;
double c=0;
bool exit=false;
string operation;
do
{
Console.WriteLine("Введите числа");
a=Convert.ToInt32(Console.ReadLine());
b=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите операцию: сумма, разность, произведение, частное.");
operation = Console.ReadLine();
switch(operation)
{
case "сумма":
{
c=a+b;
Console.WriteLine("Сумма чисел {0} и {1} равна {2}",a,b,c);
break;
}
case "разность":
{
c=a-b;
Console.WriteLine("Разность чисел {0} и {1} равна {2}",a,b,c);
break;
}
case "произведение":
{
c=a*b;
Console.WriteLine("Произведение чисел {0} и {1} равна {2}",a,b,c);
break;
}
case "частное":
{
c=a/b;
Console.WriteLine("Частное чисел {0} и {1} равна {2}",a,b,c);
break;
}
default:
{
Console.WriteLine("Ошибка ввода");
break;
}
}
Console.WriteLine("Вы хотите завершить программу: да, нет");
string q = Console.ReadLine();
if (q=="да")
exit=true;
} while(exit==false);
Console.ReadLine();
}
}