第3篇:数据的运算——让数据动起来 Rust中文编程

第3篇:数据的运算------让数据动起来

作者: 李金雨
联系方式: wbtm2718@qq.com
目标读者: Rust中文编程
核心理念: AI时代必须使用中文编程,母语编程阅读效率极高


1. 开篇引入

本课目标

  • 掌握Rust的基本算术运算符
  • 掌握Rust的比较运算符
  • 掌握Rust的逻辑运算符
  • 掌握Rust的赋值运算符
  • 理解运算优先级

生活场景引入

想象一下,你有一些数字卡片,你可以对它们进行各种操作:

  • 把两张卡片上的数字加起来
  • 比较两张卡片上数字的大小
  • 根据卡片上的数字做出判断

在编程中,我们也可以对数据进行各种运算,让数据动起来。

预期成果展示

通过这节课的学习,你将能够:

  • 使用算术运算符进行加减乘除
  • 使用比较运算符比较数据大小
  • 使用逻辑运算符进行条件判断
  • 使用赋值运算符简化代码
  • 理解运算的优先级

2. 概念讲解

算术运算符

算术运算符就像我们在数学中学习的加减乘除,用来对数字进行运算。

运算符 功能 示例 结果
+ 加法 1 + 2 3
- 减法 5 - 3 2
* 乘法 2 * 3 6
/ 除法 6 / 2 3
% 取余 7 % 3 1
rust 复制代码
fn main() {
    let 加法 = 1 + 2;
    let 减法 = 5 - 3;
    let 乘法 = 2 * 3;
    let 除法 = 6 / 2;
    let 取余 = 7 % 3;

    println!("1 + 2 = {}", 加法);
    println!("5 - 3 = {}", 减法);
    println!("2 * 3 = {}", 乘法);
    println!("6 / 2 = {}", 除法);
    println!("7 % 3 = {}", 取余);
}

比较运算符

比较运算符用来比较两个值的大小或是否相等。

运算符 功能 示例 结果
== 等于 2 == 2 true
!= 不等于 2 != 3 true
> 大于 3 > 2 true
< 小于 2 < 3 true
>= 大于等于 3 >= 3 true
<= 小于等于 2 <= 3 true
rust 复制代码
fn main() {
    let 等于 = 2 == 2;
    let 不等于 = 2 != 3;
    let 大于 = 3 > 2;
    let 小于 = 2 < 3;
    let 大于等于 = 3 >= 3;
    let 小于等于 = 2 <= 3;

    println!("2 == 2 = {}", 等于);
    println!("2 != 3 = {}", 不等于);
    println!("3 > 2 = {}", 大于);
    println!("2 < 3 = {}", 小于);
    println!("3 >= 3 = {}", 大于等于);
    println!("2 <= 3 = {}", 小于等于);
}

逻辑运算符

逻辑运算符用来组合多个条件,进行逻辑判断。

运算符 功能 示例 结果
&& 与(两个条件都为真) true && false false
` ` 或(至少一个条件为真)
! 非(取反) !true false
rust 复制代码
fn main() {
    let 与运算 = true && false;
    let 或运算 = true || false;
    let 非运算 = !true;

    println!("true && false = {}", 与运算);
    println!("true || false = {}", 或运算);
    println!("!true = {}", 非运算);
}

赋值运算符

赋值运算符用来给变量赋值,或者在原有的值基础上进行运算后再赋值。

运算符 功能 示例 等价于
= 赋值 a = 5 a = 5
+= 加后赋值 a += 3 a = a + 3
-= 减后赋值 a -= 3 a = a - 3
*= 乘后赋值 a *= 3 a = a * 3
/= 除后赋值 a /= 3 a = a / 3
rust 复制代码
fn main() {
    let mut a = 5;
    println!("初始值:{}", a);

    // 加后赋值
    a += 3;
    println!("a += 3 后:{}", a);

    // 减后赋值
    a -= 2;
    println!("a -= 2 后:{}", a);

    // 乘后赋值
    a *= 2;
    println!("a *= 2 后:{}", a);

    // 除后赋值
    a /= 3;
    println!("a /= 3 后:{}", a);
}

字符串运算

字符串也可以进行运算,主要是拼接操作。

