2 程序设计与流程图

正在加载视频播放器…

GESP C++ 二级:程序设计与流程图精讲

核心目标:掌握程序设计与算法的基本概念、程序设计语言分类、流程图基本符号、流程图绘制方法、三种基本结构的流程图表示、流程图与代码的转换、伪代码描述。
系统梳理二级考纲中“程序设计语言的特点”与“流程图的概念与描述”两个核心模块。

第一部分:程序设计与算法基础

1. 程序与程序设计

程序是计算机能够识别并执行的一组指令的集合。程序设计就是根据特定问题,设计、编写和调试程序的过程。

程序设计的核心步骤:

分析问题 → 设计算法 → 编写代码 → 编译调试 → 运行验证

其中设计算法是最关键的一步,而流程图正是描述算法的重要工具。

2. 算法的概念

算法是解决某一特定问题的、明确的、有限的操作步骤序列。

算法具有五个基本特征:

特征 含义
有穷性 算法必须在有限步内结束
确定性 每一步都有确定的含义,不产生歧义
可行性 每一步都可以实际执行
输入 有零个或多个输入
输出 有一个或多个输出

3. 算法的描述方法

二级考纲要求了解算法的三种描述方式:

描述方式 特点 示例
自然语言 用日常语言描述,易懂但不严谨 “如果成绩大于等于60,输出及格”
流程图 用图形符号直观表示,逻辑清晰 椭圆、矩形、菱形等符号组合
伪代码 介于自然语言和代码之间,接近编程语言 if 条件 then 语句

考试提示:二级真题中常出现“能够实现下面流程图功能的伪代码是( )”这类题型,要求考生能将流程图翻译为伪代码或代码。

4. 程序设计的三种基本结构

结构化程序设计的核心思想是:任何程序都可以由三种基本结构组合而成。

结构 特点 对应代码
顺序结构 从上到下依次执行 普通语句序列
选择结构 根据条件选择执行路径 if-else、switch
循环结构 重复执行某段代码 for、while、do-while

这三种结构也是流程图描述的核心内容。

第二部分:程序设计语言分类

5. 语言的三大分类

二级考纲明确要求了解程序设计语言的分类及特点。

类型 特点 示例 执行方式
机器语言 由二进制 0 和 1 组成,计算机直接执行 二进制指令 直接执行,速度快
汇编语言 用助记符代替二进制指令,如 MOV、ADD 汇编指令 需汇编程序翻译后执行
高级语言 接近自然语言,易读易写,可移植性好 C++、Python、Java 需编译或解释后执行

6. 高级语言的执行方式

类型 代表语言 特点
编译型 C++、C 一次性翻译成可执行文件,运行速度快
解释型 Python 逐行解释执行,不生成可执行文件

C++ 的定位:高级语言、编译型语言。

7. 常见高级语言

语言 特点
C++ 面向对象,运行效率高,竞赛常用
Python 解释型,语法简洁,适合入门
Java 跨平台,面向对象,企业级开发
C 面向过程,底层控制强

真题示例:

高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。
A) 编辑 B) 保存 C) 调试 D) 编译
答案:D

第三部分:流程图基本符号

8. 流程图的定义

流程图是一种使用特定符号和连接线来直观表示算法、过程或系统工作流程的图示工具。它通过图形化的方式展示各步骤的顺序和逻辑关系,是程序员的“导航地图”。

9. 流程图基本符号

二级考纲要求了解流程图的概念及基本表示符号,掌握绘制流程图的方法。以下是必须掌握的符号:

符号形状 名称 用途说明
椭圆形(圆角矩形) 起止框 表示程序的开始或结束
矩形 处理框 表示赋值、计算等操作
菱形 判断框 表示条件判断,有“是/否”两条出口
平行四边形 输入/输出框 表示数据的输入或输出操作
带箭头的直线 流程线 指示程序执行的方向和顺序
小圆圈 连接符 表示流程图中不同部分的连接

记忆口诀:

椭圆起止,矩形处理;
菱形判断,平行四边形输入输出;
箭头连线指方向,圆圈连接跨页用。

真题示例:

在流程图中,菱形符号通常表示?
A) 开始/结束 B) 输入/输出 C) 判断/条件 D) 处理过程
答案:C

10. 绘制流程图的方法

