> **GESP等级：二级 | 考级考点：GESP Python 二级**

# 第01节 流程图小画家

**课程目标**：让学生认识流程图的基本符号，掌握顺序/选择/循环三种基本结构，学会"自然语言→流程图→代码"的三步法。

**适龄对象**：7-10岁少儿

**课程时长**：60分钟（五段式教学）

---

## 一、导入（10分钟）—— "藏宝图路线"

### 1.1 故事开场

小朋友们，你们喜欢寻宝吗？

（老师拿出一张藏宝图的手绘图）

想象一下，你得到了一张藏宝图，上面画着——

```
[🏠 家] 
    ↓ 向前走100步
[🌳 大树下]
    ↓ 向右转
[⛲ 喷水池] → 如果看到红色花 → [🪨 石头下面挖]
    ↓               ↓ 不是红色花
    ↓               [🏠 回家找线索]
    ↓
[🎁 宝藏！]
```

有了这张图，你是不是一眼就看清了"先做什么、再做什么、遇到不同情况怎么办？"

其实，程序员写程序也用到同样的方法！这就是——**流程图**！

### 1.2 什么是流程图

**流程图**就是用图形和箭头来表示一个过程（算法）的图。

就像藏宝图告诉你"怎么走到宝藏"，流程图告诉电脑"怎么完成任务"。

**生活中的流程图**：
- 地铁线路图 → 你一看就知道怎么换乘
- 乐高拼装说明书 → 一步步教你怎么搭
- 交通信号灯流程 → 红灯停、绿灯行、黄灯等一等

### 1.3 身体锚点教学（第一遍）

老师带着全班做动作：

- **椭圆（起止框）**：双手在胸前合成一个椭圆形——"开始/结束！"
- **矩形（处理框）**：双手比出一个长方形——"做事！"
- **菱形（判断框）**：双手大拇指和食指对捏成菱形——"选择！"
- **箭头（流程线）**：右手食指指向斜下方——"下一步！"

> **教学口诀**：
> 椭圆椭圆开始停，矩形矩形做事情
> 菱形菱形做选择，箭头箭头指方向

---

## 二、知识点讲解（20分钟）

### 2.1 流程图基本符号（四种核心符号）

流程图使用标准的符号来表示不同类型的操作。对于少儿编程，我们重点学习四种最常用的符号。

#### 符号一：椭圆 —— 起止框（开始/结束）

**形状**：椭圆形（圆角矩形）
**用途**：表示程序的开始和结束
**内部文字**："开始" / "结束"

**生活比喻**：
- 椭圆就像一颗蛋🥚——蛋是生命的"开始"，也是食物的"结束"（被吃掉）
- 你看一本书，从第一页"开始"翻到最后一页"结束"
- 你每天从起床"开始"到睡觉"结束"

**编程中的使用**：
- 每个流程图只有一个"开始"
- 每个流程图可以有0个或1个"结束"
- 如果程序一直运行（如操作系统），可以没有"结束"

#### 符号二：矩形 —— 处理框（做事）

**形状**：长方形
**用途**：表示一个操作或处理步骤
**内部文字**：描述做什么，如"计算3+5"、"输入名字"

**生活比喻**：
- 矩形就像一扇门🚪——你通过门去"做事情"
- 就像一个任务清单上的项目——每完成一项就打个勾
- 做蛋糕的步骤："打鸡蛋"、"加面粉"、"搅拌"都是"处理"

**编程中的使用**：
- 赋值操作：`a = 3 + 5`
- 计算操作：`total = price * count`
- 输入操作：`name = input("你叫啥？")`
- 输出操作：`print("你好")`

#### 符号三：菱形 —— 判断框（选择）

**形状**：菱形（倾斜的正方形）
**用途**：表示条件判断，根据"是/否"或"真/假"选择不同路径
**内部文字**：一个可以回答"是/否"的问题
**出口**：通常有2个出口（是和否，或真和假）

**生活比喻**：
- 菱形就像路口的红绿灯🚦——红灯停绿灯行
- 就像妈妈问你"写完作业了吗？"——写完了→可以玩，没写完→继续写
- 就像天气预报"明天下雨吗？"——下雨→带伞，不下雨→不带伞

