C语言教学建议

2024-10-25 版权声明 我要投稿

C语言教学建议

C语言教学建议 篇1

第1章 C语言程序设计概述

1.本章学习之前一定要让学生了解课程的任务和特点,强化学生的直接学习动机,使学生自觉地训练结构化的程序设计能力,并着手养成边学边做的习惯。

2.相关链接的内容根据学生特征灵活掌握,删除后不影响后续内容的教学。特别是关于补码的内容,学生若不能理解不必强求,以后涉及到补码也可不作介绍。

3.数据存储的概念在后续内容的教学中非常重要,也比较难以理解。这里只是顺便提出几个概念。这里的地址也可以用电话号码作比喻。

4.介绍机器语言和汇编语言的目的是让学生更好地理解c程序的运行过程。

5.C语言的特点和程序构成应结合程序实例讲解,且C语言的特点需要在长时间内逐步体会,不必讲得过细。

6.C程序的执行过程的熟悉,需要让学生亲自编码写一段程序。

7.“基本训练”是在教师的指导下由学生在课内完成的,是课堂教学的一个重要组成部分,这是一种师生互动的教学过程,譬如:在数制之间的转换就是在教士的指导下有学生自主完成的,教师对学生提供的帮助信息是根据现场需要而确定的。“习题”是学生在课外自主或合作完成的。建议此课程实施时开放网络机房,并尽可能为学生提供学习需要的教学资源。条件具备时,可在校园网上建立合作学习的平台。

8.在下章开始之前,要为学生布置于习任务,这是培养学生自主学习能力的一个重要手段。

9.鼓励学生参加一些学习社区,经常浏览C语言程序设计的一些相关网站。第2章 顺序结构程序设计

1.本章在结构上与原有的教材有很大的不同,主要是采用了“任务驱动”的思想。在“2.2数据”一节,集中囊括了基本数据类型、常量与变量、运算符等重要概念。对这些概念目前只要求掌握到“必需”的程度,在以后的程序设计中再逐步加深理解。尤其是不能让学生一开始就记忆大量的“规定”。比较和逻辑运算放在了分支程序设计中。

2.本书的例题、习题都是经过精心设计的,是作者“著作”的成分。[例2-3]就是通过实例来分析和体会自加、自减运算符的运用。教师应该在课前对这些例题、习题作详细分析,体会之中的用意。必要时应亲自调试一下。

3.对格式输入输出的学习,一开始也尽可能简单一些,以保证学生便正常编写、运行程序为宜。当遇到相应问题时,可返回来查阅本节内容。

4.对初学者来说,理解顺序程序结构是理解程序结构的基础。2.5节是作者对顺序程序设计所做的一点总结。这只是一种尝试。恳切希望广大同仁共同完善这一部分内容。

5. 2.6节介绍了三段程序,目的是将学生引入程序设计的大门。学完这部分内容以后,学生就可以着手编写一些解决实际问题的程序了。学习本章时,学生对开发环境尚不熟悉,遇到的问题较多,因此,应酌情增加上机时间。

6.本章习题的第5题有两个目的:一是激发学生学习程序设计的兴趣;二是使学生学习使用C语言中的库函数,因为大量的库函数不可能都由教师讲解。下一章还要用到这些内容。第三章 分支程序设计

1.分支程序使计算机有了判断的功能。本章应该使学生练就分支程序编写的基本功,熟悉分支程序设计遇到中的一些特定问题,譬如:逻辑判断的顺序等。

2.由于传统流程图更为直观,而且已被应用到其它领域(如教学设计),因此,本书主要采用传统流程图,对N-S图仅作简单介绍。建议学生学会绘制传统流程图,学会识读N-S图。

3.学会逻辑表达式的运用是编写分支程序的关键。建议在此方面多做训练。同时应注意,逻辑表达式过于复杂会影响程序的可读性,要让学生体会程序质量的要求,学会在程序的简洁性和易读性上加以平衡。通过[例3-4]可以很好地体会这个问题。总的原则是,手段是为程序设计者带来方便的,而不能让程序设计者为手段所累。

4.条件运算符是C语言简洁风格的典型体现,应该让学生多体会一下。使用if完全可以替代条件运算,因此,条件运算的作用常常被忽视,有些教材甚至认为条件运算中不能使用格式输出函数,而事实上条件运算的功能是非常强大的。

5.在“3.1.5 if的嵌套”中,作者尝试着对嵌套情况和常犯的错误进行了归纳。授课中教师也可以根据自己的经验重新归纳,或者以“试误”的方式让学生体会这些问题。

6.61页 “基本训练”中的第2题,看似一个非常简单的问题,但事实上多数学生很难在短时内编写出正确程序。教师可以让学生在课内编写出程序雏形,在课后完成程序。

7.“3.2 switch”逻辑上比较简明,重要的是通过练习使学生熟悉相关的规定,避免出现语法错误。恰当地设计“条件”也是一个关键。

8.[例3-11]出现了while 结构,起着“毛毛雨”的作用。但不要因此使学生形成理解上的障碍,千万不要过多地介绍循环结构及执行过程。

9.如果学生能够顺利完成65页的“基本训练”,就基本掌握了switch结构的运用。

10. “3.3典型程序举例”起着引路的作用,目的是引导学生发现更多的相关问题,并尝试编程解决。[例3-13]中,使用条件运算表达式可能会更简明一些。

11. 课后作业应特别强调有学生提出问题。发现问题是主动的,与解决教师提出的问题有着质的区别。第4章 循环结构程序设计

1.循环是学生比较感兴趣的问题,也是训练编程能力的重点。在本章可以综合运用前面几章的知识。建议教师酌情加强训练,必要时增加一些课时。

2.循环控制条件是循环程序中的核心问题,需要通过训练使学生获得相关经验。

3.本章例题较多,目的达到“熟能生巧”之效。多数例题都经过了精心设计,因该让学生仔细体会作者的用意。[例4-3]和 [例4-4]让学生体会变量类型的确定,此时可返回第2章看一下关于数据类型的规定; [例4-5]与 [例4-6]、[例4-7]中的两段程序,通过对比的方法使学生了解程序设计的灵活性和创造性,要让学生在程序设计中体会到美的感受([例4-7]中的程序在后面还要用到); [例4-8]的程序非常简明,目的仍然是让学生体会一种方法。

4.第82页和86页上的“基本训练”应该让学生独立完成。

5.[例4-21]和 [例4-22]在繁简上形成的鲜明对比,但目的都是为了领会continue的作用。

6.“4.8典型程序举例”是为了进一步让学生领会“循环问题”。

7.课后作业酌情布置。最好选择其中的若干题目做一次测验,根据结果做一次小结。若教师能够确定学生已达到前四章的学习目标,也可以不再练习,直接进入下一阶段。

8.到此为止,本课程完成第一个阶段,即基本训练阶段,本阶段的特征是对单个“元件”的认识和使用。下一阶段进入“组装阶段”,即中级训练阶段,基本任务是:(1)将单个数据组合成“构造类型数据”;(2)将单个函数组装成一个完整的程序文件。

9.由于任务的变化,后续内容在学习方法上也有一些改变。教师的讲解所占比重应该加大,课堂基本训练逐步减少。上机实习也应由原来的“小周期”变为“大周期”。教师应提前让学生做好思想准备。第5章 数组与字符串

1.学习数组,让学生领会数组元素的存储是构建数组概念的关键。教师应采用多媒体手段,使学生对数组存储有一个形象化的认识。单靠语言和纸制教材教学效果可能会不理想。

2.为了增强程序的可靠性,书中较少使用a[1]++这样的运算,但在教学中教师应该适当地补充这种知识。

3.一维数组的排序是一个重点内容,掌握典型的排序算法,无论对于数据处理还是工业控制都十分重要。每一位同学应通过训练,熟练地掌握一种算法,对其它算法也就很容易掌握了。

4.[例5-7]是一个典型程序,可以扩展到其它问题。教师在使用中可以整理一些类似的问题。学会编写这类程序,也是对前面几章内容的巩固和提高。

