1. 流程图基础:从符号到绘制技巧
第一次接触流程图时,我也被那些菱形、矩形搞得晕头转向。直到考试前两周,我才发现这玩意儿其实比背代码简单多了。流程图本质上就是用图形讲故事,把程序的执行过程画成连环画。GESP考试中最常出现的符号其实就五种:
- 开始/结束框(椭圆):就像书的封面和封底,所有流程图都以开始框开头,结束框收尾。我习惯用淡蓝色填充这两个框,视觉上更容易定位。
- 处理框(矩形):这里写程序的具体操作,比如
sum = a + b。考试时要注意框内必须用明确的操作语句,不能写模糊的"计算数据"这种描述。 - 判断框(菱形):唯一有两条出路的符号,我称之为"选择题"。里面写条件判断,比如
x > 0?,出口必须标注"是/否"或"Y/N"。 - 输入/输出框(平行四边形):长得像歪掉的矩形,表示
cin或cout操作。有个考生曾把cout<<"Hello"错写在处理框里,直接丢了2分。 - 流向线(箭头):决定故事走向的"剧情线",必须带箭头且不能交叉。遇到复杂流程时,可以用圆形连接符(像地铁换乘站)减少线条交叉。
绘制时有个实用技巧:先用铅笔在草稿纸上画对称布局。把判断框放在页面中轴线,左右分支对称展开,这样画出来的图就像展开的翅膀,阅卷老师一眼就能看清逻辑。去年有个考生在模拟考中把循环结构画成了螺旋形,虽然创意满分,但被判卷系统识别为线条交叉导致扣分。
2. 顺序结构:直线型思维的图形化表达
顺序结构就像做菜谱:先洗菜→切菜→炒菜→装盘。在GESP二级考题中,这类题目往往伪装成"数学计算题"。比如这道真题:
cpp复制int a = 3, b = 5;
int c = a * b;
cout << c + 1;
对应的流程图应该是笔直的流水线:开始框→处理框(a=3,b=5)→处理框(c=a*b)→输出框(cout)→结束框。这里容易踩的坑是遗漏变量初始化。有次模拟考试,35%的考生忘记画a=3,b=5这两个处理框,直接从c=a*b开始画,导致逻辑不完整。
建议用"汉堡包法则"检查顺序结构:上下必须有两片"面包"(开始/结束框),中间至少要有一个"肉饼"(处理框)。当看到题目中有连续的分号时,基本就是顺序结构在敲门。
3. 选择结构:岔路口的决策树
选择结构最考验逻辑表达能力,也是阅卷老师的重点扣分区。常见错误是条件对称性缺失——画了if分支却漏掉else。记住:每个菱形判断框必须有两个出口,就像每个问题都有肯定和否定两种回答。
看这个典型考题:
cpp复制if(score >= 60) {
cout << "及格";
} else {
cout << "不及格";
}
流程图应该是:开始→判断框(score≥60?)→两个输出框→结束。这里有三个关键得分点:
- 判断框内的条件要完全复制代码表达式,不能简写为"及格吗?"
- 两个输出框必须对齐排列,通常Y分支向右,N分支向下
- 所有分支最终要汇合到结束框,不能出现"断头路"
高级技巧是处理嵌套if时采用阶梯式缩进。把内层判断框相对外层向右偏移2cm,这样即使有五层嵌套也不会乱。去年有个考生用不同颜色区分嵌套层级,虽然不符合规范,但因为清晰度极高,阅卷组破例给了满分。
4. 循环结构:转圈圈的逻辑迷宫
循环结构是流程图里的贪吃蛇,处理不好就会头尾相撞。GESP二级主要考察while和for两种基本形式,核心是要明确循环三要素:初始化、条件判断、迭代语句。
以这段代码为例:
cpp复制int sum = 0;
for(int i=1; i<=10; i++) {
sum += i;
}
正确的流程图应该像摩天轮:开始→sum=0→i=1→判断框(i≤10?)→处理框(sum+=i)→i++→返回判断框。常见错误有:
- 忘记画循环变量初始化(i=1)
- 漏掉迭代语句(i++)
- 箭头指向错误(应该从i++指回判断框,而非直接指到处理框)
我发明了个"三明治检查法":把循环结构看作由判断框夹着的馅料。每次检查时遮住中间部分,确认两头都有判断框相连。如果发现某个循环体没有"面包片"包裹,肯定是结构出错了。
对于复杂的嵌套循环,建议先用虚线框标记层次。把内层循环的所有元素用虚线框包围,并标注"Loop2"之类的标签。这个方法在去年帮助我15分钟解出了那道号称"史上最难"的三重循环流程图考题。
5. 综合应用:真题拆解与避坑指南
去年真题里有道综合题考倒了60%的考生:
cpp复制int n = 5, fact = 1;
while(n > 0) {
fact *= n;
n--;
}
if(fact > 100) {
cout << "大数";
} else {
cout << "小数";
}
标准流程图应该是这样的结构:
- 顺序结构部分:开始→n=5→fact=1
- 循环结构部分:判断框(n>0?)→fact*=n→n--→返回判断
- 选择结构部分:判断框(fact>100?)→两个输出框
- 结束框
这道题的死亡陷阱在于循环结束后的fact值直接影响选择结构。很多考生画完循环就直奔结束框,完全漏掉了后面的if-else部分。我的应对策略是:看到代码中有if或while就立即在流程图里预留对应位置,像玩填字游戏先画好格子再填空。
考试时建议带把多功能尺子,一边画直线一边检查结构完整性。曾经有个考生用尺子量出两个判断框间距不等,及时发现漏画了处理框。记住:在GESP评分标准里,逻辑正确但图形歪斜只扣0.5分,而漏掉整个结构直接扣3分。
6. 十分钟快速检查法
考前最后十分钟是流程图题的黄金检查时间。我总结了一套"三查三对"口诀:
一查符号形状:
- 开始/结束必须是椭圆
- 判断必须是菱形
- 处理框不能有斜边
二查箭头流向:
- 每个符号至少一个入箭头(开始框除外)
- 每个符号至少一个出箭头(结束框除外)
- 判断框必须两个出箭头且标注Y/N
三查结构闭合:
- 所有分支必须汇合到结束框
- 循环结构要有返回箭头
- 不能有孤立的符号
对常见错误,我制作了错题贴纸本:把平时练习中的错误流程图剪下来贴在笔记本左侧,右侧写上错误原因。比如有张贴纸是漏画循环变量的初始化,旁边红笔标注:"就像没加油就想发动汽车"。这个本子在考前翻看特别管用,去年考场上至少有3道题靠它避免了重复错误。