**编程中的使用**：
- `if` 语句的判断条件
- `if age >= 18:` → 是→成年，否→未成年
- `if score >= 60:` → 是→及格，否→不及格

#### 符号四：箭头 —— 流程线（方向）

**形状**：带箭头的线段
**用途**：表示流程的执行顺序和方向
**箭头朝向**：通常从上到下，或从左到右

**生活比喻**：
- 箭头就像路标→——告诉你该怎么走
- 就像你手机的导航APP——箭头告诉你"前方直行200米"
- 就像说明书上的编号①②③——按顺序来

**所有符号汇总表**：

| 符号 | 名称 | 用途 | 生活比喻 |
|------|------|------|---------|
| 椭圆 | 起止框 | 开始/结束 | 蛋 🥚 |
| 矩形 | 处理框 | 做事情 | 门 🚪 |
| 菱形 | 判断框 | 做选择 | 红绿灯 🚦 |
| 箭头 | 流程线 | 指方向 | 路标 → |

### 2.2 三种基本结构

任何程序都可以由三种基本结构组成：顺序、选择、循环。就像搭积木，有了这三种"积木块"，可以搭出任何程序！

#### 结构一：顺序结构

**定义**：按照代码的书写顺序，从上到下依次执行。

**流程图样子**：
```
    [椭圆：开始]
        ↓
    [矩形：做事A]
        ↓
    [矩形：做事B]
        ↓
    [矩形：做事C]
        ↓
    [椭圆：结束]
```

**生活类比——刷牙的步骤**：
1. 挤牙膏（顺序第1步）
2. 刷牙（顺序第2步）
3. 漱口（顺序第3步）
4. 洗牙刷（顺序第4步）

这四步必须按顺序做，不能先漱口再挤牙膏！

**编程示例**：
```python
print("早上好！")    # 第1步
name = input("你叫啥？")  # 第2步
print(name + "，你好！")  # 第3步
```

**执行过程**：第1步→第2步→第3步，严格按顺序。

#### 结构二：选择结构（条件分支）

**定义**：根据条件是否成立，决定执行哪个分支。

**流程图样子（if-else）**：
```
    [椭圆：开始]
        ↓
    [菱形：条件？]
      ↗ ↘
    是  否
    ↓    ↓
 [矩形：A] [矩形：B]
    ↓    ↓
    [椭圆：结束]
```

**生活类比——穿什么衣服**：
- 条件：今天下雨吗？
- 是 → 穿雨衣
- 否 → 不穿雨衣

**三种选择结构**：
1. **单分支（if）**：如果条件成立，做某事
   ```python
   if 下雨:
       穿雨衣
   ```

2. **双分支（if-else）**：如果条件成立做A，否则做B
   ```python
   if 下雨:
       穿雨衣
   else:
       不穿雨衣
   ```

3. **多分支（if-elif-else）**：多个条件判断
   ```python
   if 成绩 >= 90:
       优秀
   elif 成绩 >= 60:
       及格
   else:
       不及格
   ```

**编程示例**：
```python
age = int(input("你多大了？"))
if age >= 18:
    print("你可以投票！")
else:
    print("你还不能投票哦")
```

#### 结构三：循环结构（重复）

**定义**：重复执行某段代码，直到条件不再满足。

**流程图样子（当型循环）**：
```
    [椭圆：开始]
        ↓
    [菱形：条件？]
      ↙ ↘
    是  否
    ↓    ↓
 [矩形：做事] [椭圆：结束]
    ↓
    ↑ 回到条件（循环）

    （注意箭头是向上回的！）
```

**生活类比——做俯卧撑**：
- 条件：做了10个了吗？
- 否 → 继续做一个（循环体）
- 是 → 停！做完了

**两种循环**：
1. **当型循环（while）**：先判断，条件满足才执行
   ```python
   count = 0
   while count < 10:  # 条件：count < 10
       print("做俯卧撑")
       count += 1     # count加1
   ```

2. **直到型循环（for）**：遍历一个范围
   ```python
   for i in range(10):  # i从0到9
       print("做俯卧撑")
   ```

