[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
У цій статті ми розглянемо приклад простого консольного калькулятора на C#, який підтримує додавання, віднімання, множення і ділення, а також складнішого на основі CSharp Scripting.
Визначимо такий код:
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 |
static void Main() { Console.WriteLine("Welcome to the calculator!"); Console.WriteLine("Enter your first number:"); double num1 = double.Parse(Console.ReadLine()); Console.WriteLine("Enter your second number:"); double num2 = double.Parse(Console.ReadLine()); Console.WriteLine("Enter the operation you want to perform (+, -, *, /):"); string op = Console.ReadLine(); double result = 0; switch (op) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": if (num2 != 0) { result = num1 / num2; } else { Console.WriteLine("Division by zero is not allowed."); return; } break; default: Console.WriteLine("Invalid operator."); return; } Console.WriteLine($"The result of {num1} {op} {num2} is {result}."); } |
Коли ви запустите цю програму, вона запропонує вам ввести два числа й операцію, яку ви хочете виконати. Потім програма виконає обчислення і відобразить результат. Якщо ви спробуєте поділити на нуль, програма не завершиться, а видасть повідомлення про помилку.
Microsoft CodeAnalysis CSharp Scripting
У мові C# є C# Scripting, він схожий на eval з інших мов, він являє собою функцію, яка оцінює рядок, ніби він є виразом, і повертає результат;
Розглянемо приклад “калькулятора”, написаного в один рядок:
1 2 3 4 5 6 |
static async Task Main() { var expression = "2 * (6 + 7) - 10 / 2"; var result = await CSharpScript.EvaluateAsync<double>(expression); Console.WriteLine(result); } |
Не забудьте підключити такі простори імен:
1 2 |
using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; |
У методі Main оголошується строкова змінна expression та ініціалізується математичним виразом 2 * (6 + 7) – 10 / 2. Цей вираз включає основні арифметичні оператори: * для множення, + для додавання, – для віднімання і / для ділення. Він також включає круглі дужки для контролю порядку операцій.
Потім викликається метод CSharpScript.EvaluateAsync, параметром якого є рядок виразу. Цей метод приймає на вхід рядок, що містить вираз C#, компілює його та оцінює під час виконання.
Метод EvaluateAsync повертає задачу, що розв’язується в результат виразу, який у даному випадку є подвійним значенням. Ключове слово await використовується для асинхронного очікування результату обчислення завдання.
Нарешті, результат виводиться на консоль за допомогою методу Console.WriteLine. У цьому випадку буде виведено 21, що є результатом математичного виразу 2 * (6 + 7) – 10 / 2.
Використовуючи цю бібліотеку, ви можете імпортувати всі статичні методи інших класів, для подальшого використання. Розглянемо приклад із класом Math:
1 2 3 4 5 6 |
static async Task Main() { string codeToEval = "Sqrt(5)"; var result = await CSharpScript.EvaluateAsync(codeToEval, ScriptOptions.Default.WithImports("System.Math")); Console.WriteLine(result);//2,2 } |
Метод ScriptOptions.Default.WithImports(“System.Math”) використовується для вказівки того, що простір імен System.Math має бути імпортовано, щоб метод Sqrt можна було використовувати у виразі codeToEval.
Я сподіваюся, що вам сподобалося читати цю статтю, і вона виявилася легкою для розуміння. Будь ласка, дайте мені знати, якщо у вас є якісь коментарі або виправлення.
Так само вам може бути цікава попередня стаття – Як зробити скріншот екрана.
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах