C语言程序设计2教学大纲(精选9篇)
C语言程序设计2教学大纲 篇1
C语言程序设计2
【课程编号】 【学 分 数】4
【课程类别】专业必修课
【适用专业】 计算机科学与技术、计算机科学与技术(信息技术教育方向)、软件工程、软件工程(数字媒体方向)
【学 时 数】54(30理论+24实践)【编写人】何宇矗
【编写日期】2014.2.9
一、教学目标
C语言作为一种面向过程的语言,虽然近年来在面向对象编程语言的发展并流行的大趋势下,应用减少了很多,但是通过TOIBE(互联网资深程序员开发语言排行榜)的排名情况来看,C语言仍然牢牢占据前三名的位置,并且经常是第一名,可见C语言在生产实践中仍然占据着举足轻重的作用,许多实际在用的软件项目,尤其是嵌入式项目及与系统底层密切相关的项目仍然是由C语言来开发的。
通过《C语言程序设计1》的学习,学生已经理解了编程的基本概念,掌握了C语言的基本语法(这也是传统的C语言程序设计课程所设定的教学目标)。但是若要利用C语言来构造出具有一定规模的可用的应用程序,解决实际生活、生产中遇到的问题,还具有较大的困难。学生需要具备这方面的能力,不仅仅需要熟练掌握C语言的基本语法知识,还应当具有一定的算法设计能力、基本数据结构应用能力、自顶向下、逐步求精地分析问题与解决问题的能力(即面向过程的思想)、基本的软件工程项目组织能力、团队合作精神以及各种第三方程序库的使用能力,这些能力的培养,是让学生真正从理论走向实践,从书本走向生产所必须具备的。这正是《C语言程序设计2》课程的主要目标。
二、教学内容和学时分配
第一章 指针2 4+4学时
主要内容
1.指针数组及指向指针的指针 2.指针与多维数组 3.指向函数的指针 4.命令行参数 教学要求 1.掌握指针数组及指向指针的指针的使用 2.理解指针与多维数组的关系 3.理解指向函数的指针及其应用 4.熟悉命令行参数的使用
重点、难点:指针数组及指向指针的指针、指向函数的指针 其他教学环节:2学时实验课
第二章 C语言程序的组织结构
2+2学时
主要内容:
1.单个文件的程序结构
2.头文件的作用及多文件的程序结构 3.预处理及条件编译、宏替换 4.简单实例———计算器程序 教学要求:
1.理解C语言程序的结构,掌握头文件的使用,能构造具有多个文件的C程序 2.理解预处理概念,掌握条件编译命令、宏替换 重点、难点:头文件的使用及多文件的程序结构。其它教学环节:2学时实验课。
第三章 结构体、共用体和枚举类型4+2学时
主要内容
1.用typedef定义数据类型 2.结构体类型的意义
3.结构体变量的定义、初始化和数据成员的引用 4.结构体作为函数参数 5.共用体和枚举类型
教学要求
1.理解结构体数据类型的含义 2.掌握结构体类型的定义及使用 3.理解枚举和共用体数据类型
重点、难点:结构体数据类型的定义及使用 其他教学环节:2学时实验课 第四章 指针进阶——链表 2+2学时
主要内容: 1.链表的实现 2.链表的应用 教学要求: 1.掌握链表的实现
2.熟悉链表在程序中的实际应用。重点、难点:链表的构造 其它教学环节:4学时实验课。
第五章 文件操作 2+2学时
主要内容
1.二进制文件和文本文件 2.文件的打开和关闭 3.文件的创建、读写 4.文件的随机访问 教学要求 1.理解文件的概念
2.掌握文件的访问流程及常用读写函数
重点、难点:文件的概念及其读写 其他教学环节:2学时实验课
第六章 常用程序设计方法 4+4学时
主要内容: 1.模拟 2.递推 3.分治和递归 4.贪心算法 教学要求:
理解常用的算法设计思想,并能简答应用。重点、难点:递归的理解,分治与贪心的应用 其它教学环节:2学时实验课。
第七章 面向过程的程序设计方法 2学时
主要内容:
1.自顶向下、逐步求精的程序设计方法; 2.经典的软件工程方法——瀑布模型 教学要求:
1.理解自顶向下、逐步求精的程序设计方法 2.理解软件工程的概念及软件开发的基本流程 重点、难点:自顶向下、逐步求精的程序设计方法 其它教学环节: 无
第八章 综合实例1——图书管理系统 4+4学时
主要内容:
按照软件工程的基本流程,运用自顶向下、逐步求精的设计方法,构造出具有图书添加、存储、查询、借阅、删除等功能的图书馆管理系统,并将其实现。
教学要求:
在实现图书馆管理系统的过程中,体会面向过程的程序设计方法及软件开发的基本流程。
重点、难点:
1.面向过程的设计方法的具体应用 2.数据结构的应用
其它教学环节:2学时实验课。
第九章 综合实例2——五子棋游戏4+4课时
主要内容:
按照软件工程的基本流程,运用自顶向下、逐步求精的设计方法,构造出五子棋游戏,并将其实现。
教学要求:
在实现五子棋游戏的过程中,体会面向过程的程序设计方法及软件开发的基本流程。重点、难点:
1.面向过程的设计方法的具体应用 2.五子棋走棋算法的设计
其他教学环节:4学时实验课
第十章 操作系统接口及第三方程序库 2学时
主要内容
1.C语言标准库中的其他内容
2.操作系统提供的编程接口(POSIX系统调用)3.常见第三方程序库的介绍 4.面向对象程序设计的概念
教学要求
1.了解C语言标准库中的常见功能 2.理解操作系统编程接口的概念及基本使用 3.熟悉常见的第三方程序库 4.理解面向对象编程的概念 重点、难点:POSIX操作系统编程接口、面向对象编程的概念
其他教学环节:无
三、教材与学习资源
[1]郑州师范学院在线判题系统ZZNUOJ(acm.zznusoft.com)[2]《C语言程序设计》,苏小红等编著,高等教育出版社,年份:2011.[3]《C程序设计语言》,Brian W.Kernighan,Dennis M.Ritchie著,徐宝文、李志译,机械工业出版社,年份:2004.[4]《C语言实例解析精粹》曹衍龙、林瑞仲、徐慧编著,人民邮电出版社,年份:2005.四、课程体系及教学策略与方法
C语言程序设计是高等院校计算机专业及相关专业重要的专业基础课,其目的是培养学生的程序设计理念、掌握程序设计的基本方法,为后续课程(数据结构、面向对象程序设计、算法设计与分析、操作系统、编译原理和软件工程等)打下坚实的基础。
C语言程序设计是一门实践性很强的课程,对于把目标定位在提高实践应用能力的郑州师范学院计算机科学系来说,更应该从一开始就狠下功夫,尽可能早地让学生对程序设计产生浓厚的兴趣。
与《C语言程序设计1》课程的教学主要采用OJ平台来作为练习来源不同,本课程前六章仍然主要利用OJ平台来完成练习,后四章则采取小组合作、项目驱动的方式来组织教学实验,这样的方式更加注重学生程序设计思维的培养以及团队合作精神的培养。这样的方式除了能够提高学生的学习兴趣及动手能力之外,更能够培养其严密的逻辑思考能力、自主解决问题能力以及提高其团队合作意识。
五、考核方式
采用平时成绩(占30%,由到课率及实验作业完成情况)与期末考试成绩(占70%,最后的大作业完成情况)相结合的方式来考核。其中,实验项目的完成情况由老师来给各个小组打一个总分,然后由组长及组员按照小组成员为实验项目的贡献来为各个组员打分。
C语言程序设计2教学大纲 篇2
C / C + + 语言程序设计是计算机专业本科生的专业基础课程,也是大学计算机基础系列课程的核心课程。通过本系列课程的学习,旨在使学生掌握程序编写的基本技能,培养程序设计思想和方法,养成良好的编程风格,编制高效可靠的程序,进而具备灵活利用所学知识解决实际问题的能力。长期以来,高校都在不断地探索和实践关于C /C + + 语言程序设计课程的教学模式。传统的教学一般着重概念和语法规则,缺少学习的实用性和针对性,实验环节与课堂教学环节存在不同程度的脱节。面对繁复枯燥的语法规则和程序结构,学生也很难的有学习兴趣。因此,根据质量工程的相关要求,研究教学改革方案,找出目前C /C + + 语言程序设计课程在教学中存在的主要问题,对现有的教学方法和教学手进行现代化研究与实践,具有十分重要的现实意义。
2 C / C + + 语言程序设计教学现状
本人承担了多年的C /C + + 语言程序设计课程的教学工作,在教学过程中发现了现有教学模式的一些问题和不足,分析总结如下:
( 1) 教学中过度依赖课本,“照本宣科”现象比较普遍。受中学教育模式影响,大多数教师授课时倾向于依赖选定的教材或很少几本参考教材授课,课程章节固化,凡事以课本为主,课本里有什么就讲什么,授课内容“流程化”“格式化”。这虽然有助于教学内容的结构和完整,学生也能直接沿用中学培养的习惯获得知识,但这只不过是“填鸭式”教学的延伸。长此以往,学生学习的主动性会逐渐丧失,对课本外的东西提不起兴趣,学习也只是为了应付考试。
( 2) 过于偏重理论教学,实践教学所占比重较小。在有限的课时教学中,传统方式仅能将基本的、重要的概念、语义语法规则教授给学生,而对其应用方式、更深层次的知识点、探索及发散性的科学问题涉及较少。课程考核也大多片面强调书面成绩,对于C /C + + 语言程序设计这种实践性要求强的课程,书面考试并不能反映出学生对课程的掌握水平,反而误导部分学生靠“死记硬背”课本上的知识点和程序片段蒙混过关。
( 3) 课程衔接性差,在知识体系中,没能很好形成与“计算机文化基础”和“计算机应用基础”的衔接,也没有把C /C + + 语言知识应用于专业问题的描述和求解中。在教学中,缺少利用所学知识解决实际问题的教学引导,书本与现实隔离,很难做到“学为所用”。
针对上述问题,结合本校实际,对C /C + + 语言课程教学的主要环节教学模式、上机实践、课程考核等方面进行了研究与探讨。
3 C / C + + 语言程序设计教学改革与探索
结合C /C + + 课程的特点,针对传统教学中存在的问题,积极进行课堂教学、实验教学和考核方式的改革,具体从以下几个方面进行了一定的探索实践:
3. 1课程教学改革
( 1) 打破课本章节格式,探索“实例驱动式”和“阶梯式”教学方法针对C /C + + 语言程序设计的课程特色,强调“从实践中来,到实践中去”的教学目标。在课程教学中,注意引入具体化的实例,使得概念的抽象都来源于实际的例子。比如在C语言教学中发现很多同学上课时能听懂,看别人的程序也能看懂,但自己动手去写时却无从下手。这种情况不是个例,而是学习语言类课程时大多数学生都存在的问题。在教学中可以结合生活中的实际例子来示范,为学生“看”和“写”搭建桥梁,培养程序设计思想。例如,从做面包到C语言程序编写的示例( 图1) 。在教学中,可以引导学生分步考虑面包的制作工序,操作中需要摒除详细的细节部分,抽象出核心的流程,然后一步一步代入C语言的程序设计结构和语法规则,使得学生对课程内容有熟悉度和参与感。
通过“做面包”的例子,可以结合变量在内存中存储的方式,帮助学生掌握“变量需要先声明才能使用”的知识点,同时也铺垫了函数的概念,还可以进一步扩展加入分支结构( 面包的不同口味) ,循环结构( 制作多份面包) 等。通过动员学生逐步思考,一起动手做面包,把计算思维与有趣的课堂互动结合起来,既提高了学生学习的兴趣,也“润物细无声”地把编程思维传达到学生心中。而后在学生通过课程学习已经建立了一定的编程思维的基础上,再结合我校的卓越工程师计划,把实际项目引入课堂中来,深入引导实例教学,实现学生从“课本学习”到“实践学习”的转变,通过项目实例让学生亲身感受所学知识的用处,也为毕业后的职业发展打下扎实的基础。
另一方面,知识的获取需要一个循序渐进的过程。这就需要教师在备课时,将同类型问题找出来,将这些问题按难易程度排队上课,先让学生解决最简单的问题,再依次提高问题的难度。通过教学,学生对于同类问题的解决就有了比较深刻的认识。比如上面提到的做面包的问题,同一个问题可以分级扩展,从做一份面包到做多份面包,从做单一口味的面包到做多种口味的面包,从做面包到卖面包,进而面包分类,存货处理等等。通过与实际例子结合循序引进,反复强调知识点加深学生印象,打牢基础。C语言的开设一般在大学一年级,此时着重培养学习兴趣和规范学生养成良好的编程习惯,而C + + 的学习着重于面向对象的程序设计,一般开设于大二下学期或者大三上学期,在C + + 面向对象语言学习时,结合类和对象的概念以及继承和派生等等知识点还可以对“做面包”的问题再做进一步扩展,从做面包到做馒头、饼干等各种糕点,鼓励学生动脑思考逐渐扩充功能,可以自己编程开发一个具备制作、买卖、分类、存货处理等功能的糕点铺。教学中可以根据需要切换各种生活场合,提高学生兴趣,强调编程思想源于生活,服务于生活,学生在日常中也会经常回想起课堂所学知识,达到事半功倍的效果。
( 2) 高效利用团队教学资源,体现从计算机基础课到专业课的顺利交接
C / C + + 语言程序设计立足于引导学生建立基本的“人机互动”概念,构建编程思维理念,掌握核心程序设计方法,开发“发现问题,凝练问题,求解问题”的能力。它是计算机基础课到计算机专业课程的重要衔接,所以在课程设计上,要逐步培养学生从“使用计算机工具→理解计算机工作原理→开发计算机软硬件”的计算思维。但这个目的只通过一门课程是无法完成的,在教学过程中,需要利用院系优秀的教学资源,组建教学团队,使得课程选取→大纲制定→计划培养→落实实施形成系统化,脉络化的结构,加强课程之间的衔接和交互,增加知识的穿插讲授,使得各个课程相辅相成,相得益彰,起到事半功倍的作用。通过对不同专业需求的分析,在制定教学大纲时注重课程的衔接,在实际操作中注重教学团队中任课教师课堂情况的反馈,通过强化教学内容和学生掌握情况双重渠道,避免课程之间的脱节。针对一门课程,学生学分的获取和讲授课时的结束并不意味着本门课程的结束,在形成系统化的课程设计后,可以有效利用每门课程的信息反馈,有的放矢的对学生薄弱环节进行再强化,达到扎实学习,学以致用,而不仅仅是应付考试的良性循环机制。
3. 2上机实践改革
计算机语言类课程的学习关键在于动手实践,但即使意识到了实践的重要性,学生真正动手也往往受限于上机时间和实践平台。在传统的实验教学模式下,大多此类课程都由实验指导书作为参照,学生按图索骥的输入一些代码,完成一些任务。评判的方式也大多依赖于教师,学生实践得不到实时反馈,积极性很难调动起来,课下也不会有意识去编程实践。通过借助我校搭建的ACM/ICPC竞赛平台,学生平时有充足的题目可供练习。而且所有题目规范,输入输出格式明确,评判也由机器在后台完成,正确与否也能实时反馈。通过多组数据的测试,竞赛平台能够发现并迫使学生修正编程中存在的容易人为忽略的问题。另外,ACM/ICPC竞赛平台还可以按照班级、年级、专业等排名,学生也能实时监控自己做题的数量、成功率等,并可以通过Q&A的环节进行错误求助并与其他同学沟通。学生的学习积极性一下子就提高了起来,出错的题目,知识点通过讨论也能自己在课余时间解决。
通过与ACM/ICPC竞赛平台的结合,主要实现了以下几个 方面的探索:
( 1) 激发学生学习兴趣,创造兴趣学习小组
在ACM/ICPC的平台的辅助下,激发学生分组分队共同解决问题,成立程序编写互帮互助小组,采用不定时竞赛的方式对各小组进行考评,并辅以奖励和惩罚措施,尽量让每个学生都不落队。通过组队,同学之间也有了更好的沟通渠道,每个人成为团队的一部分,培养了学生的分享和互帮互助的团队合作精神。
( 2) 鼓励学生涉猎算法等相关知识,培养计算思维
通过ACM选拔,ACM战队的主力队员会通过集训学习数论、计算几何、动态规划、二分图、博弈论、网络流等相关知识,但竞赛选拔的队员屈指可数。这些优秀的种子选手和现有的ACM培训资源却未被大多数学生利用。C /C + + 语言类教学和大多数计算机类课程所追求目标,其核心就是培养学生的计算思维。我们采用了通过优秀学生和ACM集训队带队教师的不定期讲座和培训,以及培训资料等资源的共享来吸引更多的学生参与到程序设计的队伍中来,并已经在学生中通过口耳相传起到了一定的影响力。在上机课中适度引入部分难度稍大的,需要借助其他相关知识才能解决的问题,鼓励学生查阅资料,自己动脑,动手去分析和解决问题,养成良好的主动学习习惯。
3. 3课程考核改革
课程设置的目的不是考试,而是解决问题,特别对于C /C + + 语言程序设计类需要实践的课程尤其是这样。传统的卷面考试不仅不能反映学生对课程的掌握程度,反而诱导出诸如靠划重点、死记硬背程序企图蒙混过关拿到学分的问题。所以在对C /C + + 语言程序设计考核时,我们采用了平时成绩和期末机考相结合的方式。考试成绩分三部分组成,上课活跃度占30% ,分组实践占30% ,期末机考占40% 。其中,上课活跃度包括出勤次数和上课提问情况; 分组实践指通过小组成员共同努力分析、解决实例的情况,一般在上机时根据进度提出难度稍高的问题,鼓励学生通过团队协作,查阅课外资料等来完成; 期末机考是从ACM平台上抽取一部分题目作为期末考核,考察学生实际编程能力。
4结束语
在研究与探索C /C + + 语言程序设计教学的过程中,通过“阶梯式”“实例驱动”的教学方法,辅以ACM竞赛平台,优化配置团队教学资源,追求实用性、系统化、高效率的课程实现,全面提升学生的对程序设计的实践应用能力。通过教学改革,提高学生在学习中发现问题、分析问题和解决问题的能力,培养学生编程思维,计算思维。实践表明,本文提出的教学改进方法可以激发学生学习的热情和兴趣,有效地提高了C /C + + 语言程序设计课程的教学效果。
摘要:针对C/C++语言程序设计课程语法规则繁琐、概念抽象等特点,结合我校实际情况,通过深入分析课堂教学、上机实验及课程考核等教学环节,从教学方法、实验设计及课程考核三方面提出改进方案,提出了以培养学生计算思维为最终目标,以提高学生学习兴趣,激发学生学习积极性为目的,以“阶梯式”“实例驱动”为教学方法,整合教学团队共同促进教学的模式。通过教学改革,激发了学生对C/C++语言程序设计的学习兴趣,培养了学生的动手实践能力,提高了教学质量水平。
《C语言程序设计》教学探究 篇3
关键词:教学方法案例教学启发教学教学效果
0 引言
《C语言程序设计》作为计算机专业的基础课,已经成为一门必修的语言课程,在整个语言课程体系中占有非常重要的地位。在C语言教学过程中,从客观上讲,教师的教法和学生的学法的差异,对教学效果都会产生很大的影响。针对教师的教法和学生学习语言类课程的学法,结合近几年来的教学经验和教学体会,把一些经验和方法总结出来,希望能对C语言课程的教学和学习有所帮助。
1 分析教学中存在的问题
《C语言程序设计》是一个逻辑性很强的课程。有些问题是将数学知识转化用c语言来实现,这就要求学生首先要能够理解和掌握数学知识,才能将其转化用c语言来实现。在调试程序时,提示的信息都是用英语给定,那么也就要求学生掌握最基本的英语单词,有些甚至是计算机专业英语,能将英语句子翻译为汉语,才能够对程序加以修改。学生在心里认为c语言难学,没有积极学习的主动性,导致上课时没兴趣,不能专心听讲,布置的作业无从下手,在实践课中,看到要编写的程序题目,理不出头绪。
2 涉及新的知识要有导入
在教学的過程中,要将新的知识点,要有很自然的导入语,引导学生思考问题和解决问题的方法。例如:scanf(“%d”,&a);只能从键盘接受 一个整型数,现在要输入40名学生的成绩,如何通过一个scanf函数来实现,难道是要定义40个变量,那如果要接受100个数呢?更多的呢?为了解决诸如此类的问题我们采用数组来实现。这样也就引导学生思路跟着教师,给他们提出问题,在给出解决问题的办法。
3 举一反三
给定一个例子时,将涉及到的所有内容都要讲到。各种形式,可能出现的错误都要指定。例如:现在要求n!我们可以给定一下几种形式:
(1)main()(2)main()
{ int i=1,n;{inti=1,n;
doubles=1; doubles=1;
scanf("%d",&n); scanf("%d",&n);
while(i<=n) do{ s*=i;
{s*=i;i++;
i++;} }while(i<=n);
printf("%lf",s); printf("%lf",s):
} }
(3)main()(4)main()
{inti,n ; {int i,n;
double s=1;doubles=1;
scanf("%d",&n); scanf("%d",&n);
for(i=1;i<=n;i++)i=n;
s*=i;while(i>=1)
printf("%lf",s); {s*=i;
} i--;}
printf("%lf",s);}
(5)main() (6)main()
{intI,n; { inti=0,n;
doubles=1; doubles=1;
scanf("%d",&n); scanf("%d",&n);
i=n; while(i<=n)
for(i=n;i>0,i--) {i++;
s*=I;s*=i;}
printf("%lf",s);}printf("%lf",s);}
一个例子可以给出多种方法来实现,在这只给出6中形式,从这6种中,就可以看到初值不同,语句的书写顺序不同。通过一个例子,让学生能理解各种形式,遇到诸如此类问题时,就可以迎刃而解。
4 与实践教学相结合
程序设计课程具有很强的实践性,对于计算机语言课程的教授不应仅仅是传授知识,应该以培训能力为主。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序。应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。
参考文献:
[1]朱健,庞倩超.C语言程序设计案例教程.全国高职高专教育精品规划教材:北京:交通大学出版社.
[2]郭芹.对高职高专计算机专业程序设计教学的思考.中国科技信息.2008(1).
[3]谭浩强.C语言程序设计教程.北京:高等教育出版社.
《C语言程序设计》教学大纲 篇4
[课程名称: ] C语言程序设计
[教学时总数:] 36+36 周学时: 讲授:2 上机实践:2(共18周)[课程教材: ] 教科书:C语言程序设计(第二版)(谭浩强 著)(清华大学出版社)参考书:C程序设计教程(谭浩强、薛淑斌、崔武子编著)(清华大学出版社)、C语言习题集与上机指导 [课程的目的与要求] 本课程是为计算机程序设计基础课,其目的是使学生掌握高级语言的编程方法,能用C语言独立编制出解决与本学科相关的科学计算问题的程序。要求学生了解C语言的成分及程序结构,掌握模块化程序设计的编程的技巧,熟悉编程、调试、运行各个环节的方法。[教学内容与学时安排:] 一)C语言程序设计初步(1×2学时)1.程序设计语言介绍。2.用库函数组装C程序。3.设计一些简单的C函数。
二)数据描述与基本操作(2×2学时)1.数据类型与基本操作 2.常量与变量 3.运算符与表达式 4.不同类型数据间的转换 5.数据的输入和输出
三)C语言的流程设计(2×2学时)1.算法的描述与结构化程序设计 2.用C语句描述算法
3.选择型程序设计:if…else、switch 4.循环型程序设计:while、do…while、for 四)模块化程序设计(2×2学时)1. 函数
2. 变量的存储属性 3. 编译预处理 五)数组(3×2学时)1.一维数组
2.二维数组和多维数组 3.字符数组和字符串 六)指针(5学时)1.指针概述 2.指针与数组 3.指针与函数
七)结构体和共用体(5学时)1. 结构体类型概述
2. 结构体类型变量的定义和引用 3. 结构体数组
4. 结构体变量作为函数参数以及返回结构体类型值的函数 5. 共用体的概念和简单例子 6. 用TYPEDEF定义类型 八)位运算(1×2学时)1. 位运算概念
C语言程序设计2教学大纲 篇5
【课程代码】
0770105
【学
分】【参考学时】
【讲授学时】
【实验学时】
【实习学时】
0 【课程性质】
专业必修课
【参考教材】1.谭浩强 《C程序设计》(第三版)清华大学出版社
2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)
3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社
【课程基础】
在学这门课之前,学生最好对计算机基本结构、软硬件概念和上机操作知识有一定的了解,但不是必须的。本课程和“计算机导论”课程同时开设,可以互学互用。【适应对象】
本课程适用于计算机科学与技术-计算机科学与技术专业、软件工程-软件工程专业、电子信息科学类-电子信息科学与技术专业以及数学专业的学生学习。【教学目的】
通过对C语言的语法规则、数据类型、数据运算、语句、系统函数、程序结构的学习,使学生了解结构化程序设计基本思想和方法,并养成良好的编程风格,培养出扎实的软件开发基本技能;使学生初步掌握利用计算机处理问题的思维方式和程序设计的基本方法和编程技巧,熟练地应用C语言编写简单的程序,掌握基本的程序调试方法和步骤,为进一步学习后续课程和将来从事应用软件开发奠定良好的基础。【内容提要】
C语言的各种数据类型,运算符,表达式;结构化程序设计语句;数组;函数的概念和用法;编译预处理命令;指针运算及其使用;位运算;文件的操作;算法的基本表示方法及结构化程序设计方法。
第1章 C语言概述
第一节C语言出现的历史背景 第二节C语言的特点
C语言的特点 第三节 简单的C程序介绍
简单C程序的结构 第四节C程序的上机步骤 【基本要求】
了解C语言的历史; 掌握C语言的特点;
掌握C语言的运行环境,初步了解运行一个C语言程序的过程。【参考学时】2学时
【参考资料】[ 1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社 ]
第2章 程序的灵魂-算法
第一节 算法的概念
算法的定义。
第二节 简单算法举例
第三节 算法的特性
算法的特点。
第四节 怎样表示一个算法
用自然语言表示算法;用流程图表示算法;三种基本结构; N-S图;用伪代码表示算法;用计算机语言表示算法。第五节 结构化程序设计方法 【基本要求】
1、掌握算法的概念,算法的特性;
2、掌握结构化程序设计的三种基本结构;
3、掌握用流程图、N_S流程图和伪代码等算法描述方法来描述具体的算法的方法以及结构化程序设计的方法。重点:结构化程序的三种基本结构,顺序,选择,循环;结构化程序设计的方法,自顶向下,逐步细化,模块化设计,结构化编码。难点:用流程图、N_S流程图和伪代码算法描述方法来描述具体的算法。【参考学时】4学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社] 第3章 数据类型、运算符与表达式
第一节 C的数据类型
第二节 常量和变量
常量和符号常量;变量的定义和使用。
第三节 整型数据
整型常量的表示方法;整型常量;整型常量的类型。第四节 实型数据
实型常量的表示方法;实型常量;实型常量的类型。第五节 字符型数据
字符常量;字符变量;字符数据在内存中的存储形式及其使用方法;字符串常量。第六节 变量赋初值 变量赋初值的方法。
第七节 各类数值型数据间的混合运算
运算规则和实例。
第八节 算术运算符和算术表达式
算术运算符;算术表达式。
第九节 赋值运算符和赋值表达式
赋值运算符;赋值表达式。第十节 逗号运算符和逗号表达式
逗号运算符;逗号表达式。【基本要求】
1、掌握C语言所提供的数据类型以及基本数据类型常量的书写方法和变量的定义、赋值和初始化方法;
2、掌握基本运算符的运算规则及优先级别;
3、了解C语言的数据类型体系和运算符体系;
4、能正确构成有基本数据类型组成的基本类型的表达式。
重点:基本数据类型常量的书写方法和变量的定义、赋值、初始化、使用方法;基本运算符的运算规则及优先级别;表达式的构成规则和计算。难点:运算符的优先级别;混合表达式计算;逻辑值的表示方法。【参考学时】4学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社] 第4章 最简单的C程序设计-顺序程序设计
第一节 C语句概述
C语言中的语句类型。第二节 赋值语句
赋值语句的用法。
第三节 数据输入输出的概念及在C语言中的实现
输入、输出概念;输入/输出实现方式。第四节 字符数据的输入输出
putchar函数的使用;getchar函数的使用。第五节 格式输入与输出
printf函数的使用;scanf函数的使用。第六节 顺序结构设计程序举例 【基本要求】
1、了解C语言所包含的语句;
2、熟练掌握赋值语句以及字符输入输出、格式输入输出函数的使用方法;
3、学会按照一定的格式输出相应的数据类型,能正确设计顺序结构的程序。重点:赋值语句的格式和功能;字符和格式输入/输出函数的调用格式和功能。难点:格式输入/输出函数中格式控制字符的使用。【参考学时】4学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第5章 选择结构程序设计
第一节 关系运算符和关系表达式
关系运算符及其优先次序;关系表达式。第二节 逻辑运算符和逻辑表达式
逻辑运算符及其优先次序;逻辑表达式。第三节 if语句
if语句的三种形式;if语句的嵌套;条件运算符。第四节 switch语句
swtich语句的用法。第五节 程序举例 【基本要求】
1、掌握关系运算符、逻辑运算符的运算规则以及关系表达式和逻辑表达式的使用;
2、掌握条件运算符、条件表达式的使用;
3、熟练掌握条件选择语句if语句的使用;
4、熟练掌握多分支语句switch语句的使用。
重点:关系运算符、逻辑运算符、条件运算符的使用,混合运算时的优先级别; if语句的语法格式;if语句的嵌套;使用switch语句实现多分支结构的程序设计方法。
难点:运算符混合运算的优先级别;if语句的嵌套;switch语句的使用。【参考学时】4学时
【参考资料】[1.谭浩强《C程序设计》(第三版)清华大学出版社2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第6章 循环控制
第一节 概述
C语言中实现循环的语句类型。第二节 goto以及用goto语句构成循环
goto语句的用法。第三节 while语句
while语句的用法。第四节 do-while语句
do-while语句的用法。第五节 for语句
for语句的用法。第六节 循环的嵌套
循环嵌套的种类;嵌套语法。第七节 几种循环的比较
第八节 break语句和continue语句
break语句;continue语句。第九节 程序举例 【基本要求】
1、熟练掌握循环结构的控制语句:while语句、do_while语句、for 语句的用法;
2、掌握三种循环控制语句的区别和联系;
3、掌握break、continue、goto语句的功能和语法格式;
4、能够根据循环结构的要求正确选取循环语句来实现循环,掌握循环程序的执行过程。
重点:三种循环语句while、do_while、for的使用;break、continue、goto语句的使用;循环程序的执行过程;嵌套的循环程序。
难点:循环程序的执行过程;嵌套的循环程序。【参考学时】4学时
【参考资料】[谭浩强 《C程序设计》(第三版)清华大学出版社2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第7章 数组
第一节 一维数组的定义和使用
一维数组的定义;一维数组元素的引用;一维数组的初始化;一维数组程序举例。第二节 二维数组的定义和使用
二维数组的定义;二维数组的引用;二维数组的初始化;二维数组程序举例。第三节 字符数组
字符数组的定义;字符数组的初始化;字符数组的引用;字符串和字符串结束标志;字符数组的输入输出;字符串处理函数;字符数组的应用。【基本要求】
1、掌握数组的概念、一维数组、二维数组和多维数组的定义和使用;
2、掌握字符数组、字符串的区别和具体应用;
3、掌握处理字符串的系统函数的使用方法。
重点:一维数组、二维数组和多维数组的定义和使用;字符串的处理函数的使用。难点:字符数组、字符串的区别,存放若干字符和存放字符串的字符类型数组的差别。【参考学时】6学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第8章 函数
第一节 概述
函数的作用及分类。第二节 函数定义的一般形式
无参函数的定义形式;有参函数定义的一般形式;空函数;形参声明的方式。第三节 函数参数和函数的值
形式参数;实际参数;函数的返回值。第四节 函数的调用
函数调用的一般形式;函数调用的方式;对被调函数的声明;函数原型。第五节 函数的嵌套调用
函数嵌套调用的含义及其方式。第六节 函数的递归调用
递归;函数递归调用的方式。第七节 数组作为函数参数
数组元素作为函数实参;数组名作为函数参数;多维数组名作为函数参数。第八节 局部变量和全局变量
局部变量;全局变量;局部变量和全局变量的使用。第九节 变量的存储类别
动态存储方式和静态存储方式;auto变量;用static声明局部变量;register变量;用extern声明外部变量;用static声明外部变量;变量的声明和定义的区别。第十节 内部函数和外部函数
内部函数;外部函数。
第十一节 如何运行一个多文件的程序
在Turbo C集成环境下编译连接多文件结构的方法。【基本要求】
1、熟练掌握函数的结构、设计方法和调用方法;
2、掌握函数调用中数据传递的两种方式——值传递和地址传递的区别;
3、掌握C程序中变量的存储类型以及使用;
4、掌握嵌套调用函数、递归函数的使用并能正确使用各种常用的系统函数。
重点:函数的定义和调用方法;调用函数时数据传递方法;常用系统函数的使用。难点:值传递和地址传递的区别;编写递归函数。【参考学时】8学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第9章 预处理命令
第一节 宏定义
不带参数的宏定义;带参数的宏定义。第二节 “文件包含”处理
“文件包含”命令及其使用。第三节 条件编译
条件编译命令及其使用。【基本要求】
1、掌握宏定义和宏替换的一般方法;
2、掌握文件包含的处理方法;
3、了解条件编译的作用和实现方法。
重点:无参数的宏定义和宏替换;带参数的宏定义和宏替换;文件包含处理。难点:带参数的宏定义和宏替换。【参考学时】1学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第10章 指针
第一节 指针和地址的概念
内存地址及其访问方式;指针。第二节 变量的指针和指向变量的指针变量
变量的指针;指针变量的定义;指针变量的引用;指针变量作为函数参数。第三节 数组和指针
指向数组元素的指针;通过指针引用数组元素的方法;数组名指针变量作为函数参数的用法;指向多维数组的指针和指针变量。第四节 字符串和指针
字符串的表示形式;字符串指针作为函数参数;使用字符指针变量与使用字符数组的区别。
第五节 函数的指针和指向函数的指针变量
用函数指针变量调用函数;用指向函数的指针作为函数参数。第六节 返回指针值的函数
返回指针的函数的定义及其使用。第七节 指针数组和指向指针的指针
指针数组的概念;指向指针的指针;指针数组作main函数的形参。第八节 有关指针的数据类型和指针运算的小结
指针数据类型;指针运算;void指针类型。【基本要求】
1、掌握地址和指针的概念及二者之间的关系;
2、熟练掌握定义指针变量和访问该变量的方法;
3、掌握指针变量的各种使用方法。
重点:指针变量的定义、初始化和赋值方法;利用指向变量、数组、字符串的指针变量来正确引用变量、数组、字符串;指针变量作为函数参数的情况;
难点:指针变量作为函数参数的情况;指向多维数组的指针变量和多维数组的地址。【参考学时】9学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第11章 结构体与共用体
第一节 概述
结构体类型的作用;结构体类型的定义。第二节 定义结构体变量的方法
定义结构体变量的三种方法。第三节 结构体变量的引用
结构体变量的引用原则。第四节 结构体变量的初始化
结构体变量的初始化方法。第五节 结构体数组
结构体数组的定义;结构体数组的初始化;结构体数组的应用。第六节 指向结构体类型数据的指针
指向结构体变量的指针;指向结构体数组的指针;用结构体变量和指向结构体的指针作为函数参数。
第七节 用指针处理链表
链表的概念;链表的结构;处理动态链表的函数;动态链表的建立;链表的输出;链表的删除操作;链表的插入操作;链表的应用。第八节 共用体
共用体的概念;共用体变量的引用方式;共用体类型数据的特点。第九节 枚举类型
枚举的概念;枚举型数据的定义和使用。第十节 用typedef定义类型
typedef定义类型的方式。【基本要求】
1、熟练掌握结构体构造数据类型的定义、初始化和使用;
2、掌握链表处理的过程以及共用体数据类型的定义和使用;
3、了解枚举类型的定义和使用和typedef自己定义类型的方法。
重点:结构体、共用体、枚举类型的特点和使用;结构体型变量、数组、指针变量的定义、初始化和成员引用方法;链表的建立,插入和删除等操作。
难点:嵌套的结构类型数据的处理;链表处理。【参考学时】8学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第12章 位运算
第一节 位运算和位运算符
“按位与”运算符;“按位或”运算符;“异或”运算符;“取反”运算符;左移运算符;右移运算符;为运算赋值运算符。第二节 位运算举例 第三节 位段
位段的概念;位段的使用。【基本要求】
掌握位运算符和位运算的基本操作。
重点:位运算符的功能;位段的概念及使用。难点:位段的使用。【参考学时】2学时
【参考资料】[1.谭浩强 《C程序设计》(第三版)清华大学出版社 2.谭浩强、张基温、唐永炎《C语言程序设计教程》高等教育出版社(第二版)3.谭浩强 《C程序设计习题及上机指导》 清华大学出版社]
第13章 文件 第一节 C文件概述
文件的概念;文件的类型和处理方式。第二节 文件类型指针
文件指针的定义方法。第三节 文件的打开与关闭
文件的打开;文件的关闭。第四节 文件的读写
fputc函数及其使用;fgetc函数及其使用;fread函数和fwrite函数及其使用;fprintf函数和fscanf函数及其使用;其他读写函数。第五节 文件的定位
rewind函数;fseek函数和随机读写;ftell函数。第六节 出错的检测
ferror函数;clearerr函数。第七节 文件输入输出小结
【基本要求】
1、要求掌握缓冲文件系统中有关文件操作的系统函数的使用方法;
2、掌握设计并编写对文件进行处理的实用程序。
重点:缓冲文件系统中“文件型”指针的概念;有关文件操作的系统函数的使用。难点:文件处理系统函数的使用,掌握各个函数中参数的功能和区别。【参考学时】4学时
C语言程序设计教学探究论文 篇6
《C语言程序设计》作为计算机专业的基础课,已经成为一门必修的课程,在整个课程体系中占有重要地位。在C语言教学过程中,从客观上讲,教师的教法和学生的学法的差异,对教学效果都会产生直接的影响。针对学生学习语言类课程的一般思维规律和思维模式,笔者结合多年来的教学经验和教学体会,把一些经验和方法总结出来,希望能对C语言教学有所帮助。
一、教学中存在的问题
《C语言程序设计》是一个逻辑性很强的课程。学生在毕业设计时会面临具体的设计要求的问题,它与任何一本教材中的内容相距甚远,这使大多数同学感到无从下手。这其中的原因可以分成两类:一方面目前高校使用的教材中,绝大多数结构都基本相同。在每一章介绍完了概念之后,提供一些例题解释相关概念的使用方法,并在章节结束后针对本章中出现的内容提供一些练习题。考试普遍采用单选、判断及简答等方式测试学生对于教材内容的掌握程度。从实际效果分析,实际上是测试学生对各章节中的基本概念记忆程度而不是理解程度。另一方面是在考试压力下,特别是目前的应试考试方式中,学生更多注意的是教材中的典型例题与老师指定的重点内容,对于程序的系统概念没有真正理解,特别是没有整体设计的概念。通过对各类考试结果的分析,可以注意到一个现象,在考试中涉及的综合编程部分,学生的得分率很低。为了确保学生的课程通过率,在考试时尽可能将综合测试部分的比例压低或提供学生统一复习提纲,这样做的结果就是学生在学习时一切围绕任课老师讲课的内容,特别是老师讲授的例题。学生在学习的过程中,没有注意如何综合运用相关内容解决具体问题,导致学生在学完程序设计课程进入应用阶段时,面对具体的专业设计要求无从下手。
二、提高程序设计课程教学效果的途径
1.明确课程目标
通过学习,学生应能正确理解语言的基本概念、语法、语义并得到充分的程序设计训练。C语言课程一般是为应用性教学而设置的,因此,强调实践性是计算机语言课程教学中特别要注意的问题。对于计算机语言课程的教授不应仅仅是传授知识,应该以培训能力为主。过分强调该语言的系统性和完整性可能会转移学生对课程重点的注意力。C语言的内容繁多,在有限的课时内不可能也不必要面面俱到,所以必须突出重点,突出实用性,关键在于教会学生正确运用C语言编写程序,一些细节、具体规则和进一步的知识可以让学生在今后的应用中查阅有关书籍。教师应始终坚持以应用为中心,以算法为基础,以培养学生的实践能力为核心,突出技术实用性和再学习能力的培养。
2.进行教学改革
(1)教学内容改革
程序设计课程具有很强的实践性,要以社会对编程能力的需求和技术发展为依据,调整教学大纲和教学内容,以适应技术岗位能力要求,设计模块化课程体系。在课程设置与建设中,要充分体现教学内容在训练和提高学生培养学生实践能力方面的要求。适当增加实训教学内容,以强化学生的实际开发和应用能力,实现“零距离就业”。
(2)改变教学思想
①由整体到具体,培养学生对C语言的兴趣及正确的思维模式。《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程,显得抽象、复杂,这也是大多数学生抱怨程序设计太难、太深奥、不好学的主要原因。在教学过程中,应该先介绍一个较完整的程序例子,该例子包含了该语言中的主要语句,目的是使学生先对程序有个初步的印象,再简单介绍该例子中用到的语句,让学生对该语言的学习有一个大概的了解,避免学生对学习语言望而生畏。整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点,从而让学生明白如何分析、解决实际问题,逐渐培养学生进行程序设计的正确思维模式。
②一题多解,注重算法是程序设计的灵魂,是教学重点,也是教学难点,而语言只是表示形式。没有正确的算法,计算机将解决不了任何问题。对于C语言所涉及到的算法,应进行部分精讲多练。
(3)教学方法改革
①案例分析教学。通过案例分析,重点讲解程序设计的思想和方法,辅以语言知识的介绍,将课程内容分为若干个主题,以程序设计做为贯穿各主题的主线。每个主题的教学过程由“要点讲解”、“练习/上机实践”和“疑难解答”三个阶段组成。
②基于问题的教学。提出问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养。
③“项目驱动”教学。在理论教学中采用“项目驱动”教学法,整个课程教学围绕一个“工程项目”进行,通过逐步拓展的实训项目和设计,将每一阶段的学习进行小结性的贯穿与能力提高。将C 的知识点都溶化到一个个实训项目的程序编写中。在课程初期,主要是进行单项的编程练习,重在掌握C 语言的基本语句、数据类型与程序结构等。在进入数组、函数、结构、指针和文件内容教学时,开始实训项目的编程实践,逐步组建“教师管理系统”,并且添加文本菜单,整合扩展记录添加、排序、查询、统计和记录浏览等内容形成课程设计。
(4)课程考核方式改革
①平时上机训练时给学生留一些编程习题,每次根据学生编写情况进行测评并占据期末总成绩30%。
②期末前,给学生留一个综合实训题考核学生综合解决问题的能力,要求同学们在一周内完成,占据期末总成绩30%。
③期末进行理论考试,占期末总成绩的40%。
3.展示学生作品,激发学生的学习欲望
计算机软件课程具有多样性、复杂性和求异性特点,我们要针对每个学生任务完成的情况,让同学们展示自己的劳动成果,及时肯定学生的成绩,这样会有利于激发学生们的学习热情,保持浓厚的学习兴趣,对学生的后续学习将产生强大的动力和自信心,也可以对每次任务的完成情况进行积分制度,算入期末成绩中,以激发学生们的兴趣。
4.自始至终培养学生的自学能力
学生学习软件的最终目的是编写满足需求的程序,所以我们在教学中教授的不仅仅是具体语言的语法知识,更重要的是通过这门语言学习,培养学生遇到实际问题自己分析问题、解决问题的能力。我们可以通过给学生布置作业的形式让同学们自学,初始阶段往往会遇到因为学生自学能力差而带来的困难,所以在学生完成任务时,老师既要要求学生独立思考、自主学习,又要鼓励学生间进行协作学习。教师可以分配一些比较复杂的问题,由几个学生组成一个小组合作解决,这样同学们可以互相探讨学习方法,协作解决一些遇到的问题,通过解决问题,锻炼学生综合应用知识的能力、培养其创造性和合作精神。
参考文献:
C语言程序设计教学探讨 篇7
当今计算机已广泛应用于社会生活的各个领域, 并向普及化方向发展。对80、90后的大学生而言, 除了掌握一般的计算机操作技能以外还必须具有一定的实际应用编程能力。C语言是一种通用性计算机程序设计语言。它兼有汇编语言和高级语言的双重优点, 运用它既能编写操作系统软件, 又能开发各个领域的应用软件。C语言的实用性使之成为编程的首选语言。学好并掌握C语言不光能够提高学生自身的计算机编程能力, 而且为将来学生的顺利就业打下基础。然而有很多学习过C语言甚至是计算机专业毕业的大学生连最基本的程序都不会编写, 针对这种现象教学之余笔者做了深入的调查和分析, 发现在当今的C语言教学中还存在一些问题, 有待我们研究和探讨。
1. C语言教学中存在的问题
1.1人才培养目标定位不准确
有的高职高专型学校太注重理论教学环节, 忽视实践教学环节。教师过分强调学习语法等理论知识, 忽视培养学生实际应用的能力。受学科型教学思维的影响, 由教师主导的教学过程呈现出以语法为主线的教学模式, 编程变成了语法学习的示例或验证。这样学生理论课听不懂, 实践课练习编程屡屡受挫, 学习C语言的积极性和主动性受到严重打击。
1.2教师教学过程中采用的教学方法不适当
有的教师在上C语言的第一堂课就采用单调死板、照本宣科的牧师讲法。先讲概念, 然后举例去验证理论的正确性, 而实际问题一点也得不到解决, 使学生陷入不断被灌入理论和不断的尝试和验证中, 使学生失去学习C语言的兴趣。
1.3实训课和实践课没有被充分重视起来
笔者多年教学发现C语言上机课安排的较少, 在相对理论课较少的C语言上机课堂上, 还有很多学生迟到、旷课, 或者上机时打游戏, 做小动作。笔者去过不同的学校听不同的
老师上课, 笔者发现在有的老师的上机课上有将近一半的学生请事假。久而久之, C语言的上机课实际上是名存实亡。学生得不到很好的上机练习机会, 编程能力也得不到提高。
2. 解决问题的方法
2.1准确定位人才培养目标
学校应面向市场, 准确把握市场对计算机编程人员的需求, 从而制定合适的人才培养计划, 依据计划由学校的资深教师编制教学大纲并选定教材。C语言是面向过程的编程语言, 即不生动有趣又不直观可见, 让初学者望而生畏。高职高专型学校和本科学校相比生源质量相对较差, 学生的起点低, 一些普招上来的学生没有学习过计算机文化基础, 甚至有些学生根本没有接触过计算机, 根据笔者多年的C语言教学经验, C语言的第一次实训课上, 往往有很多学生不会开机, 也不会关机。所以高职高专型学校应把人才培养目标定位在培养技能应用型人才上, 培养学生实际动手能力和软件开发能力。
2.2把一些先进直观的教学方法应用到C语言教学中
(一) 采用启发式教学, 激发学生学习的自主性
针对C语言概念多, 语法规则较繁的现状, 采用启发式教学可以将难理解、难记忆的概念和规则变成一系列具体直观的问题呈现在课堂教学中, 这样就能把学生的注意力集中起来, 把学生的学习积极性调动起来, 达到师生互动的效果。这种启发式、讨论式、交流式的教法, 不仅改变原来的灌输式教学, 而且增强了学生自主学习的能力。
(二) 采用任务驱动教学法
传统C语言教学总是从基本数据类型讲起, 再接着讲C语言的各种数据类型及概念, 基本上是这样一个过程:设计算法—书写程序—调试程序, 显得即抽象又复杂, 这种方式对学生来说比较枯燥, 也较难理解和掌握。在教学中, 可先给出一个任务, 然后再给出源程序和运行结果, 学生对此任务有了初步认识并对其产生了强烈的好奇心, 学生的求知欲被充分调动起来, 然后教师再具体讲解程序中用到的语句和概念, 从而让学生明白如何分析并解决问题, 逐步培养学生进行程序设计的正确思维模式, 以后再大量的做这样的练习题, 强化训练, 使学生对类似知识点达到举一反三, 融会贯通。
(三) “框架法”和“求异法”相结合
“框架法”可培养学生的全局思维和算法的整体设计能力。具体体现在两方面:一是在学生有了一点编程基础后要利用伪代码或流程图, 从算法设计的角度讲解编程思路, 而不应拘泥于语法细节, 不分主次、逐条语句的讲解代码。通过此框架, 可使初学者把着眼点放在函数的设计框架上, 体现参数设计、返回值设计等关键问题, 而无需细讲函数体的实现细节。
(四) 采用现代化教学手段—多媒体
现在大多数学校的教师都在多媒体教室上课, 但是仅仅是使用PPT教学, 没有做到真正意义上的多媒体教学。
笔者建议采用多媒体教学技术, 把枯燥的内容形象化, 使声、形、图、文融为一体。例如在讲冒泡排序时可以采用flash动画技术把排序的过程动态的演示一遍, 也可以在平时的上机训练时让学生编写简单的小游戏程序, 这样在娱乐中让学生觉得学习C语言更有兴趣了。在实训室实训时教师可以采用广播教学的方式互动教学, 逐个学生、逐一问题、逐步突破。
3. 结束语
C语言程序设计的教学要讲究方法, 通过灵活采用多种教学方式和教学手段, 提高学生的学习兴趣和学习积极性。通过这门课的学习, 不仅要使学生掌握语言的基本规则, 而且要切实培养学生分析问题, 解决问题的能力, 培养学生的创新精神, 团队意识, 为学生提供更好的展示才华的舞台。
参考文献
C语言程序设计教学方法探讨 篇8
关键词:C语言程序设计 课程教学 实验教学
0 引言
C语言是当今最为流行的程序设计语言之一,C语言程序设计不但成为高等院校计算机相关专业学生的专业必修课,而且也已经被非计算机专业学生学习的课程[1]。课程开设的主要目的是使学生掌握一种基本的程序设计语言,通过对C语言的数据类型、结构化程序设计方法、数组及函数的使用、指针结构体以及文件等相关内容的学习,能够解决和处理与本专业有关的大量实际问题,培养学生熟练使用C语言进行编程分析和解决问题的能力。
C语言程序设计作为学生入学后系统地学习程序设计语言的第一门课程,由于其涉及的概念比较复杂、规则繁多、容易出错,因此在C语言程序设计教学过程中,初学者比较不容易适应程序设计的思路,会遇到很多语言学习上的困难[2]。为了提高学生学习程序设计的兴趣和信心,取得较好的教学效果,教师应该积极探索教学和上机实践方法,进一步提高教学质量。本文在作者近几年C语言程序设计的教学和自己程序设计语言学习过程中积累的教学和实践经验,对C语言程序设计课程中的几种教学方法进行初步的探讨。
2 C语言程序设计教学方式探讨
2.1 从第一个程序开始提起学生学习的兴趣 在所有程序设计语言的学习中,第一个接触的程序几乎都是Hello World程序,C语言程序设计也不例外。Hello World程序的C语言内容具体如下:
首先为了使得显示屏幕中出现的内容不会枯燥,我们可以在printf("Hello, world!");的下一行添加一句printf("%c",2)。由于ASCII码值为2对应的是一个笑脸,因此在最终的程序输出结果中会显示Hello, world!再加上个笑脸的内容,这样既增加了趣味性,又增加了学生学习C语言的兴趣。
通过这个例子吸引起学生之后,他们就会在自己的脑子里问为什么会这样。此时,就需要老师讲这几行语句的主要功能要跟学生讲一下,这些内容也是C语言程序语句的主体。讲授的内容可以这样安排:#include的作用是要包含城中所用到语句的头文件,因为我们用到了pringf输出语句,所以要将标准输入输出头文件stdio.h包含进来;main()是主函数名,函数体要用{ }包含进来,并且强调上面程序的编写方式({单独一行,}单独一行)会有利于同学们后续程序的编写,语句更加清晰;pringf语句是输出语句,将" "对应的内容输出在屏幕上,此时可以强调" "中可以添加中文,并且对于输出笑脸的语句,解释为是有格式的输出(这个会在以后的章节中具体讲到);最后一条语句是return语句,将0值返回。由于主函数被定义成整型(int),因此在函数的结尾需要返回一个整数。
2.2 实例教学培养学生思维能力 在C语言程序设计的学习开始阶段,首先要重视语法规则和基础知识的掌握,然后才是程序的阅读和编写。随后在学生学习的过程中,从学会看懂程序开始,到能够编写简单的程序,然后逐步的深入,这样也为下一步进行实例教学打好基础。
C语言初学者首先遇到的问题是毫无头绪,不知从何处下手。在C语言的教学中,如果一味地先讲语法格式,逐步讲解语法要点,最后给出例子,这样很容易造成程序设计学习的思维定势。我们希望通过实例教学,培养学生自己分析问题和解决问题的能力,最后达到能够使用程序设计语言来描述和解决这个问题的结果。这里以一个常见的数学问题为例,自然数求和1+2+3+…+50。首先让学生观察求和的公式,然后寻找规律。第一个规律是,在公式中,加数都是递增的并且步长值为1。第二个规律是,在从左到右求和过程中,我们总是将前面求完的和跟下一个加数相加。因此从分析的规律可知,这个过程一直重复下去直到加到最后一个加数50为止。分析完这个问题之后,就可以对循环结构语句进行介绍,并给出具体的使用方法,并以简单的例子对该知识进行巩固。随后,对自然数求和问题进行C语言程序设计。首先,C语言程序是由函数构成的。一个C语言程序至少包含一个main主函数。一个完整的函数由函数的首部与函数体两个部分组成。其次,帮助学生回顾C语言的数据类型,数据的基本表现形式,C语言中的运算符和表达式。这里,根据前面分析,定义两个整型int变量k和total,k表示加数,变量total用来存储前面加数的和,并对其赋初值为0。然后,考虑应该使用何种C语言基本结构,使用结构中的那些语句及其格式要求,这里使用的是循环结构中的for语句。在for循环语句中,首先需要对循环变量赋初值,k=1;然后给定循环停止条件k<=50,最后是循环变量最后,补全完善程序段,为了便于与用户进行交互,应在C语言程序中加入输入和输出语句,由于需要使用输入和输出语句,因此在使用时要先调用头文件stdio.h。将上述分析整个联系起来,可以完成上述问题的C语言的程序编写,具体为:
编完上述程序之后,教师还需提醒学生注意融汇贯通,例如如果是求1+2+3+…+n该怎么办,n为用户指定的,如果是求应该如何解决等等诸多类似的问题,教师都可以拿出来跟学生一起分析,并让他们在上级实验时加以练习,达到信手拈来的程度。因此课程上机实验环节在C语言程序设计教学环节中也是非常重要的,能够帮助学生有效地巩固基础知识和增加程序设计的经验。
2.3 实验教学进一步提高学生程序设计能力 C语言程序设计是一门实践性很强的课程,既要掌握基本语法知识,又要动手编程并上机调试运行[3,4]。实验教学是通过学生编写和调试程序发现和暴露编程过程中出现的问题,通过解决问题进一步获得更多的知识。在上机实验环节,需要对学生的以下能力进行培养:对编程题目的阅读能力,构思算法步骤,编写程序、运行程序并分析所得的结果,根据结果对程序进行调试,最终完成程序的设计。具体的实验教学可以从以下几个方面来设计,一方面为学生设计基础性的实验,例如:求一元二次方程的根、简单的排序算法等编程实验,使学生能够通过实验及时掌握和消化课堂的教学内容,进一步提高学生的学习热情。另一方面,增加一些难度性大和实用性强的实验,并对学生进行分组,通过组内讨论得出算法解决思路和算法流程,然后上机编程调试并撰写报告。通过组内成员对实验题目的讨论,可以使得不同水平的学生之间能够相互交流并借鉴各自掌握的程序设计知识以及解决问题的思路,最终起到共同学习共同进步的目的。实验内容可以是设计简单的管理系统对班级成员进行存储,并根据条件查询人员信息,或者是利用数组与指针,将多个人的姓名进行排序,规则为按照姓名拼音的字母顺序进行排序。通过这些上机实验,一方面培养了学生对知识的应用能力与问题的分析能力,有利于学生加深对所学知识的理解,让学生真正体会到C语言的灵活性,激发学生的求知欲;另一方面也培养了学生之间的协作能力,有助于提高他们工作后的分工协作能力。
2.4 其他教学方式 除了以上主要的教学形式,我们还会在这些教学内容中辅以趣味性的内容提高学生的学习兴趣。为了活跃课堂气氛,我曾在课堂上通过设计一个随机学号产生器,通过产生随机学号对对应学号的学生进行提问,这样既增加学生的学习兴趣,又能提高学生上课的注意力。此外,将上机实验的好坏作为学生成绩考核的一部分,让学生在平时保持紧张状态,提高他们的学习主动性,认真完成每一阶段的学习。
3 结论
C语言程序设计的主要目的就是培养学生的程序设计能力,本文根据作者实际教学过程中学生存在的问题,从课堂教学和实验教学等几个方面进行了探讨。希望这些教学方式有助于改善C语言程序设计教学中的诸多问题,加强师生间的互动交流,提高学生学习的兴趣和主动性。当然,同样的教学内容面对不同的学生,不一定产生同样的效果,在使用这些教学方法的同时,还要适时地根据学生的课堂以及上机实验反应加以调整,最终完成教与学的有机统一。作者将继续努力探索,使《C语言程序设计》课程教学日趋完善。希望本文能对大学本科生程序设计语言的教学有一定的借鉴作用。
参考文献:
[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社,2001.
[2]刘桂玲.C语言程序设计教学改革与实践[J].软件导刊,2012,11(3):194-195.
[3]谭浩强.C语言程序设计.北京:清华大学出版社,2000.
[4]谭浩强.C程序设计题解与上机指导[M].北京:清华大学出版社,1992.
C语言程序设计2教学大纲 篇9
作者简介:刘在英(1977.-),男,山东人,硕士,副教授,研究方向:图像与大数据处理。张丽晓(1979.-),女,河北人,博士研究生,讲师,研究方向:数据挖掘。
摘要:本文提出了《C语言程序设计》课程教学中存在的一些问题,并针对性的给出了课程教学改革的实施方案,主要包括编制详细的教学设计方案,改变传统的教学方式,建立严格的学生考核机制,加强教学方法的改革,建立新型的实验教学模式等。关键词:C语言程序设计;教学方法;考核机制;
中图分类号:TP31文献标志码:A文章编号:2095-9214(2015)08-0096-02
一、引言
《C语言程序设计》是计算机相关专业的一门基础课程,是培养学生计算思维能力、程序设计与实现能力的入门课程,同时也是《数据结构与算法分析》等课程的先导课程;C语言也是IT企业中常用的编程语言。因此,该课程的教学对学生后续课程的学习和今后的工作都会产生重要的影响。对于初学者而言,因为逻辑思维能力较弱,所以在学习过程中积极性不高,学习效率低下,难以提高其编程语言解决实际问题的能力。经过多年的授课,笔者对《C语言程序设计》的课程教学进行了一些探讨和实践
二、教学中存在的问题 1.教学主体以教师为主
在传统的教学中,教学主体往往以教师为主,高等院校对教师的考核注重“科研”,因此很多教师容易忽视“教学”的重要性。在《C语言程序设计》的教学中教师方面的问题主要包括:①课程的知识点较多,存在教学内容与教学时数之间的矛盾;②教师的教学方法、方式陈旧,难以激发学生主动学习的兴趣;③教师在教学中大多重课堂教学,轻实验教学;④任课教师往往没有工程实践经历,其综合业务水平有待提高。2.教学中没有充分调动学生学习的积极性
《C语言程序设计》的课程学习是在新生入学的第一学期,这对课程的教学也带来一定的消极影响,主要体现在:①学生学习目的不明,动力不足,很多学生以为进入了大学主要是锻炼社会交往能力;②学生的逻辑思维能力较弱,想象空间较窄,遇到挫折容易产生厌学情绪;③由于受传统应试教育的影响,学生大多重教轻学,重理论轻实践,考试能力强,编程能力弱,不能用计算思维解决实际问题。
三、教学改进的举措
针对上述问题,笔者摒弃以单向性知识传授为主的教学模式,主张讲课教师应以课程的内容和学生的知识积累为基础,积极引导学生创造性地运用知识和能力,自主地发现、分析和解决问题,学生在研讨中学习知识、培养能力和提高素质。具体的教学实施方案包括: 1.编制详细的教学设计方案
为帮助学生提高自主学习和创新的能力,需要制定详细的教学设计方案,该方案是课程教学具体实施的主线,它相当于一场晚会的节目演出单,讲课教师是导演和主持人,而学生是主角和演员。教学设计方案主要包括:教学日期和时数、教学内容和主题、实验内容、教学方法、教学手段和作业安排等。2.优化教学内容
该课程存在教学内容较多而教学时数受限,全面而细致的讲解所有的内容已不合时宜。教学内容的优化应满足教学目标的要求,满足学生的学习需要,激发学生的学习兴趣[1]。因此,我们按照“少而精、宽而新,突出核心的知识点”的原则优化教学内容,体现教学内容的先进性、实用性。按照学习进度,给学生安排相应阶段的学习任务,有些内容要求学生自主完成。3.改变传统的教学方式
传统的“填鸭式”教学方式效果并不好[2],因此,我们在教学引入并主要采用了“讨论式”教学,以充分调动学生学习的积极性,具体的做法包括:①每次授课结束前,布置预习思考题,要求学生在课下充分预习,课上围绕思考题展开讨论,每次课分组讨论1-3次,每次2-5分钟;学生课堂讨论、发言或回答问题的时间约占总学时的20%;②随机抽查回答问题与各组指派同学回答问题相结合,回答问题不以正确性为唯一依据,也注重表达过程的清晰度和逻辑性,尤其鼓励问题回答者阐述自己的观点或提出问题。统计表明,学生回答问题次数平均水平有6-8次;③将学生在课堂教学过程中的表现按评分标准将其分值记入到平时成绩档案中。
4.加强教学方法的改革
在教学中应以学生为中心,引导学生走向知识,通过合理施压,注重师生的互动交流,培养学生善于总结、发现问题和主动学习的能力[3-4]。在《C语言程序设计》的课程教学中,我们对教学方法做了如下改革:①“案例教学法”贯穿教学全过程,“学生信息管理系统”贯穿了该课程的全部章节,是学生在学习过程中的“长期任务”;②“任务驱动法”引导学生学习,“长期任务”可以分解为多个对应于知识点的“短期任务”,有助于学生逐步提高编程能力;③用“负反馈教学法”解决学生学习中问题,有效的提高学生的学习效率;④弱化语法,以“算法为先”实现实际问题的求解;⑤并用“多媒体”教案扩大课堂信息量,精心制作与教材配套的CAI课件和习题。5.建立新型的实验教学模式
为了激发学生学习的积极性,我们通过建立新型的实验教学模式[5],包括:①为增强学生学习的体验感,减少了基础验证型实验比例,增加综合型实验和设计性实验的比例;②建立以小组为单位的实验完成机制,培养学生的团队合作能力;③加强实验报告的规范,增强学生的职业岗位意识;④建立定期的课外讨论机制,教师定期发布讨论主题,学生以小组为单位进行准备,然后通过专题讨论和点评,并将学生的表现记入平时成绩档案;⑤鼓励实验动手能力的较强的同学自己设计实验项目,并依据结果给予其一定的平时成绩奖励。6.健全严格的学生考核机制
传统的考核以笔试为主,学生为了应对考试采取死记硬背的方式,为此我们建立严格全面的考核机制,包括:①建立学生学习小组,分组原则是小组内部异质化,小组之间同质化;②建立每个学生平时学习成绩档案,学生的平时表现与分值相对应;③制定公平合理的成绩评定方案:学期总评成绩=平时成绩×60% +期末考试成绩×40%,平时成绩=小组成绩*小组人数*组员在项目组的贡献百分比(组员的贡献百分比是在教师给出小组成绩之前,经过该小组的全体成员一致同意后提交给任课教师),这种考核方式可以促进学生的团队协作精神和竞争意识;而期末考试侧重于通过编程以解决实际问题,从而促使学生平时多思考、多上机实践,有助于提高他们的逻辑思维和编程能力。7.积极开展第二课堂教学
四、结束语
以上是我们在《C语言程序设计》课程教学方面所做的探索和尝试,学生的逻辑思维和实践编程能力得到了较明显的提升:①在全国和上海市的计算机二级C语言考试中,本专业学生的通过率逐年提高;②学生参加上海市和全国的C语言程序设计大赛获得良好的成绩;③近年来学生对本课程教学反应和评价良好,本课程被评为学校的重点课程。(作者单位:上海杉达学院信息科学与技术学院)
【C语言程序设计2教学大纲】推荐阅读:
c语言程序设计205-10
c语言程序设计课程教学大纲20107-26
《C语言程序设计》双语教学的实践与思考06-15
C语言程序06-30
公共C语言程序设计07-30
C语言程序设计实验九08-21
c语言程序设计实验三09-06
C语言程序设计试题 库09-25
c语言程序学习心得06-14