**编程示例**：
```python
# 数到10
for i in range(1, 11):
    print(i)
print("数完了！")
```

### 2.3 自然语言 → 流程图 → 代码（三步法）

这是编程的核心思维！无论多么复杂的程序，都可以通过这三步来实现。

**第一步：用自然语言描述**（像讲故事一样）
- 用中文/英文描述要做什么
- 不要求精确，先理清思路

**第二步：画流程图**（用图形表示）
- 把自然语言转化为流程图符号
- 检查逻辑是否有遗漏或错误

**第三步：写代码**（用Python实现）
- 根据流程图写出对应代码
- 运行测试

**示例：判断一个数是不是偶数**

```
第一步 自然语言：
  1. 输入一个数字
  2. 如果这个数字除以2的余数是0
  3.   输出"是偶数"
  4. 否则
  5.   输出"不是偶数"

第二步 流程图（画出来）：
  [开始]
    ↓
  [输入数字n]
    ↓
  [n % 2 == 0？]
  ↙     ↘
 是      否
 ↓       ↓
[输出"偶数"] [输出"不是偶数"]
 ↓       ↓
  [结束]

第三步 代码：
  n = int(input("请输入一个数字："))
  if n % 2 == 0:
      print("是偶数")
  else:
      print("不是偶数")
```

### 2.4 用流程图解决实际问题

**问题：猜数字游戏流程**

```
自然语言描述：
1. 电脑想一个1-100之间的随机数
2. 玩家猜一个数字
3. 如果猜对了，输出"猜对了！"
4. 如果猜大了，输出"太大了"
5. 如果猜小了，输出"太小了"
6. 重复2-5步，直到猜对为止

流程图（简化版）：
  [开始]
    ↓
  [生成随机数]
    ↓
  [玩家输入]
    ↓
  [猜对了？] → 是 → [输出"猜对了！"] → [结束]
    ↓ 否
  [猜大了？] → 是 → [输出"太大了"]
    ↓ 否              ↓
  [输出"太小了"] ←────┘
    ↓
  ↑ 回到[玩家输入]（循环）

代码（Python）：
  import random
  target = random.randint(1, 100)
  while True:
      guess = int(input("猜一个数："))
      if guess == target:
          print("猜对了！")
          break
      elif guess > target:
          print("太大了")
      else:
          print("太小了")
```

---

## 三、演示环节（10分钟）

### 3.1 Python代码演示

老师运行 `04_流程图小画家.py`，使用turtle画出流程图。

**演示流程**：

1. 第一步：运行程序，看到turtle画布出现
2. 第二步：看到turtle画出一个椭圆（开始）
3. 第三步：画出矩形（输入数字）
4. 第四步：画出菱形（判断条件）
5. 第五步：画出两个分支的矩形
6. 第六步：画出结束椭圆
7. 第七步：箭头连接所有图形，形成完整流程图

**老师引导提问**：
- "这个椭圆是什么框？"（起止框——开始/结束）
- "这个矩形是什么框？"（处理框——做事情）
- "这个菱形是什么框？"（判断框——做选择）
- "箭头告诉我们什么？"（执行的顺序和方向）

### 3.2 身体锚点复习（第二遍）

全体起立，老师说符号名称，学生做动作：

- "开始/结束！" → 双手合成椭圆
- "处理/做事！" → 双手比长方形
- "判断/选择！" → 双手比菱形
- "流程线！" → 手指方向

---

## 四、实操环节（15分钟）

### 4.1 活动一：我是流程图符号（5分钟）

**形式**：角色扮演

**步骤**：
1. 全班分为4组，每组代表一种符号
2. 椭圆组：起止框组，站在最前和最后
3. 矩形组：处理框组，站中间做各种"做事"动作
4. 菱形组：判断框组，站岔路口做选择动作
5. 箭头组：流程线组，用手臂指向下一组

**老师引导一个完整流程**：
```
椭圆组："开始！"
  ↓ （箭头组指方向）
矩形组："输入数字！"
  ↓ （箭头组指方向）
菱形组："偶数是吗？！左手是'是'，右手是'否'！"
  ↓ 是 → 矩形组："输出偶数！"
  ↓ 否 → 矩形组："输出奇数！"
  ↓ （箭头组指方向）
椭圆组："结束！"
```