rust 复制代码
fn main() {
    let 问候语 = "你好";
    let 姓名 = "张三";
    let 完整问候 = 问候语.to_string() + "," + &姓名 + "!";

    println!("{}", 完整问候); // 输出:你好,张三!

    // 也可以使用format!宏
    let 完整问候2 = format!("{},{}!", 问候语, 姓名);
    println!("{}", 完整问候2); // 输出:你好,张三!
}

运算优先级

运算优先级决定了运算的执行顺序,就像数学中的先乘除后加减。

优先级从高到低:

  1. 括号 ()
  2. 取负 -
  3. 乘法、除法、取余 * / %
  4. 加法、减法 + -
  5. 比较运算符 == != > < >= <=
  6. 逻辑非 !
  7. 逻辑与 &&
  8. 逻辑或 ||
  9. 赋值运算符 = += -= *= /=
rust 复制代码
fn main() {
    // 先计算乘法,再计算加法
    let 结果1 = 2 + 3 * 4; // 等于 2 + 12 = 14
    println!("2 + 3 * 4 = {}", 结果1);

    // 使用括号改变优先级
    let 结果2 = (2 + 3) * 4; // 等于 5 * 4 = 20
    println!("(2 + 3) * 4 = {}", 结果2);
}

3. 动手实践

基础练习(必做)

  1. 简易计算器:创建一个程序,进行加减乘除运算:

    rust 复制代码
    fn main() {
        let a = 10;
        let b = 5;
        
        println!("{} + {} = {}", a, b, a + b);
        println!("{} - {} = {}", a, b, a - b);
        println!("{} * {} = {}", a, b, a * b);
        println!("{} / {} = {}", a, b, a / b);
    }
  2. 购物小票生成器:创建一个程序,计算购物总价:

    rust 复制代码
    fn main() {
        let 苹果价格 = 5.5;
        let 苹果数量 = 2;
        let 香蕉价格 = 3.0;
        let 香蕉数量 = 3;
        
        let 苹果总价 = 苹果价格 * 苹果数量 as f64;
        let 香蕉总价 = 香蕉价格 * 香蕉数量 as f64;
        let 总计 = 苹果总价 + 香蕉总价;
        
        println!("购物小票:");
        println!("苹果:{}元 × {}个 = {}元", 苹果价格, 苹果数量, 苹果总价);
        println!("香蕉:{}元 × {}个 = {}元", 香蕉价格, 香蕉数量, 香蕉总价);
        println!("总计:{}元", 总计);
    }
  3. 成绩统计分析:创建一个程序,计算成绩的总分、平均分、最高分:

    rust 复制代码
    fn main() {
        let 语文 = 95;
        let 数学 = 98;
        let 英语 = 92;
        
        let 总分 = 语文 + 数学 + 英语;
        let 平均分 = 总分 as f64 / 3.0;
        let 最高分 = if 语文 > 数学 {
            if 语文 > 英语 {
                语文
            } else {
                英语
            }
        } else {
            if 数学 > 英语 {
                数学
            } else {
                英语
            }
        };
        
        println!("成绩统计:");
        println!("语文:{}分", 语文);
        println!("数学:{}分", 数学);
        println!("英语:{}分", 英语);
        println!("总分:{}分", 总分);
        println!("平均分:{}分", 平均分);
        println!("最高分:{}分", 最高分);
    }

进阶练习(选做)

  1. 温度转换:创建一个程序,实现摄氏度和华氏度的相互转换:

    rust 复制代码
    fn main() {
        let 摄氏度 = 25.0;
        let 华氏度 = 摄氏度 * 9.0 / 5.0 + 32.0;
        println!("{}摄氏度 = {}华氏度", 摄氏度, 华氏度);
        
        let 华氏度2 = 77.0;
        let 摄氏度2 = (华氏度2 - 32.0) * 5.0 / 9.0;
        println!("{}华氏度 = {}摄氏度", 华氏度2, 摄氏度2);
    }
  2. BMI指数计算器:创建一个程序,计算BMI指数并判断体重状态:

    rust 复制代码
    fn main() {
        let 身高 = 1.75; // 单位:米
        let 体重 = 50.5; // 单位:公斤
        let bmi = 体重 / (身高 * 身高);
        
        println!("身高:{}米", 身高);
        println!("体重:{}公斤", 体重);
        println!("BMI指数:{}", bmi);
        
        if bmi < 18.5 {
            println!("体重偏轻");
        } else if bmi < 24.0 {
            println!("体重正常");
        } else if bmi < 28.0 {
            println!("超重");
        } else {
            println!("肥胖");
        }
    }

