第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); // 输出:你好,张三!
}
运算优先级
运算优先级决定了运算的执行顺序,就像数学中的先乘除后加减。
优先级从高到低:
- 括号
() - 取负
- - 乘法、除法、取余
* / % - 加法、减法
+ - - 比较运算符
== != > < >= <= - 逻辑非
! - 逻辑与
&& - 逻辑或
|| - 赋值运算符
= += -= *= /=
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. 动手实践
基础练习(必做)
-
简易计算器:创建一个程序,进行加减乘除运算:
rustfn 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); } -
购物小票生成器:创建一个程序,计算购物总价:
rustfn main() { let 苹果价格 = 5.5; let 苹果数量 = 2; let 香蕉价格 = 3.0; let 香蕉数量 = 3; let 苹果总价 = 苹果价格 * 苹果数量 as f64; let 香蕉总价 = 香蕉价格 * 香蕉数量 as f64; let 总计 = 苹果总价 + 香蕉总价; println!("购物小票:"); println!("苹果:{}元 × {}个 = {}元", 苹果价格, 苹果数量, 苹果总价); println!("香蕉:{}元 × {}个 = {}元", 香蕉价格, 香蕉数量, 香蕉总价); println!("总计:{}元", 总计); } -
成绩统计分析:创建一个程序,计算成绩的总分、平均分、最高分:
rustfn 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!("最高分:{}分", 最高分); }
进阶练习(选做)
-
温度转换:创建一个程序,实现摄氏度和华氏度的相互转换:
rustfn 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); } -
BMI指数计算器:创建一个程序,计算BMI指数并判断体重状态:
rustfn 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!("肥胖"); } }
挑战练习(拓展)
-
复合条件判断 :创建一个程序,使用逻辑运算符进行复合条件判断:
rustfn 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 |
常见错误提醒
- 整数除法:两个整数相除会截断小数部分,结果还是整数
- 运算符优先级:忘记使用括号导致运算顺序错误
- 类型不匹配:不同类型的数据不能直接进行运算
- 字符串拼接 :需要注意
+运算符的使用规则
5. 课后作业
巩固练习题
- 编写一个程序,计算圆的面积和周长(半径由用户输入)
- 编写一个程序,判断一个数是否是偶数
- 编写一个程序,计算两个数的最大公约数
创意编程题
- 发挥你的创意,创建一个程序,计算你一周的零花钱使用情况
- 编写一个程序,模拟一个简单的计算器,支持加减乘除和括号
下篇预习提示
下一篇我们将学习"如果...那么------让程序做选择",就像学习如何让程序根据不同的情况做出不同的决策。预习一下:
- 什么是条件判断语句?
- 如何使用if语句?
- 如何使用else和else if语句?
- 什么是match表达式?
恭喜你完成了第三篇教程!你已经掌握了Rust的基本运算符,学会了如何让数据动起来。继续加油,下一篇我们将学习如何让程序做选择!
学习交流
如果你在学习过程中遇到任何问题,欢迎联系我:
- ** 视频号,"时空系"
- 邮箱: wbtm2718@qq.com
- 其他提示:
- 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
- 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流
祝你学习愉快!