5.二位数组繁而不难。关键是抓住元素存放顺序。对关于二位数组的大部分程序,可以有学生自行阅读。通过基本训练,巩固和检验教学效果。

6.字符数组的处理难度不大,但很重要。重点是由学生体会字符数组处理的特点,通过与数值数组处理的对比,掌握字符数组处理的规律。“5.4.4 字符串处理的标准函数”只需理解,不需强化记忆,应在实例中加深理解和记忆。

7.建议学生在课外完成程序的编辑和调试,课内只解决难度较大的调试问题。在调试过程,学生可以结组讨论。

8.习题中的最后一题已经涉及到下一章的内容,这种作业并不是真的让学生“完成”,而是让学生发现和思考相关的问题。第六章 函数

1.这一章是一个关键的章节。前面各章看到的是“树木”,本章看到的是“森林”;前面各章是“零件加工”,本章是“组装”。学完这一章,学生的程序设计能力将上一个新的台阶。教师在讲解这一章时,应引导学生提高站位,而不要只看到一些细枝末节。这里可能有一个思维习惯的问题。如果说在其它章节同学们是一个冲锋陷阵的战士,那么,在本章将为成一名指挥大兵团作战的将军。整体的协调是本章的主要任务。

2.如何处理“结构化程序设计”与“面向对象的程序设计”之间的关系,是一个非常值得探讨的课题。作者曾就此问题咨询过爱尔兰都柏林工业大学的计算机教学专家,他们也认为这是一个很有趣的问题,可以谈上三天三夜。我的意见是,让学生掌握结构化程序设计的思想和方法是有必要的,面向对象的程序设计是以结构化程序设计思想为基础的。当然,对于职业院校的学生来说,将来要做一名高级软件蓝领,可能仅有面向对象的程序设计能力也可以工作。但是,随着职业成长,软件蓝领也可能成为系统分析师,掌握结构化思想就非常必要了。况且,在控制领域,一些结构化的c语言仍在应用。

3.学习本章内容时,可以有2—3名学生组成一个小组,分别编写主函数和子函数。目的有两个:一是让学生体会函数之间参数传递级变量使用的规律;二是培养职业活动中所需要的合作能力。

第7章 编译预处理

编译预处理命令在前面几章已在使用。这一张介绍了宏定义的一些技巧和注意事项,属于较高层次的应用。条件编译命令仅作了解即可,千万不要在此纠缠不清。

第8章 指针

指针运算将数据运算深入到了系统内部,要求学生了解一些硬件知识。一些非计算机专业学生感到学习指针很难,原因就在这里。计算机专业的学生如果在入学初期阶段学习者们课程,同样也存在这个问题。建议教师多使用形象化的比喻,以“黑箱法”讲授。

本章只是介绍指针的基本概念。下一章才涉及到指针的实际应用。学习指针的目的是为了方便操作,对于某些感到暂时难以应用的部分可以暂时删去。

第9章 结构体和共用体

学习本章后,同学们才算真正了解了C语言的数据结构。建议在熟悉结构体的基础上,在对比学习共用体,而不要已开始就将二者对比学习。

用指针处理结构体,是指针的一个重要功能。指针与结构体的结合,才是C语言的精华所在。掌握了这部分内容,在学习复杂数据结构就不难了。

第10章 文件

文件是程序设计中的一个重要概念。应通过综合性实践是同学们掌握文件的操作,通过使用文件牢固树立文件的概念。

要求学生了解文件的概念,让同学知道一个C文件是一个“流式文件”,并不是由记录组成的,为以后学习其它语言文件做奠定基础;

掌握文件的基本操作函数;

宜采用计算机大屏幕投影等先进的教学设备和电子教案、多媒体课件教学。

第11章 位运算

a)本章是C语言的一个特色,也是一个相对独立的单元,这也是将这一章放在最后的原因。

b)学习本章需要有一定的数字电路基础知识。如果学生不了解这方面的知识,教师应加以适当补充。千万不要紧学习“C语言”之中的操作,而不了解这些操作的意义。教师至少让学生了解位运算的用途,在这里留下一个“接口”。

第12章 综合实例

C语言教学建议 篇2

关键词:C语言,教学效果

1 C语言教学中存在的问题和面临的困难

《C语言程序设计》是高校计算机专业及非计算机专业的一门重要的基础课程,整门课程的掌握情况对于后续课程有着至关重要的作用。但是,教学实践表明,C语言这种基础入门类语言课程往往是教学中任务重,付出的精力多而收到的教学效果并不一定十分理想的课程。主要遇到的问题及其产生原因归纳如下:

1)学生学习初期经常会产生厌倦情绪,对编程语言的学习方法不能适应。

C语言这门课程,一般是在新生入学不久就开设,是学生接触的计算机编程的入门课程。学生沿用旧的学习方法对于这门新课程有很大的不适应性,需要记忆以及注意的语法点经常让他们感觉很抽象、枯燥。学习中经常会有厌倦感;对于这种情况,学生对C语言课程的学习方法在初期就需要任课教师专门指导。可以随着课程的深入不断地去扭转学生的学习方法。

2)课堂教学中教师讲授的口干舌燥,学生却注意力不集中。

在课堂教学中,学生面对大量的理论内容以及琐碎的知识点就会有注意力不集中的现象,而且经常抱怨跟不上老师的思路。这个问题一方面可能是教师的课堂信息量安排过大,用“满堂灌”的错误教学方法;另一个方面,也可能是部分教师缺少使用与日常生活相关的有兴趣的问题作为导入和内容设计,吸引不了学生的注意力。这样,在不了解学生的需求以及掌握程度下盲目教学,会挫伤学生的学习热情,只能是事倍功半。

3)学生在上机实践中缺乏积极主动,心理经常由挫败感转为畏惧感。

在实践上机环节,学生往往会因为编程编了老半天,一个小程序错误一点儿就运行不出结果而感到非常沮丧;还有的学生在编程中,看到一些问题感觉提不起精神,找不到思路,一旦没有动手解决问题的欲望,干脆就偷偷玩起游戏。这些情况的出现,首先是学生对上机的实验目的没有明确,其次就是教师可能对实验需要的编程题目的安排缺乏典型性分析,以及缺少吸引力。太简单和太难的题目,不是精心设计的,就很难引起学生的兴趣,长久下去,让学生产生了畏惧情绪,更谈不上拓展学生的思维能力了。

2 解决对策以及改革措施探讨

要改变教学中出现的以上状况就要针对问题产生的原因进行分析,需在课堂教学和实践教学中不断地吸引学生的注意力,激发和培养学生的兴趣。那么,怎样创设效果较好的课堂教学以及实践教学,让学生产生兴趣去主动学习,并且将兴趣得到培养和延续呢?笔者根据自己的教学实践和探索,阐述了自己总结出的系统性的解决方案。这几种策略都是以提高学生的学习兴趣,调动学生的积极性作为核心目的,教学中如果教师采用这个系统性的方案,在教学中充分将C语言的“实用性和趣味性编程”进行到底,就会大大提高理论和实验教学效果。

2.1 趣味性展演领入门,兴趣作学生最好的引路人

“知之者不如好之者,好之者不如乐之者。”只有“好之”、“乐之”,学生才能有高涨的学习热情和强烈的求知欲望,方能以学为乐[1]。学生只有对所学课程最开始有浓厚的兴趣,才能积极主动地去完成任务。

