第4篇:如果...那么——让程序做选择 Rust中文编程
第4篇:如果…那么——让程序做选择
作者:李金雨
联系方式:wbtm2718@qq.com
目标读者:Rust中文编程
核心理念:AI时代必须使用中文编程,母语编程阅读效率极高
1. 开篇引入
本课目标
- 掌握if语句的使用
- 掌握else和else if语句的使用
- 掌握嵌套条件判断
- 理解逻辑运算符在条件判断中的应用
- 掌握match表达式的使用
生活场景引入
想象一下,你每天早上起床后要做的决定:
- 如果下雨,带伞;否则,不带伞
- 如果是周末,睡懒觉;否则,早起上学
- 如果考试成绩>=90,奖励自己;否则,如果>=80,继续努力;否则,需要加油
在编程中,我们也需要让程序根据不同的条件做出不同的选择,这就是条件判断语句的作用。
预期成果展示
通过这节课的学习,你将能够:
- 使用if语句进行简单的条件判断
- 使用else和else if语句处理多种情况
- 使用嵌套条件判断处理复杂情况
- 使用match表达式进行模式匹配
- 编写能够根据不同条件做出不同决策的程序
2. 概念讲解
if语句
if语句就像一个岔路口,根据条件的真假决定走哪条路。
fnmain(){if条件{// 条件为真时执行的代码}}例如:
fnmain(){let天气="下雨";if天气=="下雨"{println!("带伞");}println!("出门");}else语句
else语句用于处理条件为假的情况。
fnmain(){if条件{// 条件为真时执行的代码}else{// 条件为假时执行的代码}}例如:
fnmain(){let天气="晴天";if天气=="下雨"{println!("带伞");}else{println!("不带伞");}println!("出门");}else if语句
else if语句用于处理多个条件的情况。
fnmain(){if条件1{// 条件1为真时执行的代码}elseif条件2{// 条件2为真时执行的代码}else{// 所有条件都为假时执行的代码}}例如:
fnmain(){let成绩=85;if成绩>=90{println!("优秀");}elseif成绩>=80{println!("良好");}elseif成绩>=60{println!("及格");}else{println!("不及格");}}嵌套条件判断
嵌套条件判断就是在一个条件判断里面再放一个条件判断。
fnmain(){if条件1{if条件2{// 条件1和条件2都为真时执行的代码}else{// 条件1为真但条件2为假时执行的代码}}else{// 条件1为假时执行的代码}}例如:
fnmain(){let年龄=15;let成绩=90;if年龄>=18{println!("成年人");if成绩>=60{println!("可以毕业");}else{println!("需要补考");}}else{println!("未成年人");if成绩>=60{println!("成绩合格");}else{println!("需要努力");}}}逻辑运算符的应用
逻辑运算符可以用来组合多个条件。
fnmain(){let年龄=15;let成绩=90;// 年龄>=12且年龄<=18,并且成绩>=80if年龄>=12&&年龄<=18&&成绩>=80{println!("可以参加比赛");}else{println!("不能参加比赛");}// 年龄<12或者年龄>18if年龄<12||年龄>18{println!("不在参赛年龄范围内");}else{println!("在参赛年龄范围内");}// 成绩不小于60if!(成绩<60){println!("成绩及格");}else{println!("成绩不及格");}}match表达式
match表达式是Rust中一种强大的模式匹配工具,类似于switch语句,但更强大。
fnmain(){match表达式{模式1=>代码1,模式2=>代码2,// 更多模式..._=>默认代码,}}例如:
fnmain(){let数字=3;match数字{1=>println!("一"),2=>println!("二"),3=>println!("三"),4=>println!("四"),5=>println!("五"),_=>println!("其他数字"),}}match表达式也可以匹配更复杂的模式:
fnmain(){let年龄=15;match年龄{0..=12=>println!("儿童"),13..=18=>println!("青少年"),19..=60=>println!("成年人"),_=>println!("老年人"),}}3. 动手实践
基础练习(必做)
成绩等级判断器:创建一个程序,根据成绩判断等级:
fnmain(){let成绩=85;if成绩>=90{println!("优秀");}elseif成绩>=80{println!("良好");}elseif成绩>=70{println!("中等");}elseif成绩>=60{println!("及格");}else{println!("不及格");}}身体质量指数(BMI)判断:创建一个程序,根据BMI指数判断体重状态:
fnmain(){let身高=1.75;// 单位:米let体重=50.5;// 单位:公斤letbmi=体重/(身高*身高);println!("BMI指数:{}",bmi);ifbmi<18.5{println!("体重偏轻");}elseifbmi<24.0{println!("体重正常");}elseifbmi<28.0{println!("超重");}else{println!("肥胖");}}简单的登录验证:创建一个程序,模拟登录验证:
fnmain(){let用户名="admin";let密码="123456";let输入用户名="admin";let输入密码="123456";if输入用户名==用户名&&输入密码==密码{println!("登录成功");}else{println!("用户名或密码错误");}}
进阶练习(选做)
猜数字游戏(初步):创建一个程序,模拟猜数字游戏:
fnmain(){let目标数字=7;let猜测数字=5;if猜测数字<目标数字{println!("猜小了");}elseif猜测数字>目标数字{println!("猜大了");}else{println!("猜对了");}}交通信号灯模拟:创建一个程序,模拟交通信号灯:
fnmain(){let信号灯="红色";match信号灯{"红色"=>println!("停止"),"黄色"=>println!("准备"),"绿色"=>println!("通行"),_=>println!("无效信号灯"),}}
挑战练习(拓展)
- 复杂条件判断:创建一个程序,使用嵌套条件和逻辑运算符:
fnmain(){let年龄=15;let成绩=85;let是否会员=true;// 判断是否可以参加优惠活动if年龄>=12&&年龄<=18{if成绩>=80||是否会员{println!("可以参加优惠活动");}else{println!("成绩不够,不能参加优惠活动");}}else{println!("年龄不符合要求,不能参加优惠活动");}}
4. 知识总结
核心概念回顾
- if语句:根据条件的真假执行不同的代码
- else语句:处理条件为假的情况
- else if语句:处理多个条件的情况
- 嵌套条件判断:在一个条件判断里面再放一个条件判断
- 逻辑运算符:
&&(与)、||(或)、!(非),用于组合多个条件 - match表达式:强大的模式匹配工具,可以匹配多种情况
关键代码速查
| 语句类型 | 语法 | 示例 |
|---|---|---|
| if语句 | if 条件 { 代码 } | if 成绩 >= 60 { println!("及格"); } |
| if-else语句 | if 条件 { 代码 } else { 代码 } | if 下雨 { println!("带伞"); } else { println!("不带伞"); } |
| if-else if-else语句 | if 条件1 { 代码1 } else if 条件2 { 代码2 } else { 代码3 } | 成绩等级判断 |
| match表达式 | match 表达式 { 模式1 => 代码1, 模式2 => 代码2, _ => 默认代码 } | 交通信号灯模拟 |
常见错误提醒
- 条件表达式类型:条件表达式必须是bool类型
- 大括号:if、else、else if后面的代码块必须用大括号包围
- 分号:代码块内的每条语句都需要加分号
- match覆盖:match表达式必须覆盖所有可能的情况,或者使用通配符
_
5. 课后作业
巩固练习题
- 编写一个程序,根据输入的月份判断季节
- 编写一个程序,判断一个年份是否是闰年
- 编写一个程序,根据用户输入的分数,输出对应的等级
创意编程题
- 发挥你的创意,创建一个程序,模拟一个简单的购物折扣系统(根据购物金额和会员等级计算折扣)
- 编写一个程序,模拟一个简单的游戏角色状态系统(根据生命值和魔法值判断角色状态)
下篇预习提示
下一篇我们将学习"重复执行——让程序帮你干活",就像学习如何让程序重复做一件事情,节省我们的时间。预习一下:
- 什么是循环语句?
- 有哪些类型的循环?
- 如何使用for循环?
- 如何使用while循环?
- 如何使用loop循环?
恭喜你完成了第四篇教程!你已经掌握了条件判断语句,学会了如何让程序做选择。继续加油,下一篇我们将学习如何让程序重复执行任务!
学习交流
如果你在学习过程中遇到任何问题,欢迎联系我:
- ** 视频号,“时空系”
- 邮箱:wbtm2718@qq.com
- 其他提示:
- 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
- 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流
祝你学习愉快!
