ментов.
ПРИМЕЧАНИЕ Признаком того, что мы закончили ввод текстовой строки, является
нажатие клавиши Enter. При этом вся строка считывается в текстовом
формате — даже если мы ввели число, считано оно будет как текст.
Как с этим бороться, рассказано далее.
В начале программы мы объявляем две переменные (res и num) типа double.
Этот тип соответствует действительным числам в формате представления
с плавающей точкой. При этом переменная res сразу в качестве началь-
ного получает нулевое значение. В эту переменную мы будем записывать
результат вычислений. В переменную num будет записываться очередное
введенное пользователем число. Также нам понадобится символьная пере-
менная (переменная типа char) для записи символа операции. Эта пере-
менная называется op, и ее начальное значение равно '+'. Таком образом, первая операция — это сложение.
ПРИМЕЧАНИЕ Значение символьной переменой — это символ (или буква, если под
буквой подразумевать любой символ). Символьный литерал (буква) заключается в одинарные кавычки. Если букву заключить в двойные
кавычки, это будет текстовый литерал.
Нормальный режим завершения работы программы предполагает, что вме-
сто символа операции мы вводим слово exit. Это текст. Поэтому на каж-
дом этапе, когда предполагается прочитать с консоли символ оператора, мы будем считывать текст, а затем этот текст будем обрабатывать. Текст
запоминаем в переменной text, начальным значением которой является
пустая текстовая строка. После отображения приветственного сообщения
"Начинаем вычисления. Завершение - exit." в консоли, которое выводится
с помощью статического метода WriteLine() класса Console, запускается
оператор цикла dowhile().
Консольная программа 47
Практически весь последующий код заключен в блок try — после
этого ключевого слова в фигурных скобках размещен обсуждаемый
далее программный код. После try-блока можно обнаружить catch-
блок. На самом деле это две составные части одной конструкции, главное и благородное назначение которой — обработка исключи-
тельных ситуаций, то есть ошибок, которые возникают в процессе
выполнения программы. Назначение блока try-catch мы обсудим
более детально несколько позже.
Начинается оператор цикла ключевым словом do и заканчивается инструк-
цией while(true). Формально это означает бесконечный цикл. Команды, размещенные внутри тела оператора цикла, в данном конкретном случае
могли бы выполняться бесконечно долго (если бы мы не предусмотрели
хитроумную процедуру выхода).
Оператор цикла do-while() выполняется следующим образом: вы-
полняются команды тела цикла (команды в фигурных скобках после
ключевого слова do), после чего проверяется условие, указанное
в круглых скобках после ключевого слова while. Условие — это вы-
ражение логического типа (тип bool). Переменная этого типа может
принимать всего два значения — true (истина) или false (ложь). Если
условие истинно (значение выражения равно true), работа оператора
цикла продолжается — будут выполнены команды тела цикла, и за-
тем снова проверяется условие, и т. д. Поскольку в нашем случае
условием указано ключевое слово true, условие всегда истинно.
Поэтому формально имеем дело с бесконечным циклом. На самом
деле, конечно, цикл завершится за конечное количество итераций.
В этом мы убедимся при анализе программного кода и тестировании
программы.
Командой Console.Write("Ведите число:\t") в консольное окно выводится
сообщение с приглашением ввести число. При этом в тексте использована
инструкция табулирования \t — чтобы результат вывода текстовой инфор-
мации в консольном окне выглядел упорядоченно. После этого командой
num=Double.Parse(Console.ReadLine()) считываем число, введенное поль-
зователем. Здесь нужны некоторые пояснения. Посредством инструкции
Console.ReadLine() в текстовом формате считывается то, что ввел пользо-
ватель. Мы предполагаем, что это число. Вместе с тем речь идет о текстовом
представлении числа. Именно это текстовое представление числа возвра-
щается в качестве результата инструкции. Нам необходимо текстовое пред-
ставление числа трансформировать в числовое значение — значение типа