绘制流程图的基本步骤:

  1. 明确流程目的:确定需要描述的流程或算法的目标和范围。
  2. 列出主要步骤:将流程的主要步骤按顺序罗列,明确每一步的操作内容。
  3. 选择合适的符号:根据每个步骤的性质,选择对应的流程图符号。
  4. 绘制流程图:按照步骤顺序,将符号连接起来,使用箭头指示流程方向。
  5. 验证和优化:检查流程图的逻辑性和完整性,确保无遗漏或错误。

第四部分:三种基本结构的流程图表示

11. 顺序结构

特点:没有任何判断和分支,从上到下依次执行。

流程图特征:

[开始] → [输入数据] → [处理数据] → [输出结果] → [结束]

对应代码:

double r, area;
cin >> r;           // 输入
area = 3.14 * r * r; // 处理
cout << area;        // 输出

考试提示:顺序结构流程图全部由矩形和平行四边形串联而成,没有菱形。判断是否为顺序结构,只需看有没有菱形判断框。

12. 选择结构

特点:包含条件判断,程序根据条件的真假选择执行不同的路径。

12.1 单分支流程图

flowchart TD
    Start(["开始"]) --> Judge{"score >= 60 ?"}
    Judge -- 是 --> Output[/cout << "及格"/]
    Judge -- 否 --> EndNode(["结束"])
    Output --> EndNode

对应的 if 语句:

if (score >= 60) {
    cout << "及格";
}

12.2 双分支流程图

flowchart TD
    Start(["开始"]) --> Judge{"x > y ?"}
    Judge -- 是 --> B["max = x"]
    Judge -- 否 --> C["max = y"]
    B --> EndNode(["结束"])
    C --> EndNode(["结束"])

对应的 if-else 语句:

if (x > y) {
    max = x;
} else {
    max = y;
}

12.3 多分支流程图

多分支由多个菱形判断框串联而成,每个分支有独立的处理框,最终汇聚到同一出口。

if (score >= 90) {
    grade = 'A';
} else if (score >= 80) {
    grade = 'B';
} else if (score >= 70) {
    grade = 'C';
} else {
    grade = 'D';
}

真题示例:

下列流程图,属于计算机的哪种程序结构?
A) 顺序结构 B) 循环结构 C) 分支结构 D) 数据结构
(图中包含菱形判断框,两条分支)
答案:C

13. 循环结构

特点:包含循环条件判断,循环体可以重复执行。

13.1 while 循环流程图

flowchart TD
    Start(["开始"]) --> Init["初始化变量"]
    Init --> Judge{"判断条件?"}
    Judge -- 是 --> Body["执行循环体"]
    Body --> Judge
    Judge -- 否 --> EndNode(["结束"])

对应的 while 代码:

int i = 1;
while (i <= 5) {
    cout << i;
    i++;
}

关键:判断条件位于循环开始之前,条件不满足则直接跳出。

13.2 do-while 循环流程图

flowchart TD
    Start(["开始"]) --> Init["初始化变量"]
    Init --> Body["执行循环体"]
    Body --> Judge{"判断条件?"}
    Judge -- 是 --> Body
    Judge -- 否 --> EndNode(["结束"])

对应的 do-while 代码:

int i = 1;
do {
    cout << i;
    i++;
} while (i <= 5);

关键:先执行一次循环体,再判断条件;循环体至少执行一次。

13.3 for 循环流程图

flowchart TD
    Start(["开始"])
    Init["初始化"]
    Judge{"判断条件?"}
    Body["执行循环体"]
    Update["更新变量"]
    EndNode(["结束"])

    Start --> Init
    Init --> Judge
    Judge -- 是 --> Body
    Body --> Update
    Update --> Judge
    Judge -- 否 --> EndNode

真题示例:

能够实现下面流程图功能的伪代码是( )。
(流程图显示:当条件判断不成立时执行语句块并重新判断,成立时继续往下)
A) if 条件判断 then 语句块
B) if 条件判断 then 什么也不做 else 语句块
C) while 条件判断 do 语句块
D) while not 条件判断 do 语句块
答案:D

14. 三种结构对比速查

结构 流程图特征 关键符号 对应代码
顺序结构 无菱形,直线串联 矩形、平行四边形 普通语句
选择结构 有菱形,有分支 菱形 if-else、switch
循环结构 有菱形,有回路 菱形 + 流程线回路 for、while、do-while

