传奇C程序设计课程教学内容的模块化设计 |
|
文章来源:第一九传奇网 发布时间:2012-01-27 17:24 |
|
| 本文作者: 戴红 皓黔一i而忑淼邢曩霸盈霹圈《《翊文章编号:16725913(2009)08-006405“C程序设计”课程教学内容的模块化设计戴红0匕京联合大学应用文理学院信息科学与技术系,北京100083)摘要:笔者借鉴程序设计中的模块化思想,将“C程序设计”学内容的模块化设计思想,然后说明每个模块内部的设计方法,各个模块组装成为整个课程内容。关键词:模块化设计C语言程序设计教学内容中图分类号:G6421引言“C程序设计”课程作为几乎所有的计算机专业及许多非计算机专业学生的程序设计类必修课,在整个计算机课程体系中占有重要地位。然而因其具有知识点多、知识点之间的逻辑关系复杂的特点,又是许多学生感觉学习困难的课程。本文将程序设计中模块化思想应用在C语言教学内容的组织上,改变传统的内容编排模式,将整个课程内容分解为多个模块,每个模块内容紧凑、功能单一,模块问联系主线鲜明、逻辑性强。每个模块内部设计都以该模块所涉及内容能解决的实际问题为切入点,将要求学生掌握的内容以及这些内容能够完成的任务给出明确的说明,将学生整个课程的学习目标分解为各个模块的学习目标,使学生能够明确模块用途,学习目的性加强,提高教学的有效性。2教学内容模块化设计模块及模块化的概念随处可见,如建筑工程中的砖瓦构件,机器上的零部件,程序设计语言中的子程序、过程、函数、类,都可以称之为模块。模块化的概念已被广泛应用于软件(Pamas,1972)、产品设计(Henderson&Clark,1995Baldwin&Clark,2000Ulrich,1995)、生产(Starr,1965)和组织形式(Sanehez,1995Sanchez&Mahoney,19961Langlois&Robertson.19921Schillin&Steensma,2001)等多个领域和方面,它是指通过每个可以独立设计的、能够发挥整体作用的、更小的子系统(模块)来构筑复杂产品或业务的过程。衡量一个系统是否为一个模块化系统的主要依据是看该系统是否具有“模块性”,即清晰而简明的层次结构。其中的模块是否具有很强的独立课程内容进行模块化改造。本文首先介绍教最后通过阐述模块之间的联系,描述如何将文献标识码:B性,都有自己不可替代的功能,而且相互依存相互作用。具体到程序设计中的模块独立性,一般采用两种准则度量:耦合性和内聚性。 耦合性是指模块之间相互连接的紧密程度内聚性是指模块内部各元素结合的紧密程度独立性强的模块应具有高内聚性和低耦合性。综合上述思想,对教学内容进行剖析分类,并根据程序设计语言的四个基本成分(数据成分、运算成分、控制成分和传输成分),将内容按照其在程序设计中的作用、传图1传统的内容组织形式与模块化的内容组织形式对照图作者简介:戴红(1970~),女,硕士,北京联合大学应用文理学院信息科学与技术系计算机教研室主任,讲师,主要研究方向为数据库、数据挖掘、软件工程、信息系统。◆◆≯1曩圈蟹呈型竺塑·q·统组织形式与模块化组织形式对照分解成七个功能模块。图1为传统的教学内容组织形式和进行模块化改造后的组织形式的对照图。 根据程序设计的模块化思想,模块具有功能内聚性为最强的内聚性,所以成分划分的模块,内部功能单一,基本可独立设计,如“数据模块”,主要介绍C中各种数据的表示和存储,可涉及一些简单算术运算和输入输出函数,在未介绍运算和输入输出模块前,完全可以对这些内容进行简单说明,而不影响学生对本模块内容的学习。同时这样划分使每个模块内容具有弹性,便于根据学生基础和学习能力及学时情况等增减内容。 程序设计中所谓的模块一般具有三个基本属性:功能(该模块实现什么功能),逻辑(描述模块内部怎么做),状态(该模块使用时的环境和条件)。我们首先来描述各模块的内容和功能,如表l所示。 表1模块内容模块知识点目标和要求考核要求/程序设计的基本知识/了解C语言模块一/C语言的特点和C程序的基本结构/掌握C程序的基本结构和开发环境能够模仿已有实例/C程序的开发环境/了解C语言能做些什么(输入,输出信息、数编写解决四种问题入门/C语言的输入/输出信息、数值计算、非数值值计算、非数值计算及处理磁盘文件)的小程序计算及处理磁盘文件的简单功能/熟练使用TurboC开发环境/标识符掌握在C语言中数据的表示和使用数据的方法能够编写使用函数模块二/基本数据类型数据/变量和常量(标识符的定义、基本数据类型、常量和变量、握输入输出各种类型/数据类型转换数据类型的转换原则和方法)数据的程序模块三算术运算、关系和逻辑运算、自增自减运算、赋掌握各种运算符和表达式及优先级和结合顺序能够编写实现各种运算值运算、类型转换运算、按位运算、条件运算运算的程序/顺序结构(输入输出函数)模块四/选择分支结构(条件语句、开关语句)掌握使用各种控制结构实现简单算法的方法能够编写实现简单控制/循环结构算法的程序/控制结构的综合运用/掌握C的程序结构模块五C的程序结构、函数的定义和使用、变量的作用/掌握函数的定义和使用方法能够进行模块化程程序结构域、预处理命令/了解变量的作用域序设计和编码/掌握C预处理命令/指针、数组、结构、联合、用户自定义类型/掌握C中复杂数据的表不和存储方法模块六的定义和使用/掌握指针、数组、结构、联合、用户自定义能够综合运用前六/复杂数据类型的综合运用类型个模块所学知识编复杂数据/了解和掌握复杂数据类型的综合运用写功能完整、有一/命令行参数/掌握命令行参数定复杂性的程序/引用自身的结构与链表/了解引用自身的结构与链表模块七/标准文件的输入输出函数/掌握用C标准输入输出函数进行标准设备的/磁盘文件的打开和关闭输入输出操作方法能够设计编写处理入输出与文件/掌握使用磁盘文件操作函数进行一般磁盘文磁盘文件的程序/磁盘文件的读写操作及其他操作件操作的方法程序设计中模块的第二个属性为“描述模块内部怎么做”,下面介绍每个模块的内部设计思路。3模块内部设计3.1模块一入门本模块是整个课程内容的引子和主线,其中起关键作用的是贯穿整个课程的7个实例。本模块归纳出C语言能够解决的典型问题,通过7个典型实例来说明,使学生对C有全局了解和把握同时也为其余各模块提供“原型”,其他模块以这7个实例为起点,延展热血传奇教学内容和实例。 模块一的主要内容包括预备知识(程序设计语言和算法的相关概念)C语言概述(产生背景,特点)并通过第一个C程序“Hello,World”,了解C程序的基本结构及开发C程序的环境TurboC和C程序从编辑到运行的全过程。当然,本模块的重点放在“C语言都能做些什么”,总结出四个方面:输入/输出信息,数值计算,非数值计算,处理磁盘文件,如表2所示。表2C语言都能做些什么功能描述典型实例输入数据使用函数输入/输出实例1.1输出信息数值和文本实例1-2,1-3数值计算数值数据的处理实例1-4,1.5非数值计算文本的处理实例16处理磁盘文件操纵磁盘文件实例1.73.2其他模块的内部设计首先提出问题,然后通过问答问题展开内容,最后总结。如表3给出了部分模块的内部设计思路。¨◆而磊磊磊重圈曩豳.··表3部分模块的内部设计模块提出问题或使用引子展开内容总结内容C语言能表示哪些数据”,用什么来表示以各种数据类型之间的转换为模块二引出十种基本数据类型及变量、常量等内容(存储)本模块的总结详细介绍算术运算、关系运算等C中几乎所有的运结合优先级和结合顺序总结所模块三C语言能够进行哪些运算算有已介绍的运算引出C语句的概念和作用,然后详细介绍顺序、选结合具体算法,介绍控制语句模块四为什么要使用控制结构”择分支结构、循环结构及四种跳转语句的综合运用指针及三种在C中为什么要使用复分别介绍指针、各种类型数组、结传奇构体和联合(共用构造类型杂数据类型c中复杂数通过运用各种复杂数据类型的模块六据如何表示”体)、复杂数据类型的结合运用算法,综合本模块所涉及的所命令行、引用为什么要使用命令行参命令行参数的使用,链表的概念和基本操作有知识点自身的结构数、引用自身的结构图2到图8为模块一中的七个典型实例的演示图。·实倒11输入数据、输出信息main0{inti,j:3-变量定义部分scanf(“%d”完美国际,&i):、可执行语printf(“TheInputis缒二,i)_J句部分)厂输出格式控制字符,%d为按十进制整数输苗函数体注:函数体中的变量定义语句,必须在所有可执行语句之前图2实例11数据输入输出实例循环体·实例12数值计算:简单计算main0/木求a,b两数之和木/finta,b,sum/木定义整型变量木/a=123:b=456:sum=a+b:printf(”sumis%dn。,sum):)注:功能为求a,b两整数之和sum,打印输出图3实例4-2简单数值计算图4实例1.3求51·实例1-4数值计算:求两个数最新传奇的最大值(1)函数是C程序的基本单位(21main0函数的作用,相当于其它高级语言中的主程序其它函数的作用,相当于子程序(31一个c语言程序,总是从main0函数开始执行,而不论其在程序中的位置(4)当主函数执行完毕时,亦即程序执行完毕(51习惯上,将主函数main0放在最前头图5实例1_4求两个数的最大值◆◆卜1曩曩匿里型些型····实例15数值main0{inta[10],i,sum=Ofor(i=O:i (O。),pi:i}=i:固。 h:fgetc(fp三汴退出程序1while(ch=EOF){putchar(ch):ch=fgetc(fpin):)C中一般文件的处理过程(1)用fopen函数打开文件,打开成功,获取文件的结构指针(2)使用fgetc、fputc、fscanf、fprintf等函数读、写、处理文件内容(3)用fclose函数关闭文件打开文件有各种方式:读、写、追加等fclose(fnin):l图8实例1-7处理磁盘文件”卜丙忑赢磊1睡霹鲤q_.4模块装配模块化过程包括分解复杂系统为各个模块和将各个模块装配成为原来复杂系统两个过程。 首先考虑模块的装配方法,上面提到,模块一是整个课程的基础和核心,其余所有模块的内容都是在模块一中的7个实例的基础上延伸,其他模块中的实例可在这7个实例基础上加工、衍变、丰富而成。其他模块与模块一中7实例的关系如图9所示。再考虑模块的装配顺序,这时要考虑该模块使用时的环境5总结和条件(程序设计中模块的第三个属性)。使用C语言进行程序设计时,程序内部结构一般为:输入和表示数据、处理、输出结果。 按照这个结构,学生在程序设计时,需要“简单地输入和表示数据”,则装配模块二需要进行“处理”,则装配模块三、模块四、模块五需要“复杂数据表示和处理”,则装配模块六:需要“复杂输入和输出结果”时,装配模块七。 按照这个思路,所有模块以7实例为装配线,按模块二到模块七的顺序组装成为一个完整的课程系统。图9各模块与7个实例之间的关系利用模块化思想设计组织C程序设计课程的教学内容,将复杂、难学的内容分解为七个内容单一的模块,所有模块既功能相对独立,又都围绕同一核心主线(7实例)参考文献:[1】谭浩强.C程序设计【M].北京:清华大学出版社,2001.延展内容、衍生实例再根据程序的结构和设计流程,按需装配各模块,从而为学生构造整个知识体系,有效降低了学生学习难度,加强了学习内容的逻辑性和衔接性,对提高课程教学质量有实质性帮助。固【2]郑人杰,殷人昆,陶永雷.实用软件工程(第二版)[M】.北京:清华大学出版社,2001.[3】南丽丽.阶梯应这样操作式教学法在C语言教学中的应用[J].计算机教育,2008,(7).[4】杨枝煌.模块化分解与中国金融现代化改革[J】.当代经济科学,2005,(4).(上接49页)思考的硬件平台,学生可以获取很多的新的知识点,可以关注的措施。方便快捷的与老师进行沟通,但如何培养他们的独立思考(3)从学生的实践报告中我们发现,学生的很多所谓能力我们还缺少必要的环境,营造一个竞争的环境是鼓励的真实数据有待考证,如何培养学生的实践能力是一方学生独立思考的一个有效措施。为鼓励那些喜欢积极思考面,但更为重要的是如何培养他们在实践环节中真实的学的学生在学期总评成绩上给予一定的加分是我们未来要习态度,是我们未来需要关注和探索的。雹参考文献:[1】林雅.实施双语教学的思考与实践[J].中国高等教育,2002,(1314),5354.[2】卢丹怀.双语教育面临新挑战[J】.全球教育展望,2001,(10).【3]苏秦,杨鹏,张陵,等.双语教学实施效果的调查与分析[J】.中国大学教学,2002.(10):34-35.DiscussionofTeachingReformon“TheComputerApplication”ⅥANGYa-xun(DongguanInstituteofTechnology,Chaozhou523808,China)Abstract:Teachingrefomintheprofessionalcoursesofcollegesanduniversitiesisfacingmoreandmorecontroversieswhichfocusonwhatcoursematerialsandbilingualteachingmodelsareselected.Newideasforprofessionalcoursesandbilingualteachingmodelsenableinstructorstobreakthroughthe仃aditionalrestraints.andtomakesomeimprovementsinteachingreform.Basedonteachingpracticeof“NewIdeasandNewTools”,thepaperaimstoprobeintosomeideasontheteachingreformintheprofessionalcoursesofcollegesanduniversities.Keywords:teachingmodelsprofessionalcoursesbilingualteaching。 本文《"C程序设计"课程教学内容的模块化设计》 --- 作者: 戴红 |
|
| 上一篇:Education背越式跳高教学的辅助练习法 | 下一篇:CAI课件在口腔颌面颈部解剖学实验教学中的应用 |