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

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

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

Logo

一站式 AI 云服务平台

更多推荐