В данном уроке опять создадим простенький калькулятор на языке C#, но в этот раз будем работать в консоли.
Калькуляторы на Windows Forms можно посмотреть здесь и здесь.
Данный калькулятор абсолютно элементарен и требует минимальных знаний языка. Создаём проект («Файл» ->»Создать»->»Проект»->»Консольное приложение») и объявляем наши переменные:
1 2 3 4 |
double a; double b; double total; char oper; |
Double — это тип переменной с плавающей запятой, иными словами, тип, в который можно записать десятичные числа, причём довольно большие. В него поместится как значение 5, так и значение 5,45, и даже значение 5,4571601695, также в нём можно использовать и отрицательные числа.
В переменную a мы внесём первое число, которое запишет пользователь. В переменную b — второе число. А переменная total будет выводить результат математических операций с переменными а и b.
Char — это тип переменной в виде какого-либо символа, будь то буква, цифра или какой-нибудь знак. В переменную oper мы будем заносить знак математической операции над числами. В нашем калькуляторе будут только самые основные — «+», «-«, «*» и «/».
Итак, мы объявили переменные, теперь нам надо узнать, что конкретно нужно посчитать пользователю, а для этого придётся считывать данные, которые он будет вводить:
1 2 3 4 5 6 7 8 |
Console.WriteLine("Введите первое число:"); a = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Введите оператор:"); oper = Convert.ToChar(Console.ReadLine()); Console.WriteLine("Введите второе число:"); b = Convert.ToDouble(Console.ReadLine()); |
Сначала мы выводим на консоль надпись о том, чтобы пользователь ввёл первое число.
В следующей строке мы присваиваем переменной a введенное пользователем число, но при этом не забываем, что введенные пользователем данные всегда имеют строковой формат string, а так как у нашей переменной тип double, то надо отконвертировать string в double соответствующим методом Convert.
Примерно то же самое мы проделываем с переменной oper, но конвертируем string уже не в double, а в char, потому что переменная oper имеет такой тип данных.
Точно то же самое, что было с переменной a проделываем и с переменной b, так как они одинакового типа.
Числа получены. Но пока неизвестно, как ими оперировать, так как главное для нас — узнать что за знак скрывается в переменной oper, и уже исходя из этого, производить операции над числами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
if (oper == '+') { total = a + b; Console.WriteLine("Cумма " + a + " и " + b + " равна " + total + "."); } else if (oper == '-') { total = a - b; Console.WriteLine("Разность " + a + " и " + b + " равна " + total + "."); } else if (oper == '*') { total = a * b; Console.WriteLine("Умножение " + a + " на " + b + " равно " + total + "."); } else if (oper == '/') { total = a / b; Console.WriteLine("Деление " + a + " на " + b + " равно " + total + "."); } else { Console.WriteLine("Неизвестный оператор."); } |
Для этого мы используем оператор условия if (если).
Первая строка звучит примерно так: если в переменной oper записан знак «+», то..
..мы присваиваем переменной total сумму переменных a и b и выводим ответ на экран. В кавычках записаны слова, которые выводятся на экран, а переменные, расположившиеся среди плюсов выводят свои значения. Пример такого ответа выглядит вот так:
По подобию первого условия мы создаём остальные, используя операторы else if (так положено семантически, если для алгоритма необходимы какие-либо условия. Если условия не необходимы, то можно использовать оператор else, как написано ниже).
Мы расписали все необходимые нам операторы. Но что, если пользователь введёт какой-нибудь неверный оператор? Тогда нам следует предупредить его, что такого оператора нет. Для этого мы используем else. Логика такая — если у нас в oper имеется знак плюса — мы складываем, если же минус -вычитаем, знак умножения- умножаем, знак деления — делим, если в oper имеется любой другой знак (всё остальное), то нам уже не нужно какое-то определение условия (как, например, oper==’+’), поэтому можно обойтись простым else.
Наша программа уже работает, но, пожалуй, можно добавить ещё одну несложную деталь.
А что, если пользователь захочет выполнить несколько операций? Например, сначала сложить два числа, а затем умножить два других числа? Для этого ему пришлось бы перезапускать программу. Но можно сделать и иначе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
char again = 'д'; while(again=='д') { double a; double b; double total; char oper; Console.WriteLine("Введите первое число:"); a = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Введите оператор:"); oper = Convert.ToChar(Console.ReadLine()); Console.WriteLine("Введите второе число:"); b = Convert.ToDouble(Console.ReadLine()); if (oper == '+') { total = a + b; Console.WriteLine("Cумма " + a + " и " + b + " равна " + total + "."); } else if (oper == '-') { total = a - b; Console.WriteLine("Разность " + a + " и " + b + " равна " + total + "."); } else if (oper == '*') { total = a * b; Console.WriteLine("Умножение " + a + " на " + b + " равно " + total + "."); } else if (oper == '/') { total = a / b; Console.WriteLine("Деление " + a + " на " + b + " равно " + total + "."); } else { Console.WriteLine("Неизвестный оператор."); } Console.WriteLine("Вы хотите продолжить работу с калькулятором? (д/н)"); again = Convert.ToChar(Console.ReadLine()); } |
Это код всей нашей программы, но мы в неё кое-что добавили. А именно, переменную again типа char и цикл while. Итак, по замыслу, мы добавили после вывода посчитанных данных ещё один вопрос для пользователя, хотел бы он продолжить работу с калькулятором? Для выбора ответа ему предоставляются два знака д — да и н — нет. Если пользователь напишет в консоли «н», то программа закроется, т.к. у нас в коде нет ничего, что было бы связано с переменной again, имеющей значение «н». Но если пользователь выберет «д», то программа начнёт работу заново благодаря циклу while и будет работать до тех пор, пока пользователь не присвоит переменной again значение «н».
Данную программу можно улучшать дальше и дальше, но данный урок закончится на этом. Скачать исходный код программы «Калькулятор C#» можно по ссылке ниже. Спасибо за прочтение!
Поделиться в соц. сетях:
а как обезопасить себя от того, что пользователь введет вместо числа какую-то ерунду?
Используйте вот такой код:
double a;
double b;
double total;
char oper;
try
{
Console.WriteLine(«Введите первое число:»);
a = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(«Введите оператор:»);
oper = Convert.ToChar(Console.ReadLine());
Console.WriteLine(«Введите второе число:»);
b = Convert.ToDouble(Console.ReadLine());
}
catch (System.FormatException)
{
// тут вывести в консоль ошибку.
}