В данном уроке опять создадим простенький калькулятор на языке C#, но в этот раз будем работать в консоли.
Калькуляторы на Windows Forms можно посмотреть здесь и здесь.
Данный калькулятор абсолютно элементарен и требует минимальных знаний языка. Создаём проект («Файл» ->»Создать»->»Проект»->»Консольное приложение») и объявляем наши переменные:
double a; double b; double total; char oper; |
Double — это тип переменной с плавающей запятой, иными словами, тип, в который можно записать десятичные числа, причём довольно большие. В него поместится как значение 5, так и значение 5,45, и даже значение 5,4571601695, также в нём можно использовать и отрицательные числа.
В переменную a мы внесём первое число, которое запишет пользователь. В переменную b — второе число. А переменная total будет выводить результат математических операций с переменными а и b.
Char — это тип переменной в виде какого-либо символа, будь то буква, цифра или какой-нибудь знак. В переменную oper мы будем заносить знак математической операции над числами. В нашем калькуляторе будут только самые основные — «+», «-«, «*» и «/».
Итак, мы объявили переменные, теперь нам надо узнать, что конкретно нужно посчитать пользователю, а для этого придётся считывать данные, которые он будет вводить:
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#» можно по ссылке ниже. Спасибо за прочтение!
Скачать исходник
Сегодня будем учить основы .NET (C#)
Говорю сразу: данный курс назначен для тех кто знает базовые конструкции C#
/////////////\\\\\\
Шаг 1: редактор кода и расширения
Первым делом установим Visual Studio Code
Потом запускаем ее и устанавливаем расширение C# от Microsoft
После чего скачиваем расширение «Russian Language pack for VSCode»
Шаг 2: начинаем программировать!
/////////////\\\\\\
Затем в проводнике создаем папку «HelloWorld»
Переходим в Файл > Открыть папку > Выбираем нашу папку «HelloWorld»
После того как мы зашли в нашу папку переходим в Вид > Терминал
Откроется терминал, в него мы вводим такую команду:
\\\\\\/////////////
dotnet new console
Дальше нужно просто ждать до завершения процесса
Данная команда создаст консольное приложение Hello world
Потом прописываем переменные:
Переменные
double fn;
double sn;
string o;
double answ;
Далее прописываем такой код:
Код
Console.Clear();
Console.WriteLine("Первое число: ");
fn = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Действие %, *, /, +, - : ");
o = Convert.ToString(Console.ReadLine());
Console.WriteLine("Второе число: ");
sn = Convert.ToDouble(Console.ReadLine());
Вместе это выглядит так:
Далее прописываем конструкцию if и повторяем ее для других операторов
if
if (o == "+")
{
answ = fn + sn;
Console.WriteLine("Результат: " + answ);
}
Выглядеть это будет так:
Код конструкции
if (o == "+")
{
answ = fn + sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "-")
{
answ = fn - sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "*")
{
answ = fn * sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "/")
{
answ = fn / sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "%")
{
answ = fn % sn;
Console.WriteLine("Результат: " + answ);
}
Далее дописываем
Console.WriteLine("Совершить еще одну операцию?");
cont = Convert.ToString(Console.ReadLine());
создаем переменную string cont
И помещаем все в цикл do, на конце цикла дописываем while(cont == «yes»);
Исходный код:
using System;
namespace c_
{
class Program
{
static void Main(string[] args)
{
string cont;
do
{
double fn;
double sn;
string o;
double answ;
Console.Clear();
Console.WriteLine("Первое число: ");
fn = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Действие %, *, /, +, - : ");
o = Convert.ToString(Console.ReadLine());
Console.WriteLine("Второе число: ");
sn = Convert.ToDouble(Console.ReadLine());
if (o == "+")
{
answ = fn + sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "-")
{
answ = fn - sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "*")
{
answ = fn * sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "/")
{
answ = fn / sn;
Console.WriteLine("Результат: " + answ);
}
if (o == "%")
{
answ = fn % sn;
Console.WriteLine("Результат: " + answ);
}
Console.WriteLine("Совершить еще одну операцию?");
cont = Convert.ToString(Console.ReadLine());
} while(cont == "yes");
}
}
}
Для запуска программы пишем в терминал:
dotnet run
Как видим все работает!
На этом уроке мы напишем простенький консольный калькулятор на языке С#. Программа будет работать так: пользователь вводит операнды и оператор, а программа сообщает результат.
Калькулятор будет поддерживать только базовые операторы (+, -, *, /). Вместо обработки исключения деления на 0 мы произведем проверку ввода — если второй оператор будет равен 0, мы просто не будем производить вычисление.
Данный калькулятор абсолютно элементарен и требует минимальных знаний языка. Создаём проект (“Файл” ->”Создать”->”Проект”->”Консольное приложение”) и объявляем наши переменные:
double a; double b; double res = 0; char oper;
Double – это тип переменной с плавающей запятой, иными словами, тип, в который можно записать десятичные числа. В него поместится как значение 5, так и значение 5,45, и даже значение 5,4571601695, также в нём можно использовать и отрицательные числа.
В переменную a мы внесём первое число, которое запишет пользователь. В переменную b – второе число. А переменная res будет выводить результат математических операций с переменными а и b.
Char – это тип переменной в виде какого-либо символа, будь то буква, цифра или какой-нибудь знак. В переменную oper мы будем заносить знак математической операции над числами.
Итак, переменные объявлены, теперь нам надо узнать, что конкретно нужно посчитать пользователю, а для этого придётся считывать данные, которые он будет вводить:
Console.Write("Введите первое число:"); a = Convert.ToDouble(Console.ReadLine()); Console.Write("nВведите оператор:"); oper = Convert.ToChar(Console.ReadLine()); Console.Write("nВведите второе число:"); b = Convert.ToDouble(Console.ReadLine());
Сначала мы выводим на консоль надпись о том, чтобы пользователь ввёл первое число.
В следующей строке мы присваиваем переменной a введенное пользователем число, но при этом не забываем, что введенные пользователем данные всегда имеют строковой формат string, а так как у нашей переменной тип double, то надо отконвертировать string в double соответствующим методом Convert.
То же самое проделываем с переменной oper, но конвертируем string уже не в double, а в char, потому что переменная oper имеет такой тип данных. Точно то же самое, что было с переменной a проделываем и с переменной b, так как они одинакового типа.
Числа получены. Но пока неизвестно, как ими оперировать, так как главное для нас – узнать что за знак скрывается в переменной oper, и уже исходя из этого, производить операции над числами:
if (oper == '+') { res = a + b; } else if (oper == '-') { res = a - b; } else if (oper == '*') { res = a * b; } else if (oper == '/') { if (b != 0) res = a / b; else Console.WriteLine("На 0 делить нельзя!"); } else { Console.WriteLine("Неизвестный оператор."); }
Для этого мы используем оператор условия if (если). Первая строка звучит примерно так: если в переменной oper записан знак “+”, то.. мы присваиваем переменной res сумму переменных a и b и выводим ответ на экран. Рассмотрим код программы полностью:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Console_Calck { class Program { static void Main(string[] args) { Console.OutputEncoding = Encoding.GetEncoding(866); Console.InputEncoding = Encoding.GetEncoding(866); double a; double b; double res = 0; char oper; Console.Write("Введите первое число:"); a = Convert.ToDouble(Console.ReadLine()); Console.Write("nВведите оператор:"); oper = Convert.ToChar(Console.ReadLine()); Console.Write("nВведите второе число:"); b = Convert.ToDouble(Console.ReadLine()); if (oper == '+') { res = a + b; } else if (oper == '-') { res = a - b; } else if (oper == '*') { res = a * b; } else if (oper == '/') { if (b != 0) res = a / b; else Console.WriteLine("На 0 делить нельзя!"); } else { Console.WriteLine("Неизвестный оператор."); } Console.WriteLine("nРезультат: {0}", res); Console.ReadLine(); } } }
После написания кода откомпилируем ее и получим результат:
Для закрепления материала рекомендую самостоятельно записать каждую строчку кода в свой созданный проект и изучить ход выполнения программы.
Improve Article
Save Article
Improve Article
Save Article
C# is an object-oriented, modern programming language that was created by Microsoft. It runs on the .NET Framework. C# is very close to C/C++ and Java programming languages. In this article, we will learn how to create a calculator in C#.
Basic Functions of Calculator:
- Addition of two numbers.
- Difference between two numbers.
- Product of two numbers.
- Division of two numbers.
Approach:
- Declare local variables num1 and num2 for two numeric values.
- Enter the choice.
- Takes two numbers, num1, and num2.
- do-while jump to an operator selected by the user.
- Display the operation result.
- Exit
Example:
C#
using
System;
using
System.Text;
using
System.Threading.Tasks;
namespace
calculator_c_sharp
{
class
Program
{
static
void
Main(
string
[] args)
{
string
value;
do
{
int
res;
Console.Write(
"Enter first number:"
);
int
num1 = Convert.ToInt32(Console.ReadLine());
Console.Write(
"Enter second number:"
);
int
num2 = Convert.ToInt32(Console.ReadLine());
Console.Write(
"Enter symbol(/,+,-,*):"
);
string
symbol = Console.ReadLine();
switch
(symbol)
{
case
"+"
:
res = num1 + num2;
Console.WriteLine(
"Addition:"
+ res);
break
;
case
"-"
:
res = num1 - num2;
Console.WriteLine(
"Subtraction:"
+ res);
break
;
case
"*"
:
res = num1 * num2;
Console.WriteLine(
"Multiplication:"
+ res);
break
;
case
"/"
:
res = num1 / num2;
Console.WriteLine(
"Division:"
+ res);
break
;
default
:
Console.WriteLine(
"Wrong input"
);
break
;
}
Console.ReadLine();
Console.Write(
"Do you want to continue(y/n):"
);
value = Console.ReadLine();
}
while
(value==
"y"
|| value==
"Y"
);
}
}
}
Output:
Addition of two numbers:
Subtraction of two numbers:
Multiplication of two numbers:
Division of two numbers:
This app will help end users to perform tasks, such as Addition, Subtraction, Multiplication, and Division.
To create the app, follow the steps shown below.
Create a new project
Open the Visual Studio editor. As you can see in the Start Page, there is an option for New Project. Click on “New Project”.
Create a Console Application
The following pop up appears. Select the Console Application. Create the project with name “CalculatorApp”, as shown below. The new project gets created successfully.
Calculator App Code Example
Here is the complete code of the app written in C#. In the program, there are four functional blocks–Addition, Subtraction, Multiplication, and Division. The user has to select one of the options for addition, subtraction, multiplication, and division respectively.
“Press 1 for Addition”.
“Press 2 for Subtraction”.
“Press 3 for Multiplication”.
“Press 4 for Division”.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace CalculatorApp {
- class Program {
- static void Main(string[] args) {
- Console.WriteLine(«Enter the action to be performed»);
- Console.WriteLine(«Press 1 for Addition»);
- Console.WriteLine(«Press 2 for Subtraction»);
- Console.WriteLine(«Press 3 for Multiplication»);
- Console.WriteLine(«Press 4 for Division n»);
- int action = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine(«Enter 1st input»);
- int input_1 = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine(«Enter 2nd input»);
- int input_2 = Convert.ToInt32(Console.ReadLine());
- int result = 0;
- switch (action) {
- case 1: {
- result = Addition(input_1, input_2);
- break;
- }
- case 2: {
- result = Subtraction(input_1, input_2);
- break;
- }
- case 3: {
- result = Multiplication(input_1, input_2);
- break;
- }
- case 4: {
- result = Division(input_1, input_2);
- break;
- }
- default:
- Console.WriteLine(«Wrong action!! try again»);
- break;
- }
- Console.WriteLine(«The result is {0}», result);
- Console.ReadKey();
- }
- public static int Addition(int input_1, int input_2) {
- int result = input_1 + input_2;
- return result;
- }
- public static int Subtraction(int input_1, int input_2) {
- int result = input_1 + input_2;
- return result;
- }
- public static int Multiplication(int input_1, int input_2) {
- int result = input_1 + input_2;
- return result;
- }
- public static int Division(int input_1, int input_2) {
- int result = input_1 + input_2;
- return result;
- }
- }
- }
Output of the Application
In the above example, the user has selected the option “1” to perform addition. Then, the app asks the user to provide two inputs. After entering the inputs, the addition operation is performed and the user gets the desired output.
Likewise, the user has to choose the different options to perform different tasks.
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main() { string str = Console.ReadLine().Replace('.',','); string[] a = str.Split(new char[] { '-', '+', '*', '/' }, StringSplitOptions.RemoveEmptyEntries); string[] b = str.Split(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ',','.' }, StringSplitOptions.RemoveEmptyEntries); //конечный массив,в котором будет разбитая строчка string[] c = new string[a.Length + b.Length]; //заполнение конечного массива c[] по порядку int d = 0; for (int i = 0, j = 1, k = 0; i < c.Length; i += 2, j += 2, k++) { c[i] = a[k]; if (d < b.Length) c[j] = b[k]; d++; } //вычисляет выражение без скобок.Выражение должно состоять из операторов "*,/",другие не учитываются int count = 0; for (int i = 1; i < c.Length - 1; i++) { if (c[i] == "*") { c[i - 1] = Convert.ToString(Convert.ToDouble(c[i - 1]) * Convert.ToDouble(c[i + 1])); c[i] = null; c[i + 1] = null; count += 2; } if (c[i] == "/") { c[i - 1] = Convert.ToString(Convert.ToDouble(c[i - 1]) / Convert.ToDouble(c[i + 1])); c[i] = null; c[i + 1] = null; count += 2; } } //создаём массив без символов равным null string[] n = new string[c.Length - count]; //заполняем массив символами for (int i = 0, j = 0; i < c.Length; i++) { if (c[i] != null) { n[j] = c[i]; j++; } } //Вычисляет простое выражение(при вхоящих знаках "+,-") из входящего массива строк (строка(массив строк) //к примеру "1+2+3-1,5") for (int i = 1; i < n.Length - 1; i++) { if (n[i] == "+") { n[i + 1] = Convert.ToString(Convert.ToDouble(n[i - 1]) + Convert.ToDouble(n[i + 1])); n[i - 1] = null; n[i] = null; } if (n[i] == "-") { n[i + 1] = Convert.ToString(Convert.ToDouble(n[i - 1]) - Convert.ToDouble(n[i + 1])); n[i - 1] = null; n[i] = null; } } Console.WriteLine("nResult " + n[n.Length - 1]); Console.ReadLine(); } } } |