程序设计基本结构范文

时间:2023-07-18 17:35:30

导语:如何才能写好一篇程序设计基本结构,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

程序设计基本结构

篇1

关键词:C语言;程序设计;循环结构;教学方法

中图分类号:G642文献标识码:A

1引言

“C语言程序设计”是计算机系各专业的必修课程,属专业主干课,是一门学位课程。也是各高校部分非计算机专业开设的程序设计课程之一。本课程开设的目的是使学生掌握面向过程的程序设计的基本概念,逐步形成正确的程序设计思想,理解结构化程序设计方法;掌握程序设计的基本技术,程序设计的基本组织方法即函数(模块)程序设计;具备调试程序的能力。因为C语言功能强大,程序编写灵活,具有较强的实践性,是一门高级语言中的“低级语言”,既可以用来编写系统软件,又可以用来开发应用软件,因此对学生以后参与专业领域的应用软件的开发和使用会有极大的帮助。C语言是结构化的语言,学好C语言程序设计,能为后续课程(数据结构、编译原理、操作系统、C++、Java等)及其他程序设计课程的学习打下基础。同时,C语言程序设计也是计算机类各种考试所要求的重点课程之一。

2循环结构程序设计

结构化程序设计中包含三种基本技术:顺序结构、选择结构和循环结构。循环结构的程序设计是学生学习了结构化程序设计的前两种基本技术之后的第三种基本技术,是结构化程序设计技术中最重要也是最难的部分。这门课程一般都是学生学习程序设计的入门课程,第一次学习循环,可能难于理解“循环”的含义,在设计程序时正确使用循环也就更困难了。针对这些特点,循环结构程序设计的教学方法和教学手段也就值得探讨。

3循环结构程序设计的教学方法

3.1教学重点和难点

要想学生能够轻松理解和掌握循环结构的程序设计,首先得确定本部分内容的重点和难点。

本部分的重点主要是:(1)循环控制结构及其设计。(2)循环控制语句的应用。教学重点是循环控制语句中的while语句,只要把while语句的使用讲解清楚了,后面的for语句和do-while语句就容易多了。

本部分的难点是循环控制结构及其设计。

3.2突出教学重点与分散难点的方法

为了突出教学中的重点并分散难点,可以从三方面入手:

(1) 从分析问题的重复性入手。学生在日常的生活、学习中能看到、体会到重复这种行为。精心设计实例,给学生一个比较实际的切入点,通过教师的引导,使学生能体查、归纳“重复行为”,从而理解和掌握循环的主要特点:有规律地重复操作。在教师的启发、引导下,使学生在课堂上真正地成为“主体”,教师扮演“主导”角色。在整个过程中,紧紧抓住循环程序设计的思想,采用“自顶向下,逐步求精”的结构化程序设计方法,把重点突出出来,并把难点进行分散,使学生容易理解和接受。

(2) 难点内容,提前做好铺垫。在前面内容适当的地方安排出现循环程序,但不讲它的功能,为讲解现在的内容做好铺垫,打下伏笔。这使得学生的每一步学习都有基础,是一个循序渐进的过程,使学生的学习是在“走台阶”,而不是“三级跳”,效果很好。

(3) 在循环程序设计的应用中,可以从简单公式化的循环入手到复杂非公式化的循环的处理。讲解过程中,通过黑板进行详细分析和讲解,使学生加深学习和理解。适当的地方进行提问,教师引导学生积极参与到分析问题,解决问题的过程中,写出程序后,放到实际的环境下运行,让学生来分析程序的正确性,改正程序的错误,有利于学生理解难点、掌握重点。

3.3教学过程的设计与组织

(1) 提出问题

本部分的内容是循环程序设计,体现在两个方面,一是循环结构程序设计的算法表示;二是循环结构程序的C语言表示。循环程序设计是结构化程序设计中最难、最复杂的部分,而授课对象是初次接触程序设计和循环结构,因此循环的引入就至关重要。例如:通过引入求5!这个简单的例子,运用已经学过的顺序结构程序设计就可以实现;但是求复杂的阶乘,比如20!,任意自然数n!,用已经学过的顺序结构程序设计和选择结构程序设计就难于解决,要用简单的方法解决这样的问题,就必须使用结构化程序设计中的第三种基本技术:循环结构的程序设计。这样就轻松地引入了循环结构程序设计。在引入的过程中,要注重调动学生的积极性,采用互动教学法带动学生的积极性。

(2) 解决问题的方法及讲授新内容

在用问题引入了循环后,第一步,分析用循环控制结构求20!的算法的自然语言和流程图表示。第二步,为了实现这种循环控制行为,C语言提供了多种循环控制语句,while语句就是其中的一种,介绍while语句的一般形式和功能。第三步,讲解while循环语句的应用。在讲解的过程中,为了提高学生的学习效果,达到预期的目标,除了采用常用的教学方法和手段外,还可以采用以下一些教学方法和手段:

① 注重启发、引导学生。教师在讲解分析时,注重启发、引导学生主动分析问题、解决问题。

② 注重采用任务驱动的教学模式。通过提出问题,分析问题,引入新知识,解决问题,总结提高,一步步实现教学的目标。

③ 采用国际上惯用的解析教学法。

④ 把编写的程序放到实际环境下运行。让学生来分析程序的正确性,改正程序的错误,有利于学生掌握好重点、难点知识。

⑤ 应用现代化多媒体教学手段,有利于提高教学效率,便于学生理解。充分利用黑板和投影相结合的方式;分析过程用黑板进行教学,以便体现思维过程。

4结束语

要使学生轻松容易地理解和掌握C语言中的循环结构程序设计方法和技巧,必须在教学的所有环节上都进行认真研究和精心设计。通过对循环结构程序设计的教学,使学生提高综合应用的能力,为今后的后续课程及软件的设计和开发打下坚实的基础。

参考文献:

[1] 徐庆生.C语言程序设计[M].北京:科学普及出版社,2007.

[2] 高牧,杨志强,许兰兰,等. C/C++教学改革的探索与实践[J]. 计算机时代,2005(11).

The Design and Discussion of Programming Course of Iteration Structure Pedagogical

in C Programming Language

SUN Ying, XU Shun-qiong, LI Xing-mei

(Department of Computer Science, Chuxiong Normal University, Chuxiong 675000, China)

篇2

【关键词】程序设计 梯形图 经验法

由于可编程控制器的控制功能以程序的形式出现,所以程序设计是一个重要环节。梯形图是可编程序控制器的重要程序设计方法。一般应用程序设计可以分为经验设计法、逻辑设计法、顺序功能图设计法等。本文以工作台自动往返循环工作为例主要介绍采用经验设计法进行梯形图程序设计。

由于生产过程控制要求的复杂程度不同,可将程序按结构形式分为模块化程序和基本程序。

基本程序既可以作为独立程序控制简单的生产工艺过程,也可以作为组合模块结构中的单元程序;依据计算机程序的设计思想,基本程序的结构方式只有三种:顺序结构、条件分支结构和循环结构。

模块化程序:把一个总的控制目标程序分成多个具有明确子任务的程序模块,分别编写和调试,最后组成一个完整总任务的完整程序。这种方法称为模块化程序设计

经验设计法需要设计者掌握大量的基本程序。这些基本程序例如电动机正反转联锁控、断开延时和接通延时控制程序、警灯闪烁控制程序等。

我们以工作台自动往返循环工作来进行说明。

1 设计要求

(1)自动循环工作。

(2)点动控制。

(3)单循环运行,即工作台前进、后退一次循环后停在原位。

(4)8次循环计数控制。即工作台前进、后退为一个循环,循环8次后自动停在原位。

2 分析控制要求

(1)工作台前进与后退是通过电动机正反转来控制的,所以要用电动机正反转这一基本程序;

(2)工作台工作方式有点动控制和自动控制两种方式,可以采用程序(软件的方法)实现两种运行方式的转换。

(3)工作台有单循环和多次循环两种工作状态,可以采用控制开关来选择。

(4)多次循环因要限定循环次数,所以选择计数器来进行控制。

3 分配I/O点

PLC控制系统I/O分配,依据生产流水线从前到后,I/O点数由小到大,尽可能把一个系统、设备或部件的I/O信号集中编制,以利于维护。表1为本例的I/O分配地址表。

4 控制程序设计

4.1 基本控制环节的程序

本控制要求的对象是工作台,工作方式有前进和后退。电动机正转时,使工作台前进,电动机反转时,使工作台后退,因此基本控制程序是正反转控制程序。

4.2 实现自动往返功能的程序设计

工作台前进过程中撞块压合SQ2后,SQ2动作,X6常闭触点应先断开Y0线圈,使工作台停止前进,后X6的常开触点再接通Y1线圈,使工作台后退,完成工作台由前进转为后退的动作,同理,撞块压合SQ1后,工作成由后退转为前进的动作,因此在图(1)中加入二个限位开关,如图(2)所示。

4.3 实现点动控制功能和单循环控制功能程序设计

根据点动的概念可知,如果在上述梯形图中解除自锁,就能实现点动控。所以利用开关SA1来选择点动和自动控制。SA1闭合后实现点动,SA1断开,实现自动控制。

