前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的程序设计基本结构主题范文,仅供参考,欢迎阅读并收藏。
结构程序化设计方法如下:
结构化程序设计方法是按照模块划分原则以提高程序可读性和易维护性、可调性和可扩充性为目标的一种程序设计方法。在结构化的程序设计中,只允许三种基本的程序结构形式,它们是顺序结构、分支结构、(包括多分支结构)和循环结构,这三种基本结构的共同特点是只允许有一个流动入口和一个出口,仅有这三种基本结构组成的程序称为结构化程序。结构化程序设计适用于程序规模较大的情况,对于规模较小程序也可采用非结构化程序设计方法。
(来源:文章屋网 )
关键词:Visual Basic;必修课;选修课;区别
中图分类号:TP311 文献标识码:A 文章编号:1674-7712 (2013) 06-0204-01
一、简介
随着计算机科学和技术的发展,大学计算机课程的设置有了很大变化。大学计算机教学不再以基础操作为主,而变为基本操作、应用软件、程序设计、计算机原理等知识的综合。为此本校在开设了Visual Basic(以下简称VB)程序设计课程。但是,由于专业特点,某些班级无法开设过多的计算机课程。为此,经过与学校教务、学院、系等部门多次商定,本校的VB程序设计分为两个层次。必修层次课时为54,包含28课时讲授和26课时上机操作。选修课为36课时,包含讲授和上机操作各18课时。
二、教材与知识结构分析
我校选择的教材为高等教育出版社的《Visual Basic程序设计教程》(第3版)。选用该教材的原因是其内容条理性好,适合非工科专业学习。有可能在短时间内帮助学生建立起程序设计的基本概念,并能快速的解决实际问题。从目录看,该教材教学内容条理清晰,从基础开始由浅入深。其内容分为10章,如表1。
从历年的教学经验看,对该教材的教学内容分析如下。第1章作为与计算机文化基础课程的衔接,介绍了VisualBasic6.0集成开发环境的使用。第2章介绍了面向对象编程的基本概念:类-对象,属性-事件-方法等。第3章介绍了VB语言的基本语法。一般认为,这三章是该门课程的基础性内容,可以采用与文化基础类似的教学手段,使用讲授和验证性实验结合,帮助学生快速的学会集成开发环境的使用,并按照程序设计的五个步骤,完成并熟悉简单VB程序设计。
本书的第4章到第6章是核心内容,具体讲授了VB程序设计。其中第4章讲授了顺序、分支、循环三种基本的程序设计方法。第5章介绍了数组这一最基本的数据结构。第6章则介绍了过程与函数,将VB程序划分为更细致的结构。第7、8两章的内容相对独立,可以认为是对前面学习的总结。第7章介绍了界面设计,第8章介绍了VB的基本输入输出。本书的最后两章介绍了VB在图形和数据库两方面的应用。
三、授课计划分析
对于涉及的8章教学内容制定授课计划如下。第1章,首先回顾计算机文化基础课程中关于二进制、编码等知识。这些知识有助于学生进一步认识计算机中信息处理的方式,即所有信息数字化的方式。这样充分利用基础知识,可以帮助学生快速的熟悉环境,降低进一步学习的难度。第2章介绍面向对象程序设计的基本概念,并利用最常见对象的属性、时间和方法,给出了验证性的实验。通过简单的编程操作,完成输入、输出等任务。第3章讲授表达式的书写。通过量(包括变量和常量)、运算符和函数,将实际问题转换为表达式,然后由计算机求解。
接下来的4、5、6三章,是本课程的核心内容。第4章的内容被分为三部分,按照顺序结构、分支结构和循环结构组织,在三次讲授中分别介绍具体内容。在顺序结构中,介绍赋值语句、输入/输出语句。选择结构则以If和Select语句为主,介绍了最基本的二分支结构程序设计和由此演变而来的单分支、多分支。这一部分着重提示学生,尽管程序书写顺序仍旧为从上到下,但是并不是每条语句都会执行。通过动画演示程序根据不同的输入,计算分段函数值。循环结构则结合第5章的数组进行介绍。指出“循环变量控制数组下标”这一经典组合可以解决大量的实际问题。对于第4、5章剩余的部分则单独利用课时,讲解组合框控件、程序调试等知识。因自定义类型与数据库相关,因此删去不讲。第6章则介绍过程与函数的概念,帮助学生建立对复杂问题“分而治之”的原则,化简问题方便求解。
在本课程的最后以“温故而知新”的方式,帮助学生一边回顾已有知识,一边丰富现有的程序。从软件的界面的美化,到添加菜单、对话框等功能模块,再到计算和处理问题结果的保存。学生此时对以往知识进行总结,结合较为简单的内容,进一步丰富和巩固程序设计的知识和技巧。
在选修层次的教学中,因学生选课时,已经要求有一定的程序设计学习经验。经过调查显示,大部分学生是在自学了C/VB等语言后才来参加学习,加之学生已经对计算机基础知识有一定的了解和掌握,因此在必修课程教学计划的基础上,删除了对第1章和第2、3章部分内容的讲授。由于选修课课时分配为每周3课时,因此这一部分内容,在第1次讲课时完成,并在第1次上机课加以操作验证。从历年经验看,效果尚可。接下来的三个单元,与必修课要求一致,分别介绍程序设计的三大结构。剩余的两个单元则针对学生对阅读程序、解决问题的实际需求,加重讲授第6章的内容,并在最后读取、演示大量的实际程序,帮助学生理解他人编写的程序,并能从其中取长补短,提高自己程序设计的水平。
关键词:程序设计基础;数据结构;计算思维;教学衔接
0、引言
程序设计基础与数据结构是计算机类专业的两门专业基础课,在计算机类专业教学中具有举足轻重的作用,都旨在培养学生的编程能力和计算思维能力,并为后续课程打下坚实的专业基础,但在这两门课程的教学过程中,存在一系列问题,严重影响课程的教学效果。笔者分析和研究产生这些实际问题的原因,对这两门课程的知识融合、内容衔接以及教学实践等进行探讨,提出切实可行的解决方案,更好地实现两门课程的教学目标。
1、课程教学内容和教学目标
程序设计基础课程是学生接触的第一门专业基础课,也是进行计算机编程的入门课程。课程的教学目标是使学生掌握程序设计的基本方法,培养其拥有良好的程序设计风格、较强的软件开发能力以及一定的计算思维能力,为后续课程打下良好的基础。
数据结构是继程序设计基础课程之后的一门综合专业基础课,是计算机类专业的核心课程之一,具有举足轻重的作用。它是程序设计基础课程所讲知识的自然延伸和具体应用。对数据结构的理解、掌握和应用拓展,将对学生解决具体实际问题时的数据分析、数据组织、数据处理和编程能力有着深远的影响。课程的教学目标是培养学生缜密的逻辑思维和数据抽象能力以及学生在软件设计领域中科学的计算思维能力,帮助学生将数据结构和算法与具体的编程实现相结合并灵活地应用到实践和工程实际中。
2、两门课程间的关系
从程序与数据结构本身的关系来说,一个好的程序离不开合适的数据结构,而数据结构中算法的实现离不开具体的程序设计。在计算机类专业的课程体系中,数据结构和程序设计基础课程虽然独立开设,但是它们之间的联系是紧密的。在课程设置上,程序设计基础是数据结构的前导课程,两门课程一脉相承,不可分割。
学生对程序设计基础课程的掌握程度、具备的计算思维和编程能力,直接关系到以程序设计语言实现算法的数据结构课程的教学效果。数据结构课程通过创造性思维的训练,重点突出数据抽象与程序抽象能力的培养,从而进一步提升学生的计算思维能力和编程能力,但两门课程在实际教学中存在一些问题,主要原因是课程设置、教学内容、教学方法和教学实践方式等多方面存在缺陷。经分析,对程序设计基础和数据结构课程进行知识整合和内容衔接,采用适当的教学方式,改进教学实践是探讨和研究的主要内容。
3、两门课程在实际教学中存在的衔接问题
3.1 两门课程教学内容的脱离
目前,在实际教学中,程序设计基础和数据结构课程虽然关系紧密,但是一直被设定为两门完全独立的课程,而且教师在制订教学大纲和教学目标时容易忽视两门课程问的联系,在教学过程中出现一些盲区,要么两门课程在教学内容上出现不同程度的交叉,要么出现知识衔接的断层,令学生对两门课程的内在联系没有整体概念和认识,从而导致不能深入系统地学习相关知识。尤其是先行课程序设计基础的教学内容和课程案例完全脱离了数据结构课程,使数据结构中最频繁使用的知识和内容在程序设计基础课程中甚少提及,不能为数据结构课程的讲解打下扎实的程序设计基础。
3.2 程序设计编程语言与数据结构实现语言不一致
程序设计基础课程所教授的编程语言与数据结构教材或实验所使用的实现语言不一致,如将C++语言作为程序设计基础的教授语言,而在数据结构的实现上选择c语言或Java语言,以至于数据结构的理论教学与具体上机编程实现脱节,严重影响了上机实验和课程设计环节。
3.3 程序设计方法与数据结构实现方法不一致
程序设计基础课程中或注重面向过程的程序设计方法,或注重面向对象的程序设计方法,但在数据结构课程中却很难利用前导课程中学到的程序设计方法实现相关的数据结构和算法,从而影响了学生对数据结构课程知识的应用与实现。另一方面,学生在学习过程中没有充分理解数据结构课程的作用和实际意义,以至于在实际项目和问题中不知使用什么方法(面向过程或面向对象)分析解决问题,不知如何运用数据结构知识解决实际问题。
3.4 前导课程对后续课程实践环节的影响
数据结构实验环节相对课堂理论环节较薄弱。此问题的存在多半是因为数据结构具体实现的关键技术在程序设计基础课中未被讲解或强调,在进行数据结构算法从理论到伪代码、再由伪代码到真代码转换的过程中难以真正编程实现,使学生对数据结构的理解和掌握仅停留在抽象层、概念层、理论层,难以上升到实现层,从而影响学生的学习兴趣和积极性。同时,课程中的实践项目过于单一且相对独立,使实践环节与实际项目的联系过于松散,学生运用所学知识解决实际问题的能力和实际工程能力很难得以锻炼。
3.5 缺少计算思维能力的培养,缺乏理论知识与实际应用的联系
提高学生计算思维能力是程序设计基础和数据结构课程共同的目标。计算思维是抽象的多个层次上的思维,而抽象是表达实际的方法。然而,现行教学方法过多关注程序设计和数据结构知识点的讲解,缺乏对学生思维能力的培养。
如果缺乏理论联系实际,那么将影响学生计算思维的培养。数据结构中的知识又太抽象,如果缺乏相应的实际案例对抽象知识加以应用,那么就会导致学生不知道怎样将所学的知识应用到实际中,缺乏具体问题具体分析和解决的能力。
3.6 教师本身知识结构欠缺,上机实践指导教师数量不足
授课教师知识结构的缺乏将导致一些现实问题:如果程序设计基础的教师不懂数据结构,那么其自然不会将相关知识引入课堂,同时也缺乏用所教授的语言具体实现数据结构中结构和算法的能力;如果数据结构的教师缺乏相关编程语言知识,那么就会给上机辅导带来困难。同时,两门课程具有很强的实践性,若上机实践辅导教师不足,将不利于学生编程能力的提升以及相关软件大赛学生的培养和辅导。
针对以上实际教学中存在的问题,可知为提高程序设计基础与数据结构课程的教学效果,根据计算机类专业这两门课程教学内容和目标,对两门课程进行知识整合和内容衔接的必要性,对课程衔接的方法和思路等进行探讨势在必行。同时,课程教学不仅要关注知识的传授,还要培养学生主动获取知识并综合已有知识创造新知识的能力。
4、程序设计基础和数据结构课程衔接的新方法和思路
4.1 做好两门课程教学内容的融合和衔接
教师需紧密结合计算机类专业的培养目标,精心设计程序设计基础和数据结构课程的教学内容,既要满足课程的专业基础性,又要满足后续课程学习的需要,严密制订教学大纲,做好程序设计基础与数据结构教学内容的衔接以及相关教材的选定。
在程序设计基础课程教学中,教师需要关注学生计算思维能力的培养,将重点放在讲解思路上,教学生如何对问题进行抽象,还要介绍一些简单的基础算法和数据结构。程序设计与数据结构的联系过程必须做到循序渐进,若引入的数据结构相关知识过难,会打击学生的学习积极性。例如,教师讲数组时可引入几种数据结构中简单的排序算法冒泡排序、选择排序等;讲完指针和结构体后可引入最基本的数据结构――链表;讲完嵌套函数调用后可引入“递归”,它是数据结构中解决问题的常见思想和算法,可以通过简单的递归函数帮助学生理解递归思想和递归调用过程,这些是理解数据结构中复杂递归函数的基础。在程序设计基础教学中,只讲递归函数的简单应用,而在数据结构教学中,需要介绍递归函数的复杂应用:栈、树、八皇后问题、N个数的全排列等。围绕“递归”这一重要知识点,从易到难并结合课程本身特点进行理论分析,将有益于整合课程教学内容,引导学生循序渐进地学习和思考。
针对在程序设计基础课程中不重要但在数据结构及算法中被广泛使用的知识点,教师需要在讲解程序设计课程时将其点出并告诉学生此知识在后续数据结构课中的重要性,引起学生对该知识点的兴趣和重视,如指针的灵活使用、结构体类型的复杂应用、类型重命名、类的拷贝构造函数(深拷贝)、函数模板、类模版等。
同时,教师要对程序设计基础课程内容进行适当补充和扩充,如增加c++函数模板、类模板的相关知识,为将泛型程序设计、c++的STL引人数据结构课程奠定知识基础,缩小教学知识与实际运用的距离,提高学生的动手编程能力和知识运用能力。
4.2 保证程序设计编程语言与数据结构实现语言的一致
程序设计基础课程所教授的编程语言要与数据结构教材或实验所使用的编程语言一致,这样不仅能大大提高学生的编程能力,还有利于数据结构课程的上机实现。
4.3 将面向对象思想引入程序设计与数据结构中
随着程序设计方法从传统的结构化程序设计演化到面向对象程序设计,数据结构在面向对象程序设计中也将成为面向对象的数据结构,且将随着程序设计理论和技术的发展而不断变化发展。在程序设计基础课程中讲授面向对象的编程语言如c++语言,既可以实现面向过程的数据结构,又能实现面向对象的数据结构。数据结构课程采用面向对象的观点讲授并以C++语言作为算法的描述工具,从而强化数据结构基本知识和面向对象高级程序设计基本能力的双基训练以及实际动手能力培养。在设计数据结构实践项目时,将面向对象的程序设计思想、面向对象的程序设计语言和数据结构课程教学内容恰当地融合,有效整合两门课程中的重叠部分,突出各自的侧重点,符合当前软件设计思想和软件开发趋势。
4.4 加强课程中计算思维能力的培养
在程序设计和数据结构的教学方法上,将面向语法为中心的教学逐渐转变为面向问题求解的教学,从问题出发采用适当的数据结构,将其抽象成解决问题的算法描述,用程序设计语言实现问题求解,使课程从过去的仅讲授孤立的知识点,转变为讲授计算思维和问题求解的过程,从而达到突出思维方法训练的目的。在程序设计基础和数据结构授课时尽量将理论联系实际,将知识点解释和应用为身边容易理解的真实案例。例如,讲“图”时,可以把现在流行的复杂网络、社交网络引入其中;讲解“队列”时,可将春节买票引入其中,让学生从身边的例子理解理论知识的具体应用。对有些案例可以提倡“一题多解”,不局限于一种数据结构、解题思路和实现方法,通过一题多问、一题多解带动学生探索、比较、寻求更好的解决途径,达到学生分析解决问题能力的提高和计算思维能力的培养。
4.5 提升教师能力,配备充足的上机辅导教师
学校要加强程序设计基础与数据结构课程相关授课教师整体能力的提升。教师不仅要掌握自己所教授课程的知识,还要对该课程的前续及后续课程内容有所了解,便于维护教学的整体秩序和融合学生的知识体系。同时,教师要积极参与各种软件大赛和企业培训,将教授的理论知识和实际项目相结合,达到应用知识解决复杂问题的目的。此外,两门课程的上机实践环节要配备足量的辅导教师,不让学生输在编程入门的起跑线上。
4.6 依托程序设计竞赛,提高学生的编程能力
依托全国软件大赛、ACM大赛等程序设计竞赛,将竞赛题目引入程序设计基础和数据结构课堂中。此类题目强调考查学生对各种算法的应用能力,综合性较强,非常适合辅助学生学习和体会数据结构的妙用,提升学生分析和解决实际问题的能力,引导学生将所学知识准确而灵活地运用到实际生活中,大大提高学生的实践动手和程序设计能力,促进其知识的融会贯通。另外,通过竞赛等多种活动可以为学生提供展现程序设计能力的舞台,激发学生学习的主动性,培养其计算思维能力。
例如,在教授程序设计基础时,讲完逻辑表达式和多重循环结构后,可以将大赛中的逻辑推理题目引入教学中并引出常见的解题方法和思路一枚举法,从而加深对枚举法的认识。通过采用数据结构中的双向链表和线性数组两种方式实现大赛中常见的约瑟夫环问题。
4.7 引入OJ平台。加强课程实践环节
引人在线判题(Online Judge,oJ)系统,提高学生的实践能力。能力需要以丰富的知识作为支撑,而实践是能力赖以生长的土壤。在OJ系统中,学生可以在线提交程序源代码,系统对源代码进行编译和执行并通过预先设计的测试数据检验程序源代码的正确性。引入0J系统不仅可以辅助教师批改作业,减轻教师工作压力,还可以促使学生加强平时上机编程练习,通过编程排名方式提高学生的学习兴趣。OJ系统中拥有大量题库,可以让学生进行上机实践,培养自身的计算思维能力,提高编程能力。0J系统不仅可以作为程序设计基础课程的实践平台,还可作为数据结构课程的实践平台。
关键词:应用型人才;教学模式;软件开发;课程群
作者简介:刘书红(1978-),女,吉林通榆人,吉林建筑工程学院城建学院,助教;刘清雪(1977-),女,吉林农安人,吉林建筑工程学院城建学院,讲师。(吉林?长春?130111)
基金项目:本文系2010年吉林建筑工程学院城建学院教育教学研究项目(项目编号:院科字2010010)的研究成果。
中图分类号:G647?????文献标识码:A?????文章编号:1007-0079(2012)25-0071-02
20世纪80年代以来,国际高教界逐渐形成了一股新的潮流,那就是普遍重视实践教学、强化应用型人才培养。国内的诸多高校近年也纷纷在教育教学改革的探索中注重实践环境的强化,教育部也批准新升格了一些应用型本科院校。这些院校要以体现时代精神和社会发展要求的人才观、质量观和教育观为先导,培养具有较强社会适应能力和竞争能力的高素质应用型人才。
在计算机专业教学中,“高级语言程序设计”、“数据结构”和“面向对象程序设计”三门课是计算机专业核心课的主要组成部分,构成了一条以“数据结构”为中心的课程链。目前中国信息产业快速发展,需要大量的应用型IT人才,如何通过三门课的理论学习和实践环节使学生获得软件开发的能力,成为社会需要的应用型IT人才,为学生今后的工作打下牢固的基础,是应用型本科院校计算机专业非常重要的课题。
一、三门课程介绍
“C语言程序设计”是计算机软件专业中一门非常重要的专业基础课,目的在于培养学生的程序设计理念、掌握程序设计的基本方法,为“数据结构”、“面向对象程序设计”等后续课程打下坚实的基础。[1]
“数据结构”是计算机程序设计的重要理论技术基础,是计算机专业的必修、主干课程之一,是“C语言程序设计”的后继课、“面向对象程序设计”的前导课,也是其他计算机专业课的基础。它主要研究的是计算机加工对象的逻辑结构及其在计算机中的存储结构以及实现各种基本操作的算法,它为理解、应用和开发程序提供技术和方法支持,是程序设计的基础。[2]
“面向对象程序设计”是计算机类各专业的一门最重要的基础课程,主要介绍C++语言的基本概念和面向对象程序设计方法与思想。目标是培养学生成为用面向对象思想开发出具有可扩展性、可维护性和可复用性的软件系统的计算机专业创新型应用人才。
二、教学中存在的主要问题
1.课程之间的衔接出现矛盾,导致学生前导课基础差,后继课没信心
“C语言程序设计”是“数据结构”的前导课,“数据结构”又是“面向对象程序设计”的前导课,“面向对象程序设计”又是其他计算机专业课的前导课。每门前导课的知识点都是其后继课的基础,课程间出现衔接矛盾是指后继课用到的前导课的知识点前导课并没有讲解或讲解不深入,导致衔接矛盾的原因有以下几点:
(1)教师把教学时间的大部分花费在基本概念及简单程序的编写上,对复杂知识点学习不够,尤其是与后继课程相关的复杂知识点的学习不够,结果导致后继课程的学习难上加难。比如,在学习“C语言程序设计”时,多数老师只重视基本数据类型、基本控制语句。对于稍复杂的知识点指针、函数、结构体等讲解不够细致,而这些稍复杂的知识点又是其后继课“数据结构”中频繁使用的知识点,因为基本知识不扎实,再用心去听效果也不明显,慢慢地就失去了学习数据结构的信心。[3]
(2)每门课程都是各自为政,相互孤立,任课老师只管本门课的知识点,并没有适当地对前导课相关知识进行复习,出现知识点断带时,任课教师直接把责任推给前导课教师。
2.教学模式重理论,轻实践
应用型本科院校的计算机专业培养的软件开发型人才最注重的就是实践,对将要从事软件开发的学生而言,只懂理论而动手能力差意味着无法胜任以后的工作。传统教学中的课程实验和课程设计并没有完全发挥其提高动手能力的作用,主要有以下原因:
第一,实践选题一成不变,其内容虽然能反映大纲要求但缺少实用性,结果导致学生对抽象概念的理解不深入,理论与实践脱轨,无法调动学生学习的积极性。例如,有关栈的实验练习,学生只要实现入栈、出栈,判断栈空等操作的程序就可以了,至于如何联系实际应用于现实生活中却是模糊不懂。
第二,传统的实验教学形式基本上以模拟、验证为主,学生按照一定的要求、一定的形式进行设计,很少有让学生自己发挥的设计题目,这种实践模式能够传授知识但不利学生创新能力的培养,学生的学习主动性也没有得到充分的发挥。
第三,学生遇到问题一般都是老师帮忙调试解决,学生独立思考、独立解决问题的能力没有得到培养。
第四,学生更看重成绩而忽略能力,许多学校并没有把实践环节的评定加入总成绩内,导致大多数教师和学生都不太重视实验,源于实验课的分数并不会影响最后成绩。
3.考试、考核机制不合理
大多数院校计算机专业相关课程的考试形式仍然采用全部试题笔试的考试方式,题型主要包括填空、选择、程序设计等,平时成绩(20%)+期末考试成绩(80%)的形式对学生学习成绩进行评定。由于考试机制的制约,多数学生更加不重视实践环节,理论知识也是到期末才埋头苦学、硬背,虽然有时候也能取得好的成绩,但这样高分低技能的学生走上工作岗位后,计算机的操作技能根本不过关,大学计算机课程的学习真的成了“纸上谈兵”。
【关键字】 C/C++ 实践教学 创新教材 上机实践
一、引言
“C/C++程序设计”是理工科非计算机专业本科学生计算机系列课程的核心课程。内容抽象,概念和语法规则较多,要求学生能够编制有一定难度的实用程序,具有较高的上机实践能力和水平。高校的教学不能停留在高中那样以背诵为主的教学方式,应该想办法提高学生的思考能力、动手能力、上机实践能力。这对于刚从高中升到大学的大一学生,是一个艰巨的挑战。对于该课程的任课教师,要求有更好的应对思考与实践。长期以来,很多高校都在不断地探索和实践关于“C/C++程序设计”课程的教学改革,但仍然存在很多问题。以注重实践教学,更好地提高学生的动手能力、编程能力为出发点,对传统教材内容进行了重新组织,由易而难,尽最大努力帮助学生在上机实践中逐渐学习计算机编程的基本概念和方法,培养和提高编程实践能力。“C/C++程序设计”教材正是在此理念基础上编写而成。
二、教材建设的思考与实现
应用型本科生的C语言教学,要注重学生的上机实践能力的培养,培养学生脚踏实地、严格细致的工作作风、严密的逻辑思维能力,分析问题、解决问题的能力。作为学习效果的检验,多数高校要求学生参加全国高校计算机水平考试并获得通过,很多学校将水平考试的分数与学生最终的本科学位挂钩。全国高校计算机水平考试是由各省市教育厅组织的计算机证书考试。广东省每年举行两次,实行机考,概念部分只有四选一选择题,占20分,编程部分为4-5题的编程题,占80分。从考试形式和分值比例就可以看出,水平考试很好地考核了学生们的实际动手能力,突破了中国学生一贯死记硬背的应试考试模式,具有非常重要的意义。广东省的二级计算机水平考试只有C++,没有C语言。为了兼顾C语言教学和计算机二级水平考试的要求,我们编写了“C/C++程序设计”教材,已经由清华大学出版社出版。
2.1 合理取舍教材内容
C/C++语言的内容非常繁杂,而作为学生来说能够抓住主要问题,解决绝大部分问题,在获得基础知识和解决问题的基本能力之后,再深入细致地学习就容易得多。所以教材避开了一些偏和难的内容。
输入输出方面,在比较了C的printf、scanf函数和C++的cin、cout对象的使用特点后,选择了cin、cout来输入输出数据,简化了输入输出格式,避免学生们在输入输出格式方面花费太多的时间,影响基础知识的学习,这也满足C++编程的需求。教材的所有例题和习题也采用cin、cout输入输出格式。
指针是C语言区别于其他高级语言的重要特色,教材介绍了指针的基本特性、与一般变量的区别和在数组、函数中的应用后,没有像一般教材那样介绍链的概念、链的建立和删除等应用。一般来说这部分内容属于较复杂的编程应用,在掌握了指针基本知识基础后,再深入学习也不难。
从C的结构体(适当简化了结构体的内容)出发,通过类比的方法引入C++的类的概念,然后用众多具体例题讲述了面向对象程序设计的封装性、继承性和多态性,建立起C++编程的基本概念。
2.2 循序渐进安排教学内容
教材以非传统的组织结构为创新点,以全程伴随上机实践为特色,简洁、通俗、直观、易懂地讲述C/C++程序设计。
C语言的基础知识,包括数据类型、变量、表达式以及顺序、分支、循环三大结构语句及其编程[1-3]。这部分内容是C/C++程序设计的基础内容,不打好这个基础,后面的学习几乎无从谈起。因此这部分内容的掌握是非常重要的[1-3]。
教材在基础知识内容介绍方面打破传统的内容安排顺序,以“C/C++语言概述”、“编程基础Ⅰ”、“C语言基础知识”、“编程基础Ⅱ”和“编程进阶”五章,从简到难,循序渐进地增加学习难度,从一开始学习就可以辅以上机练习,使计算机――这个程序设计最好的老师全程伴随学习者,发挥最大的作用。既最大化地调动学生上机操作的积极性,又有助于各知识点的掌握以及学习兴趣的培养和良好的学习习惯的养成。
内容安排由简到难,逐步深入,免得学习者失去学习信心。一开始就使学习者可以上机实践,之后全程理论和实践互补学习,利于掌握程序设计的技巧,提高编程能力。
6-9章介绍C语言的重点部分,包括数组、函数和指针。10-12章是提高部分,包括结构体、类、文件系统等。
在引入类的概念之前,先讲解了结构数据类型的定义和使用,然后在结构体的基础上,引入类的概念,并仿照函数的三部曲讲解类的三部曲,进而介绍C++中面向对象程序设计的基本知识。
2.3 各部分知识点的系统化、条理化
知识点的适当总结有利于学生们的理解、记忆和应用,比如简单程序结构三步骤、循环结构三种形式、变量使用三步骤、函数三部曲、指针四大功能、类三部曲、面向对象程序设计的三大特性。将相关知识点的特征与数字联系起来,学生们能够记忆、联想相关内容。
每章也对本章的知识点进行了总结,并列表指出经常容易犯的错误,对上机实践很有帮助,全书最后还对各种数据类型和各种编程语言进行了对比总结。
2.4 注重程序的动态调试
学习基础知识,学习编程,从程序运行细节到程序结构的理解,都离不开对程序每一步运行情况的了解。因此,学会动态调试是学习C语言程序设计的重要手段。教材在第5章学习完基础知识和第8章又学完数组和函数后,两处增加了动态调试的方法和多个实例。
动态调试是综合训练学生动心、动脑、动手的一个过程,能够真正调动学生学习的主观能动性,提高发现问题、解决问题的实践能力。
2.5 适应学生的阅读习惯
现在的年轻人,已经是“读图”一代了。他们对于传统教材的大段文字描述没有多少耐心,故而我们在内容上尽量减少大段的文字描述,对重点内容加了阴影和警示,适时提出问题,讲究版面编排,尽量将程序、运行结果和相关解释组织在一起,增加重点概念的图解,更好地帮助学生们做最基本的实践――读书。
2.6 启发学生学会编程
在学习基本编程知识后,进行具体编程实践是学习C/C++程序设计的重要任务,而学习编程的过程,是从模仿开始到独立完成程序设计[6]。教材增加了大量例题,引导学生自己学会如何编程,并且两次集中讲解和总结典型题目和经典难题。第一次,在三大结构讲完后,讲解了有关算法类程序设计,总结一般编程方法和技巧;第二次,在数组、函数讲完后,专设了第8章,本着“授人以鱼、不如授人以渔”的思想,形象地称之为“三根鱼竿儿”。
第一根鱼竿儿――顺竿儿爬,主要讲解编程思想,对一些感到无从下手的编程题,如何去思考?如何按照题目的叙述,把题目的叙述过程变换成程序的实现过程。
第二根鱼竿儿――一节节加长,主要讲解复杂程序的结构化实现,大程序的逐步完善犹如鱼竿,要一节节加长,逐步完善程序代码,化繁为简,逐步完成复杂题目的编程。
第三根鱼竿儿――盲人用杆儿步步试探,程序设计一般都要经过动态调试,检查逻辑错误,修改程序,完善程序,这样才可以编制出好的程序。
2.7 配套的Flas设计
针对教材中学生们比较难以理解的概念,我们还采用Flas的方式进行更为细致和形象的描述,比如三大循环结构、函数、数组、指针和类等。通过幽默的动画表达晦涩的概念,增强学生们的记忆,同时活跃了课堂气氛,提高了学生们的学习兴趣。
三、结束语
《C/C++程序设计》凝聚了作者多年的教学实践经验,在注重培养学生编程能力方面进行了有益的尝试,通过我校两届学生的使用,基本上实现了我们编写教材的目的,学生们的编程能力有了明显的提高,计算机水平考试成绩也有较大的进步。教材建设要结合学生的特点,让学生能看书、爱看书、看懂书,另外程序设计是一门实践性很强的课程,不要忘了“计算机”,这个默默无闻、无所不能的老师。本书试图让学生最大程度的受益于计算机这个老师。使计算机――这个程序设计最好的老师全程伴随学习者,发挥最大的作用。希望教材能使更多的老师和学生从中受益,有利于C/C++的教和学。
参 考 文 献
[1]谭浩强.《程序设计》(第四版)[M],北京:清华大学出版社,2010.
[2]王敬华.《C语言程序设计教程》(第二版)[M],北京:清华大学出版社,2010.
[3]王丽娟,荣政等.《C程序设计》[M],西安:西安电子科技大学出版社,2000.
[4]张正明,卢晶琦,王丽娟等.《C/C++程序设计》[M],北京:清华大学出版社,2013.
关键词:C语言程序设计;教学改革;并重;分阶段;侧重点
基金项目:河北北方学院教育教学改革课题(项目编号:JG201142);张家口市科学技术研究与发展计划项目(项目编号:1311020C); 科技部项目“农村医疗卫生知识库及远程医学服务系统及应用”(项目编号:2012BAH05F04).
中图分类号:G642.0 文献标识码:A
一、引 言
《C语言程序设计》是高校计算机类专业最先开设的一门程序设计课程[1,2]。多数学生在此之前缺乏软件开发知识,更没有动手编程经历。在此情况下,该课程的教学改革不能像有些学者提出的那样一改到底,由过去“重语法轻实践”转而走向“轻语法重实践”,从一个极端转向另一个极端[3-5]。在没有积累必备知识的情况下就要求学生动手编写程序,违反人类认知规律,最终会导致学生学得一头雾水,进而产生畏难情绪,学习热情受挫,对后续专业课程的学习产生不良影响。“皮之不存,毛将焉附”,所以我们应该让学生在开始学习程序设计语言时就打下坚实的理论基础,养成良好的编程习惯,在此基础上对其适当提高要求,从而为其将来学习其它程序设计语言或从事软件开发工作奠定基础。
二、教改思想
本教改思想强调理论与实践并重,不同教学阶段侧重点不同。初期重视基本理论、语法的教学,后期则侧重于程序设计的指导。
(一) 理论知识
理论知识的教学从学期初的详细讲解到点拨指导,直至不单独讲解,而是让学生在做程序设计过程中琢磨理解。对于重点、难点及易错语法则需通过案例反复强化,以便学生熟练掌握运用。
(二) 程序设计
程序设计要遵循由易到难的规律,从模仿到自主编写简单的小程序,再到编写较复杂的大型程序,最后合作完成综合型的课程设计。
总之,本教改思想强调语法理论和程序设计并重,编程中渗透理论,理论中掺杂编程,相互促进。最终培养学生的编程思想,养成良好的编程习惯,提高学生的编程能力。
三、教学过程
根据学生认知和接受知识的规律,本教改方案将教学过程分为四个阶段。
(一)侧重理论教学阶段
在学期初理论教学课堂上,教师需详细讲解C语言的基本语法理论知识,并辅以具体范例进行演示,让学生对相关理论知识有所掌握,在实验课上,学生应在教师指导下模仿案例编写简单的程序。在本阶段学生需重点掌握基本的语法知识,包括数据类型、输入输出函数、三种基本结构等,以便为后续程序设计奠定坚实的基础。
如在讲解if语句时,引入将三个数a、b和c按从小到大的顺序输出的例子。首先利用课件讲解if语句的功能、用法等知识;然后引入例题的算法分析;最后用if语句将算法表示出来。比较两个数的大小时会有a>b和a≤b两种情况。我们只给学生详细讲解当a>b时,比较三个数大小的算法思想,然后学生就可以模仿给出a≤b的情况下,三个数如何比较大小,这样就建立起了分析问题的思路,完整的程序需要学生在实验课上自己模仿写出,并调试运行,由此学生就会更好地掌握if语句的使用。
(二)理论与程序设计同步阶段
在学生有了一定的理论基础后,要适当加快理论授课的进度,为后期课程设计留有足够的时间,在此期间要相应地增加编程练习,同时不断提高程序的难度,以此训练学生的动手编程能力,并养成勤于动脑、动手的良好编程习惯。
本阶段涉及的主要知识点有数组、指针及结构体等。在这一阶段的学习过程中,要求学生提前预习,教师减少理论知识的讲解,上课时先简单讲解基本语法,重点解释学生自学时遇到的不懂、不理解的知识点;然后布置任务,安排与本次课需要掌握的内容难易程度适当的案例让学生通过自己动手编程完成。
例如在讲解结构体时,要求学生提前预习,初步理解结构体类型定义、结构体变量、结构体数组及结构体指针变量的相关知识。课上粗略讲解基本知识点,而着重讲解学生迷惑的问题,如结构体的本质,强调其是一种数据类型而非变量。引入案例时,先由学生提出在描述一个学生的基本信息时需体现的属性有:姓名、性别、学习成绩等内容,这时我们可以定义一个描述学生基本信息的结构体,然后定义两个结构体变量,对每个结构体变量的学习成绩求总分,并比较两个结构体变量总分的大小关系。接下来学生在实验课上完成:设计简单学生档案管理程序,对10名学生的总分进行排序,要求使用结构体。由于具备了相关知识,并已理解老师所讲实例,所以学生能够轻松掌握。
(三)编写程序阶段
本阶段的教学任务是教师在课堂上确立较复杂的实战题目,引导学生分析、设计,然后由学生自主进行程序的编写工作。在此过程中,学生是主体,教师只起辅助指导作用。
涉及的主要知识是文件和位运算,对于这两部分知识渗透到程序设计和调试过程中讲解。在实践过程中强化学生对难重点、易错语法知识的理解和运用。对具有共性的编程错误给学生做重点展示,让学生自己发现错误并改正,达到既锻炼了动手能力又不轻视语法知识的目的。
如在讲文件时,可以要求学生输入某公司30名职工的基本信息到文件newcp.txt中。要解决这个题目,首先引导学生分析出程序所要完成的功能、涉及的知识点(如文件指针变量、结构体数组、循环结构等内容)。然后让学生自己用流程图将算法表示出来,最后着手编程实现。
在学生动手完成程序后,要总结他们在编程过程中容易犯的错误,例如:打开文件时没有对是否成功进行判断,导致程序出现异常;各种库函数调用时参数不正确等。教师展示这些错误,并让学生自己予以纠正。由于有了前面编程过程中的经验和教训,学生对这些错误和重点、难点语法就会有更深的认识,从而达到了在实践中掌握语法的目的。
(四)课程设计阶段
利用学期后三周时间给学生安排一个较大型的C语言程序设计任务。本课程知识掌握程度通过课程设计的方式考查。
教师首先将班内同学按不超过3人的规模分组,并要求每组确定一个课程设计题目,如五子棋、贪吃蛇、扫雷、学籍管理系统等。设计题目可以由教师指定,亦可自拟。之后将课程设计按功能分解为不同模块,由不同学生分别编写。最后,大家通过查阅课外资料、请教老师、互相探讨等多种方式和途径共同协作完成整个课程设计。作品展示时,每位同学都要阐述自己在设计中的贡献,根据所做贡献、能力和态度,教师予以评分,这一分数在本门课程的最终成绩中所占比重为70%,其余比重由学生的出勤和平时实验报告成绩构成。
课程设计就是对学生的学习成果进行验收,通过这样一个小型的完整程序设计,学生可以实际应用所学知识,同时也增强了学生的成就感,既培养了学生的编程思想,又培养了他们在工作中的合作意识和团队精神,并有利于后续专业课程的学习。
四、教学中需特别注意的事项
(一)明确学习C语言的重要性
在正式讲授课程内容之前,要从C语言的发展历程、应用领域和就业前景等方面阐述《C语言程序设计》课程的重要性,以此激发学生学习兴趣,增加内在动力。
(二)增加算法课教学
在系统讲授C语言基本知识以前,给学生增加一节算法课是非常必要的,因为学生要想利用C语言解决实际问题,就必须保持清醒的头脑和对求解问题的准确分析能力,而这就要求他们熟练掌握算法设计、算法复杂度分析等知识。
(三)渗透软件工程思想
在后期的课程设计阶段,我们可以引入适量的软件工程知识。对于软件开发中的各阶段无需一一详细讲解,但可选取其中部分内容,如可挑选需求分析,总体设计及软件测试中的一些经典的方法。通过实践培养学生的软件工程思想,为学生的后续发展奠定良好基础。
五、结束语
C语言是一门基础程序设计语言,在计算机类专业学生所修课程中占据举足轻重的地位。提高教学质量,达到良好教学效果,使学生掌握并能熟练使用C语言是我们的主要教学目标。近两年的教学实践证明,“理论与实践并重,不同阶段不同侧重”的教学理念取得了预期效果,不仅改变了学生过去“会学不会用”的状态,而且避免了轻理论重实践导致的基础不牢弊端。
参考文献:
[1] 谭浩强. C语言程序设计[M],清华大学出版社,2005.
[2] 赵喜清. C语言程序设计[M],中国农业科学技术出版社,2008.
[3] 盛波. 项目教学法在C语言教学改革实践中的探索[J]. 科技风,2010,4:26.
关键词 高职教育 C语言 结构化编程 互联网
如何提高高职计算机类专业学生非图形模式下的结构化编程能力,是高职计算机教育中的一个普遍问题。作者通过三年的努力,对“C语言程序设计”课程在教学内容、教材建设、实训设计、网站建设和考核方式等诸多方面,进行了大胆的改革和探索,将电子教材、电子教案、学习论坛、编程工具、学习资料等,整合成为学习网站,在教学过程中通过论坛程序不同版本,实施案例驱动,课后通过QQ群进行辅导答疑,通过论坛、电子邮件进行作业提交批改,建立了基于案例驱动的结构化编程教学模式。本文具体论述了基于案例驱动的高职C语言结构化编程教学的过程和方法。
1 教学内容
在课程设计上,针对高职计算机专业学制短,技能要求高的特点,提出了“一条线两阶段,三结构四循环”的教学模式。
“一条线”是指在一年级的编程教学课中,贯彻C语言一条线。曾经有一种观点,认为高职计算机专业的编程语言教学,直接从面向对象语言开始学习,可以节约时间。但是,70%的企业依然要求学生具备面向过程的结构化编程能力。考虑到企业的需求,结合后续的课程安排,我们决定在一年级的课程安排上,贯彻C语言“一条线”,即在第一学期,开设“程序设计基础”,第二学期,开设面向过程的“C语言程序设计”。
“两阶段’指课程安排分为“程序设计基础”和“C语言程序设计”两个阶段。“程序设计基础”解决程序的基本结构,重点在建立学生的结构化程序的基本框架和概念;以C语言为基本语言,使学生能有实际操作的平台,但准确把握“把C语言作为伪语言”的原则,不让学生陷入C语言多变的泥淖,而把注意力放在结构化程序的基本结构上。“C语言程序设计”放在解决C语言的使用上,把握“C语言”是编程工具而不是研究对象的原则,根据企业的编程规范,对“C语言”进行简化,重点是如何使用C语言解决一般复杂程度的结构化编程问题。
“三结构”是指在一年的学习中,学生要学习三个成绩管理软件的编程,分别是基于一维数组、二维数组和动态结构数组。从企业实际应用来看,动态空间的使用,可以用动态数组解决。因此我们去掉了链表,重点是让学生写出有工程实际意义的结构化程序。
“四循环”是指编写基于“三结构”的每一个成绩管理软件过程中,教师四个以上的程序版本,引导学生改写、增加函数,让学生直观地看到软件的功能是如何一步一步构建起来的。
结构化程序设计的教学中,如何让学生建立起结构化程序的框架是很困难的。一个简单的成绩管理软件,代码就超过300行。对初学者来说,看懂超过100行的程序就需要很长时间,学生又如何能在短短的课堂时间里通过增加/改写函数来增加功能呢?这也就是很多学生学完了C语言程序设计,依然不能编写一个简单的应用程序的主要原因。我们发现通过论坛程序版本,利用工具软件BeyondCompare,比较不同的程序版本之间的差异,可以让学生直观地看到软件的功能是如何一步一步构建起来的,如图1所示。程序的第一个版本,就是一个主函数,不超过10行,只显示程序的几项功能菜单,学生很容易理解,然后通过第二个、第三个版本,每一个版本实现或改进一个菜单的功能,直到最后版本。
通过图1,我们可以看到程序功能的增加是由哪些代码实现的,而通过不断反复的比较,学生就可以掌握结构化程序设计的过程和方法。
在教学过程中,通过比较版本,让学生直观地看到复杂的程序功能是如何由简单的函数一个一个构成的。学生经过“程序设计基础”的课程设计,基本掌握主函数与模块函数的作用和相互关系,可以看懂超过100行的C语言源程序,理解基于一维数组的成绩管理系统;在“C语言程序设计”的课程设计中,学生对主函数与模块函数的理解更加深入,可以看懂超过300行的C语言源程序,理解基于动态结构数组的成绩管理系统,掌握主函数的设计方法,并按照规范的格式写出自己的函数。回想三年前,因为没有采用这种方法,只要是超过20行的程序,学生就普遍反映看不懂。由此可见,采用新的方法后,学生编程能力的提高十分明显。
2 教材建设
2004年9月清华大学出版社出版了作者主编的21世纪高职高专规划教材《程序设计基础》,教材主要在三个方面进行了改革。
(1)强调把生活中的问题转化为程序的能力,使学生真正能够编写实用的程序
在教材编写思想上,重点放在培养学生把生活中的问题转变成为程序并进行处理的能力,强调转变讲授思路,推行引导学生首先想清楚“我要做什么?”,然后才教给学生“如何做”,最后上机进行验证的三步教学法。
在教材的编写风格上,对全书所有的例题进行了通盘的考虑,在循环、数组、函数和结构化设计等单元,所有的例子都有前后的联系,强调内容的前后衔接,特别注意工程规范的引入,在变量的命名、程序格式方面,均按工程要求进行。在案例选择上,全部采用工程实际和实际生活中的案例。
(2)提出了以“三大区域”为特色的c程序的基本框架
通过把一个基本的C程序从上到下分成预处理区、变量声明区、执行语句区“三大区域”为特色的C程序的基本框架,让学生树立正确的程序格式与规范。“三大区域”概念的提出,明确规定了程序的基本框架,让学生从一开始就按固定的格式进行编程,养成良好的编程习惯。
(3)提出了使用函数的“三大步九要素”的基本方法,建立使用函数的清晰框架
我们提出的使用函数的“三大步九要素”的基本方法,在教学中取得了很好的效果。
所谓“三大步”,是指我们在使用自定义的函数时,对函数进行声明、定义和调用。三大步按顺序进行。
所谓“九要素”,是分别指函数声明、定义、调用各有三要素共九点:函数声明的三要素:返回值的类型、函数的名字、形式参数。函数定义的三要素:形式参数、功能、返回值。函数调用的三要素:名字、实际参数、返回值。通过对“九要素”的理解掌握,学生能够建立起使用函数的清晰框架。
3 实训设计
对高职学小的技能培养,实训是很重要的环节。我们采用了项目驱动的思想来设计实训项目,每一单元的实训,都是构成最终程序的不同版本,在“程序设计基础”头程序版本8个,“C语言程序设计”共程序版本10个,构成了实用的软件框架,学生相当于参与了一个中等复杂程度的软件开发,积累了经验。在今后的实际工作中,完全可以以此为模板,进行结构化程序的开发。
4 网站建设
利用互联网技术,建立基于互联网的学习资源。2003年建立了“光华之窗”教学网站,在网站平台上,将电子教材、电子教案、学习论坛,编程工具、学习资料等,整合成为学习网站,设计了“程序设计基础”、“C语言程序设计”教学论坛,两年来积累了完整的教学过程资料。可以说,网站的建设和运行,为课程的质量提供了保证,避免了“课随老师走”的问题。
5 考核方式
关键词:C语言程序设计;教与学;学习理论;教学设计
中图分类号:G712 文献标志码:A 文章编号:1674-9324(2014)09-0156-02
一、引言
C语言作为一门出色的程序设计语言,既有高级语言的特点,又有汇编语言的特点。它以精练、灵活、可移植性好、应用领域广泛、目标程序效率高而著称。在高职院校中,C语言程序设计作为计算机应用专业及相关专业的专业必修课,也是学生学习程序设计的入门课程。它在程序员的学习中起着非常重要的基础作用。
二、C语言教学现状分析
作为以重点培养学生技术应用能力的高职院校,C语言程序设计作为一门理论性较强的课程,在实际教学中,将知识转化为能力的教学效果往往并不理想。主要体现在C语言烦琐的各种语言细节和抽象的设计理论上,学生在接触大量难以记忆的概念、名词和规则时常常会感到枯燥乏味。对于抽象的程序设计理论,不能较好地建立算法和基本编程思路。学生在独立上机编程时,常常感到无从下手,在调试程序中,由于效率较低,很难从学习中体会到成就感。很快学生对这门课程失去了兴趣,丧失了学习信心。因此想要C语言教学中,收到良好的教学效果,就需要加大对C语言程序设计的教学内容以及教学方法好好研究。本文将通过针对C语言中不同的教学内容,采用不用的教育学习理论,探索相应的教学方法,重点培养学生通过C语言的学习,掌握程序设计的基本方法、基本思路和基本技术。让C语言程序设计课程更加符合高职教育的目的。
三、几种教学系统设计的应用
1.以“教”为主的教学系统设计应用。以“教”为主的教学设计理论和方法经过几十年来众多专家的深入研究与发展,已形成一套完整严密的理论体系。主要基于行为主义学习理论和认知学习理论,教学设计的焦点在教学上,强调教师的主导作用,突出循序渐进,按部就班,精密严密的应用系统方法对教学进行设计。特点是有利于教师主导地位的发挥,教师把握整个教学过程,它适用于基础知识和系统知识的掌握和传授,有利于教学目标的完成。
C语言中基本知识的内容比较适合此种教学设计模式,比如C语言概述、C语言的数据结构类型、C语言的基本运算符及表达式等内容。教师依据教学大纲,把教学内容细分为知识点,确定各知识点的学习水平,比如了解、识记、理解、掌握及综合应用等。课前分析学生的基础,设计教学过程,灵活运用多种教学方法,通过讲授法让学生对基本知识概念认识,通过案例法学生在例子中理解感念,通过讨论法学生对学习的知识进行交流和提问,通过测验验证学生的掌握情况。教师要监控整个教学过程,通过严密的教学设计,学生会对基础知识有扎实的掌握。当然此种教学模式也有其弊端,比如重教轻学,忽视学生的自主学习、自主探究,容易造成学生对教师、对教材、对权威的迷信,使学生缺乏发散思维、批判思维的创建。但对于C语言中基本概念知识的内容的特点,这些弊端还是较好地回避了。
2.以“学”为主的教学系统设计应用。建构主义理论指导下的以“学”为主的教学系统设计认为,在教学中体现以学生为中心,认为在学习过程中充分发挥学生的主动性,要体现学生的首选精神;要让学生有多种机会在不同的情境中应用所学的知识;让学生能根据自身的行动的反馈信息来形成对客观事物的认识和解决实际问题的方案。重视发挥学生的首创精神,将知识外化和实现自我反馈。
C语言中的三大程序设计结构,即顺序结构、选择结构和循环结构。主要培养学生架构化程序设计的思想,让学生理解掌握自顶向下,逐步求精的程序设计,进行模块化程序设计,应用三种基本控制结构解决复杂问题的能力。注重程序设计方法能力的培养。教师在教学设计中,以简单的程序为例导入学习内容,让学生通过自学,理解程序流程,学生通过案例实验,在做中理解程序设计思想。在学生掌握基本方法后,给学生提供丰富的实验资源,让学生在实践中举一反三,达到知识的掌握,方法的理解,从而实现能力的获得。当然,在实施教学过程中,要注意避免其弊端的影响,比如不能忽视教学目标的分析,学生在自主学习的自由度过大时,容易偏离教学目标的要求。不能忽视教师的指导作用,强调以学生为中心,要充分考虑体现学生的主导作用,就是要为学习者设计主动建构知识意义的学习环境,教师可通过任务驱动法,比如先选择结构学习时,用单循环结构导入,再让学生思考乘法表的编程方法,给学生基本的算法思路的提示,让学生循序渐进地掌握嵌套选择的复杂结构。要注意师生之间情感交流和情感因素在学习过程中的重要作用,学生在完成任务时,要及时鼓励,通过优秀作业的讲解和总结,让学生获得学习的信心和热情。
3.教师为主导、学生为主体的“双主”教学系统设计应用。“双主”教学设计理论既不是仅以教师为中心,也不完全是以学习者为中心,而是充分考虑两者的有机融合,相互交流,相互沟通,双边互动,不但能够发挥教师的主导作用,又充分体现学习者的认知主体作用。在整个过程中教师处于中心地位,是教学过程的组织者、指导者、知识建构的帮助者、促进者。对于学习者并非在本过程中自始至终处于“传授―接受”的学习状态,更多的时候是在教师帮助下进行主动思考与探索。而教学媒体在整个教学过程中有时作为辅助教学的工具,有时作为学习者自主学习的认知工具,各个要素彼此相互联系,从而形成一种新的教学设计模式。
C语言中数组、函数、指针、文件等内容较适合采用此种教学模式。在教学中教师的角色发生了转变,教师是教学活动的组织者、执行者,但是对教师能力的要求却提出了更大的挑战。教学课程内容可以由课堂教学、分组教学、上机实践和自学活动等部分组成,教学项目的开发者。可以通过课前设计教学项目任务、教学双边活动策划、典型例程选择、课堂随机提问等手段来实现。分组教学:分组教学强调环境因素对学生意义建构的促进作用。根据学生的具体情况进行分组,分组既要考虑学生的互补性,又要设立小组成员的带头作用,实现良性自主学习策略,最终把因材施教内容融入到该环节中去。上机实验:程序设计掌握的关键是算法的编制和语言的运用能力,因此上机实践是必需的,在上机前可以设定一些贴近实际应用的项目模块,让学生从项目需求、环境变量、算法流程、语言格式及模块I/O等方面进行练习,教师可以在上机时间内进行相应的实践引导和结果评价工作。自学活动:学生在课余时间提供丰富的网络学习资源,学生在通过网络进行深入研究学习,教师也可提供一些实用的软件项目供学生课余参与,通过比赛的形式学生在项目参与过程中提高了对知识的应用能力,锻炼了一定的程序员素质和团队合作精神。
四、结语
实践证明,针对不同教学内容采用相应的教学模式,课堂教学与实验教学效果都比过去有了明显改善。通过对由浅入深的理论学习和循序渐进的实验练习,学生在学习中培养了程序设计的兴趣和学习热情。通过整合教学内容、改进教学方法,教师要通过研究教学内容的特点,采用相应的教学模式,注意避弊取利,采用多种教学策略进行补充完善,以实现C语言教学效果最优化。
参考文献:
[1]夏瑜.基于双主理论的程序设计教学方法[J].四川教育学院学报,2009,(11).
关键词:程序设计课程;教学改革
Abstract: This paper analysis the programming curriculum present situation, proposed this curriculum reform, and has carried on the exploration and the research.
Key words: programming curriculum; educational reform
程序设计能力是计算机科学与技术专业学生必备的能力,随着学科的发展和信息社会对人才素质的要求,该课程的教学暴露出一些问题,本文结合当前的教学实际,谈一些想法。
1程序设计课程的教学现状
1.1学生对课程设置的目的不明确
多年的教学经历发现:很多学生在学习该课程的过程中,始终不明白学习该课程的目的和意义,很多教师在授课时基本是按教材章节顺序授课,没有强调开设此课程的目的和意义。笔者认为,一定要上好第一节课,让学生明白学习该课程的教学目的和意义,然后其他教学活动才可由此展开。
1.2教学内容与实际脱节
在教学内容的处理上,许多教师把很大的精力甚至是主要精力放在程序设计语言的语法规则和语义上,把“程序设计”课变成“程序语言”课,考察的内容不少是对不实用的怪、难、偏的语句语义的理解,脱离课程教学目的,脱离实际,反映不出学生真正的编程能力。这种做法在一定程度上误导了学生对该课程学习目标、学习内容的理解,导致了学生学习精力的偏移。
1.3教学方法不科学
教学方法上多数是传统式的“灌输法”,在有限的教学学时里,重复讲授的东西太多。过多的指导书增强了学生的依赖性,从而导致学生分析问题、解决问题的独立能力得不到充分提高。
1.4选择语言工具存在盲目性,程序设计课过多过滥
在语言工具的选择上盲目追求最新版本的流行软件,在教学内容的选择上也片面强调社会的需求,有些学校甚至提出“社会需要什么,我们就教授什么”,而忽视了学生对基本理论、基本方法和基本技术的学习和研究。在加大了老师备课负担的同时,并没能起到积极的作用。
目前多数高校以一门程序语言课作为计算机科学与技术专业学生程序设计课程的入门,老师通过C语言或C++对学生讲授基本程序设计概念和程序设计方法,而在随后的教学计划中,涉及程序设计的课程却多达3门~5门。结果是当学生学完了多门语言的程序设计后,发现只是学习了各语言的基本语法。学生中真正能掌握程序设计方法、具有较好的编程能力、能具体解决实际问题的甚少。
2程序设计课程的改革
2.1明确培养目标
计算机专业的毕业生应有扎实的理论知识和实际应用技术,有理论联系实践的认知能力和实践能力,有应对发展变化的良好素养。根据这一培养目标,除加强基础理论教育外,更应注重学生的内涵发展。
2.2程序设计与程序语言相结合,建立良好的考核方式
可行的做法是把程序设计与程序语言结合起来,以程序语言为载体来讲解程序设计。这样能把程序设计的基本方法和对问题的求解思想,通过程序语言予以实现,使学生看得到、摸得着,不仅可以激发学生的学习兴趣,培养学生的创新意识,而且在程序实现的过程中能培养学生脚踏实地、求真务实的科学作风。
一定要彻底改革传统的死记硬背的考核方法,完全可以实行开卷考试,让学生个人或几个人一组完成一个小型系统的开发,最大限度地发挥学生在学习过程的主动性、积极性和创造性,既可以把对学生的创新思维和创新能力的培养贯穿到我们的教学环节中,又可以让学生在开发系统过程中体会到学习的快乐、完成系统后体会到自己的成就感。成绩评定可以采用学生答辩的方式,这样可以锻炼和培养学生的思维能力和表达能力。
2.3教学精讲多练
精心组织好每一堂课程的教学内容,力求做到重点突出、思路清晰、理论联系实际,只有抓住教学的重点难点、合理地分配课时,才能把学生必须掌握的内容传授给学生,并能让学生把容易学的知识和技能牢牢地记住,不容易理解的能够学会、理解并且能基本灵活应用。
多练的含义包括课堂练习和上机实现两部分。在进行课堂练习过程中,选择合适的题目非常重要。题目要有针对性最好结合学生知识结构,以激发学生的学习热情,调动学生学习的积极性。选择好一个例题,对学生理解相关内容会达到事半功倍之效果。作为实验性很强的课程,不仅要在课堂进行必要的演示操作,更要注重实验教学。条件允许的情况下,最好的方法是在带有多媒体教学设备的计算机实验室上课,老师先讲一会,让学生就刚才讲解的内容再上机实验一遍,边讲边练,使学生对老师刚讲过的、刚演示完的内容通过实验从感性认识升华到理性认识,从而提高教学的效率。
2.4分阶段选择合适的语言载体
语言工具的选择的依据是看这个语言在概念、结构上是否满足教学要求。新兴的程序设计语言工具,往往强调的高效快捷的开发程序,而忽略或简化概念,并不能承担起传递思想,理解概念的作用。针对当今计算机程序设计领域的理论研究和工程实践的具体情况,应将面向对象体系作为程序设计类课程的核心,而不只是面向过程体系的附加和补充。程序设计课程体系包括:面向对象程序设计、面向对象数据结构、Java语言程序设计和Web程序设计等课程。这样学生一开始就用面向对象的思想去贯穿到程序设计课程的学习当中,并通过面向对象的数据结构课程来强化对面向对象理论的理解和实践的应用。在此基础上,通过Java语言课程的学习熟悉网络编程、I/O编程、多线程编程等技术,而不是现在简单的语法学习。最后在Web程序设计课程中学习如何综合应用上述技术进行B/S模式的应用系统的开发,锻炼学生整合业务流程和开放性的面向对象编程的能力。
3结束语
只有通过在教学过程中不断发现问题、解决问题,不断探讨新的教学方法,才能使教学质量不断提高,这正是我们教师的任务,也是我们的责任。相信通过我们共同努力,将会把我国的计算机专业教育推向一个新的台阶。
参考文献
1 肖军模.程序设计语言编译方法[M].大连:大连理工大学出版社,1999
2 郑人杰.软件工程[M].北京:清华大学出版社,1999