在C语言课堂教学过程中,从绪论部分,就可以向学生介绍“C语言能做些什么?我们为什么要学C语言”;这时教师可从最简单的C能解决的问题入手,举例并演示运行部分小的程序结果。例如:大一的同学刚学习掌握的高数中的定积分,求解方程的根,计算机基础中的进制转换等,让学生体会,利用C语言编写的简短几行的程序,就可以实现解,感受学习C后可以现学现用。除此之外,还可指出有关C语言的历史,与VC++及C#等的关系、C语言在系统软件和应用软件设计方面的应用;把C语言实现的功能向学生展示:如,用VC实现的“图书管理系统”,“五子棋游戏”等带界面的完整系统;演示C或者VC对于图形图像程序设计的支持,例如“VC实现的数字图像边缘检测”或“汽车牌照分割与识别系统”;网络编程的应用,比如“小聊天工具的开发”等。这些强大功能,光用口头强调和板书描述是不足以让学生振奋和信服的。在演示的时候,学生对程序中的语句不能理解,但这些程序运行后实现的功能却能让学生一开始就对这门课产生浓厚的兴趣。这样就使学生对该门课程感兴趣而学习。这样比从第一节开始就开讲语法关键词的使用要效果好的多。

另外,还可向学生介绍他们所听过的一些编程语言,如C++、Java、C#、J#、perl都是衍生自C语言,掌握了C语言,可以说你就掌握了很多门语言。所以教师要从一开始就作学生的思想准备工作。这样学生自然就很重视这门课程了。

2.2 问题导入式教学法与趣味化情境设置教学方法相结合,充分调动学生的积极性

在课堂教学中,完全可以由某个实际问题的解决而引入需要学习的本节内容,比如,在开始部分的“C程序语句设计”中,讲到“循环结构”的时候,可以先抛出一个实际问题,用问题导入式方法和兴趣化教学方法结合的方式,一步步启发学生。

举一个实际的案例来简单说明:

要对循环语句的应用有好的掌握,一个好的方法就是问题导入式,引入如“百钱百鸡”问题。教师可先向学生抛出这个中国古代数学家提出的著名问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁,母,雏各几何?”这个古人的题目一出现,学生马上感觉就很新颖,于是教师可以马上这样引导学生,“这个问题你们应该可以很快作答吧?”然后让学生们马上手工算一下,看手工能做出来么?结果学生发现,看似简单的题目,还真是用手工不好解答。因为这个问题如果用列方程组的方法去解,得到了的是一个三元一次方程组,可是只能根据题目列出两个方程。不能由此马上求得答案。这时教师可以再问学生,“如果我们自己假设一组数据,共3个数值代入方程组,若满足方程就可以视为一个解,这样是不是能很快得到全部解?用你们手工算,是不是很费解呢?所以‘工欲善其事,必先利其器’,我们就要利用我们学习的语言工具编程实现”。用三个嵌套的循环语句,用穷举法只需要确定循环的范围,也就是对穷举的范围作个界定,就可以求出满足方程组的全部解的组合。接着,就可以讲解循环语句的具体用法。这样用问题导入的方法和兴趣化教学方法相结合的方式,可以更好的激发学生的兴趣,他们在课堂就有了主动性,而不会出现注意力不集中的现象了。

2.3 从易到难创设学习题目,让学生收获自信,培养长期兴趣

学生对学习C语言有了兴趣,并非就完事大吉了,因为兴趣有可能被磨灭,所以作为教师就必须想办法延续学生的兴趣。这个过程,教师所采用的教学方法是最为关键的。

教师可以做如下改革工作:学习完流程结构,函数以及数组之后,就可以对教学内容做适当调整补充,在后期教学中将分单元兴趣化教学引入课堂和上机练习题目设计中,增强学生乐学兴趣,让学生在学习的同时,享受动脑子的乐趣。

具体的,可以先由教师作分析归纳,找出有特色的,贴近学生生活的,充满趣味性的题目或者案例给学生做。其实,在许多教材中,例如使用最多的谭浩强的《C语言程序设计》教材中,不少例题和习题,有趣和贴近现实生活的很多,只是没有被系统的归纳而已。教师正好可以下功夫,在备课时充分挖掘这些教材上与教材外与学生生活相关题目和案例,从简到难,分单元进行总结典型问题的类型以及求解方法,引导学生逐步掌握知识点和解决问题的方法。

经过笔者总结,可以将很多趣味性的问题拿出来,做出归纳,然后由简到难分成几个单元,在教学的中后期,让学生进行分单元体验学习。部分如图1和2所示。

例如,有关“数的家族”这个单元,又可以分为“整数家族”和“素数家族”两个小的单元,教材和习题中没有专门对其一一梳理,比如“求数的逆序,求水仙花数,回文数,完数”等,这些在学习循环结构和数组的时候,比较典型。教师可在每个单元中着重讲一个典型例子,其它要求学生分组讨论,并在上机实验结束后,以小组为单位把单元中的题目结果打印出来,这样寓教于乐,在上机实验时也不会感觉无事可做。

同样,在教师作了系统总结之后,还可以进一步引导学生对曾经做过的题目,自己分析总结,比如有关“方程的根的求解”,可以用三种方法求得解,如“二分法求方程的根”,“梯形法或者牛顿迭代法”等,每种方法又和他们学习的高数知识联系在了一起,并能体会到编程的实用效果。

2.4 针对教材中出现或者应用到的主要算法在后期进行集中讲解介绍,使学生做到心中有数

除上述趣味题目的归纳设计选择外,在教学中,教师还必须集中对程序设计中常用算法进行讲解,虽在后续的《算法设计》等相关的课程中也有讲解,但既然C编程当前必须要用到,而学生对采用什么算法并没有一点先前的概念做铺垫,如果只就题目论方法,势必会更引起学生的逆反心理,题目见了不少,可是遇见一个新题目,又无从下手。所以在教学的后期,学习指针之前,就将这些算法集中介绍下,这样让学生在编程时就知道心中有数,还可以起到举一反三的良好效果[2]。

有几大常用算法,掌握了这几种算法,就可以给学生提供解题思路,遇到问题后能心里有底,而不是盲目下手编程。例如,常用数值问题算法,各种常用的数值问题一般都具有其本身特定的算法,需要教师进行讲解。还有用到很多的“排序的方法”,要求学生必须掌握的主要有两种,“冒泡法排序和选择法排序”,在后面出现的类似问题,不管是用指针实现还是前面学了数组函数后去实现,都可以保证降低难度,也增加了学生的自信心。还有就是“穷举法”,“递推法”等,前面提到的些趣味性问题,如“8除不尽的自然数,捕鱼和分鱼”等都可用上述的某个算法解决。

在教学中发现,学生对算法中的“模拟人工法”表现极大的兴趣。比较有意思的题目如魔术师的猜牌术,常胜将军等,这些题目的设计和实现,让学生感到兴奋不已。

2.5 趣味化设计贯穿教学始终,开发学生潜能,培植学生的思维。

在兴趣化教学的实际应用当中,不仅要增加题目的趣味性,还要适当加深难度。设计题目时不光要有广度还可以根据一定情况增加深度。教学时增加难度可以刺激智力发展。

太容易的知识激不起学生的学习兴趣。在前面的策略实施之后,教师可以相应提出更深难度的题目,由学生当主角,让学生自己解决问题,锻炼他们综合运用知识的能力[3]。如像图1中难度较深的单元,有关智力游戏类的问题,虽然很有趣味,但是要实现,光凭兴趣是不行的。所以要适当增加难度,让学生在克服难题的同时,刺激智力和编程能力的提高。例如有关汉诺塔的问题,用递归法和非递归法两种方法都可以解决。教师可以先讲解一种解题方式,让学生实现另外一种方法。

难度较高的应用中,选取和学生生活贴切的问题:比如电梯算法的模拟实现,实现本年度的年历打印等,这些综合性编程题目较复杂,涉及的技巧也很多,在学生有余力的情况下,也可以让学生作为探索性、提高性的题目来进一步拓宽编程思路,能很好的锻炼他们的思维能力。

3 本方法的实际效果应用评价以及今后的改进设想

实际教学中,笔者采用了上述步骤,较传统的教学方法相比,教学效果得到了明显的提高。虽然提出了创新性的趣味化教学方法,以及问题导入式教学和趣味化教学相结合的方法,但并不是说可以不注重“基本功的扎实”,那就是成了“空架子”和“花架子”;寓教于乐,也不能缺少科学的严谨性和知识的严密性掌握。