单循环工作方式是指启动按钮按下后,工作台由原位前进,当撞块压合SQ2后由工作台前进转为后退,后退到原位后撞块压合SQ1后,使工作台停在原位。如果撞块压合SQ1后,则X5常闭触点断开,使Y1线圈失电,工作台停止后退。在X5常开触点闭合后,只要不使Y0线圈得电,工作台就不会前进,这样便实现了单循环控制。如图(3)所示。

根据上面这个例子,我总结出经验法设计梯形图的一般规律:

(1)根据控制要求,设计出基本程序;

(2)逐步补充完善程序;使其能完生满足控制要求;

(3)设置必要的联锁保护程序。

PLC控制系统的程序设计是一个步骤有序的系统工程,要想做到熟练自如,需要反复实践和练习。设计的每一步,都要依靠平时所积累的程序设计经验来设计程序。

参考文献

[1]张梦欣.可编程序控制器及其应用[M].中国劳动社会保障出版社,2006.

篇3

关键词:算法程序 数据结构

随着世界步入信息化和网络化,以及计算机的普及,计算机教育随即也变得异常重要,如何让中国培养出更多的IT人才,让中国成为真正意义上的电子信息化与网络一体化的国家,这也成为我们国家面临的一项艰巨任务,因此对广大学生的计算机教育也必须更加重视起来,计算机教育应该逐渐面向大众化,不断提高计算机在我国的普及程度,也是我们强国的必经之路。

程序设计教学长期以来一直是中职计算机教学的重点和难点之一,如何学好程序设计成为广大学生最为关心的问题,如何教好程序设计也成为广大老师长期不断探讨的问题,现在我已自身的学习经验和体会浅谈一下学习的方法。

实际上如果我们要学好程序设计,算法,数据结构,程序设计方法和语言这四个方面是一个程序设计人员必备的知识,很多人在学习程序设计的过程中很茫然,不知道怎么进行或者说不知道怎么去写语句,其实我们出现的问题无非就是没掌握上面四个必备的知识,现在我的提议是以算法,数据结构,程序设计方法和语言这四个方面板块为基础,分块教学,各个击破,这样也就能够很好的学好程序设计了。

算法:算法可以说是程序的灵魂,广义地说,算法是为解决一个问题而采取的方法和步骤。设计出高质量的算法,并研究算法所耗费的计算资源与问题规模之间的函数关系。算法设计与算法分析是不可分割的一个整体。按照算法所处理的对象进行分类,算法设计与分析主要有数值算法和非数值算法两大领域。按照计算方式进行分类,则可分为串行算法和并行算法。算法设计的任务是对各类具体的问题设计高质量的算法,以及研究设计算法的一般规律和方法。

数据结构:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。

程序设计方法: 程序设计方法学是讨论程序的性质以及程序设计的理论和方法的一门学科[1], 是研究和构造程序的过程的学问,是研究关于问题的分析,环境的模拟,概念的获取,需求定义的描述, 以及把这种描述变换细化和编码成机器可以接受的表示的一般的方法。

用以指导程序设计各阶段工作的原理和原则,以及依此提出的设计技术。有时也指研究这些原理、原则和技术的学科。程序设计方法学的目标是能设计出可靠、易读而且代价合理的程序。程序设计方法学包括程序理论、研制技术、支援环境、工程规范和自动程序设计等课题,使程序设计更加科学化和工程化。其基本内容是:结构程序设计;程序理论在程序设计技术中的应用,以及规格说明和变换技术。程序理论与程序设计方法学的发展密切相关,它丰富了程序人员的思维方法,促进了程序设计技术的发展。其研究的主要内容为结构化程序设计,数据抽象与模块化程序设计,程序正确性证明,面向对象的程序设计方法等。

语言:程序设计语言,用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。程序设计语言是人们指挥计算机的工具。它是一种工程语言,由字,词,语法规则构成的指令系统,高级语言提供了常用的数据描述核对数据操作规则的描述,程序设计就是根据特定的问题,使用某种程序设计语言,设计出计算机执行的指令序列。发展趋势

程序设计语言是软件的重要方面。它的发展趋势是模块化、简明性和形式化。

①模块化。不仅语言具有模块成分,程序由模块组成,而且语言本身的结构也是模块化的。

②简明性。涉及的基本概念不多,成分简单,结构清晰,易学易用。

篇4

【关键词】程序设计课程 计算思维

学习程序设计,要注重计算思维的渗透与养成。计算思维是基于数与形的逻辑关系,来探讨问题求解的过程。在程序设计课程教学中,如何从教学方法创新上,来强调计算思维,来引导学生从计算思维中来洞晓和理解程序设计的真谛。为此,本文将结合C语言教学实际,通过引入Raptor流程可视化软件,来创新程序设计课程教学模式,激发学生的计算思维,提升教学实效。

1 程序设计课程对计算思维的体现

在程序设计课程教学实践中,语法规则是体现程序设计思想与方法的具体内容,也是引导学生运用程序设计来解决问题的有效途径。但对于学生而言,程序语法在后续的学习中,因抽象性过强而容易陷入迷惑。为此,利用“Raptor”可视化程序设计流程软件,将程序设计的“思想”与“方法”导入到流程图中,引导学生从问题的求解思路砝斫庥锓ǎ帮助学生从中激发学习热情,解决设计难题。突出计算思维的渗透,主要从三方面来体现。一是强调学生对程序设计基本知识的掌握,特别是对于相对繁琐的程序,从基本概念的掌握学习中,来理解程序设计的思想与方法,学会调试程序;二是注重程序对问题的求解能力,程序设计的目标在于解决问题,而问题的呈现是以抽象化程序代码形式来表现,因此,要注重对数学模型、算法的优化学习;三是注重创新能力的培养,特别是突出计算思维能力,要从算法思维多样化上来引导学生多实践,多感悟。

2 Raptor可视化软件与程序设计计算思维的协同运用

2.1 明确Raptor的流程图特色

Raptor作为可视化流程图工具,其特色表现在三点。一是对于各类图形符号具有可执行的流程图,可以实现对程序设计语法的直观呈现。二是在操作上简便、快捷,特别是通过拖拽方式对不同图形符号进行位置优化,以形成完整的流程图;三是在设计思维上便于掌握和理解。另外,Raptor还能够提供执行步骤计算与统计,为算法分析、优化提供参考。

2.2 Raptor在算法设计中的应用

计算思维在程序设计中的运用,要遵循“发现问题、分析问题、寻求解决思路、优化设计方案”等流程,并从中来强化计算思维的养成。根据《大学计算机基础课程教学基本要求》,在引入程序设计教学与Raptor流程软件时,要遵循教学内容的渐进性,注重计算思维的连贯性,特别是对于新生,由于对程序设计学习好奇心强,要在案例选择上贴近学生实际,便于学生从中掌握程序设计的算法思路。以“猜数游戏”为例,对于20以内的整数,计算机随机给出,让学生进行猜想,正确显示“Right”,错误显示“Wrong”。在程序设计的算法分析上,一要明确猜数的功能,利用Random随机函数功能来优化程序结构,便于学生操作;二要对所给出的数字进行判断,利用Raptor嵌入式选择结构来判定是大还是小;三要对程序的交互设计,利用循环结构来设计程序的连贯性,直到猜出正确数字为止;四要进行“非数字符号”判断及处理;五要对猜测次数进行限定,利用Raptor嵌套循环结构来实现最大次数限定;六要对猜测过程数据进行存储,利用数组知识来完成;七要对猜测的数字进行二分处理,利用二分查找方法来完成。

当然,在选择程序设计任务时,结合学生的程序认知能力和水平,对程序设计实践要进行层次划分,让学生结合自我能力来完成不同的设计题目。如鸡兔同笼问题、判定闰年的算法,100以内的奇偶数之和,水仙花数、出售金鱼等算法题,还有一些难度高的如抓肇事司机,打印等腰三角形,字母出现频率统计等。通过对不同算法程序设计实践知识的运用,让学生从问题的抽象思维到程序设计的基本流程中,在倡导多样化算法思维实践与锻炼中,实现对不同问题的不同理解与运用,来分析不同解法的优缺点,来不断改进和完善程序设计。

2.3 注重教学方法的创新

程序设计课程教学方法的运用,与学生计算思维的培养是相关的,对于教学法的创新,需要从课堂知识讲授、动手设计程序、课下教学辅导等方面来综合。借助于Raptor可视化设计环境,其支持Novice、Intermedia和Object Oriented三种模式,分别为初级程序设计、中级程序设计和面向UML(统一建模语言)对象的程序设计,可以实现多数基本程序设计与算法设计的编程需要。为了对Raptor进行教学方法的创新与验证,以1000以内的完全数算法设计为例,该程序设计基本上分为9个步骤。如第一步为Loop循环程序,将n从2到1000进行调用,并进行判断是否大于1000;第二步当n小于1000时,将s作为因子的和;第三步以变量j进行Loop循环设计,当j从2到n/2时,进行取值判定;……如此以来,对于本算法的程序设计,在系统执行与运算上,需要进行百万次运算比较,增加了运算成本。通过对本算法的分析,求解1000以内的完全数具有明显的步骤显示性,可以将之应有到Raptor流程图设计中,来分析其算法的复杂度,进而可以估算出本程序的运算次数达到1124955.5次。在此基础上,通过引入欧拉完全数获得公式,当满足条件2P-1时判定为质数,则(2P-1)×2P-1的结果即是完全数。对上述算法程序设计进行优化,可以在相同的数据范围内,只需要执行252次算法表达式,即可得到相同的结果,而与之前的算法相比,其计算效率提升近4000倍。由此可见,对于一般的程序设计来说,其复杂性可以通过Raptor流程图设计进行检验和分析,并从计算思维上利用可视化软件来实现改进和优化,在这个过程中,学生可以从算法复杂性估算、验证和优化中来激活计算思维,来提升计算思维能力。