挑战练习(拓展)

  1. 复合条件判断 :创建一个程序,使用逻辑运算符进行复合条件判断:

    rust 复制代码
    fn main() {
        let 年龄 = 15;
        let 成绩 = 85;
        
        // 判断是否可以参加比赛
        let 可以参加 = 年龄 >= 12 && 年龄 <= 18 && 成绩 >= 80;
        println!("是否可以参加比赛:{}", 可以参加);
        
        // 判断是否需要补考
        let 需要补考 = 成绩 < 60 || 成绩 >= 60 && 成绩 < 70;
        println!("是否需要补考:{}", 需要补考);
    }

4. 知识总结

核心概念回顾

  • 算术运算符+-*/%,用于数学运算
  • 比较运算符==!=><>=<=,用于比较大小
  • 逻辑运算符&&||!,用于逻辑判断
  • 赋值运算符=+=-=*=/=,用于赋值操作
  • 字符串运算 :使用+format!宏进行字符串拼接
  • 运算优先级:决定运算的执行顺序,括号可以改变优先级

关键代码速查

运算符类型 运算符 示例
算术 + a + b
算术 - a - b
算术 * a * b
算术 / a / b
算术 % a % b
比较 == a == b
比较 != a != b
比较 > a > b
比较 < a < b
逻辑 && a && b
逻辑 `
逻辑 ! !a
赋值 = a = b
赋值 += a += b

常见错误提醒

  1. 整数除法:两个整数相除会截断小数部分,结果还是整数
  2. 运算符优先级:忘记使用括号导致运算顺序错误
  3. 类型不匹配:不同类型的数据不能直接进行运算
  4. 字符串拼接 :需要注意+运算符的使用规则

5. 课后作业

巩固练习题

  1. 编写一个程序,计算圆的面积和周长(半径由用户输入)
  2. 编写一个程序,判断一个数是否是偶数
  3. 编写一个程序,计算两个数的最大公约数

创意编程题

  1. 发挥你的创意,创建一个程序,计算你一周的零花钱使用情况
  2. 编写一个程序,模拟一个简单的计算器,支持加减乘除和括号

下篇预习提示

下一篇我们将学习"如果...那么------让程序做选择",就像学习如何让程序根据不同的情况做出不同的决策。预习一下:

  • 什么是条件判断语句?
  • 如何使用if语句?
  • 如何使用else和else if语句?
  • 什么是match表达式?

恭喜你完成了第三篇教程!你已经掌握了Rust的基本运算符,学会了如何让数据动起来。继续加油,下一篇我们将学习如何让程序做选择!

学习交流

如果你在学习过程中遇到任何问题,欢迎联系我:

  • ** 视频号,"时空系"
  • 邮箱: wbtm2718@qq.com
  • 其他提示:
  • 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
  • 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流

祝你学习愉快!

相关推荐
小妖同学学AI5 小时前
抛弃传统数据库!Qdrant用Rust重写AI记忆,大模型知识库迎来性能革命!
数据库·人工智能·rust
Shadow(⊙o⊙)5 小时前
智能指针、循环引用、锁、删除器
开发语言·c++·后端·visual studio
星浩AI5 小时前
OpenAI 大神 Karpathy 开源:用 Obsidian 实现 LLM Wiki 知识库管理方法
后端·openai·agent
Sylvia-girl5 小时前
C++模板【上】
开发语言·c++
2zcode5 小时前
基于MATLAB多特征融合与SVM的金属表面缺陷检测系统
开发语言·支持向量机·matlab
2zcode5 小时前
基于MATLAB脑电信号的帕金森病抑郁症检测研究
开发语言·matlab·抑郁症·帕金森病
untE EADO5 小时前
Java进阶之路,Java程序员职业发展规划
java·开发语言
xyq20245 小时前
C++ 变量作用域
开发语言
长河5 小时前
基于 Jib 实现无 Dockerfile 的 Spring Boot 应用容器化
java·spring boot·后端