第五部分:流程图与代码的转换

15. 由流程图写代码

解题步骤:

  1. 识别起止框,确定程序开始和结束位置。
  2. 识别输入/输出框,确定 cin / cout。
  3. 识别处理框,确定赋值和计算语句。
  4. 识别判断框,确定 if 或循环条件。
  5. 识别流程线方向,确定语句顺序和嵌套关系。
  6. 按 C++ 语法写出代码。

示例:

流程图步骤:开始 → 输入 a、b → 判断 a > b? → 是输出 a,否输出 b → 结束

对应代码:

#include <iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    if (a > b) {
        cout << a;
    } else {
        cout << b;
    }
    return 0;
}

16. 由代码画流程图

解题步骤:

  1. 确定程序开始和结束。
  2. 将 cin 画为平行四边形输入框。
  3. 将赋值和计算画为矩形处理框。
  4. 将 if 条件画为菱形判断框,标“是/否”出口。
  5. 将 for / while 画为带判断框的回路。
  6. 用带箭头的流程线连接各符号。

17. 流程图与伪代码转换

伪代码是介于自然语言和编程语言之间的描述方式。常见的伪代码结构:

// 顺序结构
输入 a, b
c ← a + b
输出 c

// 选择结构
if 条件 then
    语句块
else
    语句块

// 循环结构
while 条件 do
    语句块

第六部分:二级高频真题题型与易错点

18. 选择题高频类型

题型 典型问法 解题关键
符号识别 “菱形表示什么” 判断框
结构判断 “该流程图属于哪种结构” 看有无菱形和回路
流程图转伪代码 “能实现该流程图功能的伪代码是” 判断条件和分支方向
流程图转代码 “该流程图对应的C++代码是” 逐框翻译
补全流程图 “空白处应填入什么” 根据逻辑推断
程序语言分类 “C++属于什么语言” 高级语言、编译型
算法特征 “算法必须具有什么特征” 有穷性、确定性等

19. 易错点

  1. 混淆起止框(椭圆)和处理框(矩形)。
  2. 误以为菱形是输入/输出框——菱形是判断框。
  3. 忘记 do-while 流程图是先执行后判断,while 是先判断后执行。
  4. 判断循环结构时忘记看回路——有流程线回到前面的判断框才是循环。
  5. 将 if-else 的“是/否”出口方向搞反。
  6. 伪代码 while not 条件 与 while 条件 的含义相反,要看清楚。
  7. 编译型语言和解释型语言混淆——C++ 是编译型,Python 是解释型。
  8. 流程图必须有且仅有一个开始,但可以有多个结束。
  9. 顺序结构流程图中没有菱形,有菱形一定是选择或循环。
  10. 多种结构可以嵌套,如循环里套选择,选择里套循环。

20. 真题综合示例

题目:以下流程图描述了求 1 到 n 的和的过程,请写出对应的 C++ 代码。

流程:开始 → 输入 n → sum = 0, i = 1 → 判断 i <= n? → 是:sum += i, i++ → 回到判断 → 否:输出 sum → 结束

分析:这是典型的循环结构,用 while 或 for 均可。

对应代码:

#include <iostream>
using namespace std;

int main() {
    int n, sum = 0;
    cin >> n;
    int i = 1;
    while (i <= n) {
        sum += i;
        i++;
    }
    cout << sum << endl;
    return 0;
}

或使用 for:

int sum = 0;
for (int i = 1; i <= n; i++) {
    sum += i;
}

附:考点速查表

模块 必记内容
算法特征 有穷性、确定性、可行性、输入、输出
算法描述方式 自然语言、流程图、伪代码
流程图符号 椭圆起止、矩形处理、菱形判断、平行四边形输入输出
顺序结构 无菱形,直线串联
选择结构 菱形判断,分支路径
循环结构 菱形判断 + 流程线回路
while 循环 先判断后执行
do-while 循环 先执行后判断,至少一次
语言分类 机器语言、汇编语言、高级语言
C++ 定位 高级语言、编译型
Python 定位 高级语言、解释型

复习建议:流程图部分重点记符号形状和三种结构特征,练习“看图写代码”和“看代码画图”的双向转换;语言分类部分重点记三类的特点和 C++/Python 的定位。考试中先看有没有菱形判断框,再看有没有回路,即可快速判断结构类型。