刊文精选

流程图在程序设计语言教学中的应用

来源:教育教学论坛     2019-3-8 20:38:25      点击:

梁宇恩 邹会来 戴坚锋

摘要:针对学生学习编程过程中存在的问题,在结构化编程思想的基础上,将流程图应用于程序设计语言教学之中。实践证明这种方式有助于学生理解程序设计语言中的基本控制流程,掌握自顶向下的设计方法,提高分析问题解决问题的能力。

关键词:流程图;结构化编程;程序设计语言

中图分类号:G623.58 文献标志码:A 文章編号:1674-9324(2018)44-0186-02

一、引言

程序设计语言,例如C、C#、Java等,是高职计算机类专业学生必修的基础课。学习程序设计语言的目的是能够将其作为一种工具,解决后续学习和工作中遇到的问题。然而实际情况是不少学生经过一到两个学期的学习,遇到实际问题依然束手无策。分析其中的原因,最主要就是没有解决问题的思路。通常的程序设计语言教学中,以掌握语法为主,教会学生“用”语言。但如何将语言“用”起来,也就是将程序控制结构、数据变量、语法指令有机的组合在一起去实现一个特定的功能,这往往是学生遇到的最大困难[1]。汇编语言和C语言曾广泛使用流程图描述算法思路,面对高职类学生的实际情况,本文认为流程图可以作为程序设计语言教学的辅助工具,提高学生的分析设计能力,更好地帮助学生掌握程序设计语言[2]。

二、流程图的功能和特点

流程图由若干简单的图形符号和说明组成,用以描述程序执行算法,它和结构化编程思想有关系。结构化编程思想由荷兰计算机科学家Dijkstra提出,基本思想是将要设计的程序当做一个模块,然后通过简单的规则将模块细分成子模块,直到每个子模块都可以被编码实现。流程图实际上将模块分解结果进行了图形化表达。流程图构成非常简单,主要有四种基本元素:圆形表示开始或结束;矩形方框表示处理或过程;菱形表示选择;带箭头的线段代表工作流方向。利用四种基本元素可以绘制出顺序、选择和循环结构,这样就能够描述任意复杂度的程序逻辑。绘制流程图时,遵循单入口单出口原则,避免程序逻辑发生歧义。流程图还可衍生出数据流程图、程序流程图、系统流程图、程序网络图等,本文主要讨论程序流程图。流程图的优点是结构简单、形象直观、容易理解,便于转化为编码,有众多软件工具支持流程图的绘制。流程图的缺点主要是占用篇幅大,修改不方便,如果不遵从一定规则,会带来阅读困难的问题。尽管存在缺点,但在教学过程中进行了正确取舍,就可以发挥出流程图的优势[3]。

三、流程图在教学中的应用

1.流程图设计。流程图绘制应当结合结构化编程思想,由下列4个步骤组成:(1)任何一个程序都可以用一个矩形框表示,前后加上开始和结束弧形框。(2)流程图中任意一个矩形框均可以用两个或多个矩形框代替。(3)流程图中任意一个矩形框均可以用选择结构语句和循环结构语句的流程图来代替。(4)步骤(2)、步骤(3)反复应用,直到程序设计结束[4]。上述设计流程图的过程实际上使用了结构化编程中自顶向下设计方法。考虑到流程图中需要使用三种基本程序控制结构,课程内容编排时可先简略介绍,让学生有一整体认识,在此基础上进行教学。关于引入流程图的时机放在讲解程序控制结构时较为适宜。