3 结语

利用Raptor可视化程序设计工具与程序设计课程的融合,便于将抽象的程序设计教学进行可视化呈现,突出了教学直观性,引导学生辨析程序设计的优缺点,克服程序设计的迷惑与恐惧,增强了学生的学习兴趣。Raptor可视化工具的运用,在激发学生程序设计计算思维上发挥了积极作用,一方面利用流程图来模拟程序设计,另一方面从问题的提出、求解、探讨、设计中来实现编程知识的内化,强调学生计算思维的培养,提升学生的编程水平。

参考文献

[1]刘琼,史诺,Tran Van Cuong.基于计算思维视角的程序设计教学改革研究[J].自动化与仪器仪表,2015(12).

[2]杨飞,陈浩强,刘方.基于计算思维的医学计算机基础教学探索[J].中国继续医学教育,2016(24).

篇5

1)计算机程序设计类课程体系设置不够合理

目前,不少高校计算机专业程序设计类课程的设置,大一新生一进校,第一学期就开设C语言程序设计,或者C++程序设计,其理由是认为学生在中学阶段进行过信息技术教育和简单的程序设计基础训练。而结果呢,由于中学阶段的信息技术教育在很多地区特别是农村地区得不到重视,或者没有全面的开展实施,学生刚入大学时对计算机的认识和理解不够深入,就进入了C语言或者C++语言程序设计的学习,其教学效果很不理想。因此,学生对后续课程如《数据结构》、《Java程序设计》等课程的学习也将受到很大影响,显得很吃力,而且学习效果也比较差。

2)教育理念和教学方式不够恰当

程序设计类课程的教学,如C语言程序设计或者C++程序设计,很多教师注重基本概念和语言的语法规则的教学,在相应的课程实验中也只是对基本语法的训练,而忽略了对学生分析问题的方法、思想的培养,学生的创新能力不强。因此,学生在学完一门程序设计类课程后,往往感觉到能阅读程序,能读懂程序,能理解别人写的程序,可让自己动手来编写一个稍微复杂一点的程序,却显得很茫然,无从下手。

3)教学内容的组织和安排不够符合学生的认知规律

学生对程序设计类课程的学习,很大一部分同学是:翻开教材,课本中的程序个个都会,能看明白;闭上书,自己来重写一下这些程序,错误百出。其原因还是由于教师在教学过程中没有把握住学生的认知规律,学生对课程知识理解不够牢固[2-3]。如《C语言程序设计》课程的教学过程中,指针这一部分知识是安排在教学内容的靠后章节讲授,学时短,应用少,但指针却是这门课程的重点,后续课程中的应用很多,学生对这一知识掌握不好,势必影响后续《数据结构》等课程的学习效果。

4)教材建设缺乏针对性,系统性

目前,很多普通高校计算机专业都还没有编写适合自己学生的教材,基本上都是使用高校计算机专业规划系列教材,而程序设计类课程的教材很多,每本教材都有作者自己的内容安排和章节设计方案,而且教材的选用也不固定,不同的授课教师常会选用不同的教材,这样往往会有在程序设计类课程群的教材使用中,出现知识点和讲授内容的重复、教材的难度与学生的知识水平不符等问题,教材建设针对性和系统性差。

2计算机程序设计类课程教学改革方法及措施

1)调整计算机程序设计类课程体系

针对在现行的课程体系中,学生由于C语言或者C++程序设计的学习效果不理想,而导致对后续课程的学习受到很大的影响,应将计算机专业程序设计类课程教学体系和课程设置进行调整。在大一第一学期开设《计算机导论》课程,目的是让学生对计算机学科和计算机领域的研究内容有初步的认识,了解并掌握如数据在计算机中的存储与表示、计算机工作原理、计算机基础知识,计算机硬件系统,计算机软件系统,多媒体技术基础,通信与网络基础等方面的知识。[4]在此基础之上,大一第二学期开设《程序设计基础》课程,讲授内容可以是C语言程序设计或C++程序设计,目的是进行程序逻辑训练,让学生掌握程序的基本结构和程序调试基本技能。在学生掌握了基本的程序设计基础之后,再开设《高级程序设计技术》课程,重在培养学生程序设计方法和思想,其教学内容是程序设计中的一些高级处理技术,如数据类型、指针的高级应用,文件的操作,图形界面与动画设计,键盘与鼠标操作,以及一些典型算法应用。在学生掌握了程序设计能力和程序设计思想方法基础上,再先后开设《数据结构》、《Java程序设计》课程。《数据结构》课程是培养学生根据实际问题的要求有效地组织、存储、处理数据的能力;《Java程序设计》贯穿面向对象程序设计新理念,让学生掌握面向对象程序设计思想和技术。在高年级,针对不同的专业方向,还可开设VC++、C#、LINX等程序设计类选修课程,提高学生的编程水平和实践能力,以满足社会对软件人才的不同需求。这样,就形成了“基础训练+方法培养+提高能力+拓展层面+实践应用”的程序设计教学新模式和程序设计类课程新体系。

2)改革教育理念和教育教学方式

程序设计类课程的课堂理论教学中,采用案例教学法可以取得较好的教学效果,可将一个较复杂的项目分解到各章节去讲授介绍。如在《程序设计基础》课程教学过程中,我们使用了一个学生成绩管理程序项目案例,在讲授数组这一部分知识时,就可以将这个案例引入进来,介绍为什么要使用数组来存储多个学生的成绩,要对学生成绩排序应该怎么办;当课程进行到函数这一章时,引入了案例中的模块设计思路,介绍为什么要将项目分解为成绩录入、成绩排序、成绩查找、成绩统计等多个模块,模块之间如何去调用;当课程继续进行到结构体这一章时,让学生分析理解案例中,学生的信息不仅包含成绩,还包含姓名、学号时应该怎样处理;讲授到文件这一章时,让学生理解要将案例中的学生成绩等信息存储到一个文件中去,怎样去实现。这样,通过这一个完整的案例贯穿到整个课程的学习,不仅能使学生掌握课程中的基本知识,也能让学生直观的感受到一个复杂项目的设计过程。

3)改善教学内容的组织和安排

在程序设计类课程的教学过程中,我们将教学内容进行了调整和重新组织。在《程序设计基础》课程的教学过程中,将指针这一部分知识分散到各个章节去讲授,在讲到变量定义时,就引入地址和指针的概念,讲到数组和函数部分时,将指针的应用也同时在案例中进行讲授,这样,同学们也很容易接受和消化理解。在《高级程序设计技术》课程教学中,不讲授语言的基本知识,只讲授指针、文件、图形界面、动画、键盘、鼠标等的高级应用操作和设计。《数据结构》课程中,讲授各种抽象数据类型的定义,及相应的算法设计。在《Java程序设计》课程教学中,重在培养学生面向对象程序设计思想和编程技术,对教材中的基础知识部分如常量、变量、数据类型、数组等进行略讲或不讲,只是在应用中进行简单介绍该注意的问题,这样,就可以将更多地学时放在对学生面向对象编程思想的培养上。

4)加强课程和教材建设

在程序设计类课程群教材建设方面,应该有区别的选取具有系统性的、适合自己学生水平的高质量教材,或者课程群相关教师合作编写出版教材或讲义,这不仅使课程群中的课程教学内容具有系统性,也适合自己学生的认知水平,具有较强的针对性,同时,授课教师也能熟练驾驭教材和授课内容。近年来,我校计算机专业程序设计类课程群教师编写出版了《程序设计基础》、《数据结构》教材和相配套的习题册,教学效果有了明显提高。

3结束语

篇6

关键词 程序设计教学 C语言 C++ Visual C++.NET

1 引言

笔者多年来一直在高校从事计算机科学技术的教学和研究工作,在长期的实践中深刻认识到,计算机程序设计是计算机专业的基础课,熟练掌握计算机程序设计也是学生将来从事计算机技术应用研究所应具备的基本素质。然而,程序设计技术水平的提高,仅仅靠一两门程序设计课程是不够的。只有经历了计算模型与算法理论、若干语言(含微程序设计和汇编语言程序设计)的程序设计、程序设计方法学、程序理论与软件开发方法学、软件工程以及其他相关课程的学习以后,并经过大量实践,才能真正大幅度、整体性地提高程序设计水平。我们在这里所讨论的面向对象程序设计,是在学习了某种高级语言(如:C语言或Pascal语言)之后所要学习的一门课程。为了提高面向对象程序设计的教学水平和培养学生的程序设计能力,既要考虑计算机软件设计发展的方向和需要,又要重视采用科学、合理和先进的教学模式,并实施相应的教学内容和教学方法。下面针对这些问题谈谈笔者的看法。

