第4篇:条件判断——让程序做选择 仓颉原文编程
文章摘要 本文介绍了编程中的条件判断概念,通过生活实例与代码示例讲解了仓颉编程语言中的条件语句。主要内容包括: 基础条件语句:if单条件判断、if-else二选一判断、if-else if-else多条件判断 嵌套条件判断:在条件内部再进行条件判断 三目运算符:简洁的条件表达式写法 实践案例:开发智能评分系统,包含总分评价和偏科分析功能 文中特别探讨了中文编程语言设计的可能性,对比了国际通用语法与
第4篇:条件判断——让程序做选择
**作者:**中文编程倡导者—— 李金雨
联系方式: wbtm2718@qq.com
**目标读者:**编程入门(零基础)
核心理念: 使用华为仓颉原生中文编程,体验真正的国产编程语言
一、开篇引入
1.1 生活中的"选择"
生活中处处都有"如果…那么…":
- 如果下雨,那么带伞
- 如果到18岁,那么可以考驾照
- 如果成绩>=60,那么及格
- 如果登录了,那么显示用户名
1.2 程序中的"选择"
程序也需要根据不同情况做出选择:
- 用户输入密码正确 → 进入系统
- 用户输入密码错误 → 提示重新输入
- 成绩>=60 → 显示"及格"
- 成绩<60 → 显示"不及格"
1.3 关于条件语句语法的思考
在学习条件判断之前,我们再聊聊仓颉的语法设计。
仓颉的条件语句是:
if (条件) {
// 代码
}
这个设计其实挺好的,if是国际上通用的关键字,大家都认识。
但是,如果我们真的要做一款"纯中文"的编程语言,是不是可以考虑:
// 设想中的纯中文语法
如果 (条件) {
// 代码
} 否则如果 (另一个条件) {
// 代码
} 否则 {
// 代码
}
或者像易语言那样:
// 设想中的中文语法
如果 (成绩 >= 90) {
显示("优秀")
} 否则如果 (成绩 >= 60) {
显示("及格")
} 否则 {
显示("不及格")
}
当然,使用if、else等国际通用关键字也有好处:
- 与国际接轨,学会仓颉后学其他语言容易
- 关键字简短,输入方便
- 代码看起来更"专业"
所以,这是一个权衡的问题。仓颉选择了国际化路线,我们也可以接受!
1.4 本课目标
今天我们要学习:
if语句——单条件判断if-else语句——二选一if-else if-else语句——多选一- 嵌套条件判断
- 做一个智能评分系统
二、概念讲解
2.1 if语句——最简单的判断
基本语法
if (条件) {
// 条件为true时执行的代码
}
生活例子
如果 (外面在下雨) {
带伞出门
}
代码示例
main() {
let 成绩: Int64 = 85
if (成绩 >= 60) {
println("恭喜你,及格了!")
}
println("程序结束")
}
执行流程:
- 检查
成绩 >= 60是否为true - 如果是true,执行
println("恭喜你,及格了!") - 继续执行后面的代码
println("程序结束")
2.2 if-else语句——二选一
基本语法
if (条件) {
// 条件为true时执行
} else {
// 条件为false时执行
}
生活例子
如果 (我有带伞) {
走路去上学
} 否则 {
坐公交车去上学
}
代码示例
main() {
let 成绩: Int64 = 55
if (成绩 >= 60) {
println("恭喜你,及格了!")
} else {
println("很遗憾,不及格,要加油哦!")
}
}
2.3 if-else if-else语句——多选一
基本语法
if (条件1) {
// 条件1为true时执行
} else if (条件2) {
// 条件2为true时执行
} else if (条件3) {
// 条件3为true时执行
} else {
// 以上条件都不满足时执行
}
代码示例:成绩等级评定
main() {
let 成绩: Int64 = 85
if (成绩 >= 90) {
println("等级:优秀(A)")
println("评价:太棒了!")
} else if (成绩 >= 80) {
println("等级:良好(B)")
println("评价:很不错!")
} else if (成绩 >= 70) {
println("等级:中等(C)")
println("评价:还可以!")
} else if (成绩 >= 60) {
println("等级:及格(D)")
println("评价:勉强过关!")
} else {
println("等级:不及格(F)")
println("评价:需要努力!")
}
}
2.4 嵌套条件判断
什么是嵌套?
条件判断里面还有条件判断,就像俄罗斯套娃。
代码示例:会员等级判断
main() {
let 消费金额: Float64 = 1500.0
let 注册时长: Int64 = 2 // 年
let 是否VIP: Bool = true
if (是否VIP) {
println("您是VIP会员")
if (消费金额 >= 10000) {
println("等级:钻石会员")
} else if (消费金额 >= 5000) {
println("等级:白金会员")
} else if (消费金额 >= 1000) {
println("等级:黄金会员")
} else {
println("等级:普通VIP")
}
} else {
println("您是普通用户")
if (注册时长 >= 1) {
println("可以升级为VIP")
} else {
println("再使用一段时间可以升级为VIP")
}
}
}
2.5 条件表达式(三目运算符)
基本语法
let 结果 = 条件 ? 值1 : 值2
如果条件为true,结果是值1;否则结果是值2。
代码示例
main() {
let 成绩: Int64 = 75
// 判断及格与否
let 状态: String = 成绩 >= 60 ? "及格" : "不及格"
println("状态:${状态}")
// 判断年龄阶段
let 年龄: Int64 = 25
let 阶段: String = 年龄 < 18 ? "未成年" : "成年"
println("阶段:${阶段}")
}
再次吐槽语法设计:
这里的?:三目运算符是国际通用的,但如果我们用中文设计,可能会是:
// 设想中的中文语法
let 状态 = 如果 (成绩 >= 60) 那么 "及格" 否则 "不及格"
这样读起来就像是完整的中文句子,更符合我们的语言习惯!
三、动手实践
3.1 基础练习:智能评分系统
// 智能评分系统
main() {
println("=== 智能评分系统 ===")
println("")
// 定义成绩
let 语文: Int64 = 88
let 数学: Int64 = 92
let 英语: Int64 = 85
println("语文:${语文}分")
println("数学:${数学}分")
println("英语:${英语}分")
println("")
// 计算总分和平均分
let 总分: Int64 = 语文 + 数学 + 英语
let 平均分: Float64 = Float64(总分) / 3.0
println("总分:${总分}分")
println("平均分:${平均分}分")
println("")
// 判断总分等级
println("【总分评价】")
if (总分 >= 270) {
println("评价:优秀!")
println("奖励:免作业一周")
} else if (总分 >= 240) {
println("评价:良好!")
println("奖励:免作业一天")
} else if (总分 >= 210) {
println("评价:中等")
println("奖励:口头表扬")
} else if (总分 >= 180) {
println("评价:及格")
println("建议:需要努力")
} else {
println("评价:不及格")
println("建议:请家长")
}
println("")
// 判断是否有偏科
println("【偏科分析】")
let 最高分: Int64 = max(语文, max(数学, 英语))
let 最低分: Int64 = min(语文, min(数学, 英语))
let 分差: Int64 = 最高分 - 最低分
if (分差 > 20) {
println("警告:偏科严重!")
println("最高分与最低分相差${分差}分")
if (语文 == 最低分) {
println("建议:加强语文学习")
}
if (数学 == 最低分) {
println("建议:加强数学学习")
}
if (英语 == 最低分) {
println("建议:加强英语学习")
}
} else {
println("很好:各科发展均衡")
}
println("")
// 判断是否可以评优
println("【评优资格】")
let 全部及格: Bool = 语文 >= 60 && 数学 >= 60 && 英语 >= 60
let 有优秀: Bool = 语文 >= 90 || 数学 >= 90 || 英语 >= 90
if (全部及格 && 有优秀) {
println("可以参评:三好学生")
} else if (全部及格) {
println("可以参评:进步学生")
} else {
println("暂不符合评优条件")
}
}
// 辅助函数
func max(a: Int64, b: Int64): Int64 {
if (a > b) {
return a
} else {
return b
}
}
func min(a: Int64, b: Int64): Int64 {
if (a < b) {
return a
} else {
return b
}
}
3.2 进阶练习:智能日历
// 智能日历
main() {
println("=== 智能日历 ===")
println("")
// 定义日期
let 年: Int64 = 2024
let 月: Int64 = 6
let 日: Int64 = 15
println("日期:${年}年${月}月${日}日")
println("")
// 判断季节
println("【季节判断】")
if (月 >= 3 && 月 <= 5) {
println("季节:春季")
println("建议:踏青赏花")
} else if (月 >= 6 && 月 <= 8) {
println("季节:夏季")
println("建议:注意防暑")
} else if (月 >= 9 && 月 <= 11) {
println("季节:秋季")
println("建议:秋高气爽,适合运动")
} else {
println("季节:冬季")
println("建议:注意保暖")
}
println("")
// 判断节假日
println("【节假日判断】")
if (月 == 1 && 日 == 1) {
println("节日:元旦")
} else if (月 == 5 && 日 == 1) {
println("节日:劳动节")
} else if (月 == 6 && 日 == 1) {
println("节日:儿童节")
} else if (月 == 10 && 日 == 1) {
println("节日:国庆节")
} else if (月 == 12 && 日 == 25) {
println("节日:圣诞节")
} else {
println("普通日期")
}
println("")
// 判断是否为周末(简化版)
println("【周末判断】")
// 假设2024年6月15日是星期六
let 是周末: Bool = true
if (是周末) {
println("今天是周末,好好休息!")
} else {
println("今天是工作日,认真学习!")
}
}
3.3 挑战练习:猜拳游戏
// 猜拳游戏(人机对战)
import std.random.*
main() {
println("=== 猜拳游戏 ===")
println("规则:0-石头,1-剪刀,2-布")
println("")
// 电脑随机出拳
let 电脑出拳: Int64 = randomInt(0, 3) // 0, 1, 2
// 玩家出拳(这里模拟玩家出石头)
let 玩家出拳: Int64 = 0 // 玩家出石头
// 显示双方出拳
println("你出:${出拳名称(玩家出拳)}")
println("电脑出:${出拳名称(电脑出拳)}")
println("")
// 判断胜负
if (玩家出拳 == 电脑出拳) {
println("结果:平局!")
} else if ((玩家出拳 == 0 && 电脑出拳 == 1) || // 石头胜剪刀
(玩家出拳 == 1 && 电脑出拳 == 2) || // 剪刀胜布
(玩家出拳 == 2 && 电脑出拳 == 0)) { // 布胜石头
println("结果:你赢了!")
} else {
println("结果:你输了!")
}
}
func 出拳名称(出拳: Int64): String {
if (出拳 == 0) {
return "石头"
} else if (出拳 == 1) {
return "剪刀"
} else {
return "布"
}
}
四、知识总结
4.1 核心概念回顾
- if语句:单条件判断
- if-else语句:二选一
- if-else if-else语句:多选一
- 嵌套条件:条件里面还有条件
- 三目运算符:简洁的条件表达式
4.2 关于语法设计的总结
仓颉的条件语句设计采用了国际通用的if-else关键字,这是一个比较务实的选择:
优点:
- 与国际接轨,易于学习其他语言
- 关键字简短,输入方便
- 代码可读性好
如果我们设计纯中文编程语言:
// 设想中的纯中文语法
如果 (成绩 >= 90) {
显示("优秀")
} 否则如果 (成绩 >= 60) {
显示("及格")
} 否则 {
显示("不及格")
}
这样的语法更符合中文习惯,但可能不利于国际化。
仓颉的选择是合理的:在保留中文标识符优势的同时,使用国际通用的控制流关键字,兼顾了本土化和国际化。
4.3 关键代码速查
// 单条件
if (条件) {
// 代码
}
// 二选一
if (条件) {
// 条件为true
} else {
// 条件为false
}
// 多选一
if (条件1) {
// 条件1为true
} else if (条件2) {
// 条件2为true
} else {
// 都不满足
}
// 三目运算符
let 结果 = 条件 ? 值1 : 值2
4.4 常见错误提醒
| 错误现象 | 原因 | 解决方法 |
|---|---|---|
| 条件不生效 | 用了=而不是== |
比较用==,赋值用= |
| 所有条件都执行 | 用了多个if而不是else if | 用else if连接 |
| 逻辑错误 | 条件写错 | 检查条件表达式 |
| 嵌套太深 | 条件太多 | 考虑简化逻辑 |
五、课后作业
5.1 巩固练习(必做)
练习1:身体质量指数(BMI)计算器
输入身高和体重,计算BMI并给出健康建议:
- BMI < 18.5:偏瘦
- 18.5 <= BMI < 24:正常
- 24 <= BMI < 28:偏胖
- BMI >= 28:肥胖
练习2:出租车计费系统
计费规则:
- 起步价:10元(3公里内)
- 3-10公里:2元/公里
- 10公里以上:3元/公里
- 夜间(23:00-5:00):加价20%
练习3:日期有效性检查
输入年、月、日,判断是否为有效日期:
- 月份是否在1-12之间
- 日期是否在合理范围内(考虑闰年)
5.2 创意编程(选做)
创意1:简易计算器
实现支持加减乘除的计算器,可以连续运算。
创意2:猜数字游戏
程序随机生成1-100的数字,用户猜数字,程序提示"大了"或"小了",记录猜测次数。
创意3:24点游戏
输入4个数字,判断是否能通过加减乘除得到24。
5.3 下篇预习
下一篇,我们将学习重复做——循环语句,让程序能够重复执行任务。预习问题:
- 怎么让程序重复执行10次?
- 怎么遍历一个列表中的所有元素?
- 怎么实现"当条件满足时一直做"?
恭喜你完成了第4篇的学习! 🎉
现在你已经掌握了条件判断,可以让程序根据不同情况做出选择了。虽然if-else是国际通用的关键字,但配合中文变量名,代码依然清晰易读!
下节课,我们将学习循环语句,让程序能够重复执行任务!
更多推荐

所有评论(0)