2.流程图的教学设计。为了使学生易于理解和使用流程图,本文将教学过程划分为三阶段:入门阶段、基础阶端和提高阶段。(1)入门阶段,入门部分配合程序设计语言顺序结构讲解。顺序结构类似于将解决一个问题的过程分解成若干个阶段,每个阶段完成问题的一部分工作。任务各阶段有先后次序之分,通常后一个阶段依赖于前一阶段的工作结果。在教学内容上可安排学生绘制新生报到流程图,学生对这类过程性任务比较熟悉,容易将自我转变为任务角色。教学方法上选用任务驱动方式,让学生分成2—3人的学习小组,以小组形式完成流程图绘制任务。小组加任务驱动方式有助于学生之间的互相学习,锻炼沟通协作能力。入门阶段教师的引导与讲解十分重要,因为学生常常将过程性任务中与解决问题无关的部分引入流程图,所以需要教师指出哪些过程细节与任务目标有关,哪些需要舍弃,并提供一些判断经验供学生参考。通过教师与任务小组的互动,使学生初步掌握过程性任务的流程图绘制方法,学会从任务细节中识别出与任务目标有关的部分。绘制顺序结构流程图形式上虽然简单,但是对学生分析问题、识别问题关键部分的能力有着不低的要求,需要配合课后作业反复练习才能有效果。(2)基础阶段,流程图基础部分结合选择和循环结构进行讲解。解决一个问题先需要判断某些条件,根据判断结果采用不同策略解决,这时使用选择结构。循环结构用于满足某些条件的情况下重复执行一些步骤的场景。基础阶段宜采用一些简单却有代表性的案例进行流程图绘制,例如绘制学生秋游报名统计表流程图。完成这个任务需要多次分解,过程如图1所示。初次设计时将要解决的问题作为一个处理进行绘制,如图1中的“打印秋游报名统计表”部分。第2次设计时,可运用顺序结构将要解决的问题分解为几个步骤,如打印表头、打印学生信息和费用、打印费用总额、打印表尾四个步骤。然后请学生观察第2次设计结果,识别出未能分解到能够编码的部分。在教师的启发下,打印学生信息和费用部分被确定需要进一步分解。第3次设计时考虑到打印多名学生的信息和费用,教师引导学生采用循环结构作为主体绘制流程图,并用选择结构来控制循环次数。基础阶段的关键是教会学生正确识别问题的本质,使用正确的流程图元素进行表达。另外一点在于掌握结构化编程思想,学会自顶向下设计方法,将问题分解至可以编程解决的程度。(3)提高阶段,在前两阶段学习的基础上,设计案例巩固提高流程图绘制技能。这个部分应该引入有一定复杂度的问题,例如经典的排序类问题作为求解目标。绘制学生熟悉的奖学金评定流程图就是一种综合度较高、适合提高阶段的案例。成绩排序是流程图绘制的核心部分,教师可分别要求用冒泡、选择或插入排序方式完成问题求解。提高阶段重点是三种程序控制结构的综合运用,教师着重引导与启发。

3.效果评价。笔者在学校信息技术系的《Java程序设计基础》课程中,将流程图作为辅助工具融入教学过程之中,进行了一些初步的探索。根据期末考试成绩和学生反馈分析,这种方式收到了较好效果,主要体现在三方面:首先初步掌握了结构化编程思想,其次加深了对程序语言的理解,最后学会了用语言解决实际问题。同时,一部分学生还不能适应自顶向下解决问题的过程,视流程图为多余,这个问题需要在以后的教学改革中进一步研究解决之道。

四、结论

流程图作为程序执行算法的图形化表达工具,有着结构简单、理解容易、代码转化便利等特点。本文依据结构化编程思想,将流程图用于程序设计语言的教学中,收到了较好效果。学生在学习程序设计语言的过程中,学会运用结构化思想规划解决问题的步骤,加深对语言本身的理解,利用程序语言解决实际问题。

参考文献:

[1]郭伟业,庞英智.模拟公司项目教学模式在“Java程序设计”课程中的应用[J].中国职业技术教育,2015,(20):76-79.

[2]梁宇恩.任务驱动教学法在C#程序设计课程教学中的应用[J].教育教学论坛,2013,(1):61-62.

[3]甘玲,张璞,李兴春.解析Java程序设计[M].北京:清华大学出版社,2006:20-63.

[4]雍俊海.Java程序设计教程[M].北京:清华大学出版社,2014:35-80.

Abstract:In view of the problems existing in the process of students' learning and programming,the flow chart is applied to the teaching of programming language on the basis of the idea of structured programming. Practice has proved that this way helps students to understand the basic control process of programming language,master the top-down design method,improve the ability to analyze and solve problems.

Key words:flow chart;structured programming;programming language


本文版权归教育教学论坛杂志社及本文作者所有,未经同意,不得转载! ——《教育教学论坛》查稿电话:0311-85178286