第5篇:循环语句——重复执行任务 生中文编程
第5篇:循环语句——重复执行任务
**作者:**中文编程倡导者—— 李金雨
联系方式:wbtm2718@qq.com
**目标读者:**编程入门(零基础)
核心理念:使用华为仓颉原生中文编程,体验真正的国产编程语言
一、开篇引入
1.1 生活中的"重复"
生活中有很多重复的事情:
- 每天早上重复刷牙、洗脸、吃早餐
- 体育课重复做10个俯卧撑
- 老师让我们重复抄写课文3遍
- 妈妈让你重复说"对不起"直到她满意
1.2 程序中的"重复"
计算机最擅长做重复的事情!我们可以让程序:
- 重复计算100个学生的平均分
- 重复打印100行"我爱编程"
- 重复检查用户输入直到正确
1.3 关于循环语法的思考
在学习循环之前,我们再聊聊仓颉的语法设计。
仓颉的循环语句使用了国际通用的关键字:
// for循环 for (i in 0..10) { // 代码 } // while循环 while (条件) { // 代码 }这些关键字for、while、in都是国际通用的,大家都能看懂。
1.4 本课目标
今天我们要学习:
for循环——知道次数的循环while循环——不知道次数的循环break和continue——控制循环- 嵌套循环
- 做一个乘法表生成器
二、概念讲解
2.1 for循环——知道次数时用
基本语法
for (变量 in 范围) { // 重复执行的代码 }代码示例:打印1到10
main() { for (i in 0..10) { println("当前数字:${i}") } }执行过程:
- i = 0,执行代码
- i = 1,执行代码
- …
- i = 10,执行代码
- 结束
代码示例:计算1到100的和
main() { var 总和: Int64 = 0 for (i in 1..101) { 总和 = 总和 + i } println("1到100的和是:${总和}") }2.2 while循环——不知道次数时用
基本语法
while (条件) { // 条件为true时重复执行 }代码示例:用户输入验证
main() { var 密码正确: Bool = false var 尝试次数: Int64 = 0 while (!密码正确 && 尝试次数 < 3) { println("请输入密码:") // 这里模拟输入 let 输入的密码: String = "123456" if (输入的密码 == "123456") { 密码正确 = true println("密码正确!") } else { 尝试次数 = 尝试次数 + 1 println("密码错误,还剩${3 - 尝试次数}次机会") } } if (!密码正确) { println("尝试次数用尽,账户已锁定") } }2.3 break和continue——控制循环
break——跳出循环
main() { for (i in 1..101) { if (i == 50) { println("到50了,停止!") break // 跳出循环 } println("${i}") } }continue——跳过本次
main() { for (i in 1..11) { if (i == 5) { continue // 跳过5,继续下一次 } println("${i}") } }2.4 嵌套循环——循环里面还有循环
代码示例:打印乘法表
main() { for (i in 1..10) { for (j in 1..(i + 1)) { print("${j}×${i}=${i * j}\t") } println("") } }输出结果:
1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 ...三、动手实践
3.1 基础练习:九九乘法表
// 九九乘法表 main() { println("=== 九九乘法表 ===") println("") for (i in 1..10) { for (j in 1..(i + 1)) { print("${j}×${i}=${i * j}\t") } println("") } }3.2 进阶练习:打印图形
// 打印各种图形 main() { println("=== 图形打印 ===") println("") // 打印直角三角形 println("【直角三角形】") for (i in 1..6) { for (j in 1..(i + 1)) { print("* ") } println("") } println("") // 打印等腰三角形 println("【等腰三角形】") let 高度: Int64 = 5 for (i in 1..(高度 + 1)) { // 打印空格 for (k in 1..(高度 - i + 1)) { print(" ") } // 打印星号 for (j in 1..(2 * i - 1 + 1)) { print("*") } println("") } println("") // 打印菱形 println("【菱形】") let 菱形高度: Int64 = 5 // 上半部分 for (i in 1..(菱形高度 + 1)) { for (k in 1..(菱形高度 - i + 1)) { print(" ") } for (j in 1..(2 * i - 1 + 1)) { print("*") } println("") } // 下半部分 for (i in (菱形高度 - 1)..0) { for (k in 1..(菱形高度 - i + 1)) { print(" ") } for (j in 1..(2 * i - 1 + 1)) { print("*") } println("") } }3.3 挑战练习:猜数字游戏
// 猜数字游戏 import std.random.* main() { println("=== 猜数字游戏 ===") println("我已经想好了一个1-100之间的数字") println("你来猜,我会提示"大了"或"小了"") println("") // 生成随机数 let 目标数字: Int64 = randomInt(1, 101) var 猜测次数: Int64 = 0 var 猜对了: Bool = false while (!猜对了) { println("请输入你的猜测:") // 这里模拟输入 let 猜测: Int64 = 50 // 假设输入50 猜测次数 = 猜测次数 + 1 if (猜测 == 目标数字) { println("恭喜你,猜对了!") println("你一共猜了${猜测次数}次") 猜对了 = true } else if (猜测 < 目标数字) { println("小了,再大一点") } else { println("大了,再小一点") } } // 评价 if (猜测次数 <= 3) { println("评价:太厉害了!") } else if (猜测次数 <= 6) { println("评价:还不错!") } else { println("评价:还需要练习哦") } }四、知识总结
4.1 核心概念回顾
- for循环:知道次数时用
- while循环:不知道次数时用
- break:跳出循环
- continue:跳过本次,继续下一次
- 嵌套循环:循环里面还有循环
4.2 关于语法设计的总结
仓颉的循环语句使用了国际通用的for和while关键字,这是一个比较务实的选择。
如果我们设计纯中文编程语言:
// 设想中的中文语法 重复 (i 从 1 到 10) { 显示(i) } // 或者 当 (条件满足) { 执行代码 }当然,使用国际通用关键字也有好处,仓颉的选择是合理的。
4.3 关键代码速查
// for循环 for (i in 0..10) { // 代码 } // while循环 while (条件) { // 代码 } // break break // continue continue4.4 常见错误提醒
| 错误现象 | 原因 | 解决方法 |
|---|---|---|
| 死循环 | 条件永远为true | 确保条件会变为false |
| 循环不执行 | 条件一开始就是false | 检查初始条件 |
| 循环次数不对 | 范围写错 | 检查范围 |
五、课后作业
5.1 巩固练习(必做)
练习1:计算阶乘
输入一个数字n,计算n的阶乘(n! = 1×2×3×…×n)。
练习2:判断素数
输入一个数字,判断是否为素数(只能被1和自身整除的数)。
练习3:打印金字塔
输入层数,打印金字塔形状。
5.2 创意编程(选做)
创意1:数字炸弹
多人游戏,轮流猜数字,猜中炸弹数字的人输。
创意2:简易计算器
实现支持连续运算的计算器。
创意3:动画效果
用循环实现简单的文字动画效果。
5.3 下篇预习
下一篇,我们将学习数据列表——数组,学习如何存储和操作多个数据。
恭喜你完成了第5篇的学习!🎉
现在你已经掌握了循环语句,可以让程序重复执行任务了!
下节课,我们将学习数组,存储和操作多个数据!
