时间:2023-08-03 16:08:44
序论:写作是一种深度的自我表达。它要求我们深入探索自己的思想和情感,挖掘那些隐藏在内心深处的真相,好投稿为您带来了七篇程序设计的结构范文,愿它们成为您写作过程中的灵感催化剂,助力您的创作。
1.在《C程序设计》与《数据结构》教学中对课程整合概念的理解
理论上,课程整合是指对课程设置、各课程教育教学目标、教学设计、评价等诸要素作系统的考察与操作。在实际教学中,课程整合是指考虑到各门相互分裂的课程之间的有机联系,将这些课程综合化。
在传统的教学模式中,《C程序设计》是先行课程,《数据结构》是后续课程,它们都是学习操作系统、数据库原理和应用、面向对象程序设计等课程的基础。《C语言程序设计》是学生最先接触的结构化程序设计语言,其教学目的主要是使学生了解结构化程序设计的算法和思路,掌握程序设计和调试的基本技巧,培养良好的软件设计基础。《数据结构》主要是研究非数值应用问题中数据之间的逻辑关系和对数据的操作,同时还研究如何将具有逻辑关系的数据按一定的存储方式存放在计算机内。其教学目的主要是使学生掌握数据的逻辑结构、存储结构及其相应的算法,培养学生解决实际问题的能力,即能够把现实世界中的客观问题,变换为在计算机内的表示形式,学会组织数据、选择算法、养成良好的程序设计风格。
《数据结构》课程中分析数据之间的逻辑关系和确定数据在计算机内的存储结构是所有程序设计过程中必须完成的两大任务,且《数据结构》中算法描述的语言又多采用C语言,两门课程之间存在着紧密而内在联系,为两门课程的整合提供了可能性。
2.《C程序设计》与《数据结构》的教学现状
在传统的教学模式中,《C程序设计》是先行课程,《数据结构》是后续课程,将两门课程分开来教学,人为地割断了它们之间的内在联系,导致学生在学习《C程序设计》时,仅局限于C语言的语法层面上,不能把C语言的程序设计思路和语法知识具体运用到数据结构的算法中去,使理论知识与实践运用脱钩。而在学习《数据结构》时,由于教师的更换和教材的多样化,任课教师又不得不花掉一、两周的时间来复习C语言的相关知识,造成了课时的浪费和学生反感。在具体运用时,又出现学生能理解数据结构中的算法和读懂算法,却不能运用C语言去实现算法等程序设计能力较差的现象。笔者长期从事这两门课程的教学工作,一直在探索如何提高这两门课程的教学效果,培养学生运用C语言这个工具去解决实际问题的能力。
3.《C程序设计》与《数据结构》课程整合的思路
在高职院校计算机应用专业的课程体系中,实现《C程序设计》和《数据结构》这两门课程的整合,要结合职业教育培养实用型人才的目标,根据后续专业课程的需要来确定。《C程序设计》和《数据结构》课程整合化的思路以C语言为工具,以实践为中心,重视基础知识,注重能力培养,对两门课程教学内容和教学模式进行优化和整合。
在实施过程中,将这两门课程整合为一门课程,课程名称为《C程序设计与数据结构》,在一个学期内完成授课内容。坚持理论联系实践的教学模式,突出实践教学的重要性,去掉繁琐的理论推导,重新设计教学、实训大纲,处理教材,合理分配学时。在具体教学中,以C语言为主线,将数据结构的内容溶入到C语言的教学中,对数据结构的内容以“适度够用”为原则,适当地进行删减,以满足高职教育培养应用型人才的教学需要。
4.《C程序设计》与《数据结构》课程整合的具体实施
(1)整合后理论课教学的内容和学时分配
整合后周学时为6节,总学时为102节(按17个教学周计),其中理论课时为68节,上机实践课时为34节。
(2)课程整合后的实践教学设计
在实践教学中,要进一步巩固对理论知识的理解,提高学生灵活运用数据结构和算法的能力,使学生在编程、上机操作、程序调试与正确性验证等基本技能方面得到训练和提高。实验可分两部分,一是验证性实验,主要结合课堂理论教学内容展开,学生可以对在课堂上学到的基本算法进行验证;二是运用性实验,组织学生以小组为单位设计一些实用程序,要求学生从实际出发,在具体、真实的环境中分析研究数据对象的特性,构造合理的数据结构以及相应的算法。
(3)课程整合后的考试要求
整合后的课程培养目标是提高学生的计算机应用能力,计算机应用能力包括了三个层次:操作使用能力、应用开发能力和创新能力。因此整合后的课程考核,应采取理论基础闭卷和上机操作开卷相结合的方式进行,综合评价应从以下三个方面来着手。
①笔试。笔试主要是考察学生对理论知识的系统性的理解,可由客观题型(如选择、填空题等)和主观题型组成,客观题型要立足于基础知识,小而全,避免死记硬背。主观题型要灵活多样,如问题解决分析、程序编写等。占整个评价的30%。
②上机实践。上机实践贯穿于整个教学当中,所以要注重过程考核,结合实训计划,在各单元模块结束时,进行随堂考核,并认真检查和记录学生考核情况,作为期末上机实践成绩的一部分。实行各单元过关,有了各单元模块的考核,到期末上机操作综合考核时就不成问题了。通过对上机操作实践的评价,可以考察学生应用计算机解决实际问题的能力。占整个评价的40%。
③学生的平时表现。学生的平时表现是指是否认真上课、听课,上机练习的任务是否独立完成,上机设计的任务是否有创意,作业是否按时上交等等,这些资料的积累,有利于对学生学习情况的全面认识。学生在整个授课过程中的表现,占整个评价的30%。
在课程整合中,合理的考核方案能促进学生知识的积累,避免学生考前突击和死记硬背现象,使学生真正学到知识。
关键词:结构化程序设计;顺序结构;选择结构;循环结构;算法
当前,计算机技术飞速发展,程序设计技术已从结构化程序设计技术向面向对象程序设计技术过渡,对一个规模较大的应用程序,总体框架是由面向对象程序设计构搭而成,而在局部实现时仍需采用结构化程序设计技术。C语言是一种很好的结构化程序设计语言,因此,笔者论述了C中的的结构化程序设计的方法。
结构化程序设计(STRUCTURED PROGRAMING,简称SP)的概念是由荷兰学者E·W.DUKSTRA等人在20世纪60年代后期提出的,是以模块化设计为中心,将原来较为复杂的问题化简为一系列简单模块的设计,也就是将—个大的计算任务划分为一个个比较小的任务,这些小任务均由函数来完成。而函数既可以是C的标准库函数。也可以是自定义函数。在C中,一个具备一定规模的C程序往往是由多个函数组成,其中必有一个名为main的主函数,由main来调用其他函数,必要的话,其他函数还可以调用另外的函数。同一函数可以被一个或多个函数调用一次或多次。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。
结构化程序设计的思想是一个程序的任何逻辑问题,均可用顺序结构、选择结构和循环结构这3种基本结构来描述。顺序结构的程序流程是按语句的书写顺序依次执行;选择结构是对给定条件进行判断,根据判断结果决定执行两分支中的一个分支或多分支中的一个分支;循环结构是在给定条件成立的情况下,反复执行某个程序段。实现这些程序流程的语句都是流程控制语句。流程控制语句在程序设计中起着重要的作用,通过3种基本控制结构使结构化程序具有唯一的人口和出口,没有死循环,而且程序的静态形式与动态执行形式之间具有良好的对应关系。在C语言中,有4种语句是顺序执行的:①空语句,光有一个分号“;”作为语句结束符,它表示什么也不做。②表达式语句,表达式后面加一个分号,表达式语句主要有赋值语句、自加减运算符构成的语句和逗号表达式语句。③函数调用语句,它是由一个函数调用加上一个分号组成的。④复合语句,由“{”和“}”把一些变量说明和语句组合放在一起,又称为语句块。选择语句有if语句和switch语句。循环语句有for,while和do-while语句以及一些辅助流程转向语句如continue,break,goto等。顺序结构,选择结构和循环结构共同作为各种复杂程序的基本构造单元,由这3种结构经过反复嵌套构成的程序称为结构化程序,也就是说,结构化程序是由上述3种基本结构组成的。但如果在编程过程中无限制地使用转移语句(goto),会使程序的控制流程强制性地向前或向后跳转而导致程序的流程无序可循,结构杂乱无章。结构化构造减少了程序的复杂性,提高了可靠性、可测试性和可维护性,使用少数的基本结构,就可使程序逻辑结构清晰,易读易懂,并且容易验证程序的正确性。对—个初学计算机语言的人来说。最重要的就是要有正确的程序流程概念,不仅要懂得而且要灵活应用。由此可见,用结构化方法设计的结构是清晰的,有利于编写出结构良好的程序。因此。结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。将程序设计针对的问题进行分解,直到分解到对应于一个个功能更简单,又独立的模块,每个模块再分解到上述3种基本程序结构。
结构程序化设计方法如下:
结构化程序设计方法是按照模块划分原则以提高程序可读性和易维护性、可调性和可扩充性为目标的一种程序设计方法。在结构化的程序设计中,只允许三种基本的程序结构形式,它们是顺序结构、分支结构、(包括多分支结构)和循环结构,这三种基本结构的共同特点是只允许有一个流动入口和一个出口,仅有这三种基本结构组成的程序称为结构化程序。结构化程序设计适用于程序规模较大的情况,对于规模较小程序也可采用非结构化程序设计方法。
(来源:文章屋网 )
关键词: 高级语言程序设计 流程图 控件 子程序 参数传递
一方面中职学生在初中阶段基础较差,另一方面对于高级语言程序设计的教学不同教材编写者有不同的思路,为了适应中职学生的学习,在教学中如何更便于学生掌握高级语言程序设计,我在长期从事高级语言程序设计教学的过程中摸索出一套针对中职学生教学的组织教材的思路,下面就以Visual Basic语言为教学背景谈谈教材组织,请同行予以批评指正。
首先,让学生熟悉所学的高级语言程序设计的程序结构。不同的高级语言的程序结构的描述过程是不同的,以Visual Basic语言为例,它的程序结构大至如下:
End Sub
因此,让学生熟悉上述的结构描述方法,让它像模板一样印在学生的脑袋中,对于学生对该语言的编写格式的直观认识及后续的学习会起到良好的作用,同时也会为后续学习数据类型、运算符、表达式和常用函数的上机调试扫除障碍。
其次,让学生熟悉所学的高级语言程序设计上机的调试环境和掌握基本的调试步骤。对于程序设计的最终结果是否正确,上机调试是必过的一关,不同的高级语言程序上机的调试环境是不同的,有的调试环境功能单一,有的调试环境功能很多,我认为首先掌握基本的调试功能,再根据需要逐步介绍和掌握调试环境所提供的其他功能,这样更有利于学生学习。以Visual Basic语言为例,我们要求学生首先掌握以下几个技能:建立一个新的工程,打开代码编写环境,保存一个工程,打开已有的工程,知道运行程序,自如查看运行的结果,并从运行结果中返回并重新修改程序。至于Visual Basic语言集成开发环境中所具有的其他功能,则根据具体调试演示时的需要零散分开,并个别介绍,这样学生将掌握得较好。
再次,让学生掌握程序的基本输入、输出语句或函数的功能及用法。程序要进行调试就要有各种各样测试的数据及根据测试数据运行后显示出的测试结果,以验证所编写程序是否正确,这就要求掌握基本的输入输出语句的用法。在Visual Basic语言中,inputbox()函数和print语句的用法就是必须掌握的。通过以上,学生掌握了程序设计的基本“骨架”,以及输入输出语句的用法,就可以进行最简单的顺序结构程序的设计了,从而在较短的时间里体验到成就感,为后继学习树立信心。
另外,在讲解顺序结构程序设计的过程中就要开始逐步地把流程图的识读及使用方法教授给学生。流程图能直观地表示整个程序设计的流程, 程序的编写只是对流程图的一种语句的细化过程,因此看懂流程图既方便程序设计的讲解,又便于学生在课后通过流程图了解程序设计的思路进行复习或思考,从而避免由于对识读程序的困难造成理解上的不便。我曾试图让学生没看流程图而直接通过程序语句来理解程序设计思路,与让学生通过流程图来理解程序设计的思路相比,显然前一种方式对学生来说要困难得多,而且时间长了就很难再理解,而通过流程图显然更容易,即使时间久了重新识读起来也相当容易。
不要把控件的功能及属性单独介绍。以Visual Basic语言为例,很多教材都是以顺序结构、选择结构、循环结构、常用控件的顺序来组织教学,我认为这样让学生感到很枯燥。因为很多实例在内容上涉及许多数学的知识,而学生本来数学基础就很差,这样学生厌学的情绪会增加,既不利于教学,又不利于学生学习。因此在教学中应把后面要掌握的控件分别有意识地穿插在顺序结构、选择结构、循环结构课堂的实例中,让学生生动地用各种控件结合顺序结构、选择结构、循环结构程序实例来学习程序设计。一方面,学生不仅有浓厚的兴趣而且很容易体验到成功的喜悦,另一方面又联系紧密、节省课时。当然这样穿插教学,程序样例的选择就非常关键,每个样例都要精挑细选,每节新课牵涉到的控件以1~2个为宜,否则控件太多的话就会造成课堂时间不足,学生掌握得也不好。
最后就是子程序与参数的传递要放在该门课程快结束时再介绍。这部分内容对学生来说相对较难,特别是参数传递,若在学生还未掌握好程序设计或程序设计还不熟练时就介绍,学生就会思路混乱,从而增加学习难度。若学生都已经能熟练地进行程序设计,在此基础上再进一步地增加子程序与参数的传递的知识,就会锦上添花,学生和老师都会有事半功倍的体验。
当然,对于教材中的其他内容,则基本上根据教材编写的既定内容进行讲授。以上是我在高级语言程序设计教学中的体会,至于是否适应其他老师的课堂教学要求,还要在实际教学中进一步探讨。
参考文献:
关键词:面向过程;面向对象;泛型;软件工程;程序设计方法
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)02-0333-02
Comparison of Program Design Method in Software Engineering
CHEN Rong, CHEN Feng
(Department of Information Engineering, Tibet University for Nationalities, Xianyang 712082, China)
Abstract: In the field of software engineering, has appeared three kinds of program design method, they are process-oriented program? ming method, object-oriented programming method and generic programming method. This paper analyzed and compared three kinds of program design methods deeply.
Key words: process-oriented; object-oriented; generic; software engineering; programming method
20世纪60年代中期,随着软件系统的规模和复杂程度的不断增加,软件可靠性问题也不断突出,出现了“软件危机”。1968年,正式提示“软件工程”一词,并形成一门新的工程学科[1]。在软件工程领域,先后出现了三种程序设计方法,分别是面向过程的程序设计、面向对象的程序设计和泛型程序设计。
本文对三类方法――面向过程程序设计方法、面向对象程序设计方法、泛型程序设计方法,进行了深入分析和比较。
1面向过程、面向对象、泛型概述
20世纪70年代,面向过程的程序设计方法(也称结构化方法)出现并在早期的软件工程领域占用主导地位。面向过程采用是自顶向下、逐步求精、模块化等设计原则,将软件系统分解为若干可独立的子模块。各个模块完成后组合起来,成为一个最终的软件系统。随着软件工程的发展,出现了软件生产率低、软件维护困难等难以解决的问题[1]。
20世纪80年代,面向对象的程序设计方法应运而生,它解决了面向过程的程序设计方法的缺点,提高了软件的生产率和方便软件的维护。现在已成为目前主流的程序设计方法。面向对象将软件系统分解成一个个的对象,每个对象都是通过对现实世界的分析、理解而得出的。面向对象更接近于人类认知世界的方式,并通过以类和继承为构造机制将现实世界构建成对应的软件系统。对于面向对象一些难以克服的缺点,如它不能将所有关系都用继承来实现,抽象程度不够高,通用性不足等问题,提出了泛型程序设计[2-3]。
近年来,泛型程序设计出现并发展。泛型的特点是抽象程度很高,将程序写得尽可能通用,可适合多种数据类型的操作,同时不损失效率。泛型程序设计的过程是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现软件系统的结构和逻辑[2]。
2面向过程、面向对象、泛型的比较
面向过程程序设计以模块为中心,采用自顶向下、逐步求精的开发方法,将软件系统分解为若干可独立的子模块,这些模块形成树状结构,表现了各个模块相互调用的关系;每一个模块内部均由顺序、选择和循环三种基本结构组成。各个模块完成后组合起来,成为一个最终的软件系统。面向过程注重实现过程的顺序,它的抽象层次低,实现简单。它适合解决简单问题和小规模的问题。
面向对象程序设计以对象为中心,将软件系统分解成一个个的对象,把属性和这组属性上的专用操作进行封装放在一起作为一个对象,以类和继承为构造机制将客观世界构建成软件系统。同一个对象间通过消息传递来实现服务的请求。和面向过程相比,面向对象使用对象分解取代了传统的功能分解。面向对象的特征是封装(将数据和代码放到对象里面,从对象外部不能直接访问或修改数据和代码)、继承(从父类直接获得的属性和操作,可重新定义)、多态(父对象定义的一个方法,允许子对象以适合自己的方式去实现消息)等。面向对象注重对象的分析和设计,它的抽象层次高,实现复杂。它适用于复杂问题,特别是对象间形成层 次关系的问题。
泛型程序设计以类型需求为中心,将程序写得尽可能通用,可适合多种数据类型的操作,同时不损失效率。泛型程序设计的过程是发现类型需求、分析类型需求之间的关系,并运用这种类型需求关系实现软件系统结构和逻辑的过程。泛型设计的目标是将算法从对象的行为中分离出来,做到算法的设计与数据结构无关,从而实现软件的复用。它通过将数据结构与算法之间的强祸合关系削弱为弱祸合关系,来实现软件的复用。它有三个重要概念:概念、模型、强化[2],概念是与具体数据类型无关的一组定义,支持数据类型的操作。模型是当某数据类型使用此概念时,称为此概念的一个模型。如果某个概念拥有了其他一个或概念的所有功能,称为这个概念是其他一个或多个概念的强化。泛型注重软件的高度抽象和通用性,因而实现很复杂。它适用于很复杂问题,特别是需要高度抽象和通用性的问题。
同时,三类程序设计方法在安全性和可靠性方面都是安全和可靠的。表1给出三类程序方法的比较。
表1三类程序设计方法的比较
通过上面的分析,我们得出,三种方法各有其优点。对于简单的、小规模的问题域,面向过程的程序设计是最合适的;对于继承和行为多态起主要作用的应用域,面向对象的程序设计是最合适的;而对于那些需要解决一类相似需求的应用域,泛型程序设计是最合适的。
3结束语
软件工程为研究和克服“软件危机”而出现,在软件工程领域的程序设计方法方面,先后出现了三种程序设计方法,面向过程的程序设计、面向对象的程序设计和泛型程序设计。本文对三类方法――面向过程程序设计方法、面向对象程序设计方法、泛型程序设计方法,进行了深入分析和比较。三种方法各有其特点,如果能将三种方法的优点结合,将会更好地解决软件开发领域的实际问题。
参考文献:
[1]李惠明,敖广武.软件工程[M].沈阳:东北大学出版社,2010.
流程图
一般来讲,流程图是由一些图形框和流程线组成的,其中图形框表示各种操作的类型,图形框中的文字和符号表示操作的内容,流程线表示操作的先后次序。流程图有三种基本结构:顺序结构、分支结构、循环结构。程序的灵魂是算法,而流程图是一种很好的算法表示方法,它的特点是结构清晰、直观,且容易学习和掌握。
表 标准流程图符号
流程图是程序设计中最基本、最重要的分析技术(或称为诊断工具),它是程序分析过程中最基本的工具,可以使学生分析出知识的结构、帮助学生理解知识间的相互关系。除此之外,流程图在程序设计教学中还具有如下功能。
1. 流程图作为一种教的技能,已经被许多教师掌握和应用,并取得了很好的效果。
2. 流程图作为一种教的策略,能有效地改变学生对程序设计算法的认知方式,切实提高教师的教学效果。
3. 流程图作为一种学习的策略,能促进学生合作学习和创造性学习,最终使学生学会学习。
流程图在教学中的应用
教师备课
教师在备课过程中,习惯采用书面语言的方式撰写教案,如果遇到较复杂的教学问题,多数情况下都要制作教学课件。自从将流程图引入到小学信息技术课上进行尝试以来,教师们清楚地发现,采用流程图的方式绘制教学过程其实就是教师备课的全过程。在这个过程中,教师通过规划、分析、绘制流程图,可以非常清晰地了解到本节课教学内容、各个环节之间的逻辑关系,在教学中应该考虑的问题可以在绘制流程图的过程中全部呈现出来。
问题直观分析
课堂上,对于较复杂问题的研究,教师通过流程图的方式呈现知识要点,使学生非常形象、直观地看到每一条语句之间的逻辑关系,这样比教师以条目的形式呈现给学生更加便于学生记忆式的学习。此外,课堂上还可以利用流程图,将学生表述出来的想法和思路记录下来以编写程序,有效地激发学生学习程序设计的兴趣,提高学生逻辑思维能力。
学生动手实践
在教学中,经常需要学生进行一些创作,而教师往往会抱怨学生只有简单的模仿却不会独立创作。而在引入流程图以后,学生对创作感觉豁然开朗,同时流程图可以让学生对一个程序进行分析,以达到比较严谨的思维方式。
例如,在教学“利用VB编写登录密码程序”时,采取如下教学过程。
师:我们先一起看程序实现的过程,并用流程图的方法进行分析。观察流程图,想一想今天我们编写的程序的执行过程和以往学习机器人编程有哪些相同之处?谁能试着边分析边把这个流程图转换成今天的程序流程图?
图 流程图示例
这节课是选择结构程序编程的基础课,通过具体的流程图例子,讲解如何正确使用选择结构语句,来引导学生理解VB选择结构以及程序设计思想,逐步了解VB编程基本方法和步骤。通过分析程序流程图,引出选择结构,学生编写程序,利用程序编写带出“用选择结构解决问题”这一教学重点。在师生共同分析下,将机器人程序进行迁移,探究讨论和上机实践,提高学生的学习兴趣,运用流程图解决了教学重点与难点。
流程图教学所引发的一些思考
流程图不可能包罗万象,也不必包罗万象。我们不能要求所有教学都要用流程图描述,否则就犯了教条主义错误,就会滑向繁琐哲学的陷阱。我们要明确,流程图是把复杂的事情简单化,把简单的事情规范化。
在程序设计教学中发现这样一种现象:很多学生表面上对信息技术课非常感兴趣,到计算机教室上课的热情很高,但一到学习程序设计时,却发现很难激发他们的兴趣,有的学生甚至觉得学习程序设计是一种负担,学习上缺乏主动性。分析其原因,我们认为主要有以下三方面。
一是很多学生之所以对计算机感兴趣,是因为他们热衷于上网、聊天、游戏等电脑娱乐,而对于程序设计,他们认为要学好这个模块很困难,缺乏自信心。
二是程序设计本身比较枯燥、严谨,较难理解,学习本模块对逻辑思维有一定的要求,要求学生的注意力非常集中。
三是很多学生认为程序设计没有实际用途,所以渐渐对教师教授的内容失去了兴趣,学习也变成被教师“牵着鼻子走”。因此,激发学生的学习兴趣,帮助学生树立信心,使其顺利进入程序设计的学习,是至关重要的。
通过分析,我们认为教师应做到如下几点。
首先,在开始学习程序设计内容时,向学生展示往届同学创作的一些经典范例,请他们试用,并就界面设计是否美观、功能设计是否合理等方面提出自己的看法,激发他们的求知欲,树立学习程序设计的自信心。在以后教学中,注意选择学生学习与生活中熟悉的实例作为学习活动的例子,使学生感到亲切,有利于学生顺利进入课程的学习。
其次,在教学中,考虑学生身心发展及心理年龄特点,利用一些学生生活中熟悉的例子进行对比,结合流程图辅助学生理解难点知识。如选择结构的问题,可以将选择过程比作教师的批改作业过程,对就画勾,错就画叉。通过这一类对比,学生很快就可以写出正确的代码。这样不仅可以帮助学生理解算法,同时可以减少他们对程序设计的畏惧感,激发他们的学习兴趣。
再次,在教学中要注意引导学生利用所学的知识去解决学习与生活中的实际问题,使学生有一种成就感,如指导学生制作电脑登录密码窗口等。
关键词: 《C语言程序设计》 程序案例 计算思维 流程图
1.引言
《C语言程序设计》课程的实践性是很强的,理论联系实际是这门课的特点,怎样利用所学理论知识解决实际问题是学习这门课的重点,也是难点。多年的教学实践表明,在教学过程中使用计算思维的方法解决问题,对培养学生的综合应用能力是有益的,通过使用流程图描述算法,学生将更好地理解和掌握结构化程序设计方法。
2.教学中充分调动学生学习的积极性
学生只有对C语言程序有浓厚的兴趣,才会积极和创造性地学习。可从以下几个方面探讨:
(1)强调学生学习C语言的重要性。突出教学重点,使学生明确学习任务。在首次课堂教学中,教师一定要向学生讲解清楚C语言课程的教学目标(为什么学习编程或程序设计)。对于C语言程序设计课程的教学目标,可有如下三方面的讲解,学习基本的编程知识、培养求解问题的能力和具备一定的创新素质。知识的传授和学习应融入问题求解中;问题求解能力是创新的基础。
(2)结合《C语言全国计算机等级考试》的试题库进行教学,学生学习起来更有动力。试题库包括笔试试题库和上机试题库。试题库按章节分类,题目类型以程序设计为主。笔试题型有单项选择、程序分析、程序填空、程序改错和程序设计,上机题型有程序改错、程序填空和程序设计。
(3)利用Visual c++6.0工具进行C语言程序教学,培养学生的学习兴趣。VC是一种基于Windows操作系统的可视化集成开发环境,是广泛使用的一种开发工具。VC程序的两种模式是WINAPI方式和MFC方式。应用这两种模式能够有效提高教学质量,激发学生的学习兴趣。
3.教学内容的设置
上课内容安排不尽合理,对于实践教学环节重视不够,难以提高学生的积极性。教师应理论联系实际,注重编程实现的示范性,让学生清楚地看到教师编写代码和程序调试的过程和运行结果。上课安排内容应包括两部分:一部分为学习基本知识,对基础知识的理解和掌握。另一部分是理论联系实际,对实际案例问题的分析引导学生,并且案例留有思考空间,使学生举一反三,培养学生创造性思考的能力。比如在第一次课告诉学生C语言的十四种语句,既让学生对C语言有全面的认识,又消除学生对C语言的畏难情绪。C语言的语句概括起来只有十四种,即定义变量语句、赋值语句、返回语句、函数声明语句、函数调用语句、分支(选择)语句(共三种分支语句)、循环语句(共三种循环语句)、break语句、Conitnue语句和复合语句。所有的C程序,都是由其中的某些语句组成的。在具体介绍这些语句的时候,一定要完整清楚地列出各种语句的语法格式。以后讲C程序的时候,会提问学生这个程序中包含哪些C语句,学生比较容易看明白C程序的语句组成,帮助学生很快读懂程序,有利于改正学生编写程序时的常见语法错误。
4.实验指导书建设
学习C语言的很多学生都认为概念易懂,程序难写,其实主要是缺乏足够的实践和练习。依据主教材结构和实际需要,上机课结合课本《C语言程序设计上机指导》进行相关和有趣的案例的程序运行。学生分析算法、画出流程图到写出程序,并亲自运行出结果,会给学生很大的成就感。要将计算思维的方法应用到程序设计,设计各种算法以实现功能,并拓宽思路,掌握C语言的概念和编程方法。
5.案例设计与计算思维相结合
学习C语言,目的不是仅仅懂得一门程序设计语言,更重要的是让学生的编程思维得到锻炼和提高。C语言学习分成以下三个循序渐进的部分:第一部分是入门,主要介绍C语言程序的基本结构、数据的表达方式、基本表达式语句、C语言程序的运行方式等。这部分可以设计由简单表达式语句组成的按顺序执行的程序。第二部分是程序的基本结构,主要介绍程序设计的简单算法表示方法,分支结构和循环结构。这部分能用计算思维的方法,设计简单的算法,根据算法编写程序,掌握思考问题和解决问题的方法。第三部分是程序设计方法和手段的提高,主要介绍程序的模块化实现方法和更多的程序设计方法。这部分能采用计算思维的方式掌握模块化的程序设计方法,对问题进行分解,灵活地使用指针、结构、文件、位运算等方法编写程序。
6.案例设计实例
编写程序计算学生年龄的递归函数:已知第一位学生年龄最小为10岁,其余学生一个比一个大2岁,求第5位学生的年龄。分析得到的递归公式如下:
age=10(n=1)age(n-1)+2(n>1)
在递归公式中,使用数字1为回归的条件,使用IFELSE语句决定是递推还是回归。
根据问题得出流程图和程序为:
只有写出递归算法的数学公式,才能编写出递归函数,从而很容易根据递归问题描述写出递归公式,进而写出递归程序。
7.结语
“基于问题求解的C语言”教学模式,随着我国计算机技术的应用和发展,为了适应社会的需求,培养学生解决问题的能力,增强学生自主能动性和动手操作能力,让学生成为社会的技能型人才,都是有益的。实践证明,借助流程图表达算法,能让学生更好地理解结构化程序设计的思想,更好地掌握C程序设计的核心方法。
参考文献:
[1]李丽娟.C语言程序设计教程实验指导与习题解答[M].北京:人民邮电出版社,2013.
[2]谭浩强.C程序设计[M].北京:清华大学出版社,1999.
[3]魏书堤,赵辉煌,邓红卫.基于计算思维的C语言教学案例设计[J].当代教育理论与实践,2014(3).
[4]但志平,汪东,王安慧,任小燕.地方高校C语言教学改革的探讨与分析[J].教育教学论坛,2014.5.