2 充分认识面向对象程序设计的特点

随着程序设计学科的发展,程序设计思想经历了从简单的顺序计算到结构化的程序设计,再到面向对象的程序设计的发展过程,形成了一整套的思想理论和设计方法。目前看来,面向对象程序设计方法比较接近人们表达事物和解决问题的思维方法,其特点如下。

(1)具有静态属性和动态行为的对象与客观世界的实体比较相象,面向对象的程序能够比较自然地模拟客观世界,从而使得解空间与问题空间在结构上尽可能一致。

(2)应用面向对象技术来分析、设计和实现软件系统的过程与人们认识客观世界、解决实际问题的过程比较一致。

(3)对象的封装性,降低了程序的复杂性;对象的继承性,增加了程序设计的可重复使用性;对象的多样性,增强了程序设计的灵活性。由此可以明显提高软件开发与维护的效率,降低软件的总成本。

应用这些特点,人们在程序设计时首先要考虑系统有哪些需要处理的“数据”或者“对象”,进一步分析这些对象包含了哪些信息,以及处理这些信息所需要的方法。也就是说,找出对象、正确地描述对象、分析对象与对象之间的关系以及采用计算机语言来构建系统等工作,这是面向对象程序的分析与设计的方法。

近年来,面向对象的技术越来越受到人们的重视,对它的应用和研究遍及计算机软件和硬件的各个领域,国内高校普遍开设了面向对象程序设计之类的课程。

3 明确选择属于主流方向的程序设计语言

面向对象程序设计语言很多,在IT行业中最为流行的如:C++、Java和Delphi等语言,而我们的教学中选择了C++,其理由如下。

(1)C语言成为程序设计入门的主导语言。由于C语言在当今系统软件和部分应用软件的开发中具有实用性强的特点,又与硬件和程序设计环境底层的联系紧密,所以当学生具备了一定的数学基础和计算机操作实验基础后,首先认可在某种计算模型(如随机存储计算模型)和软件技术(如编译技术)的支持下,通过C语言的各种基本成分及其功能的了解,学习如何组合各种语言成分来编制完成某项计算的程序,然后完成对某些计算方法和算法的具体实现,从中体会计算机在处理大量计算问题时如何从过程的角度完成具体计算,从而为学习其他计算机基础课程打好基础。

(2)C++与C语言有不可分割的亲情关系。C++是在C语言的基础上演变而来的一种程序设计语言,它不是简单地对C语言作了某些改进,而是在C语言成功的基础上进行了一场革命。C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译及连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点,因而它可以定义为不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。在C++教学中,重点介绍有关面向对象的基本概念、基本方法和基本技术,重点介绍两种语言之间的不同之处,从而实现了程序设计思想、方法和技术从面向过程平稳过渡到变为面向对象,减小了C++的学习难度。

(3)C++可以很容易延伸到其他语言。与C++接近的有Java语言和C#(C Sharp)语言,它们的基本语句大致相同,其功能主要是开发B/S结构的分布式系统。学习这些语言的时候,在C++语言的基础上,从语言理论(只引用结论而不展开论述)和语言比较学的角度出发,放弃语言的共性,重点学习对应语言的个性,这样达到事半功倍的效果。同时引出由于程序设计方法和技术的发展以及高级语言进一步发展带来的需要在程序设计语言中解决的问题,如组件、网页以及通信等应用方面的设计,向学生适当展示高级语言与程序设计广阔的天地,为后续相关课程埋下伏笔。

4 注重提高面向对象的程序设计水平

在引导学生从面向过程程序设计到面向对象程序设计的转变过程中,对于面向对象的一些基本概念(如类、对象、封装、继承和多态),通过同现实生活的事物相对比,学生还是很容易理解的。但是,如何将这些概念应用到面向对象程序设计中,刚开始对于学生来说还是有一定的难度。为了克服这个难题,我们在C++语言的教学中注重了以下几方面内容。

(1)从程序设计的角度理解面向对象的基本概念。例如对象的封装性,我们可以认为是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制。.封装可被理解为是一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问。对包装器内部代码与数据的访问通过一个明确定义的接口来控制。封装代码的好处是每个人都知道怎样访问代码,而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用。在面向对象的程序设计中,最基本的封装单元是类,一个类定义了由一组对象所共享的行为(数据和代码)。一个类的每个对象均包含它所定义的结构与行为,这些对象就好像是一个模子铸造出来的一样,所以对象也叫做类的实例。对于类的封装程度,也是有选择的。类提供关键字public、protected 和private,用于声明哪些数据和函数是公有的、受保护的或者是私有的,用以控制类的封装程度,公有的数据和函数公开必须要让外界知道的内容,而隐藏的是私有的一切内容。对于对象的继承性,是指一个对象从另一个对象中获得属性的过程,它支持按层次分类的概念。如果不使用层次的概念,每个对象需要明确定义各自的全部特征。通过层次分类方式,一个对象只需要在它的类中定义属于它的个性,然后从父类中继承它的共性。因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例。当然,类的继承方式,C++提供了公有和私有的两种选择。

(2)培养面向对象技术分析的抽象思维。抽象是程序设计的基本要素,程序设计者通过抽象描述来实现软件系统。抽象描述的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易实现的块。例如,一个计算机系统是一个独立的对象,而在计算机系统内部由几个子系统组成:显示器、键盘、硬盘驱动器、DVD-ROM、软盘、音响等,这些子系统每个又由专门的部件组成。在程序设计中,其中抽象是自顶向下地逐步求精和模块化。自顶向下地逐步求精是指首先要对所设计的系统有一个全面的理解,其次从顶层开始连续地逐层向下分解,直到系统的所有模块都被分解为一条条的详细指令时为止。模块化是指把一个大的程序按照一定的原则划分为若干个相对独立但又相互关联的实体,这些实体就是我们所面向的对象,它们用类来描述定义。

(3)训练面向对象设计的逻辑思维。程序设计的过程也就是对学生的思维进行训练的过程。在许多常规学科的日常教学中我们不难发现这样一个现象,不少学生的思维常常处于混乱的状态。写起文章来前言不搭后语,令人不知所云;解起数学题来步骤混乱,搞不清因果关系。这些都是缺乏逻辑思维训练的结果。程序设计的训练不仅可以让学生养成良好的程序设计习惯,而且可以有效地培养学生思维的条理性和逻辑性。

(4)帮助学生树立系统工程观点。在计算机行业中,软件的设计已经用工程的观念来进行管理。软件设计不再被认为是手工作坊里的个体劳动,而是被当作一项系统工程。软件工程的复杂程度不低于甚至高于诸如建筑工程等其他行业的工程。随着社会信息化进程的不断加速,计算机应用走进各行各业是大势所趋,社会需要大量的计算机高等人才,从而对我们的计算机教育提出了更高要求。我们知道,程序设计是计算机专业的基础,应该从一开始使学生养成一个好习惯,树立正确的软件工程观点。这样做不仅可以为学生将来从事计算机应用打下良好的基础,而且有利于提高学生统筹全局、协调关系的基本能力。

5 大力强化面向对象的可视化程序设计方法

目前,程序设计的观念发生了显著变化,可视化(Visual)技术广泛用于各种程序设计过程,就拿C++来说,就有C++ Builder和Visual C++不同的可视化程序设计语言。这些可视化语言,它们以其图形化的编程方式将面向对象技术的特性完美地体现出来,使得开发软件这一原本枯燥、难以理解的工作变得轻松快捷。作为专业人员不懂得可视化编程技术将无法在竞争激烈的计算机行业中立足,作为计算机学科的教师不传授可视化编程技术将难以满足学生强烈的求知欲望。

从整个IT产业的软件市场来讲,如果要开发高性能的Windows或万维网(WWW)应用程序,Visual C++是一种效率较高的开发工具,几乎所有世界级的软件都是使用Visual C++开发系统完成的。在2002年初,微软公司又推出了Visual C++的最新版本――Visual C++.NET,它继承了以往Visual C++各版本的优点,增加了许多新的特性,使得开发的能力更强、开发的效率更高,深受业内人士青睐,所以我们选择了Visual C++.NET作为可视化程序设计语言。

在学习掌握C++语言的基础上,讲授Visual C++.NET需要重点突出以下内容。

(1)MFC(Microsoft Foundation Class,微软基本类库)。MFC是微软公司为Windows程序员提供的一个面向对象的Windows编程接口,使用它进行Windows应用程序开发具有很大的优越性。首先,MFC提供了一个标准化的结构,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是“站在巨人肩膀上”,充分利用Microsoft开发人员多年开发Windows程序的经验,并可以将这些经验融入到用户自己开发的应用程序中去。我们知道,虽然程序设计者要编写的程序在功能上是千差万别的,但从本质上来讲,都可以归纳为用户交互界面的设计、输入输出文件的操作、多媒体技术的应用以及数据库的访问等一些最常用的技术。这一点正是微软提供MFC类库的最重要原因,在这个类库中包含了一百多个程序开发过程中最常用到的类。在进行程序设计的时候,如果类库中的某个类具有我们所需要的功能,这时我们只要简单地引用该类产生对应对象,然后通过对象调用有关方法就可以了。我们还可以利用面向对象技术中很重要的“继承”方法从类库中的已有类派生出我们自己的类,该类继承了父类的特性和功能,实现了代码重用,并在此基础上还可以根据自己需要加上所需的特性和方法,从而可以快速设计出一个更专业的、功能更强大的类。

