时间:2022-10-26 08:36:16
引言:寻求写作上的突破?我们特意为您精选了12篇c语言程序设计实例范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
一、正向互动激励教学
正向互动激励是在任务和程序已知的情况下,只需运行程序,得出结果,再对结果进行分析来完成任务。其互动激励形式是“任务->程序->?”,需要完成结果,故称为正向互动激励。其任务紧扣新知识的理解进行教学。
教学一例:
(1)提出任务:求5!的值。问s设定为什么类型的数据变量可以容纳积值?要求:通过程序运行和结果分析,实现对程序的理解和对知识点的掌握。
(2)给出条件:给出二组程序。见表2。要求:通过运行程序,记录结果,达到看懂程序。要掌握输出语句控制符与输出结果之间的关系。
表2
(3)收集学生对任务解决的方法及结果分析。见表3。要求:在对结果分析后,学生应该掌握数据变量与容纳数据大小之间的关系。
表3
(4)正向互动激励反思:“任务->程序->?”的正向互动激励形式难度系数小,多用于知识入门阶段。任务通过结果对比完成。在新知识入门阶段学习中,有利于同学们熟悉程序,掌握知识点。同时可以提高学生学习兴趣,树立学习自信心。要求:教师归纳知识要点。同学们应该掌握常用数据类型在程序中的应用。
二、逆向互动激励教学
逆向互动激励式是在任务和结果已知的情况下,需要补写程序,运行程序,再对结果进行验证来完成任务。其任务形式是“任务->?->结果”,需要完成填空,故称为逆向互动激励。其任务紧扣知识的巩固进行教学。
教学一例:
(1)提出任务:求1+2+ … +100的值。(1)对程序填空;(2)运行程序,记录结果,并验证结果。要求:通过程序补写和结果验证,实现掌握循环控制语句的使用方法。
(2)给出条件:部分程序和输出结果已给出。
main( )
{ int i=1,sum=__⑴__;
while(i
{ sum=sum+i;
__⑵__ ;
}
Console.Write("sum="+sum);
}
给出结果:sum=5050
要求:重点掌握循环控制变量i的初值、终值和步长值设定,以及用于累加和变量的初值清零工作。
(3)收集学生对任务解决的方法及结果分析。要求:在完成程序填空后,学生应该掌握循环控制变量初值、终值、步长值的设定方法。
(4)逆向互动激励反思:“任务->?->结果”的互动激励形式难度系数中,多用于知识巩固阶段。任务通过程序填空和结果验证实现。在深入程序分析阶段学习中,可以提高学生对程序的分析和理解能力。这对巩固学生所学知识,夯实程序分析功底很有帮助。要求:教师归纳知识要点。循环控制变量三要素(初值、终值、步长值)的设定是完成任务的重要前提。
三、发散互动激励教学
发散互动激励式是在需求已知的情况下,根据自身掌握的知识,自主编写程序、运行程序、记录结果,并调试程序来完成任务。其任务形式是“任务->?->?”,需要完成程序编写和记录结果,故称为发散互动激励。其任务紧扣知识的综合应用进行教学。
教学一例:
(1)提出任务:计算87、98、69、79、82五个数的平均值。编写程序;记录结果。要求:通过编写程序,记录结果,学习程序设计方法。
(2)给出条件:编程形式不限。用循环控制结构完成数据平均值的计算任务。要求:程序结构清晰,结果正确。
(3)收集学生对任务解决的方法及结果分析(小组互助)。方法一:边输入数据边累加,最后对累加和除5求得平均值。方法二:输入数据存放于数组再累加,最后对累加和除5求得平均值。
要求:在程序编写完成后,一定要运行,对运行结果要进行分析,看结果是否正确和程序是否直观。
中图分类号:G642.0文献标识码:A文章编号:1009-3044(2012)06-1351-03
Case Discussion Method in《C# Language Program Design》Curriculum Practice
LI Hai-bo,MA Ming
(Nanyang Institute of Technolgy, Nanyang 473004, China)
Abstract:According to C # language and the problems in the traditional teaching model, presents a case discussion teaching method. Class? room teaching will be dispersed sample combination, form a case module is introduced to the teaching practice, using case teaching method to arouse the students’ interest in learning, training students thinking of object-oriented programming and the ability to analyze and solve problems, in order to make students to learn in order to practise purpose.
Key words:C# language; classroom teaching; examples of teaching; teaching mode; case discussion
随着互联网技术发展越来越快,人们对网络应用程序的需求也越来越多,而C#(C Sharp)语言自从2000年问世以来,由于其安全、跨平台、面向对象、开发速度快等特点,很快得到用户和企业的青睐,成为当今最流行的网络编程语言[1]。为顺应社会需求,各高校计算机相关专业都将C#语言课程纳入到教学计划作为高年级的就业方向课程。但是在教学过程中很多学生反应C#语言涉及的概念比较抽象难懂,规则和类库繁多;知识点零散,容易出错;学生在遇到实际编程问题时感觉“无从下手”。作者从实际教学环境入手,对《C#语言程序设计》课程从教学方法、教学手段等方面进行了一些改革,并取得了较好的教学效果。具体改进措施和方法如下。
1案例讨论教学法对传统教学方法的改进
1.1传统教学方法存在的问题
目前,《C#语言程序设计》课程是我院07级、08级软件工程专业的就业方向拓展课程。该课程是C++语言的后续编程课程,目的是让学生在建立面向对象编程的基础能力上熟练掌握C#基本语法规则,并提高实际编程能力。以往的教学方法都是先从基础概念入手,再就C#语言所带的基本控件进行讲解,其中着重讲解C#如何操作数据库中的数据。每节课先以理论概念结合一些简单示例程序讲解,最后安排学生上机操作加以深刻理解。
在以往的教学模式中,教师按照教科书编排顺序进行教学,讲授大量编程知识,但学生遇到实际项目编程应用并不理想。平时的知识点和课堂示例过于分散,学生无法体会到各个知识点之间的联系;学生在学习过程当中感觉平时的知识点很抽象,课堂上掌握的只是些表面知识,并不能正确的理解和加以应用;即使课堂上听明白了,时间一长有些知识点又会遗忘。经常在实际的编程项目中感觉“无从下手”。久而久之导致学生逐渐失去了编程的兴趣和信心,觉得没有实际用途,并产生消极情绪[2]。
综上所述,产生问题的原因在于传统教学方法只是让学生掌握了基本编程知识,知识点之间的结合应用不够灵活,在实际项目应用当中想不到应该使用哪个知识点来解决问题,因此,为了改善这种现状,有必要对C#课程的教学模式进行改革和探讨。1.2案例讨论式教学方法
C#语言的课程内容既丰富又零散,要求学生既要理解一些抽象的概念、方法又要具备一定的编程、动手能力。这就要求教师在现有课堂教学时间当中充分调动学生的积极性、主动性和参与性,采用先进的教学模式和手段,师生共同配合较好地完成教学任务。
在传统教学中,当理论知识讲述之后,针对该知识点做出示例,可以使学生加深对该知识点的理解,掌握知识的使用方法。但 是平时的课堂示例只是单独的几个知识点,如何把相关的知识点联系起来完成某个功能模块,这是我们考虑的问题。
案例讨论式教学法是运用实际案例进行交互式教学的方法。在教学过程中,要求以实际的案例模块作为被解析对象,在教师指导下按照软件工程的思想将某一工程项目分析解剖,以其中某一模块为实现目标,学生共同参与案例的分析、讨论,寻找实现途径。通过这种教学活动达到学习知识、分析问题、解决问题的目的。
通常情况一个案例应用到多个知识点。比如一个登陆模块的实现,它需要熟练掌握C#的基本语法、IF…ElSE语句、数据库操作等知识点并结合使用。所以在本课程教学中,笔者经常在讲授一部分知识点后,把各个知识点串联起来放在实际的案例模块当中。先组织学生参与讨论,分析出该案例中某个模块需要哪些知识点来完成。学生通过文字描述整个模块的实现过程,最后指出知识点在整个案例实现过程中的具体环节,确定软件处理流程,上机编码。这种方法可以使学生遇到问题后回顾以前所学知识,并把知识跟实际案例相对应,从而解决实际问题。
经过一段时间的零散知识讲解之后,应该把几个零散的知识点贯穿起来,结合实际的项目需求,组织学生分析讨论。这样不但学到了知识,还可提高对案例的分析、解决问题的能力,能够达到学习与实践的统一。因此,案例讨论式的教学模式是一种帮助学生快速适应未来职业需求的学习形式。
3 C#课程案例讨论式教学实践与教学质量评价方法
3.1“案例讨论”教学模式的实践
在“案例讨论”的C#课程教学过程中,根据该教学程序将整个教学活动分为以下几个阶段:
(1)案例需求设计
案例应该是一项具有实际意义的工程任务,也是某一具体项目中的一个模块,它的选取是学习的关键[3]。首先,案例设计要目标明确,既要满足教学要求,又能有一定应用价值;其次,案例设计要符合学生的特点,案例中应该包含之前所讲授的部分知识点,难度要适中,在平时的教学情况下学生可以分组进行讨论、明确的目标后安排学生的学习,在这一过程中要对本班学生的具体情况进行分析,定义基本任务,还可以有延伸问题;最后,案例设计要符合面向对象和面向工程的要求,让学生按照软件工程的设计要求制定该案例的分析方案。案例整体结束后,师生可以共同评价其工作成果。
教师在设计案例时,设计一个案例,让每个小组讨论同一个案例,这样可以在后期进行组与组之间的对比,激励组内成员的团结性。
(2)案例讨论前的必要准备
在布置任务之前,学生已经学习了该案例模块的基本理论知识。但在实际教学过程中,每个知识点有可能都是独立的,缺乏知识点之间的联合应用,学生很难对一些理论知识系统理解,一旦马上进行项目应用往往难以适应,感觉“无法下手”等情况,因此教师在进行布置任务前有针对性的以前知识点进行必要的复习,同时也能对学生的学习情况,相关知识的掌握情况有一个了解。这样就为教学的开展做了必要的铺垫。
(3)组织学生讨论
案例讨论是以学生为主体,但一个案例模块如果让一个学生去思考,可能会在思路上受到限制、难度有时过大。如果让所有人都参与,则合作、分工难度过大,因此,学生的组织应以小组为单位,可自由组合也可由教师编排,每组5人左右,指定其中一人为小组组长,最后讨论出整个流程,并对整个流程分析出需要哪些知识来实现。这样既能锻炼学生的分析问题、解决问题能力,也能锻炼学生在项目开发过程中的沟通协调能力。
(4)采用“讨论式”教学方法,监控整个讨论流程
学生以小组进行讨论时,教师可以指定整个讨论流程,规定时间限制,一般讨论30-40分钟时间,先让每个小组针对该模块确定工作流程思路,写出文字描述的软件工作流程,再次针对每个小组自己设计的软件工作流,指出流程中需要的知识点名称,最终提交整个流程文档。由小组成员提出自己的见解和工作计划并在这一过程中相互启发、相互学习,经过讨论最终确定出较好的解决方案。在这个过程中教师应采用“讨论式”的教学方法,组织同学们一起对方案和遇到的问题进行讨论,充分发挥学生的主动性和创造性。
(5)教师讲评
教师将每个小组的最终文档汇总,如果思路流程正确优秀的小组可以得到好评及表扬,对思路有问题的小组教师可以适当的指出其问题的所在,加以纠正。最后教师就该案例,说出正确的软件工作流程,在该流程中所应用到以前学习过的知识点,让整个学生明确思路和解决方案,布置模块编码任务,从而为功能编码的实现打下基础。
(6)实际编码环节,提高上机质量
在传统的教学模式中,上机实验由教师根据教材内容进行编排,主要以书上的例题、课后习题为主,学生只是将程序敲入计算机,运行一下即完成了上机任务。虽然程序运行结果正确,但对程序本身的设计理解并不透彻,只是掌握了该知识点的使用方法,无法理解在实际的案例工作中应该如何应用。
在“案例讨论”的教学模式驱动下,以案例讨论为主线,明确遇到问题首先应该考虑使用以前的哪些知识点解决,待思路和知识点完全确定后,再进行编码,这样可以有效的解决学生遇到实际项目时难以下手,也不知从何下手的问题。最终以讨论文档和案例程序为阶段考核和评价的依据,充分利用实验环境和条件,加强上机实验的应用效果,保证教学质量。
3.2教学质量评价方法
C#语言是一种面向对象的程序设计语言,针对C#语言及“案例讨论”中理论学习与实践并重的特点,在考核过程中采用新的教学质量评价方法,即将考试机制与案例讨论实现有效结合,综合评定教学效果。
以往的考核形式多为期末笔试+平时成绩(出勤、作业等),这种评价方式虽然能反映学生的学习态度及对一些基本概念、知识、理论的掌握情况,但无法全面反映出学生对知识点实际的理解和灵活应用,因此将考核形式变为期末笔试+案例讨论报告+案例程序,其中期末笔试主要检验学生对基本概念、语法、结构的学习和掌握情况,测试的是学生的基础理论部分,这部分成绩可占整个评价结果的50%;而案例讨论也作为一项考核内容,重点考核的是学生的分析问题解决问题的能力,最终以平时的讨论报告为主要依据,因此其成绩将占整个评价结果的25%;最后一个部分为项目源代码,主要考察学生的实际编码能力,按小组分工给出具体的分数,占整个评价的25%。
采用案例讨论为核心的教学模式,将原有的以“课堂、教师、书本”为中心的架构变为以“课堂示例、案例分析、实际应用”为中心的架构,将所学知识与实际应用紧密结合,学生既学到了知识又得到应用锻炼;教师既完成了教学又培养了学生的能力,达到了“教书、育人”的双重目的[4]。
4结束语
案例讨论教学对于语言程序设计课程来讲是一种比较有效的教学模式,它突破了传统教学模式,让学生学习一段基础理论知识之后,通过对实际案例问题的分析来理解掌握知识点,这样不仅能快速地掌握所学知识,也为代码的实现打下了坚实的基础,而且能够培养学生的社会责任感和团队合作能力,提高学生的具体分析能力和解决实际问题的能力,培养出的学生能很快适应市场需求,有助于解决学生的就业问题。因此,案例讨论教学方法不仅适合计算机程序设计语言教学的需要,也是应用型软件开发设计人才培养的一个有效途径。
参考文献:
[1]吴晓艳. C#语言程序设计精品课程建设的探索[J].科技信息,2010(25):48-50.
[2]蒋卫祥,朱利华.项目教学法在JavaWeb程序设计教学中的应用[J].科技信息(学术版),2006(9):410.
[3]李桂琼.程序设计课程的教学改革初探[J].计算机时代,2007(8):73-74.
[4]吕晓华,李素朵,张燕.任务驱动教学模式在java课程教学中探索与实践[J].北京:硅谷,2008(9):180.
[5]张悦.项目驱动教学法在C语言课程中的应用[J].职业教育研究,2007.
一、C 语言程序设计的教学现状
C 语言程序设计集抽象性、逻辑性、实践性于一身,在教学过程中解决好这三性就能提高学生的学习兴趣,减轻学习压力。传统的C 语言程序设计教学中,主要以教师讲授为主,且在教学过程中采用的大多是纯数学的抽象案例,这对于高校学生,尤其是独立学院学生而言,既抽象又枯燥无味,因而难以理解和接受,起来自然没有动力,导致课堂教学质量不高,学生学习兴趣不浓,学习效果不佳,不能真正理解程序设计的精髓,进而普遍反映C 语言难学。如何借鉴先进的教育理论和技术,转变教师角色,真正确立学生学习的主体地位,充分调动学生学习积极性,成为教学改革当务之急。
二、独立学院学生素质特征
独立学院是高等教育发展过程中出现的新生事物,它有自己独有的特征,应用型人才的培养是其目标,学生的素质与普通高校学生的素质特点又有一定差异性,若按照传统的教学模式,大多数学生的课堂听课情况不容乐观,注意力难以保持持续集中,如何保持较高的课堂效率也就成了每位教师所面临的一道难题。针对这一问题,笔者一方面通过走访有经验的老教师,了解独立学院学生的学习习惯,另一方面通过对学生进行问卷调查及当面交流,对独立学院学生素质情况有了较为充分的了解与认识。
针对独立学院大多数学生一方面学习自觉性不高、依赖性强,往往满足于课堂上所学,缺乏刻苦学习精神,但另一方面对自己感兴趣的课程又十分喜爱,笔者根据其活泼、好争辩的特点,有的放矢的进行了教学改革,使课堂效率和学生的学习积极性都有了显著提高。
三、教学改革的重点
根据独立学院培养应用型人才的目标,以及独立学院学生的素质特点,结合自己多年的教学经验,通过对传统的“ C语言程序设计”教学模式进行改革与实践,变老师主导型教学为与学生交互型学习的教学过程,在教学过程中不断探索新的教学方法和尝试先进的教学手段,首先,对教学用例进行了调整,用生活中常见的案例原型进行讲授。其次,充分利用现代教育技术资源,将实验环境搭建于课堂之上。从备课——上课——上机实践,进行了一系列的改革探索,很好地解决了 C语言程序设计教学中出现的种种问题。结果表明:教学改革后,课堂气氛活跃了,开小差的同学少了,听课效率上去了,学生学习主动性也加强了,课外主动学习的兴趣浓了。进而,程序设计能力得到了普遍提高。
1.培养学生学习兴趣
程序设计是一种能力的培养过程,这就要求在教学时注重对学生的编程能力培养。而能力的培养主要是靠强化、靠反复上机实践去体会和理解的,是通过理论结合实践,不断启发、引导,采用先进的教学方法和与时俱进的教学体系实现的。在教学之初,首先给出 C语言的用途以及学习本课程的目的,指出当前流行的 Unix操作系统等基本上是采用 C语言实现的,许多网络及单片机、嵌入式系统以及各软件开发平台与 C语言的相关性,强调了 C语言的基础性和实用性。通过介绍,学生明白了该课程的重要性,对学习该课程产生了动力,增强了学习兴趣。在课程教学计划的制订中,我们注重加强实践与训练环节比重,按 1∶1的理论课堂教学与上机实践时间进行配比,还强调了理论教学内的实践环节,使得实践课时数实际上超过理论课时数。教学强调一个“练”字,学生通过反复实践,增强了学习信心,课外也自觉学习了。
在教学中,注重把教学重心放在解决问题的算法分析上,培养学生分析与解决问题的能力。我们知道,算法的实现是围绕内存展开的,所以,在教学改革过程中,通过强调冯·诺依曼结构下的计算机运行机制,强调了内存的重要性,在教学过程中始终贯穿内存分配及缓存机制的实质。这样,在讲授数组与指针、结构体变量的内存分配时,学生理解就相对容易多了。在案例的选择上,我们通常采用生活中的趣味性、实用型的诸如水果拼盘问题、超市 POS、学生成绩管理系统等相关模块进行教学。例:引入循环时,通过用一个简单的例子:一个同学准备围绕运动场跑十圈,请另一个同学帮忙计数,要求每跑一圈告诉所跑圈数信息。用通俗易懂,既能吸引学生,又易形成互动,活跃课堂,提高课堂效率的案例始终贯穿整个教学过程,注重从直观到抽象,从特殊到一般渐进地学习,既避免了许多教材主要是数学化抽象案例的弊端,也避免了学生在学习语法知识的过程中既要用心掌握好相关语法知识,又要分散精力去思考数学实现,从而减轻了学习负担,提高了学习热情。通过对案例实现过程的分析,引导、启发学生逐步理解与掌握分析解决问题的方法与步骤,使整个学习过程下来,既能轻松掌握语法知识,又能在分析与解决问题上有所收获。最终通过各案例相关模块实现融会贯通,加深对程序设计的结构化、模块化设计思想体会,真正达到学习 C语言程序设计的目的。
2.教学手段的改革
在教学过程中,除加强正常的上机实践外,还注意教学手段的改革,充分利用现代教育技术成果。首先,在多媒体课件的制作上,注重吸取各教材之长,注重语法知识描述言简意赅,而不仅仅是教材的简单拷贝。在实践平台上,将该课程配套实验平台 VC++6.0搭建于课堂之上,在语法知识点的讲授后,通过所选案例,让学生参与一起分析,一起写出算法描述,并在课堂上同步编写程序,然后调试和实现程序,使抽象的结果通过程序的运行得以实现,让学生眼见为实,所见即所得,减弱了程序设计的抽象性,加深了对程序设计过程的体验,使学生较轻松地逐步掌握程序设计的一般方法步骤。
在授课的过程中,注意充分应用教学辅助工具。例如: Excel就是一个很好的对内存分配的分析和画程序流程图的辅助工具,在分析问题时,通过 Excel表格把抽象的内存图形象、清晰地展现了出来,取得可视化的效果,加深了学生对内存的理解,较好地解决了连续内存分配的地址计算和间接寻址问题,很好地解决了内存抽象性问题,不但加强了教学过程中的互动,同时也变学生被动学习为主动学习,不但丰富了教学手段,也提高了学生的参与意识和课堂效率,学生有了学习的兴趣,分析解决问题的能力也逐步提高了,同时还解决了学生听得懂但真正编程时无从下手的问题。
在学生具备一定的程序设计能力的基础上,通过在程序中有意识的错误设置,强调调试程序的重要性,让学生充分体验与掌握调试程序的方法,逐步提高学生独立调试程序,并在调试过程中发现问题、解决问题的能力,减轻教师在上机实践过程中的辅导压力,整个教学过程让学生在“做中学”,这也正是实用教育思想 CDIO工程教育模式的应用体现,让学生以主动的、渐进的、实践的、项目式的方法进行学习。
3.课堂外补充
作为一门程序设计类课程,仅仅靠课堂内的学习是难以熟练掌握的,必须在课堂外主动学习,通过不断强化,对语法知识加以灵活应用,才能熟能生巧。为方便学生学习,我们建设了自己的教学网站,提供了电子教案,课堂视频、作业系统、网上考试系统、网上论坛及网上答疑系统,同时在网站上还提供了许多 C语言程序设计精品课程网站链接,每位教师与所带班级都建立了课程 QQ群,方便提问和答疑,让学生通过课外自主学习,及时的掌握所学知识。
4.提高教师素质
“双师型”的教师要求教师既要能将课上好,又要能将实际应用带入课程,使教学从实践中来,又服务于实践。随着教学改革的深入,现代教育技术和成果的应用,以及应用型人才培养的需要,对老师素质提出了更高要求。在将实验平台搭建于课堂之上后,由于是在课堂上编写程序,而不是已编写好的程序的展示,这就要求老师具有良好的计算机辅助工具的使用能力、字符输入能力和程序设计能力。对此,通过制度建设,我们要求老师在日常工作中狠下苦功,勤练基本功,积极参与到教学改革实践中,通过参与社会工程项目实践,与 IT企业结对子,到企业锻炼,合作开发等,采用各种方法、手段,不断积累项目经验,按“双师型”要求提高自己,以项目、案例式教学为主,满足了教学的需要。
四、结束语
要上好一门语言课,尤其是 C语言程序设计这样的一门传统的程序设计入门课,除了要求学生主动学习外,教师还应因材施教,采用现代的教学方法与手段,使教与练相结合,切实解决好程序设计教学中易出现的问题,注意利用比喻、趣味、应用型案例来提高教学质量,这是在教学中转难为易的良好方法。
参考文献
一、 填空題(每空1分,共20分)
1. 是C程序的基本单位,一个C程序总是从 开始执行。
2.C语言规定标识符只能由字母、 和 3种字符组成,且第一个字符必须为字母或 。
3.计算机科学家沃思提出的一个公式:数据结构+ =程序
4.Turbo C++中,若有语句:unsigned int a;则a的范围是0~
5.C中的转义符“r”表示: 。
6.表达式 21 / 4 的值为 。
7.C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中以便保存,必须使用 。
8.已知a=12.789,则表达式 (int)a 的值为 。
9.表达式 3 | 2 的值是 。
10.若a=5,经a-=3;后a= 。
11.已知ch='a',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为 。
12.C中定义符号常量E为2.71828的宏命令是 。
13.函数形参和调用的实参是数组名时,参数按 方式进行传递。
14.C中按位与运算符是 、按位异或运算符是 、按位或运算符是 。
15.定义一个结构变量,共三个成员分别是字符型、整形和浮点型,则该结构体变量所占内存长度为 个字节。
二、 单项选择题(每题2分,共40分)
1.下列C语言标识符中,不合法的是……………………………………………( )
A. myname B. Wend
C. sum D. student
2.欲从键盘给整型变量a赋值3,b赋值2,则对应语句 scanf("a=%d,b=%d",%a,&b); 的输入格式是……………………………………………………………………( )
A. 3 2 B. a=3 b=2
C. a=3,b=2 D. a=b=3,2
3.C语言源程序文件后缀名是……………………………………………………( )
A. .exe B. .obj
C. .bat D. .c
4.结构化程序设计的三种基本结构是…………………………………………( )
A. 顺序结构、复杂结构、循环结构
B. 顺序结构、分支结构、循环结构
C. 顺序结构、分支结构、选择结构
D. 顺序结构、复杂结构、分支结构
5.以下表达式中,值为0的是……………………………………………………( )
A. 15%5 B. 15/5.0
C. 15/5 D. 15>5
6.设下列表达式中所涉及的变量均已正确定义,则不符合C语言语法的是…( )
A. 4||3 B. a+=4
C. a=3,b=5 D. char(65)
7.设变量定义为【int a[3]={1,3,5}, *p=a+1; 】,则*p的值是………………( )
A. 2 B. 3
C. 4 D. a+1
8.在C 语言程序中,在函数内部定义的变量称为………………………………( )
A. 全局变量 B. 外部变量
C. 全程变量 D. 局部变量
9.经过以下的变量定义后,正确的表达式是……………………………………( )
struct node {
char s[10];
int k;
} p[4];
A. p->k=21 B. p[0]->k=21
C. p(0)->k=21 D. p->s="Mary"
10.若变量c为char类型,则能正确判断出c为大写字母的表达式是…………( )
A. (c>= 'A')||(c<= 'Z') B. 'A'<=c<= 'Z'
C. (c>= 'A')&&(c<= 'Z') D. ('A'<=c)and ('Z'>=c)
11.C语言中以“只写”方式打开文件,应选择的参数是…………………………( )
A. o B. w
C. a D. r
12.变量定义为【int a[2][3]={1,2,3,4,5,6}, *p=&a[1][0]; 】,则p的值是( )
A. 数组a的首地址
B. 数组a的第1个元素的地址
C. 数组a的第“1”行第“0”列的地址
D. 数组a的第“1”列的首地址
13.用链表表示线性表的优点是…………………………………………………( )
A. 便于插入和删除操作
B. 花费的存储空间较顺序存储少
C. 便于随机存取
D. 数据元素的物理顺序与逻辑顺序相同
14.结构化程序设计主要强调的是………………………………………………( )
A. 程序的规模
B. 程序设计语言的先进性
C. 程序结构的规范化
D. 程序的效率
15.以下表达式中,不正确的浮点数常量是……………………………………( )
A. 2e2 B. 2.2
C. 2c2 D. 2E2
16. 若【int x=12,*p=x;】,则正确的赋值表达式是……………………………( )
A. p=*&x B. *p=&x
C. &p=x D. *p=x
17.设有如下程序段:
int i=15;
for(;i>=10;)i--;
执行完这段程序后,i的值是………………………………………………( )
A. 5 B. 4
C. 10 D. 9
18.设有如下程序段:
int i=15;
while(i<15)i--;
则以下描述中正确的是……………………………………………………( )
A. 循环体语句执行15次
B. 这是一个死循环
C. 循环体语句一次也不执行
D. 循环体语句只执行一次
19.设有如下程序段:
{char a[2][6]={"abcde","uvwxy"},*p=&a[0][2];
printf("n%s",p);
这段程序执行后,屏幕输出的结果是………………………………………( )
A. wxy B. cde
C. w D. c
20.设有如下程序段:
union
{int i;
char c;
}a;
a.c='A';
a.i=12;
printf("n%d",a.i);
这段程序执行后,屏幕输出的结果是………………………………………( )
A. A B. 97
C. 12 D. 65
三、 程序填空(每空3分,共15分)
1.以下程序的功能是输出杨辉三角形前10行,请在下划线处填上正确的内容,使程序能正确运行。
#include <stdio.h>
#define N 11
main()
{int i,j,a[N][N];
for(i=1;i<N;i++)
{a[i][1]= ;
a[i][i]= ;
}
for(i=3;i<N;i++)
for(j=2;j<=i-1;j++)
a[i][j]= ;
for(i=1;i<N;i++)
{for(j=1;j<=i;j++)
printf("%6d", a[i][j] );
printf("n");
}
}
2.以下程序的功能是利用函数求100-200间素数(质数)的个数,请在下划线处填上正确的语句,使程序能正确运行。
#include <stdio.h>
int isprime(int n)
{
int i,f;
f=1;
for(i=2;i<n/2;i++)
if( )
{f=0;
i=n;
}
return(f);
}
main()
{int i=100,n=0;
for(;i<200;i++)
if( )n++;
printf("Numbers of prime:%d",n);
四、 写出以下程序运行结果(每题4分,共12分)
1.以下程序输出的结果是:
#include "stdio.h"
void main()
{
char s[]=""hello"";
printf("%s",s);
}
2.以下程序输出的结果是:
#include "stdio.h"
void main()
{int a=12,b=13;
a=a+b;
b=a-b;
a=a-b;
printf("%d,%d",a,b);
}
3.以下程序输出的结果是:
#include "stdio.h"
void main()
{char ch[]="I love Great Wall of China!";
printf("%c",*(ch+5));
}
五、 编程题(第1题5分,第2题8分,共13分)
1.百钱百鸡问题:公元前5世纪,我国古代数学家张丘建在《算经》一书中提出了百鸡问题:鸡翁一值钱五、鸡母一值钱三、鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何? 试编程输出所有的买法。注意:每一种鸡至少要一只。
2.编程输出所有"玫瑰花数"。(一个四位数等于它每一位数字的4次方之和.那么我们称这个四位数为"玫瑰花数")
《C语言程序设计》B卷参考答案与评分标准
一、 填空題(每空1分,共20分)
1
函数
主函数 或 main函数
2
数字
下划线
下划线
3
算法
4
65535
5
回车
6
5
7
字符数组
8
12
9
3
10
2
11
a 或 97
12
#define E 2.71828
13
地址传递 或 传址
14
&
^
|
15
7
二、 单项选择题(每题2分,共40分)
1
2
3
4
5
6
7
8
9
10
B
C
D
B
A
D
B
D
A
C
11
12
13
14
15
16
17
18
19
20
B
C
A
C
C
D
D
C
B
C
三、 程序填空(每空3分,共15分)
1
1
1
a[i-1][j-1]+a[i-1][j]
2
n%i==0
isprime(i)==1
四、 写出以下程序运行结果(每题4分,共12分)
1.运行结果:
"hello"
评分标准:内容正确得2分,引号正确得2分
2.运行结果:
13,12
评分标准:内容正确得2分,格式正确得2分
3. 运行结果:
e
五、 编程题(第1题5分,第2题8分,共13分)
1.参考程序:
#include "stdio.h"
void main()
{int cock,hen,chick;
for(cock=1;cock<20;cock++)
for(hen=1;hen<33;hen++)
{chick=100-cock-hen;
if(cock*5+hen*3+chick/3==100)
printf("cock:%d hen:%d chick:%dn",cock,hen,chick);
}}
评分标准:程序结构正确得3分,算法正确得2分
2. 参考程序:
#include "stdio.h"
void main()
{
int i,g,s,b,q,m;
for(i=1000;i<=9999;i++)
{g=i%10;
s=i/10%10;
b=i/100%10;
q=i/1000;
m=g*g*g*g+s*s*s*s+b*b*b*b+q*q*q*q;
if(i==m)printf("n%d",i);
中图分类号:G642 文献标识码:A 文章编号:1003-2851(2011)09-0-01
一、引言
随着我国的高等教育的普及化,民办教育已成为我国教育体系的重要组成部分。C语言程序设计课程是我院部分专业学生必修的基础课程。该课程的教学目的是向学生介绍程序设计的基本知识,培养学生解决和处理实际问题的思维方法与基本能力,使学生具有初步的程序设计和程序调试的能力,为今后使用C语言解决实际问题打下良好的基础。为此,笔者在从事民办学院C语言程序设计课程教学的过程中,针对我院学生特点,对教学方法和实践教学环节的教学改革做了一些探索。
二、课程教学面临的问题
目前,在C语言教学中存在着以下几方面的问题:
(一)独立学院在校学生的基础比较薄弱。
(二)C语言牵涉到的概念复杂,规则繁多,使用灵活,使学生在学习时感到厌倦。
(三)缺乏较好的教学方法
传统的教学方法已经不能适应独立学院教育的特点,采取何种适合独立学院学生的教学方法,是教学改革的一个重点。
因此,面对新的教学对象,如何丰富教学方法、改革教学模式、加强对教学过程的管理、保障教学任务的顺利完成,是我们必需认真思考和解决的问题。
三、课程教学改革的实践与探索
(一)对比式教学的应用
对同一问题,引导学生从不同的角度去思考,找出多种方法来解决。比如,在解决1+2+3+….+100的和的问题时,可以采用for循环,或while循环,也可以采用do…while循环。这种对同一问题寻找不同解决方法实现的教学方式,有效地开阔了学生的思路,同时通过对不同循环的比较,能够找到这三者之间的联系与区别,加深学生对循环的理解和掌握。
(二)温故而知新
为了使学生能举一反三、触类旁通,每次教学结束时及时布置相关的课后练习,使学生在课后进一步复习巩固,同时在下一次课讲课之前,将上节课的重点以习题的形式让学生当堂完成,并且当堂给予订正与讲解,对完成好的同学给予适当的奖励,激发学生的兴趣。为学习以后的知识奠定坚实的基础。
(三)注重情感教育
教师无论在课堂上还是在课下都应该关心同学,了解他们的思想动态,及时与他们交流,解决他们各方面的困难。使学生从心理上能够喜欢老师,达到爱屋及乌的效果。
(四)加强实践教学环节
1、启发学生的学习兴趣,使学生的学习由被动变为主动。定期组织涉及到大量的典型应用的计算机程序设计竞赛,激发学生的学习兴趣,鼓励学生参与项目,使学生学以致用。
2、加大实验教学力度,真正培养学生解决实际问题的能力。对实验要有老师演示,学生模仿,到最后的逐渐放手,让学生自己来实现源程序编写、调试和运行。以锻炼学生的动手能力、创新能力和表达能力。
(五)充分应用现代教育技术
教学中采用电子演示文稿、大屏幕多媒体联机演示、网络教学等各种先进的教学手段,使课堂教学生动活泼,既提高教学效果,又提高教学效率。
1、充分利用多媒体技术将课程的重点难点以及抽象的内容通过动画的形式直观、形象、生动地展示出来,使学生更易于理解和掌握;2、利用网络将课堂教学延伸到课外,学生根据需要通过网络学习有关的内容。教师的课件和教学用资料上传到教学资源下载中心,方便学生课外学习和复习;3、建立QQ群,同学们可以在群里相互解决疑难,也可以通过在线老师解决,这样可以使遗留问题及时得到解决。
四、结束语
通过C语言程序设计课程存在的问题的思考和分析,针对现状,结合独立院校实际,结合教学和个人体会,提出一些改革的措施和想法,探索出一套适合于独立学院学生的教学方法。
参考文献:
[1]张天宝,王攀峰.讨论新型教与学关系的建构[J].高教研究,2001.
[2]沈军.C程序设计语言课程的教学新思路[J].电气电子教学学报,2000,(4):28-29.
0 引言
创新能力的形成和发展以实践活动为基础,实践能力是创新能力形成和发展的重要前提条件。早在“十五”期间,教育部高等学校教学指导委员会在《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》中提出的三个辅助建议之一便是“加强学生实践和动手能力的培养”。
为了指导实践教学,文献[1]解读计算机科学与技术专业实践教学体系与规范内容;文献进一步构建高校实践教学体系,由实验实训、实习、综合设计、社会实践、创新创业5个子系统组成;文献从工程实践角度,分析实践教育存在的问题以及如何在实践教育中突出培养学生的工程实践能力和创新能力;文献[7—8]对国际创新工程教育模式进行解读,为中国的实践教育提供新思路;文献从某门具体课程角度,探讨如何在课程中培养学生的程序设计能力和创新意识。
上述引用文献从各个角度探讨实践的意义,讨论如何通过实践教学改革提高学生的动手能力和创新能力。要将这些理念运用到具体的课程中,需要与学生的实际状况、课程特点相结合,并在具体实施过程中突出动手能力培养。c语言程序设计课程是一门重要的专业基础课程,通常也是学生进入高校接触的第一门计算机课程,笔者针对教学过程中遇到的许多需要解决的问题,提出考虑学生水平差异性的实践教学策略。
1 问题分析
1.1 学生特点分析
高等教育从“精英型”转变到“大众型”,同一年入学学生的学习能力和动手能力确实有较大差别。c语言程序设计实际教学过程中,学生之间存在较大差异,大致可分为3个层次。
第1层次学生已有某门编程语言的入门基础。由于教育背景的差异性,部分学生了解程序设计的基本思想,动手编写过程序,广泛阅读过与信息技术相关的杂志和书籍。c语言是编程入门语言,该层次学生可以通过自学快速完成语法框架的学习,迅速进入深入学习算法问题的阶段。对于该层次学生来说,根据教学内容安排的实验方案比较浅显,学生得不到思维能力训练。
第2层次学生具有一定的信息技术基础。该层次学生能够借助计算机中常用工具软件、网络平台进行信息的表示、获取和处理,解决实际学习中遇到的问题。对于该层次学生来讲,虽然没有程序设计的基础,但是兴趣使得他们在学习该门课的过程中能够做到扎实好学。
第3层次学生没有任何信息技术基础。该层次学生仅对上网、游戏等有所认知,对程序设计、计算机原理等知识不感兴趣,学习积极性不高,主动学习能力较弱,语法掌握不牢,实验进度停滞不前,需要从掌握基本知识点开始加以训练。
1.2 教学中的问题分析
与学生层次相对应,我们在实践教学中发现很多学生容易出现编程错误,并且出现错误无法自行调试解决或耗费大量时间才能解决。出错的问题可以归结为3种。
第1种是语法错误问题。出现此类问题的学生基础薄弱,主观上感觉较吃力,对语法知识点掌握不牢,编程风格较差,不能根据错误提示判断错误的内容,不会使用调试工具。
第2种问题是语义分析问题。出现此类问题的学生具有一定的语法基础,但是从语法层次过渡到语义功能编写时有困难,独立完成语义实验能力欠佳。
第3种是算法难度问题。出现此类问题的学生已经能够独立完成语义功能的编写,但是独立解决问题的能力还有所欠缺,因此我们可在语法功能题的基础上,超前加入算法题,开发学生的逻辑思维。
2 解决思路
我们针对上述问题,跟踪国内外人才培养模式和实践教学体系;针对实践环节的特点,以培养具有综合实践创新能力的人才为目标,研究实践教学改革方法,构建分层次实践教学内容体系及规范评价方法等。
2.1 “粗、精、仿、练、操”教学理念
理论与实践的关系一直是工程教育争论的焦点,不同国家处理这一争论的方式有所不同。在美国,教育界在实践与理论之间如同钟摆不断寻找平衡;而在欧洲,双元制的工程教育体系分别侧重于工程教育的理论和实践两个侧面。
目前,该课程的授课理念仍停留在语法灌输以及语义问题的分析与解答层次。理论课与实践课之间的关系不是分割独立,而是相辅相成。理论课上学习的内容需要在实践课中消化、转化及完善,实践课需要基本语法、程序框架等理论知识的支撑。我们提出的“粗、精、仿、练、操”5步教学理念具有很强的可操作性,使学生既掌握基本的知识点,又掌握学习方法。
粗,是指粗讲基本语法和程序框架,尤其对那些繁杂、比较抽象和“绕人”的内容不能一味灌输,而要适当地弱化语法,缩减单纯语法所占篇幅,将大量与语法有关的基本概念渗透在“练”“操”中,重点强调语言的应用,同时配合上机练习,让学生在理解中加强记忆,以起到事半功倍的效果。
精,就是精讲教材中的示例程序,讲解设计方法和技巧。大多数例题都有一定的代表性和渐近性。
仿,是在“精讲”的基础上多出模仿示例,让学生动手编写与示例内容和结构相近的程序,逐步“仿造”出“好”程序。
练,就是多做练习题,特别要让学生在课外作业中独立完成程序跟踪和程序填空题,对巩固语法规则和提高学生的程序思维能力大有好处。
操,即上机操作,在纸上编写的程序是“静止的”“死”程序,只有上机操作,才能让程序“活”起来,从而逐步学会如何在调试过程中找出程序中的语法和逻辑错误。只有学会在机器上编程并调试,才算真正学会编程。
在实践课时有限的情况下,想锻炼好学生的动手实践能力,理论教学必须起到对实践教学的最佳支撑作用。5步教学理念将理论课和上机课有机结合起来,扩大了理论课的辐射范围,理论课和实践课的精密配合使得学生可以充分利用有限的实践教学环节。
2.2 实践教学改革思路
“听过的会忘记,看过的会记得,做过的才能理解”,理解了才能更好地应用,才能有更多的创新。关注学生的行为体验是做好实践教学改革的重要环节。为了满足不同层次学生的需要,我们设计4类实验,构建“语法题一基础题一设计题一综合题”的递进式实践内容,培养学生的自信心和求知欲,在“理论一实践一再理论一再实践”的反复过程中,促进学生学习能力的提高,深受学生欢迎。
1)实践分层次进行,体现因材施教。
我们按照学生的不同层次将实验内容设置分成语法题、基础题、设计题、综合题4部分。其中,语法实验题将基本语法知识划分成多个小问题,专门为基础较差、平常上机经常犯语法错误的学生准备。语法知识的训练可穿插在每章的基础题之前,然后再进行基础题的实验。对于第3层次学生,基础较薄弱,必须从语法题做起,然后才能做基础题,学有余力的部分学生还可以做设计题。对于第2层次学生,基础扎实的学生可以直接从基础题做起,而思维比较活跃但经常出现编程语法错误的学生,则与第3层次学生一样,必须从语法题做起。对于第1层次学生,不必循序渐进做实验,可直接从设计题做起。各层次学生对应的实验内容设置如图1所示。
2)实验分小组完成,培养团队协作能力。
实践有多种内涵,CDIO工程模式要培养的是全面发展的工程师,既熟悉技术,又懂营销,具有与人沟通和团队合作的能力,但这只是一种理念,并未说怎么做和怎么实现。为了培养学生的沟通和团队合作能力,我们可以将学生分组,让学生之间配合完成实验。
随着进度的加深,到后期做到算法题时,我们可以安排学生4人一组组队做实验。小组成员分工明确,第1步讨论需求分析,提出要实现的功能;第2步对功能进行模块划分,每名成员实现部分模块,最后有专人将模块合并并调试,另有专人写文档。在实施的过程中,学生需要及时对出现的问题进行交流讨论,寻找解决的方法。算法题可由学生自己选择,也可由教师出题,重要的是学生能够根据这些题目内容进行探索。一方面,小组成员通过交流协作,积极寻找问题的解决方案,类似于企业中项目的组织实施过程,培养学生的沟通协作能力;另一方面,算法题的解决思路由学生自己探索,从中寻找学习的乐趣,激发潜能,培养创新和自主学习能力。算法题实验分组如图2所示。
3)实践内容放人工程或生活背景中,体现学以致用。
创新与掌握知识的多寡并不一定呈正相关,但与工程实践能力的强弱一定呈正相关。对有条件的学校和学有余力的学生,应鼓励参与各种形式的课外实践和创新性题目的研究。融入工程和生活背景的实践内容,可以提高学生的学习兴趣并让学生学以致用。例如,网上流行的计算机作词通过将全宋词本进行词频排序后,随机抽取词语组合成一首宋词,意境优美,学生完成后非常有成就感;对于贪食蛇、打字母游戏等,学生都兴趣盎然,当然这需要教师予以一定的指导,因为有些内容是学生没有学习过的。另外,将蓝桥杯等程序大赛中算法设计思想体现优化策略的题目整合到实验中,并引入少量算法结构题,如链表等结构的使用,体现算法的优化效果。算法题大体可以分为3种题目:实用趣味题、优化策略题(如贪心策略、动态规划、回溯法)、程序设计竞赛题。
通过引进不同类型的题目,训练学生创新思维、自主学习和综合运用所学知识的能力。学生做完这些题目后,还可以在理论课堂上讲解演示,以提高其他学生的学习兴趣,增加学生间的互动。
4)完善评价机制。
主动实践是大学生创新实践能力培养的关键。完善的实践评价机制体现公平、公正性,有助于督促和激励学生,激发学生主动实践的潜能。为了制订有效的实践评价机制,我们设置语法题、基础题、设计题、综合题、组员打分5类分数,每类100分,这5类分数分别乘上权值后求和得到最后的总分。评价机制中每类分数的比例设置如图4所示。这里的综合题相当于附加题,大部分学生并不一定能够完成,因此加权分数较少,但教师应鼓励学生完成此部分题目,充分挖掘每个学生的潜能。
3 实验效果
doi:10.3969/j.issn.1673 - 0194.2016.20.148
[中图分类号]TP312.1-4 [文献标识码]A [文章编号]1673-0194(2016)20-0-02
0 引 言
“C语言程序设计”是学生学习计算机程序设计的入门课程,目前大多数高校计算机专业学生都开设了该门课程,该课程的教学目标是使学生掌握C语言的基本语句结构、算法以及程序设计的方法和技巧,该课程是后续课程(如数据结构等)的前导课程,更是其他计算机专业课程的理论和实践基础课程,因此掌握好该门课程对学生具有非常重要的意义,那么如何在“C语言程序设计”课程教学中采用行之有效的教学方法来取得最佳的教学效果,是很多任课教师都在探索的课题。任务驱动型案例教学模式建立在建构主义教学理论基础之上,充分体现了“双主模式”的教学思想,是行之有效的全新教学方法,近些年已经在教学中被广泛应用,并积累了丰富的教学经验,本文将就任务驱动型案例教学模式在“C语言程序设计”课程教学中的应用进行详细探讨。
1 “C语言程序设计”课程传统教学法存在的问题
首先,目前大多数高校的“C语言程序设计”课程仍然采用传统的“填鸭式”教学模式,即课堂以教师讲授为主导,教师一言堂,学生被动地接受所学知识。由于该课程的特点是概念比较复杂,各种语句规则严格,每节课上教师把主要精力都集中在讲解各章节中涉及的语句、语法、程序等的基本格式功能以及使用方法上,与学生之间的互动非常少,不注重调动学生思考的积极性和主动性,学生不能参与到教学中来,使学生觉得此门课程难度大、内容枯燥乏味,因此对学习失去兴趣,上课注意力不集中、溜号现象严重。其次,教师过于重视理论内容,学生实验学时的安排也相对减少,上机操作时间不够充分,并且学生上实验时操作的主要内容只是将理论课上教师讲过的知识进行模仿测试一下结果,学生对所学知识并没有达到真正理解,只知其然不知其所以然,在课后学生自己很难独立写出良好风格的程序,没有真正实现对学生程序设计能力的培养。另外,当前的教学模式由于学生并没有参与过完整的系统开发,也使学生对所学课程缺乏整体认识,认为各章内容联系不大、互相脱节,使学生搞不清楚所学知识在实践中的具体应用,在以后的学习及工作中如果遇到相关问题,学生仍然不知所措,找不到解决问题的方法。总之,以上存在的教学问题使教学效果较差,既不能充分发挥学生学习的主动性,也不利于培养学生独立分析问题和解决问题的能力。
2 任务驱动型案例教学模式在“C语言程序设计”课程教学中的应用
2.1 任务驱动型案例教学模式介绍
传统的案例教学模式是把教学内容划分成一个个独立的典型案例程序,在教学过程中通过完成特定案例的事件情景来引导学生掌握相关的知识点,这种模式侧重于对案例程序本身的分析讲解,而对知识的延伸比较少,学生所掌握的知识点是零碎不系统的,不利于培养学生综合分析问题的能力。而任务驱动型教学模式是以完成一个或多个任务为主线来展开教学,把各章节的知识点融入到完成任务的各个环节中去,在推进任务的完成过程中,不断拓宽知识的深度和广度,直到将任务全部设计完成,使学生既学到了知识又培养了能力,但这种教学模式可能会遗漏一些重要的知识点,使学生对某些重要的知识点掌握不牢固。
任务驱动型案例教学模式汲取了案例教学模式和任务驱动教学模式各自的优点,首先在课前教师要设计一个与学生所学专业相近或日常比较熟悉的大项目作为教学任务向学生,然后在教学过程中再把这个大的项目任务划分成多个具体小案例,每个小案例都与这个大“任务”有着密切联系,教师在每节课的具体教学时再把各个知识点结合这些小案例进行分析讲解,使整个教学过程都以完成这个“任务”作为驱动,一步步推进任务,直至将整个大任务完成,这种教学模式将教师由知识的传授者变成了教学的引导者,使学生真正参与到教学中来,每节课学生都要带着任务去学习,在完成任务的过程中逐渐掌握所学知识,既能够提高学生的学习兴趣和学习的积极主动性,同时也培养了学生解决实际问题的能力。
2.2 “C语言程序设计”课程教学内容介绍
第一章:C语言概述,主要包括C语言的发展历史、C语言的特点、C语言程序设计初步、C程序上机调试步骤等内容。
第二章:基本数据类型与常用库函数,主要包括字符集与标识符、基本数据类型、常量、变量、数据的输入与输出函数、常用库函数等内容。
第三章:运算符和表达式,主要包括算术运算符和算术表达式、自增自减运算、位运算、赋值运算、关系表达式与逻辑表达式、条件表达式与逗号表达式等内容。
第四章:算法与C语言程序设计基础,主要包括算法的概念、算法的常用表示方法、结构化程序设计方法、顺序结构程序设计、选择结构程序设计、循环结构程序等内容。
第五章:数组,主要包括一维数组、二维数组、字符数组等内容。
第六章:函数,主要包括函数的定义、函数的调用、函数的嵌套调用与递归调用、局部变量和全局变量、变量的存储类别、内部函数和外部函数等内容。
第七章:编译预处理,主要包括宏定义、文件包含、条件编译等内容。
第八章:指针,主要包括指针的基本概念、指针与一维数组、指针与二维数组、指针与字符串、指针与函数、指针数组与多级指针等内容。
第九章:结构体与共同体,主要包括结构体类型的定义、结构体类型变量、结构体数组、结构体和指针、结构体和函数、链表、共同体、枚举、用typedef定义类型等内容。
第十章:文件,主要包括文件的基本概念、文件的打开和关闭、文件的读写、文件的随机读写、文件状态检查函数。
第十一章:C++与面向对象技术,主要包括C++语言简介、C++程序简介、C++对C的扩充、类和对象、构造函数、析构函数、继承与派生类等内容。
2.3 任务驱动型案例教学模式在“C语言程序设计”课程教学中的具体应用
“C语言程序设计”课程具有很强的实用性,既可以用来编写系统软件,又可以用于编写各种应用软件,非常适合任务驱动型案例教学模式。为了集中学生注意力、提高学生的学习兴趣,教师在教学的第一次课上可以向学生展示使用C语言软件开发的应用软件例子,比如:学生成绩管理系统、财务管理系统等,以此作为贯穿整个一学期学习程序设计的大任务,然后再详细向学生介绍系统的总体架构以及包括的各项功能模块,以学生成绩管理系统为例,该系统主要包括成绩的录入、显示、添加、删除、修改、查找、排序、计算总分与平均分、保存数据和退出系统等功能,然后将实现该系统所用到的“C语言程序设计”课程中的各章相关知识点向学生简单作介绍,使学生对该门课程有个整体的了解,并体会到学习该课程的实际意义,接下来以开发完成该系统这个大任务作为整个教学过程的驱动,再将该系统各项功能模块的实现作为具体的小案例来展开教学,使教学的全部内容与该系统完全融合在一起。下面对实现该系统所设计的小案例以及涉及的知识点进行简单介绍。
小案例一:进入系统界面的实现,应用到顺序结构程序设计及输出函数等相关知识点。
小案例二:成绩录入的实现,应用到循环结构、一维数组、二维数组、字符数组等内容。
小案例三:成绩查询的实现,应用到表达式、数组、选择、循环结构程序设计、函数、结构体数组、指针等内容,其中可以实现按用户输入的条件等进行成绩的查询。
小案例四:成绩排序的实现,应用到各种排序方法、结构体数组、指针等内容。
3 结 语
通过几年的教学实践证明,在“C语言程序设计”课程中引入任务驱动型案例教学模式,与传统的教学方法相比,不但使学生的学习兴趣更加浓厚,而且大大提高了学生学习的积极主动性,同时学生分析问题解决问题的能力也明显增强,取得了非常好的教学效果,对“C语言程序设计”课程教学起到了积极的推动作用。
Key words C programming Language; teaching organization; teaching method
“C语言程序设计”课程是计算机专业学生的一门程序设计入门课,是培养学生程序设计思想和能力的技术基础课,同时也为后续的专业课程奠定了坚实的基础。其中专业核心课程“数据结构”一般以“C语言程序设计”为辅助教学工具,学生在具备了“C语言程序设计”的基本程序设计思想和方法以及数据结构的基础知识后,才能进一步学习Visual Basic、Java等高级语言程序设计。因此,必须将“C语言程序设计”课程的教学作为计算机专业培养的核心任务。
1 “C语言程序设计”教学现状分析
目前,计算机专业“C语言程序设计”课程的教学大多还停留在传统的教学模式上,主要以教师的“教”为主,教师根据教学内容的组织讲授基本的概念、讲解例题、布置作业给学生进行上机练习,学生在教师的指导下完成编程练习。在教学的过程中,学生完全处于被动接受的状态,无法发挥学习的积极性和主动性,以至于大部分学生普遍反映“C语言程序设计”枯燥、难学,缺乏学习兴趣,学生普遍的编程能力较差。
由于新生入校后已有的计算机专业基础知识薄弱,学习方法欠佳,以至于学生在初次接触“C语言程序设计”这样抽象难学的程序设计课程时,都会难于正确把握课程的学习方法。因此,任课教师应该准确地分析学生的学习现状,深究原因,找到解决方法,能够最大限度地激发学生的学习兴趣,引导学生合理有效地学习,并且培养学生分析和解决问题的能力。
2 “C语言程序设计”教学改革
依据培养目标的定位,教师应以培养学生基础能力和提高学习兴趣为原则,合理地开展“C语言程序设计”课程的教学改革。为此,笔者结合“C语言程序设计”的教学体会,提出如下的观点。
2.1修订“C语言程序设计”的教学大纲,编写和选用适合计算机专业的教材
首先,教师应准确定位课程的教学目标和任务,“C语言程序设计”课程的教学目标主要体现在知识、技能和素质三个方面。其知识目标要求学生较好地掌握“C语言程序设计”的基本语法、语句、控制结构以及结构化程序设计的基本思想,这是学习本门课程的核心要求。课程的技能目标体现在使学生认识到算法、良好的程序设计方法及上机实践的重要性,并且掌握算法设计和结构化程序设计的方法。另外,在素质目标方面要求培养学生利用“C语言程序设计”分析和解决实际问题的能力。其次,教师应结合教学目标和任务合理组织教学大纲。鉴于“C语言程序设计”课程实践性较强的特点,教师还应根据教学大纲的要求,制定合理有效的实践教学大纲,制定实践教学内容和实施方案。实践教学内容应紧密联系实际应用,并强调充分调动学生的积极性、主动性和一定的团队协作能力,另外还应注重培养学生分析和解决实际问题的能力。
依据教学大纲中教学内容的组织和实践教学的设计,教师应合理地编写和选用课程的教材。目前,“C语言程序设计”方面的教材甚多,以清华大学谭浩强教授编写的《C语言程序设计程序设计》一书为代表的一系列优秀教材为课程的教学提供了较好的导向作用。但根据计算机专业的培养目标和课程的定位,教师应对教材的内容进行适当的调整。
另外,在教学过程中教师应严格按照程序设计的规范和方法分析和解决应用问题,应培养学生规范的程序设计方法和严谨的编程习惯。例如要求学生在日常程序设计练习中按照“问题定义―问题分析―算法设计―编写程序―上机调试运行”的流程实施,并且在算法设计环节使用规范的程序流程图描述算法。这样一系列的措施有助于培养学生良好的编程风格和习惯,为后续其它的程序设计语言的学习夯实基础。
2.2改革教学组织和实施策略,优化教学结构
由于“C语言程序设计”课程的实践操作性较强,学生在上机实践的过程中,不仅可以消化和巩固课堂所学知识,还可激发和提高学习兴趣、锻炼逻辑思维能力。教师应注重将课本上的理论知识和实际应用问题进行有机结合,提高学生的程序设计能力,进一步培养学生分析问题和解决问题的能力。因此,课程的教学组织主要分为理论教学、上机实践教学和课程设计教学三个环节。
其中,理论教学主要遵照教学内容的要求, 采用多媒体教学与传统板书教学有机结合的方式,实施理论与实践一体化的多媒体教学环境,实现交互式教学。其次,教学中应重视“兴趣引导”,激发学生学习热情,引导学生主动学习。另外,应注重以模拟实践教学为主线,提高课堂教学的教学效果。
上机实践教学以课堂理论教学为前导,内容设计应以巩固和综合运用主要知识点为主线,内容具备实用性,以循序渐进的任务驱动方式指导学生从简单的程序设计开始逐渐扩展到完成综合的程序设计,以由浅入深、由单一到综合的过程展开,符合学生的认知习惯和知识的拓展,使学生利用所学知识解决实际的问题,培养程序设计的能力。
结合课程的特点,课程设计环节应利用“C语言程序设计”的基础理论和上机实践课中学到的编程知识和编程技巧,通过布置具有一定难度、一定编程量的课程设计任务,使学生通过课程设计掌握高级编程语言的知识和编程技术,具备分析问题和解决问题的能力。
2.3秉承合理有效的教学理念,改革传统的教学方法
传统的“C语言程序设计”教学方法一般采用灌输式的单向教学法,学生被动地接收知识,并且教学知识点零散,建构系统的知识体系,另外理论教学和实践脱节,学生只会纸上谈兵,动手实作能力较差,不能利用所学的知识解决实际问题。因此,在教学过程中应重视教学方法的改革。“C语言程序设计”教学主要采用“任务驱动”、“案例教学”、“讲练结合”的教学方法,三种方法有机结合,合理地组织课程的教学。
“任务驱动”教学法要求按照教学目标的要求,围绕教学内容,合理地安排一个任务。其主要分为三个基本环节,首先提出任务,例如设计判定学生成绩等级的程序;进一步分析任务,提出问题的解决方法,主要设计程序的算法;最后解决任务,讲授解决任务运用的知识点,例中主要的知识点为选择控制结构的语法及应用。
“案例教学法”以综合的“C语言程序设计”程序案例为主线,贯穿所有章节的知识,课程教学具有系统性和连贯性。例如,提出“学生成绩管理系统”案例,实现成绩的录入、添加、修改、删除、查询、统计和排序等功能。通过分析案例,明确系统的基础知识和各个功能模块的相关知识点,如表1所示。
另外,“讲练结合”的教学方法主要应用于上机实践教学环境中,采取边讲边练的教学互动形式,完成程序设计实例。教师先讲解和演示与本次实践任务相关的应用问题和注意事项,学生按照要求动手完成实践任务,教师及时了解学生在实践中出现的问题,加以正确的启发和指导。最后教师对本次实践任务的完成情况进行总结,集中反馈出现的问题并提出解决方法。
2.4完善课程的考核方案,合理评价学生的学习成果
鉴于“C语言程序设计”课程理论和实践并重的特点,课程考核应主要分为理论考核和实践考核两大方面。其中理论考核以笔试为主,考试内容应遵照教学大纲和考试的要求,突出课程的主要知识点;实践考核主要以上机实践教学环节制定的任务和课程设计为考查对象,客观地反映学生掌握知识和运用知识的能力。
一、前言
C语言是一种通用性计算机程序设计语言。它兼有汇编语言和高级语言的双重优点,运用它既能编写操作系统软件,又能开发各个领域的应用软件。C语言的实用性使之成为编程的首选语言。学好了C语言,再进一步深造C++/VC++,JAVA等言语,就有了坚实的基础。但目前很多学生在学习《C语言程序设计》后,感觉读程序还凑合,编程则“难于上青天”部分学生甚至毫无编程想法,仅仅是为应付考试而死记硬背,完全背离了高职教育的初衷。因此,如何在C语言教学中启发并训练学生的编程思维,是每个教师应深思的问理。以下是笔者在C语言教学中的一些看法,愿和同行探讨。
二、上好第一堂课
如何上好第一堂《C语言程序设计》课是至关重要的。因为学生都是初次接触C语言,C语言对他们来说是神秘的,“兴趣永远是最好的老师”,有了兴趣他们才会积极主动地去学习,所以第一堂课的成功与否直接关系到学生能否对这门课产生兴趣,所以我觉得第一堂课应为“趣味C语言导学课”。
(一)程序结果展示,激发兴趣
要激发学生的兴趣。首先要让大家知道C语言的强大功能,利用它我们能编写各种软件,通过幻灯片向学生展示各种结果画面,例如从50年代玩的摇杆游戏到如今的电脑游戏。相信这时有些学生已经有些“蠢蠢欲动”了。恨不得立刻学好C语言。
(二)强调C语言的重要性
C语言是学生今后学好后继课程的基础,比如数据结构。C++,JAVA等。虽然程序设计语言更新很快,但如果真正掌握精了程序设计思想,具备了真正解决实际问题的能力。语言再更新可程序设计的本质不会变。
(三)传授C语言的学习方法
C语言是一门实践性课程,要理论结合实践,加强学生的动手能力,解决问题的能力,在学习方法上给以学生指导,告诉学生如何自学,如何听课,如何动手实践,明确一点:“C语言不是看会的,也不是听会的,而是亲自动手实践练会的”,强调实践的重要性。
(四)认识C语言的编译环境。
在visualstudio2005环境下,举出几个简单的小程序演示给他们看,并逐一讲解,引导学生自己去发现程序中存在的缺陷以及改进的方式。熟悉C语言源程序到可执行文件的整个操作流程。让他们仿照所列举的几个程序模仿着编一个小程序。
三、C语言教学方法
(一)抽象思维到形象思维的转化
让学习过程变得轻松有趣是激发学生兴趣的关键所在,C语言本身是一门极其抽象难懂的学科,把抽象的问题形象化,使本来枯燥无味的C语言变得魅力无限,符合学生的认知规律,可以收到良好的效果。
(二)采用问题启发式授课,激发自主学习
针对C语言概念多,语法繁的现状,采用问题启发式教学可以将难理解、难记忆的概念和规则变成一系列时而醒目、时而深奥的问题呈现在课堂教学中,这样就能把学生的注意力集中起来,学习积极性调动起来,达到师生互动的效果,教师自问自答为主,有问有答,互问互答,改变单调死板、照本宣科的牧师讲法。这种启发式、讨论式、交流式的教法,不仅改变原来的灌输式,而且增强了学生自主学习的能力。
(三)“引申法”“框架法”和“求异法”相结合
所谓“引申法”是指是结合已经解决的问题,因势利导,引导学生在此基础上解决相关联的问题。“引申法”可以培养学生在程序设计方面的发散思维。提高程序设计中的应变能力。问题是活的,但程序是有章可循的。最终使学生明白,语法是有限的,可解决的问题是无限的。只有在分析实际向题的基础上,以清晰的思路去设计算法,才能举一反三,以不变应万变。
“框架法”可培养学生的全局思维和算法的整体设计能力。具体体现在两方面:一是在学生有了一点编程基础后要利用伪代码或流程图,从算法设计的角度讲解编程思路,而不应拘泥于语法细节,不分主次、逐条语句的讲解代码。通过此框架,可使初学者对函数设计的关键问题有清晰的认识,利于从统筹全局的角度去考虑问题,体现了程序设计逐步求精的思路。这样可以层次分明,突出算法设计的关键,利于培养学生的编程思路。二是在学习重点章函数时,由于新的算法已很少,主要是学习用函数调用的方法来重新编制以前所熟悉的程序,那么我们可以把着眼点放在函数的设计框架上,体现参数设计、返回值设计等关键问题,而无需细讲函数体的实现细节。
“求异法”:一个固定的问题。解决的方法可能不唯一,如果能启发学生多角度、多侧面去寻求解决问题的办法,则可激发学生思考的积极性,提高其学习兴致。在C语言中一题多解的情况有很多,有意识地引导新思路,鼓励新方法,以培养学生在编程中的求异思维,而不是死记硬背,墨守成规。超级秘书网
(四)理论教学与学生实践相结合,提高程序调试能力
对程序设计课来说,理论学习和上机要两手抓,两手都要抓硬。实验课不能流于形式,让学生照抄照搬,甚至身在曹营心在汉。必须给学生思考、创新的启迪,训练其实践能力,实验课要生动活泼,使学生既掌握书中的重点算法,又有充分的思考空间,让学生充分体会到顿悟和创造的乐趣。在进行每一部分的学习的时候,都应该配有相应的学生上机实践的机会。这样学生既锻炼了动手能力,又巩固了所学的知识。还应该让学生养成上机前分析题目,决定算法与数据结构,并编出程序源代码的好习惯,这样在上机时,学生就有的放矢,主要精力放在调式程序上需。对于普遍存在的问题,进行集中提示、讲解、演示以增加学生的印象。井及时检查总结学生上机实验的完成情况。
(五)在整个教学环节中,巧妙地引人软件工程的基本思想
在高职院校C语言教学中,教师经常忽略教研备课的作用和意义,同事之间因为所授课程的不同交流也减少了,而在常规的教学检查中又往往没有统一的标准和项目规范,因此无法准确地衡量教学水平。[1]本文采用说课形式,阐述了一定的教学观点,表述了具体执教C语言的教学设想、策略,以及组织教学的理论依据,对高职院校C语言的教学起到了积极影响。
1 课程的性质、地位及目标
(1)C语言课程的专业背景。其专业培养目标是:面向软件公司等IT行业,培养学生具有创新思维的能力,能从事软件编码、测试和技术支持服务等相关工作的高等技术应用型人才。专业就业岗位是:程序员、软件测试工程师、软件技术支持工程师。[2]
(2)课程体系结构定位及课程性质。软件专业第一学期开设C语言程序设计,第二学期根据专业方向的不同分别开设C#程序设计(.NET方向和3G)、JAVA程序设计(JAVA方向),第三学期分别开设C#Windows程序设计、数据结构、JSP程序设计,第四学期分别开设系统开发、J2EE开发,第五学期都将开设综合项目开发。由此可见,C语言的课程性质是高职高专计算机软件专业的专业基础课,为将来进一步学习C#、Java语言,掌握软件开发项目能力奠定坚实基础。
(3)课程目标。总体目标是:让学生在自主、和谐的氛围中感受编程的乐趣、激发学习知识的兴趣、培养团队合作精神,能力目标是:培养编程思维能力,熟悉基本程序设计方法,建立良好的编程思想和风格、解决实际问题的能力、将为后续其他相关课程的学习奠定基础,教学目标是:熟练应用三大语句、掌握程序的基本结构、掌握数组和函数的运用、掌握指针和位运算的基本操作。
2 课程设计的理念与思路
由于高职院校学生具有文化素质较低 、自控能力相比较差、学习积极性较差等特点,C语言的教学应采用教、学、做一体化的教学方法。[3]具体来说,通过突出重点教学来着重培养学生的编程思维能力,启发式教学来激发学生的学习兴趣,任务驱动创建一种基于工作实例的模式来培养学生解决实际问题的能力,项目教学可以使学生了解项目开发过程并培养学生的团队合作及沟通交流能力。
3 课程内容设计
(1)夯实基础。将C语言课程的内容分为四大模块:C基本概念、三种基本程序设计结构,数组与指针、函数。这样将有助于学生逐个模块对基础知识的掌握,从而夯实了基础。[3]
(2)突出重点与难点。C语言课程的重点模块是:程序设计基础知识、顺序结构程序设计、选择结构程序设计、循环结构程序设计、数组、函数,与其所对应的重点内容有:流程图的画法、变量的理解、表达式的正确书写、数据的输入/输出、if语句选择结构、while与for循环结构、函数的定义与参数传递。C语言课程的难点模块是:选择结构程序设计、循环结构程序设计、数组、函数、指针、结构体,与其对应的难点内容有:if语句的嵌套、多重循环程序设计、二维数组与字符串、指针、函数的嵌套调用与递归调用。[4]
(3)详细内容设计。 C语言课程的教学案例都来自于学生感兴趣的生活中的案例。具体见图1。
4 教学方法
采用现实生活场景,应用任务驱动、启发式教学方法实现教学做一体化。所谓教学做一体化如2图所示。
任务驱动教学法:为学生提供体验实践的情境和感悟问题的情境,围绕任务展开学习,以任务的完成结果检验和总结学习过程等,改变学生的学习状态,使学生主动建构探究、实践、思考、运用、解决、高智慧的学习体系。在C语言的教学中如,ATM取款机登陆程序,可以将其分解为3个小任务(单个密码的一次登、单个密码的三次登陆、多位密码的三次登陆)来逐步完成。
启发式教学法:设趣(通过问题引入任务目标,提高学生兴趣),再激趣(通过任务分析,激发学生好奇心和求知欲),再诱趣(诱发学生“生疑-思疑-释疑、再生疑-再思疑-再释疑”的螺旋式上升过程,将任务的解决从易到难逐步推进,一环扣一环提出问题,不断诱发学生思考,掌握解决问题方法),然后再扩趣(抓住时机,让学生再质疑,引导学生进一步自主探究),最后才完成任务及掌握方法。
5 教学考核评价
6 教材分析
C语言课程选用了什么教材,以及该教材所具有的特点。
7 教学保障
(1)师资保障。为了提高教师的专业能力及项目实践水平,每年选派老师赴企业实习,参与企业真实项目的实践。
(2)硬件资源保障。软件开发实训室是理实一体化实训室,实训室既有学生上机的电脑又配有投影设备,可供师生双方边教、边学、边做,保障了教学化一体化的实现 。
参考文献:
[1]任宝贵,陈晓端.说课与教师专业发展[J].教育科学研究,2009(02).
[2]姜华斌,张新民.高职软件人才培养模式的探索[J].现代大学教育,2006(04).
中图分类号:G712 文献标识码:A 文章编号:1672-5727(2012)04-0095-02
C语言程序设计是一门过程性程序设计语言,它的发展贯穿了计算机发展的历程,它蕴含了程序设计的基本思想,囊括了程序设计的基本概念,所以它是理工科高等院校的一门基础课程。另外,在计算机教育方面,C语言是为数不多的与国外保持内容同步的课程之一,因此,它在相关专业教学中的地位和重要性不言而喻。
C语言教学的现状
传统的C语言程序设计的教学,从教学形式上看,通常是多媒体教室讲课+学生上机训练。从教学内容上来看一般都是“说明书”式的教学,即教师进行教学时往往是逐一地讲解相应的知识点,然后加以举例说明,最后学生进行针对性练习。这种以概念、举例、练习三部曲的方式来按部就班地组织教学,由于受到教学课时等因素的影响,在讲授程序设计思想、方法等重要概念和应用时,已没有足够的教学时间让学生去做一些具体的综合性练习。这种教学方式的缺点是:一般都脱离了实际应用,纯粹的过程性程序设计使学生在学习和上机时,将学习重点放在C语言的语法上,不知道所学习的东西有什么用,不能很好地把握知识的重点,也不能很好地训练在实际工作中所需要的技能。由于不能很好地调动学生的积极性,因此普遍存在着“教师难教,学生难学”的状况。
C语言教学改革
针对以上问题,我们认识到在C语言课程的学习上,首先要转变一种观念,使学生学习C语言的主要目的不再局限于单纯地了解和掌握基本语法规范,而是把学习的重心转移到培养学生运用C语言解决实际问题的编程能力,把C语言作为一种实践工具,介绍程序设计的基本思想和方法,培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。
在实际教学中,将课程导入设计和项目驱动教学引入C语言教学中,取得了一定的效果。
(一)课程导入在C语言教学中的应用
课程导入的设计 课堂导入是课堂教学中的第一个环节,是指课堂教学伊始的3~5分钟内教师和学生所有教学活动的统称。这一环节时间很短,但作用重大,如果设计得当,可以快速集中学生的注意力,激起学生的求知欲,为后续教学的顺利开展带来极大的便利。所以,课堂导入是课堂教学中一个不可忽视的重要环节。下面通过对课堂导入环节的分析,结合教学实例,提出这一环节的一些设计原则。
课程导入的教学示范 课程导入需要良好的教学案例。下面以C语言中的循环结构程序设计部分的课程导入为例加以介绍。
1.强化理解概念。循环的相关概念如循环控制条件、循环变量、循环体等是设计循环结构程序的关键因素,在本部分教学之初,必须透彻理解。因此,设计了“植树”案例。具体描述为:学校要求每人种植50棵树,种树的具体过程描述如图1所示。通过图1,可以对循环基本概念进行如下定义:(1)循环体:重复执行的动作,如图1中的“挖坑、浇水”;(2)循环控制条件:重复执行循环体的条件,如图1中的“总棵数
2.归纳、总结,强调功能。现实中许多问题的求解都可以归纳为计算机能重复执行的操作。例如,数值计算中的数列问题,数值计算中的对象遍历(查找、排序)等问题。重复工作是计算机特别擅长的工作之一,也是计算机解决问题时遇到最多的一类问题。这部分主要强调循环结构在程序设计中的重要作用。
3.循循善诱,引出新课环节。介绍C语言提供的三种循环控制语句:(1)while语句;(2)do-while语句;(3)for语句。这部分主要使学生认识到编制循环结构的程序所需要掌握的工具。
4.分析简单的数列求和实例,练习编制循环程序引入程序设计实例求“1+2+3+…+100累加和”。通过提问、启发等多种方式共同设计算法,如下所示:
算法1:直接写出算式(用变量sum存放和)
sum=1+2+3+4+5+…+100
算法2:
步骤1:考虑1+2+3+…+100可以改写为:(((1+2)+3)+…+100),
sum=0;
sum=sum+1;
sum=sum+2;
…
sum=sum+100;
步骤2:根据规律上述式子可以改成:
sum=sum+i,i=i+1
…
步骤3:完整算法:sum=0,i=1;
判断如果i小于或等于100,执行步骤3,否则算法结束;
sum=sum+i; i=i+1;返回步骤2
(二)在C语言教学中实施项目驱动教学法
提高教学质量和教学效果,不但要通过良好课程导入的设计使学生很容易地融入新的教学内容中,还要在具体知识的学习上吸引学生,提高学生的学习兴趣。“项目驱动”教学法以提高学生的学习兴趣,重点培养学生分析问题、解决问题的能力为目的,是培养学生自主学习能力的一种新的教学法。
所谓项目驱动教学法,是师生通过共同实施一个完整的“项目”工作而进行的教学活动,它既是一种课程模式,又是一种教学方法。可以看出,项目教学都是实践导向的和任务驱动式的教学。
C语言程序设计作为计算机类专业的基础课程,若摆脱传统的“说明书”式的教学模式,采用“项目驱动”教学模式,将学生的关注点由繁复的C语言语法转移到实践性较强的项目的设计与开发上来,将会极大地提高教学效果。
帮助学生树立软件工程的基本思想 在计算机行业中,软件是通过人们的智力活动把知识与技术转化成信息的一种产品。软件的设计已经用工程的观念来进行管理,软件设计工作被当作一项系统工程来对待。C语言作为大多数工科院校学生接触的第一门程序设计语言,在学习之初,首先应该让学生简单了解什么是软件工程思想。同时,当前的程序设计教学也必须以切合将来软件工程开发的实际需要为第一目标,使学生在学习程序设计的初级阶段就树立正确的软件工程观点。这样做,不仅可以为学生将来从事计算机应用设计打下良好的基础,而且有利于培养学生分析问题的完备性以及统筹全局、协调关系等基本素质。
软件工程思想 经典的软件工程思想将软件开发分为3个阶段:软件定义、 软件开发和软件维护。软件定义可进一步划分为问题定义、 可行性分析和需求分析。在这一阶段,通过对应用问题及其环境的理解与分析,建立系统模型,将用户的需求精确化、 完全化。软件开发阶段可进而划分为总体设计、详细设计、编码和测试。总体设计阶段的主要任务是如何得到一个能够实现用户需求的理想的系统结构,详细设计的任务是进行系统所需要的数据结构设计或者数据库的物理设计以及模块逻辑开发。编码即软件系统的实现阶段,在现代软件工程中,编码阶段所占的比重正在逐渐地缩小。软件测试是软件工程过程的一个重要阶段,其主要任务是对软件分析、设计和编码各阶段的产品进行检查,保证软件开发产品的正确性、完全性和一致性,检测并修正软件中出现的错误。软件维护是在软件产品交付给用户之后进行的修改工作,维护工作的好坏直接影响到用户的满意程度,关系到开发者的信誉。
以软件工程思想指导一个完整的软件开发项目 在C语言教学实施过程中,配合“项目拓展驱动教学法”,整个课程教学围绕一个“工程项目”进行,以项目的构建过程为线索安排教学步骤,教学过程由项目任务来驱动;同时,以软件工程思想指导整个软件项目的建设。下面以“通讯录管理系统”的设计与实现为例,简单加以介绍。首先,将整个课程学习分为两个阶段。第一阶段为单项的编程练习阶段。该阶段重点是掌握C语言的基本语句、数据类型与程序结构等;第二阶段是实训项目编程实践阶段。主要进行数组、函数、结构、指针和文件内容教学,同时,逐步组建“通讯录管理系统”,并且添加文本菜单,整合扩展记录添加、排序、查询、统计和记录浏览等功能并编写程序文档,形成完完整整的应用软件。具体设计参见表1。
通过这种逐步拓展的实训项目和设计,不但可以将C语言的知识点都融化到一个个实训项目的程序编写中,而且可以熟悉一个软件项目的简单设计过程。在学习过程中,学生参与整个完整项目的分析、设计、实现全过程,在课堂教学中将理论与实践教学有机地结合起来。这种开放性、创新性的教育思想和模式可使学生从被动接受者变成主动参与者,促进学生应用能力的提高。
良好的课程导入设计可以充分调动学生的求知欲,为后续教学环节的顺利开展带来极大的便利;而将软件工程思想结合项目驱动教学法引入C语言的教学中,从学生接触编程语言开始,就培养软件工程思想,有助于学生从整体上体会软件开发的全过程,充分调动学生的学习兴趣。
参考文献:
[1]肖荣,黄宏新,车云霞.论课堂导入及其设计[J].天津市教科院学报,2001,(4):38-41.
[2]杨玫,刘瑜,孔波.引入软件工程思想的C语言案例教学法[J].科技信息,2010,(20).
一、当前教学存在的问题
首先,目前许多高校开设了C程序设计课程,但在进行计算机程序课程教学的过程中,普遍具有计算机课程课时数少,课程的整体投入较小,教师在讲课的过程中显得十分匆忙,学生在课堂中不能对计算机程序设计知识加以完全掌握,只能够掌握简单的理论和知识。其次,教学过程中,知识讲解不能融会贯通,学校在开展计算机课程时,教师往往重视单一知识的讲授,不注重知识的上下联系,学生不能对项目开发过程中所涉及的技术有一个整体的把握。第三,教学和检验方法落后,目前所采用的教学方法仍然以理论教学为主,而没有对学生的动手能力和实践能力进行考查与提升,这种教学方法和检验方法不能真正反映出学生的学习效果,不利于学生实践能力的提升。目前,许多学校的做法是理论课在普通教室进行,然后配套一定学时的实验课时数在机房进行实验。以笔者所在学校为例,理论课一般为48课时,实验课时为16课时,实验课时明显偏少,由于程序设计是实践性非常强的课程,如果不亲自动手编程运行,许多概念与知识是无法理解的。但是由于实验课时过少,在实验教学过程中仅仅能进行一些简单的验证实验。
二、项目教学法在C语言程序设计课程中的应用
项目教学法教学过程中,教师将一个相对独立的项目交由学生独立完成。学生需要进行信息收集、方案的设计、项目的实施及最终的评价。项目教学法能够将理论教学和实践教学有机地结合到一起,有助于培养学生的学习兴趣,锻炼学生的职业能力,能使教与学得到事半功倍的效果。但是在实际的教学过程中应当处理好现代和传统教学方式的关系。教师应当充分地认识到项目教学法只是一种教学方法,它是为整体教学效果的提升而设计的,它并不能够取代传统的教学方式。在教学过程中,理论教学仍然是十分重要的。必要时仍然需要使用各种传统教学手段阐述知识点,提高课堂教学效果。教师在项目教学的过程中不仅是一名传授者,同时也是一名指导者和观察者。教师需要将课程知识教给学生,学生在进行实际操作和实验的过程中,教师应当进行观察和指导,对项目阶段的完成情况进行动态监控和检验。在实际教学过程中,我们根据教学内容把整个教学环节划分为理论知识学习阶段、单元知识学习实践阶段、完整项目实施阶段3个部分,其中理论知识学习阶段主要是程序开发环境、程序三种基本结构、基本关键字的定义与使用等;单元知识学习阶段包括数组、函数、结构体、编译预处理以及文件等;完整项目实施阶段主要是提供若干综合实例应用。在整个教学过程中,采用案例驱动方法引导教学,结合上机实践环节,使学生具备程序设计所需要的课程基础知识、编程技巧以及实际动手能力。为达到理想的教学效果,需要注重理论联系实际,合理安排课程讲授顺序,使教学由浅入深、循序渐进地进行。教学实践过程中,教师是学生学习的引导者,学生是主动学习的主体。发挥学生学习主观能动性,体现学生在教与学关系中的主体地位。采用项目教学法,有助于活跃课程氛围,使学生在教师带动下对课程产生浓厚兴趣,积极思考问题,主动寻求解决问题的方法,提高教学效果。学生通过完成一个项目,掌握项目过程每一环节中的基本要求,在项目结束后提交一件完成的作品。项目教学法是行动导向教学法的一种,师生通过共同实施一个完整的项目工作来开展教学活动,学生通过对项目的完成,重点在于了解并把握整个过程及每一个环节中的基本要求,教学过程中,学生不是按照教师的安排和讲授去得到印证一个结果。学生学习的重点在学习过程而不是学习结果,重要的是在整个教学过程中,教师的角色已不再居于教学中的主导地位,只是学生学习过程中的引导者、指导者和监督者。
三、具体实施
项目教学法在教学过程中的实施过程可以分为项目选取,教学方案设计,考核内容与方法等环节。为了能够顺利地实施项目教学法,必须要仔细挑选实施的项目,根据课程教学深度的要求,项目的选择对今后的学生是够能够完成起并实现教学目标至关重要。另外,项目选取时尽量选择当前社会热点项目,项目难度不能过大,要保证学生通过简单的资料查询能够完成需求分析,不能选择过时的项目,此类项目对学生没有吸引力,必然影响学生对项目的完成。由教师介绍一些典型的程序设计实例,由学生按照软件生命周期的步骤独立完成一个难易适中的类似项目,包括该项目的系统分析、系统设计、数据库设计、系统实现、系统部署和系统测试等全过程。根据项目大小,可以将学生分组,并指定组长负责项目的整体实施,教师在此阶段只是一个辅导员。在教学实施过程中,教师需要带领学生完成系统的需求分析与设计工作,在项目实现过程中,教师需要根据项目开发的流程,在项目功能模块中抽出能够体现课程教学内容的典型开发任务进行详细讲解,介绍每一项开模块的设计与开发方法,在此过程中导入相关的课程理论知识,将开发任务与课程理论知识衔接起来,使学生充分掌握将课程理论知识运用在项目开发过程中的使用技巧,由于具体的任务模块不可能使用到理论知识中所有知识点细节内容,对于其他重要的理论知识可以在其他项目的任务中得以体现,至于一些次要内容可以交由学生自主学习完成。总之,采用项目教学法能够将抽象枯燥理论知识变成形象,学生能够运用所学知识做出的一件实际作品,能够强化学生对理论知识的理解与掌握,提高学生理论知识的运用能力,并且锻炼学生的程序开发技能,学生的程序设计能力以及工程实践能力都可以得到提高。作为教学人员,要不断要学习新知识、新技能,而且要学习新的教学方法,为培养能够终生学习型人才而努力。
参考文献: