当前位置: 首页 > news >正文

第5篇:循环语句——重复执行任务 生中文编程

第5篇:循环语句——重复执行任务

**作者:**中文编程倡导者—— 李金雨
联系方式:wbtm2718@qq.com
**目标读者:**编程入门(零基础)
核心理念:使用华为仓颉原生中文编程,体验真正的国产编程语言


一、开篇引入

1.1 生活中的"重复"

生活中有很多重复的事情:

  • 每天早上重复刷牙、洗脸、吃早餐
  • 体育课重复做10个俯卧撑
  • 老师让我们重复抄写课文3遍
  • 妈妈让你重复说"对不起"直到她满意

1.2 程序中的"重复"

计算机最擅长做重复的事情!我们可以让程序:

  • 重复计算100个学生的平均分
  • 重复打印100行"我爱编程"
  • 重复检查用户输入直到正确

1.3 关于循环语法的思考

在学习循环之前,我们再聊聊仓颉的语法设计。

仓颉的循环语句使用了国际通用的关键字:

// for循环 for (i in 0..10) { // 代码 } // while循环 while (条件) { // 代码 }

这些关键字forwhilein都是国际通用的,大家都能看懂。

1.4 本课目标

今天我们要学习:

  1. for循环——知道次数的循环
  2. while循环——不知道次数的循环
  3. breakcontinue——控制循环
  4. 嵌套循环
  5. 做一个乘法表生成器

二、概念讲解

2.1 for循环——知道次数时用

基本语法
for (变量 in 范围) { // 重复执行的代码 }
代码示例:打印1到10
main() { for (i in 0..10) { println("当前数字:${i}") } }

执行过程:

  1. i = 0,执行代码
  2. i = 1,执行代码
  3. i = 10,执行代码
  4. 结束
代码示例:计算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 核心概念回顾

  1. for循环:知道次数时用
  2. while循环:不知道次数时用
  3. break:跳出循环
  4. continue:跳过本次,继续下一次
  5. 嵌套循环:循环里面还有循环

4.2 关于语法设计的总结

仓颉的循环语句使用了国际通用的forwhile关键字,这是一个比较务实的选择。

如果我们设计纯中文编程语言:

// 设想中的中文语法 重复 (i 从 1 到 10) { 显示(i) } // 或者 当 (条件满足) { 执行代码 }

当然,使用国际通用关键字也有好处,仓颉的选择是合理的。

4.3 关键代码速查

// for循环 for (i in 0..10) { // 代码 } // while循环 while (条件) { // 代码 } // break break // continue continue

4.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篇的学习!🎉

现在你已经掌握了循环语句,可以让程序重复执行任务了!

下节课,我们将学习数组,存储和操作多个数据!

http://www.jsqmd.com/news/758787/

相关文章:

  • 终极Milkdown快捷键指南:10个高效编辑组合键提升写作效率
  • MinGW-w64压缩包名称详解:手把手教你根据项目需求选对x86_64、posix、seh、UCRT版本
  • 佐治亚理工学院:为孩子打造博物馆展品,单人体验竟引发社交行为!
  • Qwerty Learner 终极指南:如何通过打字练习高效记忆英语单词
  • OpenPano全景拼接神器:从零构建自动全景图像处理系统
  • 从零开始:5步搞定黑苹果安装,让你的PC也能运行macOS
  • 避免R 4.5并行反模式,深度剖析foreach+doParallel内存泄漏与负载倾斜问题,
  • 终极JavaScript编码指南:从零开始构建标准化项目的完整实践
  • 别再死记硬背LSTM公式了!用Python和PyTorch手把手带你‘画’出记忆细胞的工作流程
  • 别再只用Nginx了!用Squid在Windows搭建透明代理网关,实现内网统一出口访问控制
  • 视频怎么在线去水印?2026最新 视频在线去水印方法实测,免费在线视频去水印工具推荐 - 爱上科技热点
  • 3个步骤将你的摄像头变成创意工作室:Webcamoid完全指南
  • 63.YOLOv8核心总结|C2f模块+解耦头+实战落地
  • LangGraph最常用的三种流式输出,你知道几个?
  • MotionEdit:运动图像编辑与NFT技术的创新融合
  • HeaderEditor深度技术解析:浏览器请求控制系统的架构设计与实战应用
  • 如何实现完美撤销重做:Milkdown历史记录功能终极指南
  • Vue.js国际化终极指南:如何在Vitesse模板中实现动态语言切换
  • 通过 curl 命令直接测试 Taotoken 聊天接口的配置与排错指南
  • 深度解析:OpenWrt网易云音乐解锁插件完整配置与实战指南
  • 小红书视频图片如何去水印保存?2026最新 小红书去水印最新方法实测教程 - 爱上科技热点
  • FlexASIO技术解析:构建灵活的跨平台ASIO音频驱动架构
  • ESP8266 实际应用
  • 从防御者视角看Golden Ticket:如何检测和缓解黄金票据攻击(含Mimikatz日志分析)
  • 5分钟快速上手:BLiveChat打造B站直播弹幕的终极解决方案
  • 为什么你的Dify多模态Pipeline总是返回空结果?——基于137个真实报错日志的根因图谱分析
  • Qianfan-OCR案例分享:建筑施工图图例表OCR+构件编号自动关联
  • 别再手动写YAML了!用Higress Console可视化配置路由,5分钟搞定服务暴露
  • 终极指南:3步搭建QuantConnect量化交易本地学习环境
  • 即梦怎么去水印保存图片?2026最新实测即梦去水印方法全解析 - 爱上科技热点