(2)消息处理机制。Windows操作系统环境下运行的交互式应用程序,不论采用那一种开发工具,它都具有以消息为基础、由事件驱动的运行机制。事件是外部强加于应用程序的操作动作,它们有可能来自系统,也有可能来自用户。操作系统将捕捉到的事件,按事件的类型和来源采用相应的数据结构描述事件,这种形式称为消息。操作系统将事件翻译成消息之后,接着将消息分发到消息队列中,等待应用程序索取并处理。在Visual C++.NET中,消息可分为窗口消息、命令消息、控件消息和交互对象更新消息,这些不同类型的消息各自都有对应的处理方式。熟悉消息的处理方式和灵活应用消息,对于学生设计交互式应用程序至关重要,因为设计的大多数时间是充分利用各种消息,编写它们对应的处理函数。如果忽视了消息处理机制内容,学生编程序或者无从下手,或者功能简单。

(3)主要应用程序类型的程序结构。Visual C++.NET提供了良好的开发应用程序向导,在向导的指引下,可以自动生成单文档、多文档、对话框和多顶级文档等四种标准类型的应用程序结构,对应结构都是由MFC中的基类派生的类组成的。在教学过程中,深入剖析这四种应用程序结构,有助于提高学生的软件开发能力。例如多文档应用程序结构目前使用越来越普遍,人们熟悉的Microsoft公司的Office系列产品以及Visual系列产品都是典型的多文档应用程序。这种多文档界面具有多窗口的特点,因而人们可以在一个程序中使用多个子窗口来实现不同数据的浏览查看。一般情况下,这四种结构可以满足绝大多数用户的要求,但有时用户也可以通过重载一些函数来修改其缺省的风格,从而在此结构基础上设计加工具有自己个性的应用程序。

(4)对话框的数据交换机制。对话框是应用程序的主要交互方式,它作为一种容器,包含了用于输入输出信息和控制操作的控件,并且大多数控件都有对应的内存变量。Visual C++.NET对于实现控件和变量之间的数据交换有自己的一套独特机制,熟悉这种机制有助于学生深刻理解输入输出数据的来龙去脉。

以上内容如果让学生自学是有一定的难度,所以希望老师重点讲解这些内容,以便学生自学绘图、数据库操作和网络编程等有关专题技术。

6 结束语

目前,计算机程序设计方法在不断地更新,当我们讲授面向对象的程序设计方法时,面向组件和面向服务的新方法就已经产生了。在这种情况下,是不是说面向对象的程序设计方法过时?我认为并不见得过时。就像我们应用面向对象的设计方法时还得应用面向过程的设计方法(如设计消息处理函数)一样,面向组件和面向服务的新方法是在面向对象的基础上发展产生的,服务是组件的容器,组件是对象的容器,最基本的内核还是对象,只不过从软件体系结构的角度来讲,服务和组件相对于对象来说,是形成体系结构的更大力度的结构元素。所以说,讲授好面向对象程序设计方法,是为将来学习面向组件和面向服务的程序设计方法打基础。

参考文献

[1] 谭浩强.C程序设计(第二版)[M].清华大学出版社,2001,8.

[2] 郑莉,董渊.C++语言程序设计(第二版)[M].清华大学出版社,2002,1.

篇7

关键字:“提问-引导-探究性” 程序设计 循环语句 网络教学资源 程序优化

一 引言

(一)问题的提出

由于学生刚接触程序设计,很难把数学知识融入到循环结构的运用中,通常在学习中对书本上提供的程序容易理解,但只要把条件和要求略加变更或者在独立解决一些实际问题,这时学生表现为应变能力低,编程实现也就有点困难。

(二)解决问题的思路

思维是活跃的,程序是变化的,程序设计不能僵化于一种讲授模式,重在“启发引导”,就是呈现层次分明的“提问”内容,再结合问题的具体实际,因势利导,最终“引导”学生自己来“探究”完成任务。实践证明,充分运用“提问-引导-探究性”教学模式来加强程序设计教学中的引导,是提高程序设计能力与解决实际问题的应变能力的有效途径。

二 实践

在课程改革和信息技术与学科课堂整合的今天,教师是教学资源的提供者、研究探索的引导者。除了引导式的展示不同阶段学生思考的不同问题、提供必要的多媒体信息资源之外,还要指导学生依托信息技术所提供的丰富网络教学资源进行研究、讨论和发表见解的,拓展式、开放性的学习。在循环结构的教学中,我充分运用“提问-引导-探究性”的教学模式,循序渐进地提出层次性的问题,从而实现引导变通,这时,师生一起进入"聊天室"进行知识问答、交流谈心、专题探讨等活动(这种聊天式的讨论本身就是一种学习活动)。学生在交流探讨的过程中发展思维,学习新知,培养技能,提高汉字输入速度。具体实施如下:

(一)改变语句中的变量,加强语句的理解与应用

在程序设计的初始阶段,学生对某些语句的功能还不甚了解的实际,求和求积等基本问题入手,在及时纠正初编程序时所出现的语法错误和逻辑错误的基础上,引导对已编程序的某些语句或语句中的某些变量作力所能及的变通,以加强对语句的理解与应用的基本功。

呈现“求S=1+2+…+50”的例子:

Program cbh1;

var

t,s:integer;

Begin

s:=0;

for t:=1 to 50 do

s:=s+t;

writeln('S=',s);

readln

End.

要求学生关注以下三个问题:

1、循环中的循环变量是什么,其初值、终值分别为多少?

2、放累加和的变量是什么?每次的累加项是什么?

3、请注意累加项和累加和的值是如何变化的。

学生上机调试、分组讨论、结合网络资源,师生问答等方式来完成。学生解答这三个问题的过程,其实是对所学的变量、循环等概念的进一步理解、说明和归纳的思维过程。但并不意味着学生对程序的每个语句的功能清楚了。为了加深对赋值语句和循环语句的执行过程的理解,在这一简单程序基础上可引导学生做以下变化练习:

1、S =1+1/2+1/3+……+1/50

2、S =20 +21 +22 +……+210

3、S =1×2+2×3+3×4+……+99×100

4、S =10!=10*9*8*……*2*1

这种一题多变,一例多用的练习使学生从单纯的模仿阶段,通过自己的观察、对比、联系和想象,过渡到独立应用所学的概念和规则,灵活地、举一反三地、独创性解决问题,锻炼了学生思维能力,使其在思维的灵活性、批判性、深刻性、创新性方面都有所提高。通过以上一系列角度不同的变通,学生对每一个语句的认识深刻了,对语句中每一个变量的确定谨慎了。

引导对语句变量的改变,必须目的明确,同时,变化还要注意控制难度,先易后难,逐步深入,把引导与示范,引导与评价,引导与纠错有机结合起来。

(二)采用不同的程序设计方法,进一步认识语句与程序结构

循环结构的理解与运用是程序设计的基础,因此在学完循环基本结构的三种语句(for/repeat……until/while)后,为了加深对三种语句的理解,做到灵活应用,在处理程序设计时引导学生采用不同的方法进行设计,加强横向联系,启发学生自己进行总结,达到理想的教学效果。

呈现 “N!=1*2*3*……*10”例子:

先采用for语句设计发如下:

Program cbh2;

var

i,n:longint;

Begin

n:=1;

for i:=1 to 10do

n:=n*i;

witeln(n,'!=',n);

readln

End.

提出使用其它两种循环结构应该怎样设计?

学生经过探究、分组讨论、聊天室交流、程序调试、师生总结如下程序:

Program cbh2_1;

var

i,n:longint;

Begin

n:=1;i:=1;

repeat

n:=n*i;

i:=i+1;

until i>10;

writeln(n,'!=',n);

readln;

End.

Program cbh2_2;

var

i,n:longint;

Begin

n:=1;i:=1;

while i

begin

n:=n*i;

i:=i+1;

end;

writeln(n,'!=',n);

readln;

End.

然后引导学生对三个程序进行比较,得出决定循环终止的条件是布尔表达式,同时得出不同循环结构的布尔表达式关系。

又呈现“求出下式中n的最大值:s=12+22+32……+n2

先向学生提问:用什么循环语句来设计程序?

通过讨论,学生自己得出结论:

1、用for语句无法设计;

2、只能使用repeat……until与while两种循环设计;

3、同时再次对repeat……until和while 两种循环中的布尔表达式之间的关系有进一步的认识;

正确的程序如下:

Program cbh3_1;

var

n,s:integer;

Begin

s:=0;n:=1;

repeat

s:=s+n*n;

n:=n+1;

until s>=500;

n:=n-2;

writeln('n=',n);

readln;

End.

Program cbh3_2;

var

n,s:integer;

Begin

s:=0;n:=1;

while s

begin

s:=s+n*n;

n:=n+2;

end;

n:=n-1;

writeln('n=',n);

readln;

End.

