控制结构

学习目标

通过本集的学习,你将能够:

  • 理解顺序执行
  • 掌握选择结构(if, switch)
  • 掌握循环结构(while, for)
  • 理解跳转语句

1. 顺序执行

1.1 什么是顺序执行?

顺序执行是最简单的控制流,语句按顺序一条接一条执行。

顺序执行示例:
x = 1
y = 2
z = x + y
print(z)  // 输出 3

1.2 流程图

开始
  ↓
语句1
  ↓
语句2
  ↓
语句3
  ↓
结束

2. 选择结构

2.1 if 语句

if 语句根据条件选择执行路径。

基本 if:
if (condition) {
    statement;
}

if-else:
if (condition) {
    statement1;
} else {
    statement2;
}

if-elif-else:
if (cond1) {
    s1;
} elif (cond2) {
    s2;
} else {
    s3;
}

2.2 流程图(if-else)

        条件?
       /     \
     真       假
     ↓         ↓
  语句1      语句2
     ↓         ↓
      \       /
       汇合点

2.3 switch 语句

switch 语句根据表达式的值选择分支。

switch (expression) {
    case value1:
        statements;
        break;
    case value2:
        statements;
        break;
    default:
        statements;
}

3. 循环结构

3.1 while 循环

while 循环在条件为真时重复执行。

while 循环:
while (condition) {
    statement;
}

示例:
i = 0
while (i < 10) {
    print(i)
    i = i + 1
}

3.2 do-while 循环

do-while 循环至少执行一次。

do-while 循环:
do {
    statement;
} while (condition);

示例:
i = 0
do {
    print(i)
    i = i + 1
} while (i < 10)

3.3 for 循环

for 循环有初始化、条件、更新。

for 循环(C 风格):
for (init; condition; update) {
    statement;
}

示例:
for (i = 0; i < 10; i++) {
    print(i)
}

for 循环(Python 风格):
for i in range(10):
    print(i)

3.4 循环流程图

while 循环:
    ┌───────────┐
    ↓           │
  条件?         │
  /   \        │
真    假       │
↓      ↓       │
语句   退出     │
↓              │
└──────────────┘

4. 跳转语句

4.1 break

break 跳出循环或 switch。

break 示例:
for (i = 0; i < 10; i++) {
    if (i == 5) {
        break;  // 跳出循环
    }
    print(i)
}
// 输出 0, 1, 2, 3, 4

4.2 continue

continue 跳过当前迭代,继续下一次。

continue 示例:
for (i = 0; i < 10; i++) {
    if (i % 2 == 0) {
        continue;  // 跳过偶数
    }
    print(i)
}
// 输出 1, 3, 5, 7, 9

4.3 return

return 从函数返回。

return 示例:
def add(a, b):
    return a + b

result = add(1, 2)  // 3

5. 实用案例

5.1 案例1:计算阶乘

计算 n! = 1 * 2 * ... * n

def factorial(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result

print(factorial(5))  // 120

5.2 案例2:FizzBuzz

打印 1 到 100:
- 3 的倍数打印 Fizz
- 5 的倍数打印 Buzz
- 两者都是打印 FizzBuzz

for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

6. 自测问题

  1. 什么是顺序执行?
  2. if 和 switch 的区别是什么?
  3. while 和 do-while 的区别是什么?
  4. break 和 continue 的区别是什么?
  5. for 循环的三个部分是什么?

7. 下集预告

下一集我们将学习子程序(函数)!

参考资料

  • 《程序设计语言:概念与构造》
  • 《编程语言原理》
« 上一篇 30-expressions-statements 下一篇 » 子程序(函数)