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. 绘制流程图的方法
绘制流程图的基本步骤:
- 明确流程目的:确定需要描述的流程或算法的目标和范围。
- 列出主要步骤:将流程的主要步骤按顺序罗列,明确每一步的操作内容。
- 选择合适的符号:根据每个步骤的性质,选择对应的流程图符号。
- 绘制流程图:按照步骤顺序,将符号连接起来,使用箭头指示流程方向。
- 验证和优化:检查流程图的逻辑性和完整性,确保无遗漏或错误。
第四部分:三种基本结构的流程图表示
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. 由流程图写代码
解题步骤:
- 识别起止框,确定程序开始和结束位置。
- 识别输入/输出框,确定
cin/cout。 - 识别处理框,确定赋值和计算语句。
- 识别判断框,确定
if或循环条件。 - 识别流程线方向,确定语句顺序和嵌套关系。
- 按 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. 由代码画流程图
解题步骤:
- 确定程序开始和结束。
- 将
cin画为平行四边形输入框。 - 将赋值和计算画为矩形处理框。
- 将
if条件画为菱形判断框,标“是/否”出口。 - 将
for/while画为带判断框的回路。 - 用带箭头的流程线连接各符号。
17. 流程图与伪代码转换
伪代码是介于自然语言和编程语言之间的描述方式。常见的伪代码结构:
// 顺序结构
输入 a, b
c ← a + b
输出 c
// 选择结构
if 条件 then
语句块
else
语句块
// 循环结构
while 条件 do
语句块
第六部分:二级高频真题题型与易错点
18. 选择题高频类型
| 题型 | 典型问法 | 解题关键 |
|---|---|---|
| 符号识别 | “菱形表示什么” | 判断框 |
| 结构判断 | “该流程图属于哪种结构” | 看有无菱形和回路 |
| 流程图转伪代码 | “能实现该流程图功能的伪代码是” | 判断条件和分支方向 |
| 流程图转代码 | “该流程图对应的C++代码是” | 逐框翻译 |
| 补全流程图 | “空白处应填入什么” | 根据逻辑推断 |
| 程序语言分类 | “C++属于什么语言” | 高级语言、编译型 |
| 算法特征 | “算法必须具有什么特征” | 有穷性、确定性等 |
19. 易错点
- 混淆起止框(椭圆)和处理框(矩形)。
- 误以为菱形是输入/输出框——菱形是判断框。
- 忘记
do-while流程图是先执行后判断,while是先判断后执行。 - 判断循环结构时忘记看回路——有流程线回到前面的判断框才是循环。
- 将
if-else的“是/否”出口方向搞反。 - 伪代码
while not 条件与while 条件的含义相反,要看清楚。 - 编译型语言和解释型语言混淆——C++ 是编译型,Python 是解释型。
- 流程图必须有且仅有一个开始,但可以有多个结束。
- 顺序结构流程图中没有菱形,有菱形一定是选择或循环。
- 多种结构可以嵌套,如循环里套选择,选择里套循环。
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 的定位。考试中先看有没有菱形判断框,再看有没有回路,即可快速判断结构类型。