最后小组得出结论:三种语句实现循环结构,即for语句,while语句和repeat……until语句, 对于能确定循环次数且可利用一个简单循环控制变量(只能使用顺序类型数据)时,使用for语句最合适了;对于循环次数不能预先确定,宜使用while或repeat……until语句,但while 语句适用于有可能根据条件判断使其成为空语句的情况,而repeat……until 语句适用于不论什么条件至少要执行一次循环体的情况。

通过如此的引导,使学生对循环结构的三条语句使用得心应手,在编程过程中能够灵活应用;同时也培养了学生发散性思维。

(三)改变程序结构,达到程序优化

在掌握了基本语句的准确使用与简单程序编写的要领之后,要引导学生从“按步思维到灵活思维”的转变,注意从程序的结构与设计思路上考虑变通,培养结构化和优化的意识,迅速提高编程能力。

一个程序设计出来了,不能满足于没有语法错误,能上机通过等起码要求,有必要引导学生从以下几个方面作一些深层次的思考:

1、程序的结构是否合理?

2、程序的设计思路是否清晰?

3、程序占用的机器空间与时间是否合适?

4、能不能作进一步的优化?

呈现“S =1-1/2+1/3-1/4+……+1/99-1/100”例子。

表达式中各项正负相间,基本的设计思路是把右边表达式分成正与负两组考虑,可以用两组双重循环来实现,这样做,思路显然比较简单但程序的编码较多,结构也显复杂。能不能把两组双重循环简化为一组单重循环来实现呢?可引导学生使用一个符号变量f解决正负符号相间,设计出结构非常简明的程序:

program cbh4;

var

n,f,t:integer;

s:real;

begin

s:=0;t:=1; f:=1;n:=1;

while n

begin

s:=s+t;

n:=n+1;

f:=-f;

t:=f/n;

end;

writeln('s=',s:10:8);

readln

end.

运行此程序会发现结果为1,为什么?引导学生自己分析,寻找原因,最后学生发现:感觉从第2项开始就没有参与运算,由于程序的说明部分,t是整型数,t无法等与一个分式的值(实型),始终为0。改程序的说明部分中的n为实型数即可。

这一设计打破了原来的正负分组的模式,从而优化了程序。

从设计思路,引导学生程序结构上变通,目的是培养程序的优化意识,寻求程序的优化途径,通过变通,具体建立程序的可读性比较,运行时间与占用空间的比较,结构化比较等优化概念,自然,对程序结构的变通较之前面对程序中某些语句某些变量的变通要深一个层次,要求更高,涉及面更广,因此,在变通的引导上要做到具体、细致,切忌简单了事,操之过急。

(四)构造合理算法,提高编程解决实际问题的能力。

算法是程序设计的依据。确定合理的算法是编程解决实际问题的前提与关键。引导对算法的变通,包括递归、搜索、迭代、递推、模拟等基本算法的改造,传统算法的推陈出新,必须紧密联系具体问题的实际。

呈现“一个整数的每位数字都是1,至少多少位才能使这个数被13整除呢?”例子。

这是一个有趣的实际问题,一般考虑的,无非是整除,一个个进行试商检验是基本的算法,一些学生往往“跃跃欲试”地编出程序:

Program cbh5;

Var

a,i:integer;

Begin

a:=0;i:=0;

repeat

i:=i+1;

a:=a*10+1;

until a mod 13=0;

writeln('i=',i);

readln

End.

在程序调试运行受阻之后,就要启发学生分析算法上的问题:当a的位数超过定义的整型数范围后,程序出错,然后引导学生思考:如果不用计算机,怎么求解?让学生在写出几步整数除法的竖式的基础上进行模拟寻求模拟变量(被除数、余数、商)建立模拟循环,从而设计出简练可行的程序:

Program cbh6;

var

b,i,a:integer;

Begin

b:=111,i:=3;

repeat

i:=i+1;

a:=(b*10+1) p 13;

b:=b*10+1-13*a;

until b=0;

writeln('i=',i);

readln

End.

由于以上程序中每次作整除运算所得的余数b要小于13,因此下一次的被除数B*10+1(体现增加一个“1”)不超出整数的范围,可确保整除的实现。可见, 算法的变通,有时直接关系到程序设计的成败。

三 总结

所谓“提问-引导-探究性”教学模式,就是以提问为前提,引导为路径,探究为目的的教学。具体说它是指教学过程是以教师精心设计的问题为前提,在教师的启发诱导下,以学生独立自主学习和合作讨论为前提,以现行教材为基本探究内容,以学生周围世界和生活实际为参照对象,为学生提供充分自由表达、质疑、探究、讨论问题的机会,让学生通过个人、小组、集体等多种解难释疑尝试活动,将自己所学知识应用于解决实际问题的一种教学形式。

把“提问-引导-探究性”教学模式应用于程序设计的教学中,实施引导变通程序设计,课堂教学气氛活跃,教师和学生双方都参与活动,他们都将以导师和主人的双重身份进人课堂、辩谬纠错、比较鉴别、层次分明、思维灵活,可以在提高程序设计能力,增强程序优化意识上收到良好成效。

程序设计中“提问-引导-探究性”教学模式,究竟在哪几个问题上“设疑”,如何去“设疑引导”,本身就是“应变”的,并没有一成不变的模式可套,必须因课制宜,因题制宜,因不同专业特点和学生实际而异。“辩疑解难”的实施,关键在引导,切忌想当然,脱离实际,强加于人,代替学生去完成变通,最后进行“释疑巩固”,同时注意,“设疑”应有梯度,有针对性,不能面面俱到,贪广求深,欲速不达。

参考文献:

[1] 周春荔. 数学观与方法论. 北京:首都师范大学出版社,1996

[2]何克抗.网络教学结构与网络教学模式探讨.教育技术通讯.

[3]高文主编.现代教学的模式化研究.山东教育出版社,2000

篇8

在高等学校的本科教育中,“C语言程序设计”几乎成了所有专业的必开课程,从计算机科学与技术、软件工程、网络工程等相关专业,到电子信息类理工科各专业,乃至理工科院校的所有非计算机专业,有的是专业基础课,有的是公共必修基础课,有的是“非计算机专业的计算机基础课”。只是课程名稍有差异,常见的有“C语言程序设计”、“高级语言程序设计”、“C语言”、“C程序设计”、“结构化程序设计”等。无论叫什么样的课程名,也无论是哪类专业,其课程的教学要求和教材选用却无太大差别,只是课时分配差异较大。

从网络调查的16所不同类型高校的“C语言程序设计”教学大纲看,普遍都包含“通过本课程的学习,使学生了解有关程序设计的基本概念、术语及C语言的特点,掌握C语言基本数据类型、语法规则、程序控制结构、常用的标准库函数,培养学生的程序设计技能,初步积累编程经验”的教学基本要求;约百分之八十左右的“C语言程序设计”课程都选用由谭浩强主编、清华大学出版社出版的“C程序设计”作为主教材;课时分配从30~108课时不等,其中80课时以上的多为应用型本科院校的计算机相关专业以及综合性大学的非计算机专业,理论课时与实验课时的比例一般为1:1到1:1.2。与此同时,其他专业基础课(如计算机组成原理、操作系统、数据结构等)的课时一般为54课时,最多不超过72学时。相比之下,“C语言程序设计”所占课时是其他专业基础课的1.5倍至2倍。

从教学目的看,非计算机专业的“C语言程序设计”课程主要目的是“掌握语法规则和程序结构,具备一定的程序设计能力”,而计算机相关专业的“C语言程序设计”课的教学目的则要分为三个层次,一是使学生全面理解计算机程序设计语言的基本内容和结构;二是通过算法掌握程序设计的基本方法和步骤,并具备一定的程序设计能力;三是为后续课程的算法描述和其他程序设计语言的学习奠定基础。

二﹑教学误区

从以上的教学现状(特别是课时分配)看,长期以来,“C语言程序设计”的课程教学存在“教学内容背离教学要求和教学目的”的误区,主要表现在教材误区、讲授误区和考核误区三个方面。

(一)教材误区

国内高校的“C语言程序设计”课大多选用谭浩强主编、清华大学出版社出版的“C程序设计”[1]为主教材,目前使用的是2005年7月修订出版的第三版,教材共363页,主体内容分为14章,其中,第3章的数据类型与表达式占用30页,第4章的格式输入输出占用12页,前9章共占用218页,后5章共占用145页。占用如此大篇幅的原因是教材中除了介绍相关语法格式外,还增加了相当多“特殊格式”和“特殊情况”的解释和说明,因此,该教材的最大优点就是“内容详尽、解释清晰”。

然而,对于初学者来说,学习计算机程序设计语言就是为了“为计算机描述求解问题的过程”,过于详细但又远离现实问题的“特殊格式”和“特殊情况”的解释,使得学习内容复杂化,增加了程序设计语言学习的难度,误导了学习者的学习重点,由此也赋予了该教材无法掩饰的缺点,那就是教材编写的指导思想和教材内容的组织脱离了高校各专业“C语言程序设计”课程的教学目标,过分强调语法细节而忽略了程序设计语言的“正向表达能力”的应用,过分强调“语言的灵活性”而导致教材主体内容的“复杂化”,从而误导“C语言程序设计”课程的教学内容朝着“重语法学习、轻算法描述”的“语言研究”方向发展。

(二)讲授误区