在实际的教学当中,趣味化教学方法并不意味着学生就可以光做感兴趣的,要强调并要求学生,对于部分应该注意掌握的知识也不能马虎对待。例如在上机实验中,要强调:C语言语法结构是很简洁精妙,但要想最终用好它调试出最终结果,就一定要按照规定来,否则它肯定会“罢工”。也就是说很大部分的细节性概念是必须让学生强化理解,并加以记忆的。例如初学C语言的同学应该首先了解C语言关键的核心概念(结构化、三个执行流程、优先级、指针、文件、共用体、函数、作用域等),只有弄明白了这些才能在今后的学习中游刃有余的把握C语言的精髓。同时,在实际教学中,就要培养学生良好的学习态度和编程的认真精神,告诉他们学习和写代码的过程要认真,不要想当然。这样,在培养学生的兴趣的同时,还可以在教学中培养他们的注意力和思维能力,更重要的是,不怕挫折,坚持到底的意志力的培养。这样,就将传统的理论和实践教学模式推进到一个更加大有作为的广阔天地。

参考文献

[1]卞孝丽.提高计算机课堂教学效果之我见[J].科技咨询导报,2006(1).

[2]郭慧敏.在C语言教学中培养学生举一反三的能力[J].雁北师范学院学报,2004(5).

高职C语言教学浅析 篇3

【关键词】C语言;学生兴趣;教学方法

现在计算机已普及到各行各业,深入到各级层次。在我国高职院校教育中,C语言不但成为计算机专业的必修课,而且也成为非计算机专业的学习课程。做好该门课程的教学具有非常重要而深远的社会意义,现将我在C语言程序设计课程中教学内容、教学手段、教学方法等方面的改革与取得的教学效果与大家做一探讨

一、努力培养学生的学习兴趣及正确的思维摸式

兴趣是学习的关键,兴趣决定了教学效果的好坏。初学C语言时,很多学生感到新奇、好玩,这不能说是兴趣,只是一种好奇。随着课程的不断深入,大量的规则、定义、要求和机械的格式出现,很容易使一部分学生产生枯燥无味的感觉。为了把学生的好奇转化为学习兴趣,授课时我改变过去先给出定义和规则的讲授办法,而是演示一些由前几届学生自己编写的、有趣的程序,从而吸引学生,并告诉他们学习了C语言程序设计的内容后,大家都能够编出这些小程序。努力把枯燥无味的“语言”讲的生动、活泼。

二、循序渐进

高职学生第一次接触计算机语言,“通俗性、可接受性”的教学原则同样适合于这门课的教学。在课程讲授过程中,我没有把重点放在语法规则的叙述上,而是放在算法和程序设计方法上,通常由几个例题引出一种语法规则,通过一些求解具体问题的程序来分析算法,介绍程序设计的基本方法和技巧,既注重教材的系统性、科学性,又注意易读性和启发性。从最简单的问题入手,一开始就介绍程序,要求学生编写程序,通过反复编写、运行程序来掌握语言的规定和程序设计的方法。同一个语法规则、同一种算法,在选择例题时也是由简到难,逐步呈现给学生。在学习上不要求学生死记语法规则,而是要求学生能把各个孤立的语句组织成一个有机的、好的程序。注意培养学生良好的编程风格,让学生在编制程序过程中不断总结、巩固,达到学会方法、记住语法规则,提高设计技巧的目的。

三、改进授课方法、实现教学相长

(一)采用启发、引导的教学方法