### 4.2 活动二：画"刷牙"流程图（7分钟）

**准备**：白纸、铅笔、橡皮

**任务**：画出"刷牙"的流程图

**引导步骤**：
1. 先用自然语言描述刷牙步骤
2. 选择一个步骤做选择（如：牙膏用完了吗？）
3. 加入循环（如：刷上牙、刷下牙、刷里面……每个重复）

**参考流程**：
```
          [开始]
            ↓
        [拿牙刷]
            ↓
        [挤牙膏] →→→→→ [牙膏没了？]
            ↓          是 ↓
        [开始刷牙]    [换新牙膏] —↑
            ↓
        [刷上牙] ← ← ← ← ← ← ← ← ← ← ← ← ← 还要刷吗？
            ↓          是 ↑                   ↓
        [刷下牙] ─────────→ ←                否
            ↓                                ↓
        [漱口]                           [结束]
            ↓
        [洗牙刷]
            ↓
        [放好牙刷]
            ↓
          [结束]
```

**老师指导要点**：
- 看学生是否正确使用了四种符号
- 看箭头方向是否正确
- 引导思考："有选择的地方用菱形了吗？"

### 4.3 活动三：流程图符号快问快答（3分钟）

老师展示一种形状（用手比划或画在黑板上），学生说出对应的名称和用途：

| 老师比划 | 学生回答 |
|---------|---------|
| 双手合成椭圆 | "起止框！开始和结束！" |
| 双手比长方形 | "处理框！做事情！" |
| 双手比菱形 | "判断框！做选择！" |
| 手指方向 | "流程线！指方向！" |

---

## 五、小测环节（5分钟）

### 5.1 判断题（每题10分）

1. （ ）流程图中的椭圆表示"开始"或"结束"。
2. （ ）矩形框表示需要做一个选择。
3. （ ）菱形框有两个出口（是和否）。
4. （ ）顺序结构中，代码可以随便换顺序执行。
5. （ ）流程图可以帮助我们理清编程思路。

**答案**：√ × √ × √
**解析**：
1. √——椭圆是起止框
2. ×——矩形是处理框，菱形才是判断框
3. √——判断框通常有两个出口
4. ×——顺序结构必须按顺序执行
5. √——这就是"三步法"的作用

### 5.2 选择题（每题10分）

1. 流程图中表示"判断"的符号是____。
   A. 椭圆  B. 矩形  C. 菱形  D. 箭头

2. 以下哪种结构可以让程序重复执行某段代码？
   A. 顺序结构  B. 选择结构  C. 循环结构  D. 以上都可以

3. "自然语言→流程图→代码"这叫做____。
   A. 编程三步法  B. 画画三步法  C. 写作业三步法  D. 以上都不是

**答案**：C、C、A

### 5.3 排序题

将以下步骤按"三步法"的顺序排序：
A. 写代码  B. 画流程图  C. 自然语言描述

正确顺序：____ → ____ → ____

**答案**：C → B → A

---

## 六、课后延伸

### 6.1 家长互动
请孩子教家长认识四种流程图符号，并用身体动作展示。

### 6.2 画一画
选一个日常活动（如：早上出门、做作业、煮方便面），画出它的流程图。

### 6.3 预习提示
下节课我们将进入新的阶段学习，做好准备哦！

---

## 七、教学反思（教师用）

**重点难点分析**：
- 重点：四种流程图符号的识别，三种基本结构的理解
- 难点：循环结构的理解（箭头往回画），判断框的两个出口

**常见误区**：
1. 学生容易混淆"处理框"和"判断框"——强调矩形是做事，菱形是选择
2. 循环结构中箭头往回画的方向容易画反
3. 学生可能认为流程图只能用一种结构——实际三种结构可以嵌套组合

**差异化教学**：
- 基础层：掌握四种符号的基本形状和含义
- 进阶层：能画简单的顺序+选择流程图
- 挑战层：能画出包含循环结构的完整流程图，并转化为Python代码