由于教材内容的“复杂”,课堂讲授自然需要较多课时,教学重点当然也放在了“语法研究”上。从网上下载的“C程序设计(第三版)”的配套教学课件以及有关院校的“C语言程序设计”教学课件的内容组织上可以清楚的给出以上判断。“语法研究”型的课堂讲授,更加放大了教材对“C语言程序设计”课程内容的“扭曲”程度,给学生提供了错误的程序设计语言学习方法,把简单问题复杂化,更为严重的是,挫伤了学生学习计算机程序设计语言的兴趣和积极性,把本应“主动学习”的课程成引入了“被动学习”的歧途,直接导致“懂语法、会做题,但不会编程序”的教学后果。

(三)考核误区

篇9

关键词 计算机 程序设计 课程群 建设和研究

中图分类号:G642 文献标识码:A

随着新课程改革的不断深入,对计算机专业的教学要求也越来越高。在信息技术发展飞速的现代社会,在计算机专业课程中,建设与研究程序设计课程群已经成了时代对计算机专业知识教育的基本要求。“程序设计”是计算机程序设计课程群建设的关键内容,这个过程是对课程实践内容要求相对较高的过程。计算机课程的发展领域非常广阔,涉及到的内容也极为丰富,因此,利用建设程序设计课程群来提高学生的创造力和开拓性思维是我们培养新时代计算机人才最重要的内容。

1研究内容

计算机专业人才培养也有相应的要求和规定,即在本科四年的学习过程中,要把程序设计在每一门课程的教学过程中体现出来,应该把培养他们的程序设计能力放在最基本的能力培养方案之中。包括程序设计这项内容的计算机专业课程有十多门,例如,C语言和C++程序设计,C语言可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,代码清晰精简,十分灵活;C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格、数据结构课程和数据结构课程设计、面向对象的以及数据库的课程设计。还有一系列诸如Windows和Java等的程序设计,嵌入式程序设计和net程序设计等一系列课程。这些课程的应用设置完全是按照21世纪发展过程中对人才的需求特色来进行设置的。把为国家和社会培养大批实用性的人才作为主要的培养目标,不仅要让他们了解计算机技术还要让他们培养基本的程序设计技巧和基本能力。

2方式构建

要设置计算机程序设计课程群,就要按照学校教学特色的不同来进行设置。学校要分清计算机市场的市场需要,确定程序设计的工作职能以及工作范围。把学校和企业进行紧密的结合与联系,把学校的专业教师和企业的相关专家进行紧密的结合与联系。组成一支由企业和专家共同组成的建设队伍。现有的课程包含的科目内容比较多,比如,数据结构以及高级语言程序设计等。换句话说,也就是在已有的人才培养方案的基础上,将课程群所包含的科目进行科学设置,在一定情况下也可以将人才培养方案进行大量的修改。程序建设工作要在充分对企业进行调查的基础上进行,可以设置专门的操作程序,对学生的操作程序的技术进行评分,用以提高学生的综合素质和职业能力。其次,要根据学生进行程序设计的基本能力进行课程群设置内容的组织。确定主要的课程内容,然后根据相关课程的性质进行课程群的建设。

3核心思路探索

(1)从已经建立起来的国家人才培养方案进行考虑,将各门课程科目在课程群里面进行科学的设置。

(2)就是仔细研究构建课程群的思路和主要框架,这个构建过程要从点到线,从线到面,从面到体,即,从知识点联系到课程主线,再从课程主线构建整个课程群,最后建立起课程群与课程群之间的体系链接。经过这一系列的步骤,教学任务和学习任务才能得到相应的明确,教学和应用之时,会体现出更有层次感的知识架构,在学习的过程中,学生也可以对知识进行准确的定位,最后进一步地将基础知识进行强化,因此,培养出来的人才的知识面会更广,他们的实践能力和应用能力也会相应的得到提高。

(3)是在授课过程中教师最好把理论知识、实践应用、课程群的体系都形成体系化的教学环节。即使用一条龙的模式进行授课,这样可以更清晰地分享给学生相应的程序设计和程序之间的衔接和转化。

(4)是加强对学生思维的扩展,让他们具备一定的创新知识和创新能力,这个过程不能急于求成,而是要一步一步的进行,也可以从细节出发,引导学生去自主创新,强化学生的创新意识和创新精神,让他们更具抽象的思维能力和创造力,这样才能达到创新型人才的培养目标。

(5)是将实验引入课堂教学的基本内容里面,让学生主动参与到程序设计里面去,这样一方面可以将枯燥的知识变得有意思,提升学生上课的积极性和对这门课程的热情,另一方面还可以增强学生的动手能力和创造力,让他们更有学习的动力和热情。

(6)结合现在软件公司对人才的基本需求,和软件企业紧密联系在一起,这样才能明确所建设的程序设计课程群是否能够满足市对人才的需求。

(7)将理论考试和上机考试的成绩比例进行更加科学的分配,将程序设计也放在考试内容里设计出具有操作价值的上机考试科目。

(8)将自己的研究视角进行相应的改变,提倡理论联系实际,将提高学生的综合素质作为课程学习的前提和基础。

4结语

总之,通过怎样的教学方式才能将建设程序设计课程群的过程设计得更加实用,是每一位计算机专业教师和相关院校需要钻研的问题。为了抑制传统教学模式造成的不利影响,计算机程序设计课程必须将理论和实践结合在一起,实现一条龙的设计步骤,把教师放在教育引导的位置上,强化对学生相关实际应用专业知识素养的培养。教师要从细节出发,引导学生去自主创新,强化学生的创新意识和创新精神,让他们更具抽象的思维能力和创造力,这样才能达到计算机专业程序设计课程群的建设目标。

参考文献

[1] 丁丽.程序设计课程群建设与改革研究[J].山东省农业管理干部学院学报,2011,28(6).

[2] 孙雷,王新,张丽英等.计算机专业程序设计课程群的研究与实践[J].教育教学论坛,2013(11).

篇10

关键词:计算思维;程序设计;研究性教学

中图分类号:G424 文献标识码:A 文章编号:1009-3044(2016)28-0150-03

1 背景

1.1 计算思维

“计算思维”一词早在2006年美国卡内基梅隆(CMU)的周以真教授就给出了定义,其本质是抽象和自动化。周教授强调计算思维不仅属于计算机科学家,而应是每一个人的基本技能。[1]2010年我国九校联盟会议也发表声明指出,培养复合型创新人才的一个重要内容就是要潜移默化地培养学生养成一种新的思维方式――计算思维。[2]

1.2 研究性教学

高等教育的任务是培养具有创新精神创新能力的高级专门人才。研究性教学作为一种开放式教学模式,是本科院校培养人才的重要途径。2000年以来,教育部先后出台“关于加强高等学校本科教学工作提高教学质量的若干意见”等文件,都明确提出积极推动研究性教学,提高大学生的创新能力。[3]各高校积极将研究性教学理念融入到教学改革中,积极探讨研究性教学的理论与实践模式。

由此可见,在当今信息技术时代,培养学生的计算思维能力是培养具有创新能力的人才的必要条件。在积极实践研究性教学改革过程中,不断渗透计算思维的思想,培养学生计算思维能力,是一项非常有意义的重要任务。

2 我校计算机基础教学的现状

为应对高校计算机基础的教学改革,我校对计算机基础课程的教学做了改动,非计算机专业学生第1学期先行开设大学计算机基础课程,第2学期开设程序设计课程。这样使新生在了解计算思维的概念后,能有意识地使用计算思维去思考问题、去解决一些基本问题,同时对后续开设的程序设计课程有一定的铺垫作用。

我校在研究性教学初步实践的基础上,现已在18个专业全面开展研究性教学改革,计算机公共课教学也在此列中。将研究性教学改革应用于程序设计课程,正好解决了目前非计算机专业程序设计课程教学过程中尴尬局面,其一是教学过程中偏重语法讲解,内容多、晦涩难懂;其二实验课时少,学生编程能力和调试能力差等。

程序设计课程正好也是训练学生计算思维能力的一个重要平台。因而,如何在程序设计课程的研究性教学中训练学生的计算思维能力,又如何利用学生的计算思维能力促进程序设计课程的教学改革,则是我们计算机公共课教学工作者要积极思考并付诸实践的重要课题。

3 注重计算思维的程序设计课程研究性教学探讨

我们在非计算机专业开展注重计算思维的程序设计课程(以《C语言程序设计》课程为例)研究性教学,是以培养创新人才为目标,激励和引导学生主动发现问题、分析问题和解决问题,在以教师为主导、学生为主体的探究过程中运用计算思维的方法获取知识、训练思维、培养能力。

根据计算思维和研究性教学的特点,我们从本校实际情况出发,实施C语言程序设计课程研究性教学以课堂研究性教学为主,且又不仅仅局限于课堂中,辅以学生自主探究、合作学习、网络自测、观看视频。对教学内容进行整合,将课程内容分为几个阶梯式的程序设计阶段,依次是语法基础、基本控制结构、模块化程序设计等。教学过程中,根据具体教学内容灵活运用适合于研究性教学的方法和手段,如问题式教学法、案例教学法、任务驱动教学法等,激发学生的学习兴趣,注重解决实际问题的程序设计思想与方法,注重计算思维能力的培养。

