Пишем калькулятор на Rust

калькулятор на языке rust

В этой статье мы создадим простой калькулятор на языке программирования Rust. Мы рассмотрим основы языка, реализуем основные арифметические операции и научимся работать с пользовательским вводом и выводом.

Наш телеграм канал для всех, кто хочет изучать Rust и развиваться в нем.

Что такое Rust?

Rust — это системный язык программирования, разработанный с акцентом на безопасность и производительность. Он предлагает строгую систему типов и управление памятью без использования сборщика мусора, что делает его идеальным для разработки надежных и высокопроизводительных приложений.

Структура программы на Rust

Программа на Rust начинается с функции main. Она является точкой входа и запускает выполнение программы.

fn main() {
println!("Hello, World!");
}

План калькулятора

Мы реализуем калькулятор, который сможет выполнять четыре основные арифметические операции: сложение, вычитание, умножение и деление. Программа будет принимать два числа и оператор от пользователя, а затем выводить результат вычисления.

Основные операции калькулятора

Начнем с написания функций для каждой арифметической операции. Эти функции будут принимать два аргумента типа f64 (числа с плавающей запятой) и возвращать результат вычисления того же типа.

Функция сложения

fn add(a: f64, b: f64) -> f64 {
a + b
}

Функция вычитания

fn subtract(a: f64, b: f64) -> f64 {
a - b
}

Функция умножения

fn multiply(a: f64, b: f64) -> f64 {
a * b
}

Функция деления

fn divide(a: f64, b: f64) -> f64 {
if b == 0.0 {
println!("Ошибка: деление на ноль!");
return 0.0;
}
a / b
}

Ввод данных от пользователя

Для получения ввода от пользователя в Rust используется макрос println! для вывода данных и макрос std::io::stdin().read_line() для считывания строки ввода.

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

use std::io;

fn get_input() -> (f64, f64, char) {
let mut input = String::new();

println!("Введите первое число:");
io::stdin().read_line(&mut input).expect("Не удалось прочитать строку");
let a: f64 = input.trim().parse().expect("Введите корректное число");

input.clear();

println!("Введите второе число:");
io::stdin().read_line(&mut input).expect("Не удалось прочитать строку");
let b: f64 = input.trim().parse().expect("Введите корректное число");

input.clear();

println!("Введите оператор (+, -, *, /):");
io::stdin().read_line(&mut input).expect("Не удалось прочитать строку");
let operator: char = input.trim().chars().next().expect("Введите корректный оператор");

(a, b, operator)
}

Основная функция калькулятора

Теперь, когда у нас есть функции для арифметических операций и ввода данных, мы можем собрать все вместе в основной функции программы.

fn main() {
let (a, b, operator) = get_input();

let result = match operator {
'+' => add(a, b),
'-' => subtract(a, b),
'*' => multiply(a, b),
'/' => divide(a, b),
_ => {
println!("Неизвестный оператор");
return;
}
};

println!("Результат: {:.2}", result);
}

Полный код программы калькулятор на Rust

Объединив все части, мы получаем следующий код:

use std::io;

fn add(a: f64, b: f64) -> f64 {
a + b
}

fn subtract(a: f64, b: f64) -> f64 {
a - b
}

fn multiply(a: f64, b: f64) -> f64 {
a * b
}

fn divide(a: f64, b: f64) -> f64 {
if b == 0.0 {
println!("Ошибка: деление на ноль!");
return 0.0;
}
a / b
}

fn get_input() -> (f64, f64, char) {
let mut input = String::new();

println!("Введите первое число:");
io::stdin().read_line(&mut input).expect("Не удалось прочитать строку");
let a: f64 = input.trim().parse().expect("Введите корректное число");

input.clear();

println!("Введите второе число:");
io::stdin().read_line(&mut input).expect("Не удалось прочитать строку");
let b: f64 = input.trim().parse().expect("Введите корректное число");

input.clear();

println!("Введите оператор (+, -, *, /):");
io::stdin().read_line(&mut input).expect("Не удалось прочитать строку");
let operator: char = input.trim().chars().next().expect("Введите корректный оператор");

(a, b, operator)
}

fn main() {
let (a, b, operator) = get_input();

let result = match operator {
'+' => add(a, b),
'-' => subtract(a, b),
'*' => multiply(a, b),
'/' => divide(a, b),
_ => {
println!("Неизвестный оператор");
return;
}
};

println!("Результат: {:.2}", result);
}

Объяснение работы программы

  1. Импорт библиотеки std::io: Она используется для работы с вводом и выводом.
  2. Арифметические функции: Каждая функция выполняет одну из базовых математических операций и возвращает результат.
  3. Функция ввода данных: Считывает два числа и оператор от пользователя, возвращая их в виде кортежа (f64, f64, char).
  4. Основная функция: В зависимости от введенного оператора выполняется соответствующая арифметическая операция, а результат выводится на экран.

Запуск программы

Чтобы запустить программу, сохраните код в файл с расширением .rs (например, calculator.rs) и выполните команду:

rustc calculator.rs
./calculator

Заключение

Мы написали простой калькулятор на Rust, который может выполнять базовые арифметические операции. Этот пример демонстрирует основы работы с функциями, вводом/выводом данных и операторами управления в Rust. Этот язык предлагает мощные инструменты для создания безопасных и эффективных приложений, что делает его отличным выбором для разработки как системного, так и прикладного программного обеспечения.

+1
0
+1
2
+1
0
+1
0
+1
1

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *