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

第5篇:重复执行——让程序帮你干活 Rust中文编程

第5篇:重复执行——让程序帮你干活

作者:李金雨
联系方式:wbtm2718@qq.com
目标读者:Rust中文编程
核心理念:AI时代必须使用中文编程,母语编程阅读效率极高


1. 开篇引入

本课目标

  • 掌握for循环的使用
  • 掌握while循环的使用
  • 掌握loop循环的使用
  • 掌握break和continue语句的使用
  • 理解嵌套循环

生活场景引入

想象一下,你需要做以下事情:

  • 给班级里的每个同学发一份试卷
  • 反复练习一道数学题直到掌握
  • 每天早上起床、刷牙、洗脸、吃早饭

这些都是重复的事情,如果我们手动去做,会很麻烦。但如果让程序来帮我们做这些重复的事情,就会轻松很多。

预期成果展示

通过这节课的学习,你将能够:

  • 使用for循环遍历数据
  • 使用while循环根据条件重复执行
  • 使用loop循环创建无限循环
  • 使用break语句跳出循环
  • 使用continue语句跳过本次循环
  • 编写能够重复执行任务的程序

2. 概念讲解

for循环

for循环就像点名册,逐个点名,遍历一个集合中的每个元素。

fnmain(){for变量in集合{// 对每个元素执行的代码}}

例如:

fnmain(){// 遍历数字1到5for数字in1..=5{println!("{} 是我喜欢的数字",数字);}// 遍历数组let数字们=[1,2,3,4,5];for数字in数字们{println!("数字:{}",数字);}// 遍历字符串let名字="张三";for字符in名字.chars(){println!("字符:{}",字符);}}

while循环

while循环就像反复练习,只要条件满足,就一直执行。

fnmain(){while条件{// 条件满足时执行的代码}}

例如:

fnmain(){letmut计数器=0;while计数器<5{println!("计数器:{}",计数器);计数器+=1;}println!("循环结束");}

loop循环

loop循环是一个无限循环,会一直执行下去,直到遇到break语句。

fnmain(){loop{// 无限执行的代码if条件{break;// 跳出循环}}}

例如:

fnmain(){letmut计数器=0;loop{println!("计数器:{}",计数器);计数器+=1;if计数器>=5{break;// 当计数器达到5时跳出循环}}println!("循环结束");}

break语句

break语句用于跳出当前循环,不再执行循环中的剩余代码。

fnmain(){for数字in1..=10{if数字==5{break;// 当数字等于5时跳出循环}println!("数字:{}",数字);}println!("循环结束");}

continue语句

continue语句用于跳过本次循环的剩余代码,直接开始下一次循环。

fnmain(){for数字in1..=5{if数字==3{continue;// 当数字等于3时跳过本次循环}println!("数字:{}",数字);}println!("循环结束");}

嵌套循环

嵌套循环就是在一个循环里面再放一个循环。

fnmain(){// 打印乘法表forin1..=9{forin1..={print!("{} × {} = {:2} ",,,*);}println!();}}

3. 动手实践

基础练习(必做)

  1. 打印乘法表:创建一个程序,打印9×9乘法表:

    fnmain(){forin1..=9{forin1..={print!("{} × {} = {:2} ",,,*);}println!();}}
  2. 计算1到100的和:创建一个程序,计算1到100的和:

    fnmain(){letmut=0;for数字in1..=100{+=数字;}println!("1到100的和:{}",);}
  3. 打印三角形:创建一个程序,打印一个三角形:

    fnmain(){let行数=5;forin1..=行数{// 打印空格for_in1..=(行数-){print!(" ");}// 打印星号for_in1..=(2*-1){print!("*");}println!();}}

进阶练习(选做)

  1. 猜数字游戏(完整版):创建一个程序,模拟猜数字游戏:

    fnmain(){let目标数字=42;letmut猜测次数=0;loop{letmut输入=String::new();println!("请输入一个数字:");std::io::stdin().read_line(&mut输入).expect("读取失败");let猜测数字:i32=match输入.trim().parse(){Ok(数字)=>数字,Err(_)=>{println!("请输入有效的数字");continue;}};猜测次数+=1;if猜测数字<目标数字{println!("猜小了");}elseif猜测数字>目标数字{println!("猜大了");}else{println!("猜对了!你用了{}次",猜测次数);break;}}}
  2. 打印菱形:创建一个程序,打印一个菱形:

    fnmain(){let大小=5;// 上半部分forin1..=大小{for_in1..=(大小-){print!(" ");}for_in1..=(2*-1){print!("*");}println!();}// 下半部分forin(1..size).rev(){for_in1..=(大小-){print!(" ");}for_in1..=(2*-1){print!("*");}println!();}}

挑战练习(拓展)

  1. 素数筛法:创建一个程序,找出1到100之间的所有素数:
    fnmain(){println!("1到100之间的素数:");for数字in2..=100{letmut是素数=true;for除数in2..数字{if数字%除数==0{是素数=false;break;}}if是素数{print!("{} ",数字);}}println!();}

4. 知识总结

核心概念回顾

  • for循环:用于遍历集合中的每个元素
  • while循环:只要条件满足就一直执行
  • loop循环:无限循环,直到遇到break语句
  • break语句:跳出当前循环
  • continue语句:跳过本次循环的剩余代码
  • 嵌套循环:在一个循环里面再放一个循环

关键代码速查

循环类型语法示例
for循环for 变量 in 集合 { 代码 }for 数字 in 1..=5 { println!("{}", 数字); }
while循环while 条件 { 代码 }while 计数器 < 5 { 计数器 += 1; }
loop循环loop { 代码; if 条件 { break; } }loop { println!("Hello"); break; }
break语句break;跳出循环
continue语句continue;跳过本次循环

常见错误提醒

  1. 无限循环:忘记在while或loop循环中修改条件,导致循环永远不会结束
  2. 死循环:loop循环中忘记添加break语句
  3. 变量作用域:循环变量只在循环内部有效
  4. 性能问题:嵌套循环的层数过多会影响性能

5. 课后作业

巩固练习题

  1. 编写一个程序,打印1到100之间的所有偶数
  2. 编写一个程序,计算10的阶乘(10!)
  3. 编写一个程序,打印斐波那契数列的前20项

创意编程题

  1. 发挥你的创意,创建一个程序,打印一个复杂的图案
  2. 编写一个程序,模拟一个简单的倒计时器

下篇预习提示

下一篇我们将学习"数据容器——管理大量数据",就像学习如何使用不同的容器来管理大量的数据。预习一下:

  • 什么是数据容器?
  • 有哪些类型的数据容器?
  • 如何使用数组?
  • 如何使用向量?
  • 如何使用元组?

恭喜你完成了第五篇教程!你已经掌握了循环语句,学会了如何让程序帮你重复执行任务。继续加油,下一篇我们将学习如何管理大量数据!

学习交流

如果你在学习过程中遇到任何问题,欢迎联系我:

  • ** 视频号,“时空系”
  • 邮箱:wbtm2718@qq.com
  • 其他提示:
  • 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
  • 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流

祝你学习愉快!

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

相关文章:

  • 保姆级教程:用Frida-dexdump搞定安卓CTF脱壳题(附模拟器连接与常见报错修复)
  • 量化投资新纪元:如何用AKShare构建专业级金融数据获取系统
  • 联邦学习中的数据预处理:FedPS框架解析与实践
  • 民间大巴的兴起,激活了市场,迫使傲慢的车站降价接地气了,公路客运悄然复兴
  • Rusted PackFile Manager深度解析:Total War MOD开发的架构革命与技术实践
  • WindowResizer终极指南:如何强制调整任何窗口大小,轻松解决顽固窗口问题
  • ToDesk热门功能答疑:协作模式与屏幕墙,你真的会用吗?
  • 中国AI产业的双轮驱动:模力方舟与口袋龙虾如何重构全球竞争格局
  • 2026年五大热门面罩美容仪测评,揭秘哪款真值得入手 - 速递信息
  • 别再写满屏IF ELSE了!SAP BRFPlus实战:5分钟搞定一个动态国家验证规则
  • iMX6ULL开发板GPIO调试利器:libgpiod命令行工具(gpiodetect/gpiomon)实战手册
  • Ubuntu 22.04 + Python 3.9 下,手把手搞定 VoxPoser 论文复现环境(含 RLBench/CoppeliaSim 避坑指南)
  • 【flutter for open harmony】第三方库Flutter 鸿蒙版 瀑布流布局 实战指南(适配 1.0.0)✨
  • Windows 上安装 Claude Code并且接入DeepSeekV4-Pro的Max模式和激活1M上下文
  • 如何快速解密网易云音乐NCM格式:3种简单方法重获音乐自由
  • 别再手动加词了!用Custom_phrase.txt文件批量导入你的Rime小狼毫个人词库
  • ARM TLBIP指令解析:多核TLB一致性维护实践
  • 日更100条短视频,这些热闹,我们普通人真没必要凑。
  • TranslucentTB 完整指南:Windows 任务栏透明美化的深度解析与实战教程
  • OpenClaw控制面板技能模态框无法打开的紧急修复方案
  • 别再傻傻分不清了!一张图帮你理清YOLO各版本(v1-v13)的‘血缘关系’与核心团队
  • 抖音内容高效管理:免费开源下载工具全面解析
  • 基础模型如何革新科研工作流与科学发现
  • 别再死记硬背了!用这套JIT生产管理实战题库,帮你快速掌握精益制造核心
  • LocFT-BF:大语言模型高效参数编辑方法解析
  • 一个标准 Java SpringBoot 项目 Git ignore 文件
  • AMD Ryzen处理器底层调试技术:SMUDebugTool深度解析与完整实现指南
  • 3分钟搞定Windows HEIC缩略图预览:告别iPhone照片的灰色图标烦恼
  • 为什么多线程的问题本质是“调度”?(从线程到协程 · 第1篇)
  • YoloX训练实战:从零开始用PyTorch训练一个自定义数据集(附完整代码)