3.1 基本语法的问题式教学,培养计算思维能力

问题式教学通过提出一系列问题来组织教学内容,把问题贯穿于教学过程的始终。古人云“学起于思,思源于疑”,问题、疑问是思维的“启发剂”。我们首先要创设问题情境,激活学生思维;交流讨论,启发学生反向思维;解决疑问,学会计算思维的方法。

C语言的基本语法、基本控制结构本身就蕴含着重要的计算思维。[4]我们通过不断设问、反问,来逐步分析、挖掘、探索C语言语法的知识内涵,让学生领悟语法定义的目的、形式和使用方式。这样让学生既学到了C语言基本语法,又有利于在使用过程中少犯错误,即使出现语法错误也能快速找出症结所在。

示例问题:将华氏温度转换成摄氏温度。转换公式:C=5.0/9*(F-32),其中F为华氏温度。

讲解示例,首先设问“如何告诉计算机所要完成任务?”,当然用符号表示(即符号化),这是一次抽象的过程。再问“直接输入转换公式,计算机能识别公式中的符号吗?”,演示发现系统会报错,无法识别F和C。接着问“怎样让系统接受未知的数据?”及“在C语言中如何“介绍”新数据?”,此时让学生去自学、讨论数据对象的命名规则及基本数据类型,并带着问题“为何不能将形如int、1st、W.Join作为对象名(用户标识符)?int和Int在有何区别?”去思考。通过讨论最终确认,使用“float F,C;”来声明两个实型变量F和C。这又一次的抽象使学生不仅学到了知识,而且还体会计算思维的确定性和形式化。

声明变量后,设问“能运行并得到正确结果吗?答案是多少?”,此时让学生手算或心算,有人发现F的值未知,无法计算。但教师演示系统却未报错,提问“为什么?”学生带着好奇,教师道出原因,让其进一步了解变量的含义。为得到正确结果,需要先为F赋值,设问“怎么赋值?”,学生回答“F=50”,教师给予肯定的同时反问,这样系统每次运行得到的结果会怎样?让学生发现这样的程序不具备通用性,由此引出C语言的输入输出库函数。

以问题为中心的教学示例中,将学生思考、讨论和教师讲解、点评有机地结合起来,师生在互动中学习、探究,教师引导学生积极主动地获取知识,学生通过基本语法的学习也培养了计算思维能力。

3.2 三种控制结构的案例教学,强化计算思维能力

案例的选取是案例教学中的关键因素,[5]选取的案例所反应的知识点要丰富,具有针对性、启发性和扩展性,应由简单到复杂。针对结构化程序设计思想中的顺序、选择和循环三种结构,通过抽象问题、分组讨论、集中讨论和总结反思等环节,使学生在案例分析的过程中体会计算思维的特征,强化计算思维能力。

案例1,已知三条边长,求三角形面积。[6]

学生课前准备案例时,收集或查找各种计算三角形面积的方法。在小组讨论时每位学生给出不同的解题思路,相互间指出问题,比较哪种算法描述更简洁。课堂教学时采用集中讨论,每组推选代表简述讨论结果,由教师和其他组学生给予评价。教师在教学过程中不断启发学生、鼓励学生,同时给出总结,比如该案例使用海伦公式计算是较方便的方法,使用语言描述算法时注意的语法规则。如果有小组提出“三边能否构成三角形”问题,则应大力表扬,促使学生提高思维的缜密性和严谨性,同时顺理成章地引入分支结构。

案例2,比较两位学生的成绩,输出最高分。如果人数扩展到3人、N人,如何找出最高分?

案例第1问解决思路非常清晰简洁,使用1次双分支结构即可,至少两种描述方法:if-else和switch-case结构。当比较人数扩展到3人时,和学生探讨出多种描述算法,既可以使用嵌套的分支结构,也可两次使用分支结构。通过讨论可以开阔学生的思路,又促使学生主动思考,鼓励思维的多样性。案例的最后一问是难点,教师应给予指点,让学生带着问题“N个成绩如何存储?使用N个简单变量可行吗?N个成绩需要比较多少次?”去查资料、思考,有思路也有困惑。“N个成绩比较N-1次找出最高分”答案是肯定的,但数据存储是难点。一种思路是用数组,引入数组的概念,为下一章做好铺垫;另一种思路依旧用简单变量,但用N个简单变量是不现实的,引导学生纵向思考,每次存放一个成绩,重复N次即可,引入循环结构。解决方案是用两个变量,擂台思想,循环N-1次就能找出N个中的最高分。

通常我们设计的教学案例都不是很复杂,让学生努力一下能解决,但是要具备多样性和扩展性,让学生从不同角度认识问题,用不同方式描述算法,用不同方法实现问题求解。用程序设计语言描述、解决问题,正是将人的日常思维转换到计算机思维的过程。

3.3 模块化设计的任务驱动教学,提高计算思维层次

任务驱动教学是一种建立在建构主义学习理论基础上的教学模式,[7]它以教师为主导、学生为主体,教、学双方都围绕若干项任务展开,在求知欲的驱动下,学生采用自主探究和协作学习方式,根据对任务的理解,运用共有知识和已有经验提出解决方案、完成特定任务。

将任务驱动教学法应用于程序设计课程教学的后半期,此时学生已具备一定的程序设计基础知识和计算思维能力,教师把精心准备的小系统(如一元多项式运算系统、基本算术运算测试系统、矩阵运算系统及小规模信息处理系统)的开发任务,分配给每个协作小组,也可让小组(或组长)从若干任务中挑选。

每个小组接到不同任务后,结合系统设计要求,采用自顶向下、逐步细化、模块化的方法,设计系统的总体结构,包括系统的基本处理流程、组织结构、模块划分、功能分配、接口设计和数据结构设计等。比如一元多项式运算系统,其设计要求是实现一元多项式的加、减、乘、除运算。从表面上看系统应由1个主模块和4个子模块组成,起主导作用的教师要引导学生运用计算思维的关注点分离、抽象和分解的方法进行分析。为了能进行运算,首先要输入一元多项式,运算结束后要输出一元多项式,增加输入、输出两个子模块。在实现四种运算时,引导学生使用计算思维的约简、嵌入、转化等方法,将其转化成合并同类项、降幂排列、删除系数为0项等问题,又需增加4~5个功能模块。在任务驱动下,协作小组成员通过参考书、网络等自主检索、探究、思考、讨论,对每个模块进一步细化,确定每个模块的具体功能,画出系统的组织结构图和基本处理流程。在设计数据结构时,小组成员讨论是从已会的一维、二维数组中选择,还是从未学的结构数组、链表中选择,既要考虑能便于数据的处理,又要考虑组内成员的水平,因为每个系统需组内成员分工协作才能完成。组长此时可以协调,先用一维数组实现,后期也可在素质较高的学生带领下使用链表等实现,这样小组成员相互协作、相互启发、共同提高,体现团队合作的理念。

每位成员领取分解的任务后,根据共同确定的数据结构和模块接口的描述,对具体子模块进行详细设计,给出详细的算法描述。然后,分组讨论每位成员的算法可行性,以及与其他子模块之间的调用关系,如遇到解决不了的问题,教师可参与讨论,给予一定指导,调动大家的积极性。算法确定后,每位学员根据算法编写代码并写出设计报告。协作小组成员再集中交流各自完成的情况,由组长集成系统代码,组员一起参与调试过程,发现问题解决问题,共同进步。每位学员按照报告模板提交各自的设计成果,采用答辩的形式在班级讨论课上进行汇报。答辩过程中,教师和其他学生可以提出看法和观点,教师应对答辩学生的讲述和提出异议的观点进行正误的分析,因为学生为了完成这项任务都是深思熟虑的,教师及时地分析总结归纳,不仅使学生对所学知识的巩固,而且进一步扩展学生的计算思维能力。

采用任务驱动教学法不再强调系统开发的成功与否,而是强调学生在系统设计过程中的收获。每位学生通过对具体问题分析、讨论、解决,不断训练自己的计算思维能力,通过以小组方式进行一个小规模系统的设计,将学生的计算思维能力提高了一个层次。

4 结语

在程序设计课程研究性教学过程中不断渗透计算思维的思想,更加利于学生对知识的掌握,同时利于提高计算思维能力,推动学生创新能力的进一步发展。我们从学校实际出发,提出整合教学内容,对基本语法的问题式教学、基本控制结构的案例教学及模块化设计的任务驱动教学等研究性教学法进行探讨,以期使教师能够摆脱教材束缚,将理论与实验课时、课内和课外充分利用,更好地发挥教学的自主性,促进学生的计算思维能力的提高。

参考文献:

[1] Jeannette putational Thinking[J].Communications of the ACM,2006,49(3):33-35.

[2] 何钦铭,陆汉权,冯博琴. 计算机基础教学的核心任务是计算思维能力的培养[J]. 中国大学教学,2010( 9):5-9.

[3] 徐风生. 研究性教学的理论探讨与实践[J]. 高等理科教育,2012(6):44-48.

[4] 徐新海,林宇斐. 注重计算机思维的启发式C语言语法教学[J]. 计算机教育,2014(9):1-4.

[5] 唐芳. 案例教学法与任务驱动教学法的比较[J]. 顺德职业技术学院学报,2011(10):36-37