(1)教师在教学过程中,应当注意设置疑难问题,引导学生思考和探索,让他们的思想活跃起来。我教学时发现,学生问不出问题的原因往往在于没有真正学好。实际上,问题是最好的老师,是学生学习的引导者,没有问题便没有深入。在教学过程中,引导学生在问题解决中学习,即提出问题,给时间让学生思考、讨论、解决问题,从而更深入地展开学习。实践证明,这种教学方法充分调动了学生学习的积极性和主动性。例如 ,在讲数组的概念时,我先设置问题:编程计算10个人的英语平均成绩。根据以前所学,学生会想到:需要说明10个类型相同的变量用于存放10个人的英语成绩。进一步要求:计`算50个人的英语平均成绩,这时候如再说明50个变量,则会将问题麻烦化,学生此刻需要讨论该如何合理说明变量。再深入一步:求100个人的英语平均成绩。此时,当教师引出数组的概念、分析数组的性质时,学生不仅能够记住数组的性质,还能够知道在什么情况下使用数组类型,达到事半功倍的效果。

(2)教给学生正确的学习方法,引导学生掌握程序设计的思想和方法。经验丰富的软件设计者都知道程序设计的关键在于找到解决问题的方法,即算法。根据软件工程的思想,当拿到一个任务时,首先应将这个问题自顶向下逐步细化,逐层向下分解,直到满足每一个要求。实现时,可以先用流程图描述出算法,进而写出合理的算法,再将之转化成程序。

(二)采用目标教学法,使学生明确目的,确立主题

学生是认知主体,是信息的主动接受者,但也并不能否定教师的指导作用,教师作为知识的先知者,自然清楚所学内容哪些是重点及难点,哪些是只需一般掌握的,如果脱离了这一点,学生有可能会不加区分地对所学内容完成认知,进而导致其知识主结构的无法确定,所以教师在进行教学设计的第一步还是要进行目标分析,指导学生确立主题。

四、校企结合,加强实践教学环节

高职教育着重培养具有实际工作能力的技术型和应用型人才。为了使学生学习到的知识与社会接轨,可以创建校企结合的课程建设方法。听取企业家对C语言程序设计教学改革的意见、由企业向学校提供实验(实习)条件、以企业作为学生的校外实习基地,通过这些方法使学生熟悉公司内的编程环境。学校还可以邀请企业家为学生开讲座,派遣青年教师到企业去实习,使教学的内容与企业的实际更为贴近。高职院校作为企业的人才培育基地,发挥技术和设备的优势,为企业提供支持,向企业输送合格毕业生,校企结合实现双赢。

C语言教学大纲 篇4

一、课程名称:程序设计基础

二、学时与学分:64学时

3.5学分

三、适用专业:计算机科学与技术、网络工程、信息安全

四、先修课程:高等数学

五、课程教材:《计算机程序设计基础》

熊壮、刘慧君、伍星编著,朱庆生主审,机械工业出版社,2005

六、参考教材:《The C Programming Language》(Second Edition),Brian W.Kernighan & Dennis M.Ritchie,清华大学出版社

《The C Answer Book Second Editiion》, Clovis L.Tondo & Scott E.Gimpel,清华大学出版社出版

《程序设计方法》Matthias Felleisen等著、黄林鹏等译,人民邮电出版社 《C程序设计的抽象思维》Eric S.Roberts著,机械工业出版社

《C算法:第一卷》Robert Sedgewick著、周良忠译,人民邮电出版社 《C语言》,李智渊编著,电子科技大学出版社出版 《C语言程序设计》,孙家骕等编著,北京大学出版社出版

七、开课单位:计算机学院

八、课程的性质、目的和任务:

本课程是计算机类专业的一门专业基础课。引导学生进入计算机程序设计的广阔空间、培养学生的逻辑思维能力、抽象能力和基本的计算机程序设计能力是课程的主要任务。本书从结构化程序设计技术出发,以C程序设计语言为载体,通过对应用问题的分析引导出解决问题的方法,进而用C程序设计语言代码描述了对应用问题的处理过程,同时展现了在计算机应用过程中如何将方法和编码相联系的具体程序设计过程。通过对本课程的学习,使学生对计算机系统有一个初步的正确的认识,学会阅读用计算机程序设计语言编写的简单应用程序,掌握结构化程序设计的基本方法和用计算机解决实际问题的基本步骤,训练学生的逻辑思维能力,培养其严谨的思维方式和良好的程序设计风格。为进一步学习其它专业基础课程和专业课程打下良好的基础。

九、课程的主要内容:

(一)程序设计的基本概念

1.程序设计语言及处理概述

2.程序设计方法概述

3.计算机中数据表示方法

4.算法特征及算法的描述方法

(二)程序设计的数据基础

1.程序设计中数据表示方法

2.表达式运算基础

3.顺序结构程序设计及程序设计中的数据输入输出

(三)结构化程序设计基础

1.程序设计中的分支处理结构 2.程序设计中的循环处理结构

3.结构化程序设计应用——穷举思想和穷举方法的实现 4.结构化程序设计应用——迭代思想和迭代方法的实现

(四)模块化程序设计基础

1.模块化基本概念及信息的隐蔽和局部化概念

2.程序设计中实现模块化的方法

3.程序设计中标识符的作用域和生存期

4.递归方法的实现

(五)程序设计中数据对象地址的处理方法

1.程序设计中地址的表示方法及地址运算

2.函数与指针的关系

(六)构造类型数据的处理基础

1.相同类型数据对象集合的处理方法

2.不同类型数据对象集合的处理方法 3.数据对象存储区域的分时复用方法

(七)字符串数据的处理基础

1.程序设计中的字符串存储方法和表示方法 2.字符串的常用处理方法

(八)二进制位数据的处理基础

1.位运算的基本概念

2.位运算符及其应用

(九)文件数据的处理基础

1.数据的层次结构和文件概念 2.顺序存取文件的处理方法 3.随机存取文件的处理方法

(十)程序设计的深入话题

1.数据类型的扩展技术

2.特殊类型函数参数的处理技术 3.C系统的编译预处理

十、课程的基本教学要求:

1.掌握计算机程序设计中的基本概念

2.理解和掌握模块化程序设计的概念和方法;

3.掌握结构化程序设计思想,学会应用自顶向下、逐步求精的软件开发方法; 4.掌握C语言中使用的数据结构、C程序结构、语句以及控制结构等的使用方法; 5.掌握在一种实际开发环境下对C程序进行编辑、编译、连接、运行和调试的方法; 6.能根据具体应用问题编写相应的C语言程序;

十一、课程的实践性教学环节

本课程实践性教学环节学时数为28/2,实验环境可以在以下两种开发平台中选择:

1)UNIX/LINUX 操作系统环境,GUN GCC/G++编译器;

2)WINDOWS 9X/2000/XP操作系统环境,TURBO C++ 3.0(及以上)集成环境; 实验内容参照《程序设计基础》课程实验教学大纲执行。

十二、说明:

十三、学时分配:

本课程理论教学学时数为50,各部分学时分配如下:

(一)程序设计的基本概念(2学时)

(二)程序设计的数据基础(4学时)

(三)结构化程序设计基础(6学时)

(四)模块化程序设计基础(6学时)

(五)程序设计中数据对象地址的处理方法(4学时)

(六)构造类型数据的处理基础(10学时)

(七)字符串数据的处理基础(4学时)

(八)二进制位数据的处理基础(2学时)

(九)文件数据的处理基础(4学时)

(十)程序设计的深入话题(6学时)课程复习:(2学时)

十四、考试方式:

本课程考试为闭卷笔试。试题类型为:

1)程序(段)填空

2)根据算法写程序或函数

3)读程序给出运算结果或程序功能 4)按要求编写程序

大纲制定者:熊壮

大纲审定者:

《c语言课程设计》教学大纲 篇5

《C语言程序设计》课程设计教学大纲

课程名称:《C语言程序设计》课程设计 英文名称:The C Programming on Course 课程编号: 课程类型:必修 学时:2周

适用对象:软件工程 本科生 先修课程:C语言程序设计

一、课程设计的性质、目的和任务

本课程设计是《C语言程序设计》课程的实践环节,也是计算机科学与技术专业学生第一次较全面的程序设计能力训练。

在《C语言程序设计》课程的理论教学和基础实验基础上,通过开发规模较大的程序,使学生掌握应用计算机解决实际问题的基本方法;熟悉C语言程序开发的全过程,包括从分析问题开始,建立数据模型,划分功能模块,设计算法,编码,调试和测试程序,撰写文档等;提高综合应用C语言的能力,强化编程和调试能力。通过理论教学、基础实验、课程设计等理论和实践紧密结合的教学,为学生今后学习软件专业课程创建较扎实的理论和实践基础。

二、基本要求:

课程设计的进行方式是在教师指导下由学生独立完成的。每个学生都应该明确设计任务和要求,并根据项目规模大小,拟定设计计划。注意掌握进度,按时完成。设计分段进行,每一阶段的设计都要认真检查。

所使用编程语言只限于C语言。

设计过程中要独立思考、深入钻研,主动地、创造性地进行设计,反对照抄照搬或依赖教师。要求设计态度严肃认真,有错必改,反对敷衍塞责,容忍错误存在。为保证课程设计达到教学基本要求,在设计思想、设计方法和设计技能等方面的训练,包括以下内容:

1、根据设计题目要求的指标,通过查阅有关资料分析其工作原理并划分功能模块;

2、画出程序流程图,完成程序各部分的内容分析;

3、计算各模块的参数设计,和模块内部操作,和模块返出的结果;

4、验证模块功能的完整性;

5、对模块功能进行设计;

6、对模块功能进行调试;

7、组合功能模块并完成设计要求。

三、课程设计题目

课程设计时,每4-8人组成一个开发团队,选出项目负责人一名。每个团队从以下题目中选择一个作为课程设计的题目。 词法分析器  桌面计算器  汉字的显示

郑州大学信息工程学院

 文本编辑器  校友通讯录  线条图型体表演  高中物理力学实验

 表情展示(结合表情单词理解) 音乐展示(播放) 游戏设计  对话框模拟  菜单模拟  桌面钟表设计  桌面日历设计

 其他自选题目(注意:所选题目不宜太大,应于本学期第二周的周五前完成)

四、考核方式

课程设计分为四个阶段组成:分析和设计、编程和调试程序、撰写报告、答辩。

1)分析、设计数据结构:学生首先选定题目、收集资料,对系统进行功能模块分析、控制模块分析正确,系统设计要实用,然后确定模块,写出函数原形。

2)编程与调试程序:根据函数原形及其功能,填充相应的算法。编程简练,可用性强,功能全面。上机调试程序,解决编译等错误,直至运行成功。

3)提交课程设计总结报告:按格式写出完整、规范的报告并打印。其中模块图、流程图要清楚、规范,不能有错别字。

4)答辩:程序测试通过、课程设计总结报告完成后,项目负责人通知指导教师检查,并参加课程设计答辩。

课程设计成绩组成:课程设计报告(60%)+ 作品演示与答辩(40%)。

五、提交资料

《C语言程序设计》课程设计报告。

注:课程设计报告中,应注明小组分工及完成情况。

对于程序中未能实现的部分需要加以说明。对于程序中所参考的部分代码需要加以声明,并说明出处。

《高级语言程序设计报告》于本学期第二周的周五前提交。参考教材

[1] C程序设计.潭浩强 编著.清华大学出版社.[2] 程序设计与C语言.王瑞民 卢红星 主编.西北工业大学出版社.2009年

《C语言程序设计》教学大纲 篇6

第一部分 大纲说明

一、课程的目的与任务

本课程将以结构化程序设计思想指导学习者运用C语言进行程序设计,充分利用C语言的结构性好,书写格式自由简洁,数据类型丰富,表达式类型多样化,程序执行效率高,可移植性好等特点,使学习者养成严谨的程序设计风格和习惯,在程序设计基本技能方面得到良好的训练,为后继课程的学习及今后的实际应用打下良好的基础。

二、课程的基本要求

1.教学基本要求和学习方法建议

(1)弄清概念、注重实践

学习时一定要模仿例题亲自编制一些实用程序,加强对概念的正确认识。同时要注意上机实践,把不清楚的问题通过上机一一解决。从而不断增加学习兴趣,提高编程能力。

(2)由浅入深、循序渐进

先学习简单的、容易掌握的部分,以后再逐步掌握C语言的精华——指针及各种灵活的表达式。

(3)着重语言的使用

由于C语言本身比较复杂,应把学习重点放在语言的使用上,即如何正确使用C语言编写程序,而不把重点放在算法的设计上。

(4)尽量不涉及太多的硬件知识

C语言既能编写应用软件,也能编写系统软件,而编写系统软件势必需要一定的硬件知识。在学习本课程时应尽可能地不涉及太多的硬件知识,以便于理解和掌握。

(5)忽略非主要细节

不死抠非主要细节,集中精力放在最基本、最常用部分的学习上,待建立一定的基础以后再深入到一些非主要细节的讨论。

2.教学的重点、难点

重点为熟练掌握C语言的数据类型(基本类型、构造类型、指针类型等)和各类运算符,能正确使用表达式实现各种数据的加工。熟练掌握程序设计的三种基本结构(顺序、选择、循环)的特点,能使用相关语句完成这三种基本程序的设计任务。掌握C语言的常用的库函数的使用,以及用户函数的定义、调用、参数传递等方法。培养学生的程序设计能力,初步认识软件开发的基本思想。难点为掌握阅读和分析程序的方法和技巧,掌握设计和调试程序的方法和技巧。

3.教学计划中前后课程的联系

C语言比较复杂、较难掌握,学习者应该先学习计算机基础知识。

C语言是数据结构、软件工程、程序设计方法、编译原理等课程的基础与工具。

4.考试考核方式

实践和期末笔试考核,比例为 4:6。5.学时

17周,周3学时

6.教材编选的原则

根据学生实际情况和社会发展的需要,选择了《C语言程序设计与实训》。该教材编写的原则是:结构清晰,内容安排合理,难度循序渐进,描述准确清楚,各章节配备一定实训题目和一定数量的习题和思考题,重点培养学生用C语言解决实际问题的能力,适合高职高专学生学习的特点。

7.参考书目

1.谭浩强 《C程序设计》 清华大学出版社 2002

2.薛钢等 《C语言实用教程》 吉林科学技术出版社 1997 3.徐金吾等 《Turbo C使用大全》 北京科海培训中心 1990

4.王士元 《C高级实用程序设计》清华大学出版社 1995

5.国家教育考试中心 《全国计算机等级考试考试大纲》 高等教育出版社 1995 6.牛连强等 《C语言程序设计笔试习题点津》 大连理工大学出版社 1999 7.王洪 《Turbo C 2.0使用指南》陕西电子编辑部(内部参考)1989 8.谭浩强 《C程序设计上机指导书》 清华大学出版社 1999

9.马靖善、秦玉平等 《C语言程序设计》 清华大学出版社 2005

第二部分 讲授大纲

第1章 C 语言概述

学习目的和要求:

了解C语言出现的历史背景,了解C语言的特点,熟悉C环境,熟练掌握C程序的上机步骤,了解C程序的组成。教学重点:

C 程序的上机步骤。教学难点:

C程序的组成。

课时分配:

本章讲授2学时,上机实践 1学时。

讲授内容纲要:

1.C语言发展及特点。

2.Turbo C上机操作环境。

3.简单的C程序介绍。

4.C程序的上机执行过程。思考题:

1.C程序组成。2.C程序执行过程。

第2章 C语言基础

学习目的和要求:

熟练掌握几种基本数据类型的存储方式,表示方法;熟练掌握指针的定义和使用;掌握不同类型间数据转换的原则与方法;熟练掌握有关运算符与表达式的运用。

教学重点:

整型、实型、字符型、指针型数据的定义和使用。运算符和表达式的运用。

教学难点:

指针型数据的定义和使用、不同类型间数据转换的原则与方法。课时分配:

本章讲授2学时,上机实践 1学时 讲授内容纲要:

1.常量和变量。

2.各种运算符和表达式。

3.指针类型。思考题:

1.数据类型有哪些。2.各种运算符的使用。

第3章 顺序结构

学习目的和要求:

清楚顺序结构设计的思路,掌握基本的输入、输出函数的使用。教学重点:

结构化程序设计思想、各种输入、输出函数 教学难点:

scanf()函数和printf()函数的格式控制字符串。课时分配:

本章讲授 2学时,上机实践 1学时

讲授内容纲要:

1.三种基本结构。

2.赋值语句。

3.输入、输出函数。思考题:

1.三种基本结构的特点。2.输入、输出函数的应用。

第4章 选择结构

学习目的和要求:

了解if、switch-case和goto三种语句的一般形式及其应用,掌握选择结构的特点。教学重点:

if、switch-case语句的应用。教学难点:

if语句嵌套。课时分配:

本章讲授2学时,上机实践 1 学时

讲授内容纲要:

1.if语句的应用。

2.switch-case语句的应用。

3.goto语句的应用。

1.if语句使用的注意事项。

2.switch-case语句中break的作用。

第5章 循环结构

学习目的和要求:

了解三种循环语句的区别,掌握穷举法和迭代法的思想及其应用,提高解决问题的能力。教学重点:

三种循环语句的特点及应用。思考题: 教学难点:

穷举法和迭代法的思想及其应用。课时分配:

本章讲授 4学时,上机实践 2学时

讲授内容纲要: 1.while、do-while和for三种循环语句的一般形式及其应用。2.break语句和continue语句的一般形式及其应用。

3.穷举法和迭代法的思想及其应用。思考题:

1.while、do-while和for三种循环语句的区别。2.break语句和continue语句的应用的特点。

第6章 数组

学习目的和要求:

掌握数组的定义、引用技巧和初始化方法;掌握字符串的输入、输出方法;会用字符串处理函数解决字符串问题。教学重点:

数组的应用、字符串数组的应用。教学难点:

字符串数组的应用。课时分配:

本章讲授4学时,上机实践 2学时

讲授内容纲要:

1.数组的定义、引用和初始化方法。

2.字符串的输入、输出及处理函数。

3.数组的应用。思考题:

1.字符串与字符数组的区别。2.数组的初始化的特点。

第7章 函数

学习目的和要求:

掌握函数的定义和调用;掌握函数调用时的参数传递方式;理解变量的存储属性和作用范围;掌握内部函数和外部函数的定义和使用。

教学重点:

函数的参数传递,函数的调用,数组名和指针作为函数参数。变量的存储属性。

教学难点:

函数的嵌套调用与递归调用;变量的存储类别。

课时分配:

本章讲授4学时,上机实践2学时

讲授内容纲要:

1.函数的定义与调用。

2.参数传递。

3.函数的嵌套和递归调用。4.宏定义与文件包含。5.主函数与命令行参数。6.运行一个多文件的程序。

思考题:

1.主函数的参数传递。

2.各种方式函数参数传递方式及有关规定与使用技巧。

3.函数中变量定义位置及其作用域之间关系。4.如何运行一个多文件的程序。

第8章 结构体、共用体和枚举类型

学习目的和要求:

熟练掌握结构体类型的概念、定义以及结构体变量的定义和引用。熟练掌握结构体数组和结构体指针变量的定义和使用。掌握链表的概念和应用。掌握共用体类型的概念、定义以及共用体变量的定义和变量成员的引用。掌握枚举类型的概念、定义以及枚举变量的定义和引用。

教学重点:

结构体变量、结构体数组与结构体指针的定义和引用。教学难点:

结构体数组与结构体指针。

课时分配:

本章讲授4学时,上机实践2学时

讲授内容纲要:

1.结构体类型的概念、定义以及结构体变量的定义和引用。

2.结构体数组和结构体指针变量的定义和使用。

3.链表的概念和应用。

4.共用体类型的概念、定义以及共用体变量的定义和变量成员的引用。5.枚举类型的概念、定义以及枚举变量的定义和引用。思考题:

1.结构体、共用体两种类型的区别。

2.链式存储适合的操作对象。

3.函数参数传递中用结构体和结构体指针之间的优劣比较。

第9章 位运算

学习目的和要求:

掌握六种位运算的运算符、运算规则和功能,并能利用这六种位运算符来解决一些实际问题。

教学重点:

位运算的应用。教学难点:

位段的定义与引用。

课时分配:

本章讲授2学时,上机实践1学时

讲授内容纲要: 1.六种位运算的运算符、运算规则和功能。

2.位段的定义与引用。

思考题:

1.如何测试数字的位数是0还是1?

2.如何实现循环移位?

第10章 文件系统

学习目的和要求:

掌握文件和文件指针的概念,掌握文件的打开、关闭和读写等基本操作。

教学重点:

文件的打开、关闭、读写。

教学难点:

文件的读写。

课时分配:

本章讲授 4 学时,上机实践 1 学时

讲授内容纲要:

1.文件系统相关基本概念及类型设置。

2.文件打开、关闭函数的使用。3.文件读写函数的使用。4.文件定位与随机读写。

5.文件的出错检测和处理。思考题:

1.文件打开和关闭的含义。

2.哪些文件操作函数会改变文件的内部指针位置。

第11章 综合实训

学习目的和要求:

了解程序开发的过程,掌握菜单的设计,更加熟练地应用函数,熟练地使用文件,提高学生的程序设计的能力。

教学重点:

程序开发的步骤、菜单的设计。

教学难点:

菜单的设计。

课时分配:

本章讲授 2学时,上机实践2学时

讲授内容纲要:

1.程序开发的步骤。

2.菜单的设计。

3.所有知识的综合应用:设计学生成绩管理系统。思考题:

1.程序开发的步骤。

C语言教学探究 篇7

一、教学对象

本学年我所教授的班级是中职二年级的学生, 学生的综合素质不高, 抽象思维水平较低;学习的积极性和主动性还不够, 遇到学习困难具有畏难心理, 不能刻苦钻研, 选择放弃的较多。 教学进度要适中, 不能太快, 教学内容不能太难, 要让学生能够接受, 教学方法要灵活多变, 只有这样才能教好C语言, 学生才能学好C语言这门课。

二、把握课堂教学方法, 提高课堂教学质量

(一) 做笔记。 采用讲解结合做笔记的方法进行课堂教学, 帮助和引导学生做好笔记。

C语言教材中的内容很多也很零碎, 为了不使学生产生疲劳感, 教师讲授的内容要突出重点, 使用信息化的手段突破难点。 学生基础不是太好加上C语言的学科特点 (不适合自学) , 帮助学生做好笔记是关键。 做好笔记一方面可以把书本上的关键知识点提取出来供学生学习, 另一方面可以防止学生上课走神, 使基础好的学生学到知识, 基础差的学生有事可做, 但是在C语言中基础性的语法学习没有捷径, 必须刻苦努力, 让学生记牢。

(二) 机房上课。 在机房上课, 让学生多写多练。 实践证明C语言程序是写出来的, 而不是看出来的, 更不是听出来的。 要学好C语言, 就要对程序多写, 多练。 老师讲完本课的知识点后把做好的笔记通过教师机发给学生, 让学生根据教师的笔记对知识点进行重构, 以自己的方式存储知识, 接着让学生对老师的程序案例进行上机编写、调试和运行, 确保成功。 这个过程比较简单, 学生只是临摹老师的程序, 通过这个过程学生可以体验C语言编程的乐趣, 树立编程的信心。 这个过程最好让学生独立完成, 当然对于学习困难的学生, 教师还要给予较多的指导, 以免其丧失学习信心;对于学习能力强、个性独立的学生给予较少的指导, 培养其独立探究的精神。

(三) 采用任务驱动法。 在C语言程序设计课程中, 有些概念之间的差别和程序的设计步骤如果只通过老师的讲述, 学生在课堂上就能够听懂, 但是课后很快就还给老师, 没有经过深度加工的知识遗忘得很快, 我们在学习C语言的过程中一定要多思考, 多联系, 加强记忆和学习迁移。

孔子曰:学而不思则罔, 教育我们在学习中一定要学会思考, 思考的最好办法就是给你一个任务或问题让你解决, 解决问题的过程即是思考的过程。 教师一定要根据本节课的内容精心设计出课堂作业, 课堂作业的知识点在笔记中是可查询的, 最好对本节课的内容做到全覆盖, 然后让学生去编程, 去思考。 例如在学完字符串复制函数strcpy () , 在后面的课堂作业设计中最好能够有此项内容, 例如使用字符串复制函数strcpy () 把字符数组S2复制到字符数组S1当中。 采用任务驱动法, 一切都要求学生自己动手设计, 动脑思考, 在操作过程中探究和解决问题的积极性和主动性得到调动, 从而达到教学目的。

(四) 注意 “互动式教学”, 不要 “自说自演”。 互动式教学是提倡教师主导, 让学生作为主体形式参与课堂。 互动式教学不但可以提高学生的参与热情, 而且可以避免学生上课疲劳、注意力不集中的现象。

大部分学生完成问题的编程后, 请具有独特思路的学生演示自己的程序和设计方法, 其他学生可以就此同学的演示提出看法和编程思路, 进行讨论, 对演示的程序进行正误剖析, 对比各种方法的优缺点, 鼓励大家再提出新方法, 解决普遍性的问题。 事实证明, 这种教学方法效果显著, 课堂气氛非常活跃, 学生的参与积极性较高。

三、实训教学

我系将对专业课进行为期两周的实训教学, 会进行阶段性的项目实训, 它将以案例的形式将每一阶段的学习进行小结性的贯穿和提高。 将有关知识点融入程序的编写中, 从而巩固知识点, 并将琐碎的知识点进行整合。 实训教学有很多好处, 它能集中一大段时间对C语言语法和编程思路进行集中训练, 效果很好, 给学生提供多写、多练的机会。 “书读百遍, 其义自见”道理一样, 程序的设计思想和方法在练习中慢慢被学生接受, 很多理论和方法练习多了, 就自然而然地懂了。 就像你进入一个新环境, 刚开始身边的很多人你可能不认识, 但是当你接触多了, 时间长了, 就基本上都熟悉了。 在学期快结束时计算机专业还会给学生集中安排一周的课题设计课, 通常会提供给大家几道题目让学生选择, 这几道题目涵盖非常广的知识点, 这些知识点在平时的课堂笔记中都是可查询的, 如果要编出程序就必须找到笔记中相应的知识点进行复习, 从而编出程序, 课题设计是对学科的终结性复习和总结。 形成案例后便于学生以后学习和查询, 学生普遍反映通过课题设计的实训训练, 编程能力有了显著提高, 以前很多不懂的内容通过钻研也懂了, 通过自己的努力体会到了编写程序的乐趣, 可以说收到了不错的成绩和效果。

四、结语

C语言的教学重点是培养学生编程思想和程序设计方法。这种能力的培养对初学者来说是极其困难的。 要学好C语言, 不仅需要学生刻苦学习, 更需要老师对教学进行精心的组织和科学的设计。 我相信, 只要运用有效的教学方法加上学生的努力, 就一定能使学生学好这门课。

摘要:C语言是绝大多数计算机专业学生学习的第一门计算机编程语言, 且难度比较大, 比较抽象, 但它却包含程序设计的基本思想和方法, 也是掌握其他高级编程语言的基础。通过对C语言教学方法的探讨, 能收到比较好的教学效果。

关键词:C语言,任务驱动,实训教学

参考文献

[1]陈琳.编程语言基础—C语言 (第3版) .北京:高等教育出版社, 2012.

C语言实验教学方法探讨 篇8

关键词:C语言;实验;教学方法

中图分类号:G642文献标识码:A文章编号:1009-3044(2007)12-21728-02

Discussion of the Experiment Teaching Method in C-programming

LIU Han-ying

(Department of Electronic and Computer, Guilin University of Technology, Guilin 541004, China)

Abstract:C-programming experiment is important part of C-programming teaching. As the result of each kind of reason, there are some disadvantages in the experiment teaching of C-programming: the experiment passing rate of national examination is low; the teacher can't instruct because of so many students; the students written down the programs without preparation. The students don't know how to do with the errors. With some teaching examples of the C-programming experiment, this paper propose some teaching methods, The experiences show that the proposals stimulated the students' enthusiasms of studying, and improved the quality of experiment teaching.

Key words:C language; experiment; teaching method

《C语言程序设计》(以下称C语言)是计算机及相关专业的一门专业基础课,是学习其他专业课程如《C++与面向对象程序设计》、《JAVA》、《数据结构》、《数据压缩》、《计算机图形学》的基础,C语言实验是C语言教学中的一个重要环节,常常占总学时的2/5以上。C语言实验教学有利于增加学生对理论知识的理解,调动学生的学习主动性,提高学生思维能力和动手能力。然而,由于各方面的原因,C语言实验教学中存在一些问题:全国等级考试实验通过率不是很高;C语言实验往往是大班上课,学生人数较多,老师指导不过来;学生课前没有预习,上机时直接输入参考程序,实验成了打字练习;英语水平不高,对错误提示无从下手;部分学生以为编译通过就是调试成功,不会使用调试工具。笔者近年来多次承担C语言实验教学任务,总结了一些教学方法和经验,下面是笔

者对C语言实验教学方法的探讨。

1 思想上重視实验环节,提高学习兴趣

由于C语言教学往往是大班教学,在考核方式上常常采用的是理论考试,部分学生不重视实验课,课前不预习,上机时就直接输入指导书上的参考程序,实验效果很差。因此,为了提高实验教学的效果,应将上机考核作为C语言考核的重要组成部分,让学生从思想上重视实验环节,做好课前预习。同时,笔者把一些用C语言程序实现的小游戏或画的图形图像演示给学生看,激发学生的学习兴趣,取得了较好的效果。

2 编写适宜的实验指导书

目前,有许多与C语言课程配套的实验指导书,这些指导书常常配有答案[1]。学生拿到指导书后,看有答案,常常不自己思考就将书上的程序录入进去,编译出错时不是根据错误提示查找错误原因,而是从头到尾地与书上程序比对,改正录入错误,遇到书上有错,就无从下手。整个上机练习成了打字练习。笔者认为,一本适宜的实验指导书应具备以下几点:

(1)实验指导书要与理论知识配套

C语言实验教学的目的是通过实验,让学生增强对理论知识的理解,学会自己编写、调试程序。因此,实验指导书的内容要与理论教学配套,有针对性地设置实验内容,且实验时间安排要合理(略晚于理论教学),参考程序与实验指导书分离。

(2)实验内容难度适宜

由于种种原因,学生能力上有很大差异,为此,在编写实验指导书时要兼顾各个能力层次的学生,设置基础题、中等难度题和较难题多个层次。笔者从历年的考试题中抽取一些具有代表性的改错题作为基础题练习;在此基础上,设置一些程序设计题让学生编写、调试;对学有余力的学生,可设置一些难度较大的题目,组成小组讨论。

3 养成良好的编程习惯

3.1 注意编程思想

算法是程序设计的精髓,语言只是表示形式,没有正确的计算机算法,就无法用计算机正确地解决问题。对于每一道题目,首先找出解决问题的算法,画出盒图,最后才是编写程序,这样可以减少出错的可能性。

3.2 使用有意义的标识符

C语言教材常常使用i,j,k,a,b,c几个字符作为标识符,很多学生在学习C++时觉得很难,其中一点就是C++中教材中的标识符较长。笔者建议学生,在编写程序时尽量使用一些有意义的字符串作为标识符,尽量不要用l作为标识符,提高程序的可读性,如输入一系列学生成绩时使用的是score1,score2……,而不是a1,a2……。

3.3 养成良好的程序录入习惯

有的学生在录入程序时不注意书写格式,在遇到错误时常常不易查找。笔者要求学生使用锯齿形的书写格式,在录入大括号、小括号、引号等时都要做到成对录入,有较地提高了程序录入的准确率。

4 改革实验辅导方法

4.1 网络教学软件的使用

传统的实验课是老师先布置实验习题,学生练习,遇到问题举手,老师解答。然而,C语言实验往往是大班教学,学生人数较多,许多问题十分相似,老师常常为同一问题解释多次,指导不过来。针对这一问题,笔者使用了红蜘蛛软件[3],这个软件可以在局域网上实现多媒体信息的教学广播,是一款实现在电子教室、多媒体网络教室或者电脑教室中进行多媒体网络教学的非常好的软件产品,集电脑教室的同步教学、控制、管理、音视频广播、网络考试等功能于一体,并同时实现屏幕监视和远程控制等网络管理的目的。该软件是专门针对电脑教学和培训网络开发,可以非常方便地完成电脑教学任务,包括教师演示、学生示范、屏幕监视、遥控辅导、屏幕录制、屏幕回放、网络考试、网上语音广播、两人对讲和多方讨论、联机讨论、同步文件传输、提交作业、远程命令、获取远端信息、电子教鞭、电子黑板与白板、网上消息、电子举手、锁定学生机的键盘和鼠标、网络唤醒、远程关机和重启、学生机同步升级服务、远程安装、倒计时、班级和学生管理等。笔者通过文件传输功能,将实验题目(如基础改错题)发放给学生,让学生练习,然后通过提交作业功能抽一名学生的作业来讲解。

4.2 总结错误

针对一些学生英语水平不高,对错误提示无从下手的现状,笔者总结了上机时经常遇到的错误,如语法错误、逻辑错误等,罗列给学生,并从一些试题中挑选一些适宜的改错题传给学生练习,学生不用从头到尾地录入程序,提高了实验效率。

4.3 调试方法的使用

調试的目标是寻找软件错误的原因并改正错误[2],一般有以下几种调试途径:

4.3.1 蛮干法

上机时指导学生查找错误,学习使用程序调试工具,跟踪程序的执行过程,发现较隐蔽的错误,提高学生动手解决问题的能力。如学生编写如下程序计算 (用公式 )时,发现结果不对,笔者指导学生使用调试工具观察变量pi和t的值,很快找到了错误原因,同时学生也练习了调试工具的使用方法。

#include

#include

void main()

{float s,n,t,pi;

t=1;pi=0;n=1;s=1;

while(fabs(t)<1e-6)

{pi=pi+t;

n=n+2;

s=-s;

t=s/n;}

pi=pi*4;

printf("pi=%fn",pi);}

4.3.2 回溯法

从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。如上例中,用go to cursor执行到pi=pi*4,发现pi的值不对,则往回分析代码,很快可以查出是循环条件不对。

4.3.3 对分查找法

对分查找法的基本思路是,如果已经知道每个变量在程序中若干个关键点的正确值,可以用赋值语句或输入语句在程序中关键点附近“注入”这些变量的正确值,然后运行程序,并检查所得到的输出。如果输出结果是正确的,则错误原因在程序的前半部分;反之,错误原因在程序的后半部分。

4.4 让学生自己调试程序

由于学生多,问题多,为了快速地解决问题,有时老师会帮学生调试程序来提高效率。笔者认为,老师应指导学生调试程序,而不是帮学生调试程序,学生只有自己动手,动脑,才能真正学会调试方法。同时笔者鼓励学生之间互相帮助和交流,培养团结协作的精神,学生在帮助同学的同时自己也得到学习。

5 结束语

以上是笔者对《C语言程序设计》实验教学方法进行的探讨,通过实践发现,这些方法有助于激发学生学习自觉性和主动性,提高学生分析问题和解决问题的能力,达到提高教学质量的目的。

参考文献:

[1]谭浩强.C语言程序设计题解与上机指导[M].北京:清华大学出版社,2005.

[2]张海藩.软件工程导论[M].北京:清华大学出版社,2003.168.

[3]http://www.forclass.com/.

上一篇:单位异地购房证明下一篇:《单臂猿的末日》读后感400字