Выбрать главу

double. Для этого предназначен статический метод Parse в классе Double.

48

Глава 1. Информация к размышлению: язык C# и даже больше

Аргументом метода Parse() мы передаем инструкцию Console.ReadLine(). Ре-

зультатом выражения Double.Parse(Console.ReadLine()) является числовое

значение типа double. Именно это значение записываем в переменную num.

ПРИМЕЧАНИЕ Вся эта конструкция работает, если мы действительно ввели число.

Если  мы  ввели  не  число,  возникнет  ошибка.  Из-за  такой  ошибки

в  принципе  работа  программы  завершается.  Другое  дело,  что  вся

интрига закручивается внутри блока try, поэтому даже такая ошибка

не остановит работу программы.

Для проверки значения переменной op мы используем оператор выбора

switch(). Аргументом указывается переменная op, а проверяются совпа-

дение значения этой переменной со значениями '+' (сложение), '­' (вы-

читание), '*' (умножение) и '/' (деление). Соответствующие значения

указываются в case-блоках. Каждый case-блок заканчивается инструкцией

break. Значение переменной op последовательно сравнивается со значени-

ями, указанными в case-блоках. Если совпадение найдено, выполняются

команды соответствующего блока. Если совпадение не найдено, ничего не

выполняется.

ПРИМЕЧАНИЕ В данном случае у нас есть две переменные: результат предыдущих

вычислений res и вновь введенное значение num. В зависимости от

того, какой символ операции введен, выполняется заданная операция.

Операндами являются переменные res и num.

Когда нужная операция выполнена, командой Console.WriteLine("Резуль-

тат:\t"+res) отображается текущий результат вычислений. Сразу после

этого появляется приглашение ввести символ операции (команда Console.

Write("Операция:\t")). Введенный текст считывается с консоли и записы-

вается в переменную text. Для этого мы используем команду text=Console.

ReadLine(). Это значение нам нужно протестировать, для чего используем

условные операторы.

У условного оператора синтаксис вызова следующий:

if(условие){команды}

else {команды}

В круглых скобках после ключевого слова if указывается условие.

Если условие истинно, выполняются команды в фигурных скобках

после  if-инструкции.  Если  условие  ложно,  выполняются  команды

в фигурных скобках после ключевого слова else. Есть сокращенная

форма условного оператора, в которой else-блок не используется.

Консольная программа           49

Сначала мы проверяем, введен ли пользователем текст "exit". Для срав-

нения текстовых значений переменной text и литерала "exit" используем

метод Equals(), который вызывается из объекта text. Вся инструкция вы-

глядит как text.Equals("exit"). Результатом является true, если тексто-

вое значение переменной text совпадает с литералом "exit". В противном

случае результат равен false.

Как уже отмечалось, string — это как бы имя класса. Переменная

типа string на самом деле является объектом класса string. У этого

объекта, как и у любого объекта класса string, имеется метод Equals(), позволяющий сравнивать текстовое значение объекта, из которого

вызывается  метод,  и  текстовое  значение,  переданное  аргументом

методу.  Сравнение  текстовых  значений  выполняется  с  учетом  со-

стояния регистра (строчные и прописные буквы считаются разными

символами).

В случае если значение текстовой переменной text равно "exit", выпол-

няется инструкция break, которая завершает работу оператора цикла dowhile(), а управление передается следующему оператору после опера-

тора цикла. Именно благодаря инструкции break в условном операторе

формально бесконечный циклический оператор не является на самом деле

бесконечным. После выхода из оператора цикла будут выполнены последо-

вательно инструкции Console.Write("Вычисления закончены. Нажмите кла­

вишу Enter...") и Console.ReadLine(). Первая из этих инструкций просто

выводит сообщение о том, что выполнение программы завершено. Вторая

формально является инструкцией считывания консольного ввода пользова-

теля. Но здесь она играет совершенно особую роль — с помощью этой ин-

струкции мы удерживаем консольное окно на экране до нажатия клавиши

Enter.

Когда  программа  завершает  работу,  консольное  окно  автоматиче-

ски закрывается. Поскольку выполняется программа очень быстро, мы можем и не заметить, что это окно вообще открывалось. А если