C语言专业教学探讨(精选12篇)
C语言专业教学探讨 篇1
《C语言程序设计》是各院校计算机专业必修的专业基础课, 在整个课程体系中占有重要地位。C语言功能强大, 运行效率高, 兼有高级语言与低级语言的许多特点, 深受大家的欢迎。但C语言涉及的概念比较复杂, 规则繁多, 使用灵活, 不少初学者难以掌握、易出错。针对学生学习语言类课程的一般规律和特点, 结合多年来的教学和辅导经验, 作以总结, 希望能对C语言教学和学习有所帮助。
一、明确课程目标
C语言课程一般是为应用性教学而设置的, 强调实践性是计算机语言课程教学中特别要注意的问题。C语言的内容繁多, 在有限的课时内不可能也没必要面面俱到, 所以必须突出重点, 突出实用性, 关键在于教会学生正确运用C语言编写程序, 一些细节、具体规则和进一步的知识可以让学生在今后的应用中查阅有关书籍。教师应始终坚持以应用为中心, 以算法为基础, 以培养学生的实践能力为核心, 突出技术实用性和再学习能力的培养。
二、实施教学改革
1、培养学生正确的思维模式
《C语言程序设计》注重由设计算法到书写程序并进行调试的整个过程, 在整个教学过程中应该把“解题思路、方法和步骤”当作授课的重点, 从而让学生明白如何分析、解决实际问题, 逐渐培养学生进行程序设计的正确思维模式。
在讲课中, 应集中精力对章节的知识结构进行详细阐述、对所要解决的实际问题进行深入剖析, 不应花太多的时间放在对语句语法的过多讲解。当遇到实际编程时, 需积极引导学生把“要想干什么”的问题, 直接转化为“要解决什么”的问题。当问题确定以后, 选择正确的算法。
2、“项目驱动”教学
在理论教学中采用“项目驱动”教学法, 整个课程教学围绕一个“工程项目”进行, 通过逐步拓展的实训项目和设计, 将每一阶段的学习进行小结性的贯穿与能力提高。将C的知识点都溶化到一个个实训项目的程序编写中。在课程初期, 主要是进行单项的编程练习, 重在掌握C语言的基本语句、数据类型与程序结构等。在进入数组、函数、结构、指针和文件内容教学时, 开始实训项目的编程实践, 逐步组建“学生信息管理系统”, 并且添加文本菜单, 整合扩展记录添加、排序、查询、统计和记录浏览等内容形成课程设计。
3、授课过程中始终把握五个要点
突出特点:在实际授课中, 要一直向学生强调, C语言是一种函数式语言, 这种函数式的特点正是结构化程序设计思想的很好体现, 讲课时多使用函数, 要求大家也多用函数来编程实现。
侧重分析:分析是解决的第一步。把典型问题从不同角度分析, 再比较各种方法的优劣, 取得最佳方法, 这个过程强化了学生分析问题的能力。
抓住重点、化解难点:讲授重点内容时, 应放慢速度、加重语气, 从而吸引学生的注意力。遇到难点时, 善于化解, 把问题逐渐细化, 所有小问题解决了, 难点自然就解决了。
强化实践:计算机语言的实践就是上机编程, 是培养学生综合运用相关知识解决问题的重要途径, 也是我们掌握教学反馈信息的主要渠道。只有亲自动手、亲自实践, 才能真正体会到语言编程的乐趣。通过上机练习也可以进一步加深对理论知识的掌握, 有利于培养学生的创造思维、独立分析问题和解决问题的能力。
注重反馈:教学过程实际上是一个教师与学生互动的过程。为了获得良好的教学效果, 教师应注重及时从每一个环节获得有关学生掌握所学知识的情况、存在问题的反馈信息, 进行有针对性的辅导。
4、在例题上下功夫
一题多解, 注重算法是程序设计的灵魂, 是教学重点, 也是教学难点, 而语言只是表示形式。没有正确的算法, 计算机将解决不了任何问题。对于C语言所涉及到的算法, 应进行部分精讲多练。
对说明语法规则和语法现象的例子追求尽量简单, 对说明算法的例子追求尽量典型, 除了综合演练外, 所有例子都不要太过复杂;不但要举正面的例子, 而且要特别注意举反例;一个程序例材用后不要轻易抛弃, 可尽量变化使用, 例如每次改一点, 看看情况会如何变化, 加深学生对程序中各项参数和要素的理解;一个题目原型, 可采用多种办法来实现, 讲解时不一定要一次操作完, 例材可以重复使用, 这样可节省背景介绍, 加深学生的印象;对一些典型算法 (如排序) 要注意提取其轮廓框架, 进一步浓缩其算法要点;对使用频度高、容易掌握的算法或程序结构可多讲, 反之, 可少讲;对非结构化的语言来说, 结构化的手段和例子要多讲, 非结构化的可少讲或不讲。
5、一题多解 (分组讨论) 刺激学习积极性
为了调动学生编程的积极性, 我们可以采取分组比较方式, 培养他们合作和竞争意识, 从而达到提高学习兴趣的目的。比如求“素数”数这个例子, 先介绍一种常见算法, 其他方法把全班同学分组自主去解决, 最后比较哪组使用方法最多, 最巧, 同时把这些好方法介绍给大家, 鼓励大家去发现新思路、新方法, 培养他们创造性思维。实践证明这种分组讨论方式不但可以帮助学生掌握多种语句的使用方法, 还能培养他们多种角度分析问题的能力以及集体协作能力。
6、课程考核方式改革
(1) 平时上机训练时给学生留一些编程习题, 每次根据学生编写情况进行测评并占据期末总成绩30%。
(2) 期末前, 给学生留一个综合实训题考核学生综合解决问题的能力, 要求同学们在一定时间内完成, 占据期末总成绩30%。
(3) 期末进行理论考试, 占期末总成绩的40%。
以上是本人在C语言教学中的一些体会, 希望能对大家有所帮助。
参考文献
[1]郭琴:对高职高专计算机专业程序设计教学的思考中国科技信息2008[1]
[2]C语言程序设计教学探究中国论文下载中心
C语言专业教学探讨 篇2
面向智能科学与技术专业的C语言教学探讨
本文探讨了面向“智能科学与技术”专业的C语言教学变革,从该课程对于新专业要求所面临的问题入手,以面向应用为目标,提出了教学内容改变的细节与教学相关因素对于教学进程改变影响的讨论.改变教学内容与方法,满足了压缩学时的要求;同时,引入机器智能中的前沿问题作为实践环节的设计项目,为学生的.专业兴趣与能力培养提供新的思路.
作 者:李睿凡 李蕾 LI Rui-fan LI Lei 作者单位:北京邮电大学,计算机学院智能科学技术中心,北京,100876 刊 名:计算机教育 英文刊名:COMPUTER EDUCATION 年,卷(期):2009 “”(11) 分类号:G642 关键词:C语言 智能科学与技术 教学
C 语言教学改革探讨与实践 篇3
[关键词]C 语言;教学改革;案例教学;课程设计
一、传统教学中存在的问题
学生对学习该门课程没有明确的学习目的与兴趣。很多同学认为这门课就是介绍 C 语言的概念、 语句、 语法规则等内容;另外一些同学了解到现在流行的程序开发语言是Java 和C#,觉得 C 语言用处不大。C 语言的教学仍停留在传统的教学模式上,把授课重点放在程序设计语言的基本语法的讲授和掌握上, 这种灌输模式能较好地保证所讲授知识的系统性与完整性,却忽略了程序设计能力与思维的培养,造成学生学习的积极性不高,教学效果较差。实验课环节效果差,在上机过程中学生过分依赖书本,多数学生上机就是拿书本上的例子来验证,缺乏动手编写程序的训练。
在课后教师虽然布置了一些练习题目,让学生重温教学内容以巩固所学的知识。 但是由于缺乏有效的监督检查,学生往往通过网络或者书本等其他途径来寻找答案,而不是通过自己独立思考完成。C 语言课程考核方式单一,一般通过笔试手段来考核学生掌握 C语言的情况,学生通过最后几天时间背题库、 背书本,就可以轻松通过考试。
二、 C 语言教学改革探讨与实践
1.上好 C 语言教学的第一堂课
C 语言教学的第一堂课很重要:第一要讲明 C 语言的重要性;第二可以结合一个生动的 C 语言编程实例,使学生对 C 语言的学习产生兴趣;第三提出课程学习要求与方法,给出平时作业、 上机实验、 考试方式等具体要求。
2. 课堂上采用多种教学方法
可以考虑在课堂上采用多种教学方法。案例教学以程序设计为主线,以编程应用为驱动,通过案例和问题引出教材内容,重点讲解程序设计的思想和方法,穿插讲解相关的语法知识。 这样教学效果既有深度又有广度,学生实际动手能力大为增强。 同时对于比较典型的问题,可以安排少量课时实施“学生示范教学法”。在课堂的实践环节中,教师可以让一个学生上讲台编程,学生所有的操作会通过投影仪展现给全班同学。 如果讲台上学生出现编程错误,教师应以此为例加以更正和讲解,并介绍一些可避免错误的编程技巧。
3. 实验教学严格把关
在实验课环节中应严格把关。 让学生课前认真准备,每次进实验室时,应写好完整代码。 上机调试中发现问题的同时解决问题,要求认真完成实验内容,并在课后书写实验报告。 鼓励学生多动手写程序,多调试程序切实把握实验教学的质量。
4. 精心安排课程设计
在课程设计阶段以软件公司的项目小组为模仿目标,以 3 个学生为一个学习小组,选出一个组长,老师要求组长对自己的组员进行考核与具体的编程安排。课程设计的原则既要使学生有切入点动手又要使各章的内容之间有联系。课程设计选题可以以五子棋游戏、 扫雷游戏、 家庭财务管理、学生成绩管理系统等生活实际为例,一方面易于理解,另一方面可以激发学生对项目的兴趣。 学生最终完成一个课程设计大作业,以小组为单位不仅能使学生相互学习,相互勉励,能培养学生们的组织管理能力和团队合作能力。而且项目的完成可以帮助学生加深对书本理论知识的理解又可以让学生勇于实践、积极思考,激发了学生的学习潜力。 项目的成功使学生有成就感,有效地调动了学生学习的积极性。 课程设计以项目答辩结束,要求项目小组成员在讲台上讲解他们的作品,教师和其他项目小组成员在讲台下评分和提问,所有的学生在一问一答间可以学到更多知识。
5.改变单一的考核方式
大多数院校仍采用笔试考试这一考核方式。其实可以采用平时考核、 期末理论考试、 上机考试、 课程设计项目考察多种考核方式相结合。平时考核以布置作业、 到课、 听课情况为主,考查学生的学习态度占 20%;期末理论考试采取闭卷考试,主要考查学生对基本知识的理解和阅读别人的程序的能力占 40%;上机考试主要考查学生调试程序的能20%;课程设计项目主要考察学生实际动手能力和团队协作能力占 20%。
三、教学改革中需注意的问题
1. 选用适合的教材
对于那些刚入大学不久就学习 C 语言程序设计的新生而言 , 他们往往不能很快适应大学的学生生活和学习方式 , 还保留着高中时比较依赖教科书的习惯 ,所以教材对他们来说是非常重要的 。此外 ,由于大多数学校的课时与以前相比都有不同程度的压缩 , 一些内容只能让学生课下自学 , 那就更需要一本能够启发他们思路 、达到辅助自学这一目的的教材 。
目前 ,市面上的 C 语言教材可谓琳琅满目 , 但大多数教材的结构安排都是先讲基础知识 , 再讲变量与运算符 ,然后是控制语句 ,即使后面的章节涉及到完整的编程 , 也总是在讲如何编程之前介绍一大堆琐碎 、枯燥乏味 、难以理解和记忆的语法规则 。不知从何时开始 ,学生觉得无趣 , 记不住 ,最终导致学习的积极性和自信心双双受到打击 ,学习效果可想而之 。经过调查 , 学生们普遍认为 :编写 C 语言的程序与他们以前养成的逻辑思维 ,尤其是数学思维有很大的不同 ,他们希望有一本由浅入深的 , 能够通过对一些实用问题的分析 , 逐步地引导读者自己动手编程的教材 。这里边其实就包含着我们选择教材时应考虑的几方面因素 。
首先 ,教材体系要合理 , 符合学生的认知规律 : 应从需要解决的问题入手 , 以启发式的方法 ,引领学生去分析问题 、解决问题 ,并从中学习到相应的基础知识 , 这种方式更有利于培养出学生的编程思维 。其次 , 教材内容应由浅入深 、循序渐进 。再次 ,例题 、习题要实用 、有趣 ,易于激发学生的学习兴趣 , 有利于培养学生实际应用的能力 。目前 ,能满足这些要求的书几乎没有,因此 , 这应该也是我们教材改革的目标之一。
2.案例选用的原则
采用案例教学,一定要设计好案例,好的案例是成功的关键。 以知识线索和围绕教学内容来组织与设计案例,对学生的知识和能力训练具有很强的针对性。处理好具体实例与思想方法的关系,局部知识应用与综合应用的关系,强调实用性,培养应用能力。通过强化案例与实验教学,加深学生对理论知识的理解与掌握。案例教学突出学习方式的转变,以提高学生分析问题、 解决问题的能力,进而提高综合素质。在案例设计中要注意对案例难度的把握。如果太难,学生通过努力还是没有什么进展,编程通不过,学生的学习兴趣和主动性就逐渐减退,教学效果很难达到预期目标。 如果太简单起不到培养学生掌握知识和应用知识的能力。
3.以鼓励为主评价学生
教师对学生平时作业与实验环节以及课程设计中多给学生鼓励,多给学生积极正面的评价。 对学生提出的问题要耐心地指出问题的根源,引导学生自己去找出原因改正错误,不要一开始就给出答案,更不要刻意去批评学生。对学生学习效果的评价遵循如下原则:鼓励性原则,即对学生有创意的程序设计思想和方法要多鼓励,对学生在实验报告中深入分析和总结要在评语中给予特别肯定;及时性原则,即对学生在实验过程中的一些闪光点,当场给予口头表扬。需要特别强调的是,对学生学习效果的评价,不应该只对学生进行横向的比较,更应关心学生学习过程中的点滴进步,鼓励学生在原有基础上不断争取新的进步。
四、结 语
实施以上的改革措施后,学生的程序设计思想和编程能力明显增强。为学生们后续课程的学习打下了坚实的基础。C 语言教学改革不是一蹴而就的,应该重视理论与实践相结合,在今后的教学过程中不断地去完善。
作者简介:卫军超(1982-3),男,陕西韩城人,西北农林科技大学信息工程学院硕士研究生,西安交通工程学院计算机讲师。
数学专业C语言教学的探讨 篇4
目前全国以及省内各院校的非计算机专业大都开设了程序设计课程,但很多由于教师教学内容安排和教学方法选择不当,使得学生对程序设计课程感到枯燥难学,学过之后不能独立设计程序,不能将其与自己本专业很好的结合。这一问题是目前高校C语言教学中普遍存在的。为了解决这一问题,我们针对数学专业的C语言教学在以下几个方面做了尝试。取得了较好的效果。
一、教材的选择
因为是数学专业的程序设计类课程,考虑因为有一些经典教材叙述过于细致,略显繁琐。所以在选择教材时注重选择内容简单实用,实践性强的教材,通过一些简单实用的例子引入程序设计语言的知识,编程技术和基本算法。
二、教学内容
在以往的教学过程中, 大部分学生的语法细节掌握得不错, 但是涉及到实际编程问题时, 还是显得困难;还有的学生始终无法学会如何把实际问题也就是算法转化为程序语言, 他们往往心中只有一些模糊的想法, 而无法写出一行行的程序。这一问题是目前C语言教学中普遍存在的。针对上述问题, 注重在C语言教学中紧密结合本专业特点, 编选带有学生本专业特点的题目, 采用提出一个实际问题, 分析解决该问题的算法, 实现逐项转换成程序语句的方法, 放弃过度追求语言知识本身的系统化和细节化的做法, 通过一系列精心设计的案例, 让学生在编程的过程中进行学习。这样将纯粹的学习语言和真正的应用相结合, 有助于学生对计算机语言的深入理解, 同时学生也感兴趣从而培养了学生分析问题、解决问题、综合思维的能力。
在教学内容的安排上充分结合数学专业的特点,在教学内容的选取上本着“精讲多练,重实用,重算法”的原则,讲解一些实用的和数学专业知识相关的算法以及这些算法所涉及的基本理论。
三、教学过程的设计:强化实践,注重培养能力
程序设计类课程的学习有其自身的特点,听不会,也看不会,只能练会,所以在课程教学中必须强调程序设计训练。学生只有通过大量的练习,才能真正掌握语言知识,培养程序设计的能力,逐步理解和掌握程序设计的思想和方法,能利用计算机解决实际问题。对编程能力的培养,采用基本训练(自测作业和主题作业)和综合训练相结合的方式。
四、教学方法
C程序设计语言的知识体系是一个循序渐进的过程, 先后的知识点相关性很大, 语句简洁、紧凑, 语法限制不太严格, 程序设计自由度大。我们在教学过程中,所有的知识都是以一个案例引入,比如引入循环结构时,先提出如果想统计一个班60名同学的C语言成绩如何写程序,学习选择结构时,先提出如何表示数学里的分段函数,每个知识点都是以学生熟悉的问题为切入点,使学生产生浓厚的兴趣,激励他们深入的学习下去。
总体上说在教学方法上我们主要分为两个阶段:
(1)第一个阶段:案例教学
主要以数学问题为主线, 学习基本概念, 基本理论和基本设计方法。
(2)第二个阶段:项目驱动,小组互助式教学
综合运用所学知识和方法, 采取小组互助的形式分析和解决实际问题,做一些小的项目和一些功能相对完整的中等程度项目。
五、教学手段
充分利用现代多媒体技术和网络平台,激励个性化学习。
(1) 在自学、上机实践和课外辅导中,利用课程学习平台,提供丰富的教学资源和讨论、答疑园地,使用作业平台,完成自测作业和部分主题作业的发布、提交、自动批改和统计分析。
(2) 公布的教学资源包括教学大纲、教学日历、考核指南(含样卷)和实验指导手册,CAI课件,还提供一些经典的程序设计范例以及有关的国内外学习站点的链接。
六、改革考核方式
采用多种形式考核学生的知识掌握程度和实践能力,包括笔试和实验考核,两者的比例是3:1,强调实验考核的重要性。
结束语
总之,对于数学专业的C语言教学我们采用兼顾理论,重在实践;采用形式多样的教学模式,旨在培养学生的程序设计的应用能力, 培养学生程序设计好的风格,养成好的程序设计习惯, 理解程序设计的本质。
参考文献
[1]“项目驱动+案例教学”模式在C语言教学中的应用[J]。叶健华等, 济南职业学院学报, Jun.2009 No.3 (Serial No.74) .
c语言教学教案 篇5
1.1 C语言发展概述
C语言是在1972年至1973年间由美国的贝尔实验室的M.D.Ritchie和K.Thompson以及英国剑桥大学的M.Richards等为描述和实现UNIX操作系统而设计的。
最初的C语言是附属于UNIX的操作系统环境,而它的产生却可以更好地描述UNIX操作系统。时至今日,C语言已独立于UNIX操作系统。它已成为微型、小型、中型、大型和超大型(巨型)计算机通用的一种程序设计语言。
随着C语言的不断发展、应用和普及,目前,C语言已经能够在多种操作系统下运行,实用的C语言编译系统种类繁多,如Microsoft C、Turbo C等。1.2 C语言的特点
C语言能够成为目前广泛的高级设计语言之一,完全是由其语言特点决定的。
(1)语言基本组成部分紧凑简洁。(2)C语言运算符丰富,表达能力强。(3)C语言数据结构丰富,结构化好。(4)具有结构化的控制语句。
(5)C语言提供了某些接近汇编语言的功能。(6)C语言程序所生成的目标代码质量高。(7)C语言程序可移植性好。C语言的弱点:
(1)运算符的优先级较复杂,不容易记忆
(2)C语言的语法限制不太严格,一定程度上降低了某些安全性。1.3 简单的C语言程序。1.3.1 C语言程序的构成 1.3.2 C语言程序的特点
(1)C程序是由函数构成的,其中至少包括一个函数main()。(2)函数体是由左右花括号{ }括起来的部分。(3)C语言中的每个基本语句都以“;”结束。
(4)C语言书写格式自由,一行内可以写一个语句,也可以写多个语句。
(5)#include语句是编译预处理语句,其作用是将由双引号或尖括号括起来的文件内容读入该语句位置处。对程序说明:
(1)可用/*„*/对C程序中的任何部分作注释。
(2)C语言中所有变量都必须先定义类型,然后再使用。(3)一个C语言程序通过函数之间的相互调用来实现相应的功能。即可以是系统提供的库函数,也可以是根据需要自己定义的函数。1.4 C语言上机步骤
运行环境:DOC操作系统下的Turbo C 1.4.1 C程序上机步骤
1.编辑:在TurboC环境下。将C语言源程序通过键盘输入到计算机中,并以文件形式存盘,源程序都是以.C为扩展名。
2.编译:通过编辑程序将源程序输入到计算机后,需要经过C语言编译器将其生成目标程序。得到的目标文件都是以.OBJ为文件扩展名。3.连接:经过编译后生成的目标文件需经过连接后才能生成可执行代码。其扩展名是.EXE。
所谓连接,是将目标文件和库函数或其他目标程序连接成可执行的目标程序。
4.执行:连接后源程序的目标程序就是可执行文件了。在DOS系统下,只要键入可执行文件名,按回车键就可以了。1.4.2 Turbo C系统菜单 1.Turbo C的主屏幕和主菜单功能 2.文件菜单及功能 1.4.3 程序调试方法
一个计算机程序必须对其进行测试来确定其可以正确地工作,这一过程称为调试。程序错误
语法错误:通过编译和连接就会找到 运行错误:通过调试自己找出问题所在 1.设置和使用观察变量 2.单步执行程序 3.设置和使用断点
2.1 常量和变量 2.2 整型数据 2.3 字符型数据 2.4 浮点型数据 2.5 变量的初始化
第二章 数据类型与表达式 2.1 常量和变量
2.1.1 常量:在程序运行过程中其值不能被改变的量。2.1.2 变量:在程序运行过程中其值可以被改变的量。
标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。1.标识符的有关规定:
(1)由英文字母、数字、下划线组成,且第一个字符必须是字母或下划线,一般不超过8个字符;(2)大小写字母的含义不同。
(3)不能使用C语言中的关键字做标识符,(4)用户取名时,应当尽量遵循“简洁明了”和见名知意的原则。2.变量名的有关规定:
(1)使用变量名前,一定先定认,后使用,否则不能做为变量名。(2)每一个变量属于一种类型,便于在编译时据此检查该变量所进行的运算是否合法。(3)变量名的定义:存储属性、数据类型、变量名表 3.数据类型 2.2 整型数据 2.2.1整型常量
(1)十进制整数:数码直接开头的十进制数。如1234,-234。(2)八进制整数:以0开头的常量是八进制数。如011=(11)8(3)十六进制整数:以0x开头的数是十六进制。如0x123即(123)16 例2.1 三种进制表示方法的转换 源程序a1.c main(){ Int x=1246,y=01246,z=0x1246;Printf(“%d,%d,%dn”,x,y,z);Printf(“%o,%o,%on”,x,y,z);Printf(“%x,%x,%xn”,x,y,z);} C:>a1 1246,678,4678 2336,1246,11106 4de,2a6,1246 2.2.2整型变量 原则:使用变量前,先定义,后使用。(1)基本型:用int表示;
(2)短整型:用short int或short表示;(3)长整型:用long int或long表示;(4)无符号型:
无符号整型:用unsigned int或unsigned表示;
无符号短整型:用unsigned short int或unsigned short表示;无符号长整型:用unsigned long int或unsigned long表示;2.2.3 整型变量使用
不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。
例2.2不同类型的数据进行算术运算。源程序a2.c Main(){ Int a,b,s1,s2;Unsigned x;a=10;b=-30;x=20;S1=a+x;s2=b+x;Printf(“a+x=%d,b+x=%dn”,s1,s2);} C:>a2 运行结果为 a+x=30,b+x=-10 2.2.3 整型变量使用
不同的整型数据,应根据其特性和取值范围,将其定义成不同类型的整型变量。
例2.3 整型数据各类型所能表示的范围 源程序a3.c main(){int a,b;long c,d;unsigned e,f;a=32767;b=1;c=2147483647;d=1;e=65535;f=1;Printf(“int: %d,%d,n”,a,a+b);Printf(“long: %d,%ldn”,c,c+d);Printf(“unsigned: %u,%un”,e,e+f);} C:>a3 运行结果为 Int: 372767,-32768 Long: 2147483647,-2147483648 Unsigned:65535,0 2.3 字符型数据 2.3.1 字符型常量
字符常量是由一对单引号括起来的单个字符构成,例如:‘A’,‘b’,’2’,’%’’;’等。一个字符型常量是该字符集中对应的编码值:‘0’~‘9’的ASCⅡ编码值是48~57。显然‘0’与数字0是不同的。
2.3.2 字符型变量
字符型数据分为两类:一般字符类型(char)和无符号字符类型(unsigned char)。
例2.4 字符型数据与整型数据可以通用 源程序a3.c Main(){char c1,c2;Printf(“%c,%cn”,c1,c2);Printf(“%d,%dn”,c1,c2);} C:>a4 运行结果为 A,B 65,66
2.3.3 字符串常量
字符串常量是由一对双引号括起来的字符序列,例:“fsdf”,”A”等。字符串常量中不能直接包括单引号、双引号和反斜杠““。字符串常量与字符常量的区别:
(1)字符串常量是用双引号括起来的字符序列。(2)字符串常量有串尾标记””;(3)字符串常量允许扩展表示法;
(4)C语言中没有专门的字符串变量。字符串如果需要存放在变量中,需要用字符型数组来存放。
注意:不要将单个字符组成的字符串常量与字符常量混淆。‘a’为字符串常量,不能把一个字符串常量赋给一个字符变量。例如:下面的用法都是错误的: Char c1,c2;C1=“a” C2=“CHINA”;字符‘’由系统自动加入到每个字符串的结束处,不必由编程人员加入。
字符串“CHINA”在内存中的存放形式如下图,其长度是六个字节,而不是5个字节。字符‘’所对应的ASCⅡ值为0,即“空”字符。2.4 浮点型数据 2.4.1 浮点型常量
浮点型常量有两种表示形式。十进制数形式
它是由数字和小数组成,如:3.14159,-7.2,8.9 指数法形式
如:180000.0用指数法可表示为1.8e5,1.8称为尾数,5称为指数。
0.00123用指数法可表示为1.23e-3 注意:
(1)字母e 或E之前(即尾数部分)必须是有数字的。(2)e或E后面的指数部分必须是整数。如:e-3,9.8e3.1,e5都是不合法的。
2.4.2 浮点型变量(实型变量)
把带有小数点的数称为浮点数,或实型数。浮点型变量又称为实型变量,按能表示数的精度,分为:单精度浮点型变量和双精度浮点型变量,其定认方法如下:
float a,b;/*单精度变量的定义*/ double c,d;/*双精度变量的定义*/ 单精度:占4个字节,有效位为7位,数值范围为10-37~1038 双精度:占8个字节,有效位为15~16位,数值范围约为10-307~10308 浮点型常量不存在单精度型和双精度型之分。2.5 变量的初始化 变量的初始人化:在定义变量的同时给变量赋予初值。方法:
(1)先说明变量类型,然后再赋值。
(2)在对变量类型说明的同时,给变量赋初值。先定义后赋值 int a,b,c;char d;floatb f;a=2;b=5;c=10;d=‘a’;f=5.7;定义和赋值同时进行 int a=5;short b=10;char c=‘a’;float d=7.8;3.对几个变量同时赋一个初值 Int a1=10,a2=10,a3=10;
初始化不是在编译阶段完成的,而是在程序运行时执行本函数时赋以初值的。相当于一个赋值语句。例如: int a=10;相当于: int a;a=10;
又如: Int a;,b,c=20;相当于: Int a,b,c;C=20;第三讲 运算符以及数据类型 2.6 运算符及表达式 2.7 数据类型转换 2.8 类型定义 2.6 运算符及表达式
C语言运算符可以分为:算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符。2.6.1 算术运算符和算术表达式
1.算术运算符:加、减、乘、除及取模即:+,-,*,/,%来表示。C语言规定:
(1)模运算符%,仅用于整型变量或整型常量。
(2)优先级:一个表达式中如有多个运算符,则计算先后次序为相应运算符的优先级高的优先。乘、除、模优先级高于加、减的优先级。(3)结合方向:是一个运算对象两侧的运算符的优先级别相同时,应遵循的处理规则。
算术运算符的结合方向是从左至右; 赋值运算符的结合方向是从右至左。
算术表达式:由算术运算符、括号以及操作对象组成的符号C语言语法规则的表达式称为算术表达式。2.6.2 赋值语句 1.赋值运算符
语言的赋值运算符是“=”,它的作用是赋值运算符右边表达式的值赋给其左边的变量。
例如:a=10,x=a+5,前者是把常量10赋给变量a,后者是将表达式a+5的值赋给变量x.注意:如果“=”两侧的类型不一致,在赋值时要进行类型转换。例如a=b,执行该语句时,b的结果转换为a的类型后才能进行赋值运算。2.复合赋值运算符
C语言允许在赋值运算符“=“之前加上其它运算符,以构成其复合运算符。复合运算符多数为双目。复合运算符有:
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|= 例:
a+=2
等价于 a=a+2 x*=y+5 等价于 x=x*(y+5)x%=8
等价于 x=x%8 赋值运算符都是自右向左执行。3.赋值语句与赋值表达式 赋值语句最简单的形式是: <变量>= <表达式>;
功能:是赋值运算符右边的“表达式”的值赋给左边的变量。
赋值表达式也可以包含复合的赋值运算符,例: 如果a=10,表达式a+=a-=a*a的值为-180。其步骤为:(1)先进行a-=a*a的计算,它相当于a=a-a*a=10-10*10=-90.(2)再进行a+=-90的计算,它相当于a=a+(-90)=-90-90=-180.4.自增自减运算符
i++(或i--)表示在使用该表达式值之后将i值加1(或减1)。++i(或--i)表示在使用该表达式值之前将i值加1(或减1)。
说明:
(1)++和--仅适用于变量,不能用于常量或表达式。(2)++和--运算符的结合方向是“至右向左”。Main(){int a=100;printf(“a++=%dn”,a++);printf(“++a=%dn”,++a);printf(“a--=%dn”,a--);printf(“--a=%dn”,--a);} 输出结果: a++=100 ++a=102 a--=102--a=100
2.6.3 关系运算符和关系表达式 1.关系运算符
关系运算符均为两目运算符。共有六种: >
大于
<
小于 >=
大于等于 <=
小于等于 ==
等于
!=
不等于
关系运算符要求两个操作数是同一种数据类型,其结果为一逻辑值,即关系成立时,其值为真(true),用非0值表示;关系不成立时,其值为假(false),用0表示。
关系运算符的优先级借低于算术运算符,关系运算符==和!=低于前四种运算符,并且结合方向均为自左至右。2.关系表达式
由关系运算符将两个表达式连接起来的有意义的式子称为关系表达式。如:a+b 关系表达式的值是一个逻辑值,即“真”或“假”。用1表示“真”,用0表示“假”。如: a=4,b=1,C=a>b;c的值为1,若a=1,b=8,x=a>b;x的值为0。2.6.4 逻辑运算符和逻辑表达式 1.逻辑运算符 逻辑运算符有“&&“(逻辑与)、”||“(逻辑或)和”!“(逻辑非)三种。 逻辑运算符的操作对象为零或非零整数值,见表2.4.表2.4 逻辑运算规则 逻辑表达式 由逻辑运算符和其操作对象组成表达式称为逻辑表达式。2.6.5 位运算符 位(bit)运算是C语言的一大特色,可直接对构成内存的基本单位 “字节”(byte)进行按位操作。按位与(&)操作规则:参加运算的两个运算量,如果两个相应的位均为1,则该 位的结果为1,否则为0,见表2.5 表2.5 接位与 例如:(1)清零。 (2)取一个数中的某些位。高位清零: 00101101 10011100 & 00000000 11111111 00000000 10011100 低位清零: 00101101 10011100 & 11111111 00000000 00101101 00000000 按位或(|) 操作规则:参加运算的两个运算量,其相应的位中只有一个为1,则该位的结果为1,否则为0。 表2.6 按位或 例如: (1)01000001 | 00101001 01101001(2)01000001 | 00000000 01000001(3)01000011 | 11111111 11111111(4)01000001 | 10111110 11111111 例如:将某一个数的某些位置为1。一个整数a,要将其低字节全置为1,即低字节为11111111,可将该数与255(十六进制为FF,二进制为11111111)按按位或即可。按位异或(^) 操作规则:参加运算的两个运算量,当相应位相同时,其结果在该位为0,相应位不同时,其结果在该位为1,即按位相加,但不进位。 表2.7 按位异或(1)使指定位翻转。即由1变为0,由0变为1。例: 01100110 ^ 00001111 01101001(2)不使用临时变量,交换两个值。方法为:若有两个数a和b,通过 下面的赋值语言可将 a和b的值互换: a=a^b;b=b^a;b=a^b;4.按位求反(~) 操作规则:运算符~是一个单目运算符,用来对一个数二进制表示按位求反,即瘵0变成1,将1变成0。 表2.8 按位求反 例: ~01101001 10010110 将一个数的某些位变为0。方法是:瘵该数a与~b按位求与,此处的b为这样的一个数,即要求a 中变为0的那些位均为1,其余位均为0。如要将a的最低位变为0,则可使用下述表达式实现。A=a&~1 5.左移(<<) 操作规则:将一个数的各二进制位全部左移若干位,左移后,右边的这些位用0填补,左边移出的位舍弃不用。例:a=a<<2;若a=15,即二进制00001111,左移两位后变为00111100。若再向左移4位,则变为11000000。 将一个数左移1位,相当于该数乘以2,左移2位相当于该数乘以4。如上例中a=15,则a=a<<2,此时a=15*4=60。但是这种情况仅指左移时没有1被移出去的情况,左移运算要比乘法运算快得多。 6.右移(>>) 操作规则:将一个数的各二进制位全部右移若干位,右移后,右边移出的位被舍弃,而左边的填补分两种情况:(1)该数为无符号数,则高位补0。例:a=a>>2;右a=15,二进制为00001111,右移两位后为00000011。 (2)该数为有符号数,若原来的符号位为0(最高位为0,即正数)则高位补0,若原来的符号位为1(即表示该数为负数),高位补0或1,取决于所使用的计算机系统。有的系统补0,称为逻辑右移,有的系统补1,称为算术右移。例:a:***1 a>>1:***1(逻辑右移)a>>1:***1(算术右移)2.6.6 其他运算符 逗号运算符 逗号运算符为“,“。逗号表达式是用逗号运算符把两个表达式组合成的一个表达式。其一般形式为 〈表达 式1〉,〈表达式2〉 说明:(1)逗号表达式的执行过程是:先求表达式1的值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。 (2)一个逗号表达式可以与另一个表达式构成一个新逗号表达式。(3)逗号运算符是所有运算符中级别最低的。 (4)逗号表达式常用于for语句中,它可以表达多个初值或多个步长增量。 逗号表达式的一般形式可以扩展为 〈表达式1〉,〈表达式2〉,〈表达式3〉,„„〈表达式N〉 表达式n的值是整个表达式的值。 条件运算符 条件运算符是一个三目运算符,把三表达式组合成一个表达式。其一般形式为 〈表达式1〉?〈表达式2〉:〈表达式3〉; 功能:计算〈表达式1〉的值,如果该值为真(非0值),则计算〈表达式2〉的值,并且该值即为条件表达式值。若〈表达式1〉的值为假(0),则计算〈表达式3〉的值,并将该值作为条件表达式的值。说明: (1)条件运算符优先级别高于赋值运算符,低于关系运算符和算术运算符。 (2)条件运算符结合方向是“自右至左”。 (3)〈表达式1〉与〈表达式2〉、〈表达式3〉类型可以不同。3.Sizeof运算符 sizeof运算符是测试变量、表达式或类型名所占用的字节 数。有两种用法。 sizeof〈表达式〉:测试表达式所占用的字节数。sizeof〈表达式〉:测试类型名所占用的字节数。例如: sizeof(float)其值为4。sizeof运算符可以出现的表达式中。main(){ int a=4;fload b=5.6;printf(“%d,%dn”, sizeof(a), sizeof(b));} 输出结果: 2,4 2.7 数据类型转换 在内存中,字符是以系统中所使用字符的编码值形式存储的,C语言允许字符型数据和整型数据之间通用一个字符型数据,即可以以字符形式输出,也可以以整型形式输出,同时,字符型数据可能赋给整型变量,整型数据也可以赋给字符型变量,只是当整型变量数据的大小超过字符型变量的表示范围时,需要截取相应的有效位。 除字符型数据和整型数据之间可以通用之外,不同类型的数据在进行混合运算时,往往需要进行强制类型转换。因此类型转换有两种方式:一种是自动类型转换;另一种是强制类型转换。2.7.1 自动类型转换 在进行计算时,首先将不同类型的数据转换成同一类型,然 后进行计算 不同类型数值转换规则: Double float Long Unsigned Int char ,short 2.7.2 强制类型转化 强制类型转化的一般形式如下所示: (强制的类型名)〈变量〉 例如:(int)(a+b),将a+b的结果强制转换成int型; (float)a/b,将a的结果强制转换成float型后,再进行计算。注意:经强制类型转换后,得到的是一个所需类型的中间变量,原来变量的类型并没有发生任何变化。2.8 类型定义 C语言允许使用typedef语句定义新类型名,以取代已有类型名,如: typedef int counter;作用是定义counter等价于基本数据类型名int,以后就可以利用counter来定义int型变量了。如: counter I,n; 等价于int I, n;类型定义的优点是:能够提高程序可读性。注意: (1)typedef语句不能创造新的类型,只能为已有的类型增加一个类型名。(2)typedef语句只能用来定义类型名,而不能用来定义变量。例如:分析下例程序。# include “stdio.h” typeref int integer;typedef float real;Main(){ integer i=5;real f;f=real(i)/10;printf(%f”,f);} 第四讲 数据的输入输出 3.1 数据的输入 3.2 数据的输出 3.3 应用举例 3.1 数据的输入 3.1.1 字符输入函数getchar 格式: getchar() 功能:从键盘上接收输入的一个字符。例如: char c; ┆ c= getchar()其中c是字符型或整型变量。 例1:从键盘输入一个字符,并将其存入字符型变量c 中。#include”stdio.h” Main(){char c;C= getchar();} 3.1.2 格式输入函数scanf 格式:scanf(格式控制,地址表); 功能:用来输入任何类型数据,可同时输入多个类型或不同类型数据。格式控制:是由双括号括起来字符串,主要是由“%”和格式符组成 2.地址表 Scanf函数中的“地址表”部分是由变量的地址组成的,如果有多个变量,则各变量之间用逗号隔开。地址运算符为“&“,如变量a的地址可以写为&a。 例3.2用scanf函数,从键盘 上输入一个整型数、一个浮 点数和一个字符,分别存入 变量i、f和c中。 #include”stdio.h” main(){ int i;float f;char c;scanf(“%d,%f,%c”,&I,&f,&c);printf(“i=%d,f=%f,c=%c”,i,f,c);} 说明: (1)在scanf函数“格式控制”部分中的每个格式说明符都必须在“地址表列”中有一个变量与之对应格式说明符必须要与相应变量的类型一致。 (2)当格式说明符之间没有任何字符时,在输入数据时,两个数据之间要使用“空格”、“Tab”或“回车”键做间隔;如果格式说明符之间包含其它字符,则输入数据时,应输入与这些字符相同的字符做间隔,如: Scanf(“%d,%f,%c”,&i,&f,&c); 在输入数据时,应采用如下形式:20,7.8,a(3)可以在格式说明符的前面指定输入数据所占的列数,系统将自动按此列数来截取所需的数据,如: scanf(%2d%3d”,&x,&y);当用户输入78985时,系统将自动地将78赋给变量x,将985赋给变量y。这种方式也可用于字符型数据的输入。 (4)应该特别注意的是,scanf函数中的“地址表列”部分应当中变量的地址,而不是变量名。.2 数据的输出 3.2.1 字符输出函数putchar 数据的输出一般是以终端显示器(屏幕)为处理对象。格式:向终端输出一个字符。 说明:变量c可以是字符型,也可以是整型。例3.3 从键盘输入一个字符,在屏幕上显示出来。#include”stdio.h” main(){ char c;c=getchar(); /*从键盘输入一个字符*/ putchar(c); /*在屏幕上显示一个字符*/ } putchar函数也可以输出一些特殊字符(控制字符),如:putchar(‘n’)作用是输出一个“换行”字符。3.2.2 格式控制函数printf 格式: printf(格式控制,输出表); 功能:输出任何类型的数据。1.格式控制 “格式控制”部分与scanf函数的相似,也是由双引号括起来的字符串,主要包括格式说明和需要原样输出的字符。 “格式说明”:由“%”和格式符组成,如%c和%f等,作用是将要输出的数据转换为指定格式后输出。printf函数中使用的格式字符见表3.2。 表3.2 printf函数格式字符 注意:格式字符必须小写 输出表 printf函数中的“输出表”部分由表达式组成,这些表达式应与“格式控制”字符串中的格式说明符的类型一一对应,若“输出表”中有多个表达式,则每个表达式之间应由逗号隔开。 例3.4 从键盘输入一个整数和一个浮点数,并在屏幕上显示出来。#include”stdio.h” main(){ int i;float f;scanf(“%d,%f”,&i,&f);printf(“i=%d,f=%f”,I,f);} 执行此程序,按格式输入数据: 50,8,9 i=50,f=8.900000 说明: (1)printf函数中的“格式控制”字符串中的每一个格式说明符,都必须与“输出表”中的某一个变量相对应,如上述程序中的“%”与i对应;“%f”与f对应,而且格式说明符应当与其所对应变量的类型一致。 若要显示“%”字符,则应在“格式控制”字符串中连写两个“%”,如: Printf(“x=%d%%”,100/4);将显示:x=25%。 (2)对格式说明符c、d、s和f等,可以指定输出字段的宽度。%md:m为指定的输出字段的宽度。如果数据的位数大于m,则按实际位数输出,否则输出时向右对齐,左端补以“空格”符。%mc:m为指定的输出字段的宽度。若m大于一个字符的宽度,则输出时向右对齐,左端补以“空格”符。 %mc:m为输出时字符串所占的列数。如果字符串的长度(字符个数)大于m,则按字符串的本身长度输出,否则,输出时字符串向右对齐,左端补以“空格”符。 %-ms:mr的意义同上。如果字符串的长度小于m,则输出时字符串向左对齐,右端补以“空格”符。 %m.nf:m为浮点数据所占的总列数(包括小数点),n为小数点后面的位数。如果数据的长度小于m,则输出时向右对齐,左端补以“空格”符。 %-m.nf:m、n的意义同上。如果数据的长度小于m,则输出向左对齐,右端补以“空格”符。 (3)除了格式说明符及其输出字段的宽度外,在“格式控制”字符中的其他字符,将按原样输出。 (4)在显示数据时,可以不指定输出字段的宽度,而直接利用系统隐含的输出宽度。3.3 应用举例 例3.5 分析下列程序,观察运行结果。main(){ char ch=‘a’;int a=98;unsigned b=1000;long c=123456789;float x=3.14;double y=1.2345678;pPrintf(“(1)a=%d,a=%c,ch=%d,ch=%cn”,a,a,ch,ch);printf(“(2)b=%un”,b);printf(“(3)c=%ldn”,c);printf(“(4)x=%f,y=%fn”,x,y);printf(“(5)x=%e,y=%en”,x,y);printf(“(6)y=%e10.2fn”,y);} 运行的结果为 (1)a=98,a=b,ch=97,ch=a b=1000 C=123456789 X=3.140000,y=1.234567 x=3.14000e+00,y=1.23456e+00 Y=1.23 例3.6 从键盘上输入一个大写字母,把它转换面小 写字母,然后显示出来。#include”stdio.h” main(){ char x1,x2;printf(“x1=?n”);scanf(“%c”,&x1);x2=x1+32;printf(“%c,%cn”,x1,x2);} 运行结果 x1=? A A,a 例3.7 分别输入一个浮点数,一个整数,一个字符型数。#include “stdio.h” main(){ float f;int I;char c;scanf(“%f%d%c”,&f,&I,&c);printf(“%f%d%c”,f,I,c);} 例3.8 从键盘输入一个字符并鸣笛输出。#include “stdio.h” Main(){ Char c;C=getchar();Putchar(‘07’);Putchar(c);} 第五讲 条件语句 4.1 语句和复合语句 4.2 if语句 4.3 switch语句 4.4 应用举例 第四章 条件语句 结构化程序的三种基本结构:顺序结构、选择分支结构和循环结构。顺序结构:是指每个程序都是按照语句的书写顺序依次执行的。选择分支结构:是指通过对特定条件的判断,来选择一个分支执行。循环结构:循环是指在给定条件下,重复执行某段程序,直到不满足条件为止。4.1 语句和复合语句 表达式语句:一个表达式的后面跟随一个分号构成的语句。如:x=x+a;说明:分号“;”是语句的终结符,而不是语句的分隔符即分号是语句的最末组成部分。 复合语句:由左右花括号括起来的语句; 形式:{说明部分;语句部分} 一个复合语句在语法上等同于一个语句,在程序中,凡是单个语句能够出现的地方,都可以出现复合语句。一个复合语句又可以出现在其他复合语句内部。 在复合语句的后面必须有一个分号,做为该语句的终结符。4.2 if语句 If语句是条件选择语句,它是通过对给定条件的判断,来决定所要执行的操作。 4.2.1 if语句的三种形式 If语句的第一种形式 格式:if(表达式)〈语句〉 功能:首先计算表达式的值,若表达式的值 为“真”(为非0),则执行语句,若表达 式的值为“假”(为0),不执行语句。例如: If(x>y)printf(“%d”,x);2.If语句的第二种形式 格式:if(表达式)〈语句1〉 else 〈语句2〉 功能:首先计算表达式的值,若表达式的值为“真”(为非0)。则执行语句1,若表达式的值为 “假”(为0),则执行语句2。例如: if(x>y)printf(“%d”,x);else printf(“%d”,y);3.If语句的第三种形式 格式: if(表达式1)〈语句1〉 else if(表达式2) 〈语句2〉 else if(表达式3) 〈语句3〉 ┆ else if(表达式n) 〈语句n〉 else 〈语句n+1〉 功能:首先计算表达式的值,若第n个表达式的值为“真”(为非0),则执行语句n,若所有的表达式的值都为“假”(为0),则执行语句n+1。其流程图如下: 例如: if(score>89) grade=‘5’;else if(score>74)grade=‘4’;else if(score>59)grade=‘3’;else grade=‘2’;说明: (1)if语句中的表达式可以是C语言的合法表达式。 (2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所要求的。 (3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用花括号“{ }“将几个语句括起来,构成一个复合语句。 例4.1 将两个数中较大者赋给 s。main(){ int a,b,s;a=10;b=20;if(a>b)s=a;else s=b;printf(“s=%dn”,s);} 执行结果: s=20 例4.2 比较两个数,按由大到小输出。main(){ int a,b,x,y;a = 10;b = 20;if(a>b){x=a;y=b;} else {x=b;y=a;} printf(“x=%d,y=%dn”,x,y);} 执行结果: x=20,y=10 4.2.2 if语句的嵌套 在if 语句中又包含一个或多个if语句,称为if语句的嵌套。一般形式如下: if() if() 〈语句1〉 else 〈语句2〉 else if() 〈语句3〉 else 〈语句4〉 if() if() 〈语句1〉 else if()〈语句2〉 else 〈语句3〉 说明: (1)if与else的配对关系,从最内层开始,else总是与离它最近的未曾配对的if配对。 (2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。 (3)如果if与else的个数不相同,可以用花括号来确定配对关系。例如: If() {if()〈语句1〉} else 〈语句2〉 这时{ }限定了内嵌if 语句的范围,因此else与第一个if配对。例4.3 有一函数 编一程序,输入一个x值,输出y 值。main(){ int x,y;scanf(“%d”,&x);if(x<0)y=-1;else if(x==0)y=0; else y=1;printf(“x=%d,y=%dn”,x,y);} 4.2.3 条件运算符 如果if语句的形式如下所示: if(表达式1) x=〈表达式2〉; else x=〈表达式2〉; 无论表达式1为“真”还是为“假”,都只执行一个赋值语句且给同一个变量赋值。 可以利用条件运算符,将这种语句简单地用如下语句来表示。 x=〈表达式1〉?〈表达式2〉:〈表达式3〉; 说明:即当表达式1的值为“真”时,将表达式2的值赋给变量x;当表达式1的值为“假”时,将表达式3的值赋给变量x。如: a=5,b=10,c=20;x=a>b? c*b:c/b;因为a>b为假,则x=c/b=2。 例4.4 输入两个数,并将其中较大者显示出来。#include “stdio.h” main(){ int a,b,max;scanf(“%d%d”,&a,&b);max=(a>b)? a:b;printf(“max=%d”,max);} 条件运算符也可以嵌套使用,如: Grade=(score>=90)?’A’:(score<=70)?’C’:’B’当score>=90时,将字符‘A’赋给变量grade;当score<=70时,将字符‘C’赋给变量grade;否则将字符‘B’赋给变量grade.4.3 switch语句 Switch语句是多分支选择语句,其一般形式如下:Switch(表达式) { case 〈常量表达式1〉:〈语句1〉 case 〈常量表达式2〉:〈语句2〉 ┆ case 〈常量表达式n〉:〈语句n〉 default:〈语句n+1〉 } ;可同时省略 switch语句的执行过程是:首先计算switch后面圆括号内表达式的值,若此值等于某个case后面的常量表达式的值,则转向该case后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,则转向default后面的语句去执行,如果没有default部分,则将不执行switch语句中的任何语句,而直接转到switch语句后面的语句去执行。说明: (1)switch后面圆括号内的表达式的值和case后面的常量表达式的值,都必须是整型的或字符型的,不允许是浮点型的。 (2)同一个switch语句中 的所有case后面的常量表达式的值都必须互不相同。 (3)switch语句中的case和default的出现次序是任意的,也就是说default也可以位于case的前面,且case的次序也不要求按常量表达式的大小顺序排列。 (4)由于switch语句中的“case常量表达式”部分只起标号的作用,而不进行条件判断,所以,在执行完某个case后的语句后,将自动转到该语句后面的语句去执行,直到遇到switch语句的右花括号或“break”语句为此,而不再进行条件判断。 所以在执行完一个case分支后,一般应跳出switch语句,转到下一条语句执行,这样可在一个case的结束后,下一个case开始前,插入一个break语句,一但执行到braek语句,将立即跳出switch语句,如: 如: Switch(n){ case 1: x=1; case 2: x=2;} 当n=1时,将连续执行下面两个语句 : X=1;X=2;如: Switch(n){ case 1; x=1;Braek;Case 2;X=2 Braek }(5)每个case的后面即可以是一个句号,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。(6)多个case的后面可以共用一组执行语句,如: Switch(n);{ Case 1: Case 2: x=10; braet ┆ } 它表示当n=1或n=2时,都执行下列两个语句: X=10;Braek; 例4.5 从键盘输入一个月份(1~12),并显示该月份的英文名称 #include”stdio.h” Main(){ int month;scanf(“%d”,&month);switch(month){ case 1:printf(“January”); braek;case 2:printf(“February”); braek;case 3:printf(“March”); braek;case 4:printf(“April”); braek;case 5:printf(“May”); braek;case 6:printf(“June”); braek;case 7:printf(“July”); braek;case 8:printf(“August”); braek;case 9:printf(“September”); braek;case 10:printf(“October”); braek;case 11:printf(“November”); braek;case 12:printf(“Decmeber”); braek;Default:printf(“Data Error!”);Break;} } 4.4 应用举例 例4.6 输入一个数值,求出它的平方根,若为负数时,求出它的复数平方根。#include “stdio.h” #include “math.h” main(){ int n;float root;printf(“enter a number:t”);scanf(“%d”,&n);if(n>=0);{ root=sqrt(n);printf(“sqrt(%d)=%f”,n,root);} else { root=sqrt(abs(n)); printf(“sqrt(%d)=%fi”,n,root);} } 例4.7求两个数中最小值。#include “stdio.h” main(){int x,y,min;printf(“enter two integers:n”);acanf(“%d,%d,&x,&y);min=x 例4.8 从键盘输入一个操作符并进行相应和操作。#include “stdio.h” main(){ int x=10,y=5,z;char op;scanf(“%c”,&op);switch(op){ case ’+’:z=x+y;braek; case ’-’:z=x-y;braek; case ’*’:z=x*y;braek; case ’/’:z=x/y;braek; default :printf(“Operater Error!”);} printf(%d%c%d=%d”,x,op,y,z);} 例4.9 输入三个数,按由小到大的顺序输出。#include “stdio.h” main(){ int a,b,c,temp;printf(“enter three integers:t”);scanf(“%d,%d,%d”,&a,&b.&c);if(a>c){temp=a;a=b;b=temp;} If(a>c){temp=a;a=c;c=temp;} if(b>c){temp=b;b=c;c=temp;} printf(“%d<%d,%d”,a,b,c);} 第六讲 循环控制 5.1 goto语句 5.2 while循环语句 5.3 do-while循环语句 5.4 for循环语句 5.2 while循环语句 用while语句来实现“当型”循环结构。格式:while(表达式) 〈语句〉 /*循环体部分*/ 功能:当表达式的值为非0时,执行while语句中的循环体。结构流程图如图所示。说明: (1)循环体如果包含一个以上语句,应该用花括弧括起来,以复合语句的形式出现,否则while语句范围只到while后面第一个分号处。(2)在循环体中应有使循环趋向于结束的语句,即设置修改循环条件的语句。 (3)while语句的特点是先判断表达式的值,然后执行循环体中的语句,如果表达式的值一开始为假(值为0),退出循环,并转入下一语句去执行。 例5.2 求s=1+2+3+„100的值。结构流程图如右图。main(){ int i,s=0;i=1;While(i<=100);{s=s+1;i++;} printf(“s=%d”,s);} 运行结果 s=5050 5.3 do-while循环语句 do-while循环语句,用来实现“直到型”循环结构。格式:do <语句> while(表达式)功能:先执行〈语句〉,后判断表达式的值。它的执行过程是:先执行一次指定的语句,然后判断表达式的值,当表达式的值为非零(”真“)时,返回重新执行该语句,如此反复,直到表达式的值等于0为此止,此时循环结束。0(假)说明: (1)用while语句和用do-while语句处理同一问题时,若二者的循环体部分一样,其结果也一样。但在while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。 (2)如果do-while语句的循环体部分是多个语句组成的话,则必须用左右花括号括起来,使其形成复合语句。 《C语言程序设计》教学内容枯燥抽象,学生不容易理解,加上编者对教材的处理上过于注重实践技能的培养,采用“任务驱动”法组织教材内容,通过一些实际案例阐述各章节的重要知识点,又通过案例延伸对相关知识点进行了扩展和延伸,使得各知识点都融合在各案例当中。这样虽然达到了各教学知识点的有机统一,但从知识点的连贯性和层次性上来讲,不容易被学生理解掌握。同时,该教材用学生信息管理项目案例作为主线,对于毫无编程经验的职专生来说,起点过高。 C语言程序设计的学习,主要涉及到C语言基础知识框架的建立和算法思想的培养,算法思想即是数学建模的过程,而且c语言的编写都是用英语字符来完成的,这就需要学生在数学和英语两科的综合运用能力上达到一定的要求,而职业类学校的学生恰恰在这两个科目上弱项,这就进步增大了教学的难度。在教学实际过程中,可能遇到无论教师怎么解释,学生都不知所云的情况。 同时,在c语言的学习程当中,也往往要涉及很多计算机硬件原理的知识,对于处于高二的职专生来讲,对一些计算机基础知识还不能达到融会贯通的程度,计算机知识不系统,这就更加增大了实际教学的难度。 针对以上教材的情况以及学生的实际接受能力,经过教学实践的摸索探讨,我总结出了如下“C语言程序教学”的方法 。 1.在教材的处理上,结合学生实际,做到有针对性地制定教学目标,提高学生的接受能力。 我在实际教学过程中,还是以本教材为主,但在知识结构上做了一些细化。在给学生分析完教材中的案例后,对涉及到的相关知识点进一步完善和系统,使学生整体上掌握住案例的实质。例如;在讲“变量”的过程当中,变量值的储存是一个访问内存物理地址的过程。在这里,就需要对学生扩展一些关于内存物理地址方面的知识点,让学生对整个变量值的储存过程能够清楚明亮,从而提高学生对知识点的接受能力和牢固度。 在备课过程中,在意识地在每课时的教案中穿插一些计算机小知识,以激发学生学习的兴趣,提高学生学习程序涉及的积极性。 2.把教授的专业性知识与学生熟悉的相关常识相联系。 在C语言授课过程中,可能会遇到一些专业性的术语,学生从来没接触过,不知道为何物。这种情况下,授课老师可以列举一些与之有联系的比较实际的常识来做类比。比如我在给学生讲授C语言程序的基本构成单位为“函数”时,因为C语言中的“函数”和数学中“函数”不是一种概念,而是完成一个相应功能的程序模块,学生容易混淆。所以我把C语言中的“函数”比作是人体里的各种器官,其最大的作用就是完成相应的功能,我们人体是各个器官的组合体,而C语言程序就是各个“函数”的组合体,这样,学生对函数的概念就会明了很多。 3.采用“自主——合作——探究”式的学习方式。 教材的编者在出版说明中谈到,要强调学生学习的自主性,强调以学生的团队学习为主,让学生分成小组共同就某些问题讲行探讨,使学生最大限度的自主掌握知识。当然,这是一种理想化的教学方式,但在实际教学过程中也不是不能实现,最起码在一定程度上可以实现,所以任课教师可以试着去培养学生的这种能力。 一些教師在教学设计中虽能体现出学生“自主—— 合作 ——探究”的意识,但在具体操作中形式化严重,实效性不强。 兴趣是学生的最好老师,大部分学生还是比较喜欢计算机这个专业的,我们应该充分抓住学生的这一特点,发挥他们的主体作用,让他们自主探索,自主学习。职校二年级的学生已经有了较好的判断、推理和逻辑思维能力。我在教学过程中,经常采取提取问题-探索问题-解决问题的方法。老师可以自行出个例子,设置疑问,让学生自主学习,这样的教学效果要比在课堂上死讲要好的多。比如,在讲解条件和循环语句,多配以流程图来增强学生直观性和理解性。在讲数组时,采用图例分析,让学生对数组各元素分布情况,产生准确的认识和理解。现在的高中学生,很自我,独立意识和接触新鲜事物的能力非常强,让学生自行分组设计一些小课题,即提高了学生的自主能力,也让同学之间也不由自主的互相帮助起来。最主要的是让学生自己发现问题并解决问题。这时候老师就要做好引路人,在学生自主学习的时候,给予适当帮助。 4.精讲多练,加强实践。在学生理解项目思想,确定项目的算法后,有针对性地对项目中涉及的知识点进行讲解,对于那些学生自己能完成的内容,少讲,只做提示,甚至不讲。课堂上留足够的时间,让学生多进行实践操作,同时加强巡查辅导,及时发现和纠正学生的错误。 总之,在难度较大的课程教学过程中,不仅要备好课,还需要用创新精神探究各种教学方法,培养学生的实践能力。作为年轻老师,我们应该一丝不苟地去面对学生,面对教材,面对自己这神圣的职业。 关键词:C语言,教学改革,案例教学 1 概述 C语言是程序设计中一种用途非常广泛的计算机语言, 既可用来写系统软件, 也可用来写应用软件。C语言是一种理想的结构化语言, 语言结构清晰, 便于学习, 而且编译、运行效率高, 数据类型丰富, 灵活性强, 特别有助于初学者学习模块设计思想和数据结构的运用, 对培养学生的抽象思维能力有很大帮助, 因而成为计算机语言教学的首选语言[1]。 目前, 国内各高等院校都把C语言程序设计作为重要的计算机基础课程。然而在传统的C语言教学效果未达到期望水平。首先, 学生对学习C语言课程没有明确的学习目的与兴趣。一些学生了解到现在流行的程序开发语言是Java和C#等, 觉得C语言用处不大[2]。其次, C语言的教学仍停留在传统的注重语句、语法等细节讲授和掌握上, 却忽略了程序设计能力与思维的培养。这些内容与实际应用相距甚远, 造成学生的学习积极性不高, 学习效果较差[3]。最重要的是, C语言程序设计是一门实践性很强的课程, 而实际的实验课环节效果较差。在上机过程中学生过分依赖书本, 多数学生上机就是拿书本上的例子来验证, 缺乏独立编写程序的有效训练。学生往往通过网络或者书本等其他途径来寻找答案, 而不是自己独立思考完成。 针对传统教学中存在的问题, 本文对C语言教学改革进行了探讨, 旨在激发学生的学习兴趣, 培养学生独立设计程序的能力, 提高教学质量。 2 C语言教学改革探讨 面对目前严峻的就业压力, 高校学生学习的目的性更加明确, 但其深入钻研的精神不足。授课教师应正视这些现象, 改进授课内容和方式, 让学生在有限时间内高效地掌握基础性和关键性的知识。为此从以下几个方面入手, 对C语言程序设计课程的教学内容和方法进行了探索性的改进。 2.1 上好C语言教学的第一堂课 C语言教学的第一堂课很重要:第一要讲明C语言的重要性;第二可以结合一个生动的C语言编程实例, 使学生对C语言的学习产生兴趣;第三提出课程学习要求与方法, 给出平时作业、上机实验、考试方式等具体要求。 2.2 适当淡化语法细节, 培养编程基本功 C语言比较抽象且涉及知识点多, 若在授课过程中过多地讲授C语言的语法细节, 将会导致学生忽略对程序设计基本思想和方法的学习。面对不断更新的软件开发环境, 学生若不能以程序设计的基本思想和方法为指导, 将会降低学习新知识的效率, 从而对学习和工作产生不利影响[4]。在C语言教学中应该注重培养学生的编程思想、解决问题的思路, 对于语言的语法则适当淡化处理。对于编写代码中出现的格式细节问题, 不是过分强调, 而是告诉学生培养良好的编程风格的重要性。 考虑到学生的接受能力, 在教授内容方面注意以下几点:a.以基本概念为基础, 强调C语言的编程思想, 舍弃复杂的、容易混淆的技术细节;b.着眼于应用, 对于难于理解的内容, 通过例子说明, 避免学生陷入空泛的理论概念中;c.对于部分有能力、特别喜欢钻研的学生, 在其掌握基本的知识之外, 推荐一些选读和自学的内容。 教师在C语言授课过程中以讲授程序设计的基本思想和方法为主, 但并不意味着学生可以忽略具体程序设计语言细节的学习。在程序设计中, 细节处理不当将会导致程序无法正常运行或者运行结果与期望的结果不一致。 2.3 以学生为主体的课堂教学 以前教师在讲台教授, 学生被动听讲, 造成学生“课堂上明白, 下课后不会”的现象。在现代教学中应以学生为主体, 采用多种教学方法, 激发学生的学习兴趣, 调动学生学习的积极性和主动性。 案例教学以程序设计为主线, 以编程应用为驱动, 通过案例和问题引出教材内容, 重点讲解程序设计的思想和方法, 穿插讲解相关的语法知识[5]。对于一些重难点问题, 教师可以安排时间为学生做专题讲解。同时对于比较典型的问题, 可以安排少量课时实施“学生示范教学法”。在课堂的实践环节中, 教师可以让一个学生上讲台编程, 学生所有的操作会通过投影仪展现给全班同学。如果讲台上学生出现编程错误, 教师应以此为例加以更正和讲解, 并介绍一些可避免错误的编程技巧。 2.4 实验教学严格把关 C语言程序设计是一门实践性很强的课程, 只有通过上机实践, 才能将C语言程序设计的理论知识印在脑海中。教师在实验课环节中应严格把关。教师在实验教学过程中, 向学生介绍C语言程序设计采用的编程环境并演示调试程序的方法, 使学生掌握程序调试方法, 认识到实验对程序设计语言学习的重要性。在每次实验课前, 教师合理布置实验任务。上机调试中发现问题时应及时解决问题, 认真完成实验内容并按时上交实验作业。教师将作业中存在的问题及时反馈给学生, 督促其修正、完善程序。对于学生作业中普遍存在的问题, 教师可以在课堂上重点强调、讲解, 使学生改正错误, 加深对知识的理解和掌握。 2.5 以鼓励为主评价学生 教师在学生平时作业以及实验环节中多给学生鼓励, 多给学生积极正面的评价。对学生提出的问题要耐心地指出问题根源, 引导学生自己找出原因并改正错误;对学生有创意的程序设计思想和方法多给与鼓励和肯定。鼓励学生参加校内组织的C语言程序设计竞赛以及各种社会公开的程序设计大赛, 使学生在比赛中不断提升自我, 肯定自我。 结束语 传统教学中, 很多学生在学完C语言后能读懂基本程序代码, 还能写出程序运行结果, 但当他们遇到实际的程序编程时, 就无法应对自如。这是因为传统教学模式是给出问题和代码, 学生读懂程序后上机验证结果, 这就导致了学生只会读程序而不会写程序。针对传统C语言教学中存在的问题, 学校需要进行有效的教学改革, 提高教学质量。改革目的以培养学生的实践能力为主, 在教学中, 一定要以学生为主体, 从提高他们的实际操作能力出发, 改进传统的教学方法, 重视实践。C语言教学改革不是一蹴而就的, 应该重视理论与实践相结合, 在今后的教学过程中不断去完善。 参考文献 [1]朱鸣华, 刘旭麟, 杨微.C语言程序设计教程 (第二版) [M].北京:机械工业出版社, 2011. [2]杨平.C语言教学改革探讨与实践[J].电脑学习, 2011, 2:63-64. [3]刘克兴.信管专业C语言教改初探[J].科技向导, 2010, 29:27-28. [4]王鹏远, 苏虹.高校非计算机专业C语言教学改革与实践[J].计算机教育, 2011, 2:15-18. 1 教学方法 函数的教学与流程控制不一样,流程控制中if、while、for知识点是由浅入深,一步一步来的。而函数的特点是,一个程序里会涉及到函数的很多知识点,所以只要把一个程序搞清楚了,那其他程序也就全懂了。针对函数的这个特点,我们的授课思路是首先用通俗易懂的例子来引入问题,使学生理解为什么需要函数;教师实际演示编写程序,调试执行程序让学生理解C函数的执行过程;通过对程序有意设置语法错误和空白内容的方法,使学生了解如何定义函数、调用函数,帮助学生掌握函数语法知识;设计案例,由浅入深,将知识全面化,系统化;布置作业,帮助学生加深对知识点的理解,激发学生的创新思维。 1)用通俗易理解的例子来引入问题 讲授任何一个知识,首先讲为什么需要这个知识[2],只有这样学生才会自然接受,这一点很重要。引例的选取最好难易适中,能充分调动学生的积极性。 函数教学案例一:“分别求a,b的最大值,c,d的最大值,e,f的最大值。” 此案例比较简单,用顺序结构和选择结构就可以求解,学生对此很熟悉,不会感觉枯燥,会更积极地参与到教学中来。 由教师实际编程演示此程序,调试并运行结果,而不是直接将写好的程序呈现给学生看。教师实际编程演示可以提高学生的兴致,使学生注意力更集中,并且在这个过程中,可以反映教师编程时的思维过程,体现良好的编程习惯。 程序: 教师提醒学生,在这个程序中,有三段代码的操作是重复性的。那么如果这个程序有一万个地方要输出两个数的最大值,那就意味着这段代码要重复一万次。这样写肯定不合适。至此引入函数加深学生对函数的感性认识。引导学生思考为什么需要函数,原因是函数可以避免重复性操作。 2)“一题多解、一题多变”的教学方法 首先,由教师实际编程演示,给出用带参数无返回值的函数实现案例一。 程序: 教师点击组建——开始调试——GO命令(或按F5键)进入调试模式,利用单步执行命令(快捷键F11)控制程序每次执行一条语句,观察编辑窗口箭头的走向,以及变量窗口各变量值的变化。程序从main函数进入,当执行到max(a,b)时,程序开始进入并执行max函数。在变量输出窗口可以看到参数i和j分别获得了a,b的值。运行到printf函数时,如果不需要调试执行库函数,则按下F10,连续执行被调用函数的全部语句。继续按F11键,执行完被调用的max函数后,返回到主函数max(a,b)处,往下执行max(c,d),程序第二次进入并执行max函数,执行完max函数返回到主函数max(c,d)处,往下执行max(e,f),程序第三次进入并执行max函数,执行完毕返回到主函数max(e,f)处,执行return 0,整个程序结束。 通过调试执行,学生可清楚了解到函数调用与返回的实现过程。程序从主函数main进入,当遇到函数调用时,暂停执行主调函数,然后转去执行被调函数。首先为被调函数分配调用过程中所需的数据区,包括调用后的返回地址,函数的形参以及各种局部变量,然后把实参的值复制到形参中去,接着把控制权转移给被调函数,完成调用后,如果函数有返回值,先保存计算结果,然后释放被调函数的数据区,返回主调函数暂停的位置(调用前保存了返回地址)继续执行。 接下来,教师引导学生用带参数有返回值的函数实现案例一。 程序: 仍然采用调试执行本程序,加深学生对函数调用过程的理解。将函数调用过程讲深讲透非常重要,这是科学性的要求。理解了函数的调用过程,就会理解什么是递归,什么是变量的作用域与变量的生命期。 3)设置错误寻求正确答案的教学方法和填空式的教学方法 传统的教学方法中,一般集中式的讲述语法知识,非常枯燥,学生学了也不会编程不会应用。在课堂教学中,可以有意设置语法错误,根据编译所提示的错误,引导学生思考并修正错误;或者是有意识地将一些内容空出,要求学生先读懂再填空,然后运行程序,调试程序,直到得到正确的运行结果。这样可激发学生的探索欲望,加深对语法的理解,也提高了学生的学习能力。 在程序的编写中,首先有意的将max2(a,b),max2(c,d),max2(e,f)这些函数调用的语句空出,让学生补充,或者将函授首部空出,并且有意设置一些语法错误,比如,在函数定义的首部加上分号,在形参中分隔符用分号,使形参和实参类型不一致,使调用函数的类型与main中的该函数的类型不一致,或者是函数的类型与return后的变量类型不一致,这样程序在编译过程中会给出语法错误提示,让学生自己去思考,修正这些语法错误,加深对函数的定义和调用的理解。 4)案例——任务驱动的教学方法 至此,学生已经掌握了函数的大部分知识点,但是在以往的教学中,通常面临一个问题,当学生自己写程序的时候,他们通常将语句一并写在main里,而不选择用函数实现。究其原因,还是学生对如何定义函数,以及如何在主调函数中调用自定义函数不够熟练,没有体会到函数的运用给编程带来的极大的便利。针对这个问题,我设计了两个案例要求学生完成。案例的选择要难度要由浅入深,循序渐进,每个案例欲教授的内容要目的明确,重点突出。 函数教学案例二:输入一个正整数n,生成一张2的乘方表,输出20到2n的值[3]。 程序: 教师要求学生自己定义pow函数,而不使用math.h中提供的数学库函数。 待学生思考几分钟后,教师可引导学生:定义pow函数应该首先确定函数的返回值类型,从power=pow(2,i)这条语句可以分析出,pow函数类型应该是double类型,因为它要返回一个doubler类型的值赋值给power变量;接着确定pow函数的形参,从主调函数中pow(2,i)的用法可以看出,是两个整形的实参,那么形参也应该是两个整型变量,同时强调函数的形参必须是变量。接着给出double pow(int i,int j)的实现。 通过这个库函数调用的案例,学生学会了如何自定义函数,加深了对函数库、库函数、连接程序、头文件的相关概念的理解,明白了函数是为解决大量同类型的问题而设计的,可提高代码的可重用性,将来无论哪一个程序需要这个功能都可以使用它,就好比我们printf、scanf、pow一样,也学会了在具体的应用中该如何自定义函数,如何确定函数的返回值类型和函数的形参列表。 函数教学案例三:计算组合数[4]。 要求学生自己写程序, 程序: 通过这个实例,学生会直观的体会到函数的运用给编程带来的极大的便利。这样,在今后的编程中,会尽可能地用模块化的思想来分析问题解决问题,这个实际上就是面向过程的一个思想,也是为什么需要函数的一个很重要的原因。 5)精讲多练的教学方法 C程序设计内容多,课时少,课堂上教师要做的不是拼命多讲,可以通过作业让学生去自学。也不是要拼命讲明白,因为程序只有学生自己想明白了才能为他所用。不能过于依赖教材,要引导学生将所学知识联系起来,现场演示设计程序的思维过程,讲清知识的深层原理。布置作业,作为课堂内容的补充和深化。学生通过查资料动手实验,根据完成作业的情况,教师可以发现问题所在,在上机实践课中重点讲解。 函数教学案例四:“编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1运算符op操作数2来计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/)”,要求学生给出不适用函数的实现方法,带参数的函数实现方法,不带参数的函数实现方法。 通过本案例,使学生理解并掌握函数的几个重要概念、实现方法和编程技巧。 函数教学案例五:通过调用swap函数,交换主函数中变量a,b的值。 这个作业的要点是swap函数中的形参在调用完毕空间就释放了,所以,虽然两个形参变量的值交换了,但是a,b的值却没变。 大部分学生接着就想,能否返回两个值带回主函数,编程实践发现无法做到,因为被调函数只能返回一个值。 那怎么办呢?这时候老师可以告诉学生,在后续课程指针章节可以找到答案。这样给学生留下思考余地,启发学生去思考,有利于提高学生的学习能力,培养学生的创新思维[2]。 2 结束语 C语言函数的教学很重要,使学生理解函数并且学会应用函数是教学的关键。在后续讲解数组、指针、结构、文件时,都会与函数的知识综合起来,例如,将数组名作为函数的参数,指针作为函数的参数,结构指针作为函数的参数,文件操作函数等,学生能更好地掌握函数的定义和调用的方法,也会慢慢理解为什么说C语言是由函数所组成的。该文所探讨的C语言函数的教学方法已经应用在实际教学中,激发了学生学习的自觉性和主动性,提高了教学质量,取得了良好的教学效果,希望对同行有所帮助。 参考文献 [1]高枚,杨志强,许兰兰,龚沛曾.C/C++教学改革的探索与实践[J].计算机时代,2005(11). [2]谭浩强《.C程序设计》发行1000万册的启示[J].北京联合大学学报:自然科学版,2011(4). [3]何钦铭,颜晖.C语言程序设计[M].北京:高等教育出版社,2012. 1激发学生学习兴趣,树立学好C语言信心 引起学习动机的注意力条件有3个,即:感知的唤起、好奇心的激发、注意力的保持。感知唤起是引起注意力第一步,教师可以通过各种方式刺激学习者的感知系统,引起其好奇心,进而达到引起并保持注意力的效果。在上第一次C语言课时,很多学生对C语言到底是什么、作用如何等问题迷惑不解。我们可以先从大家熟悉的计算机操作系统入手,告诉他们操作系统中有很多用C语言编写的程序,然后通过演示C语言编程环境,看代码、编译、连接、执行一个完整程序来刺激其感知系统,进而激发其好奇心。在讲解完程序执行过程后,演一段由上一级学生编写的游戏程序,学生将会无比惊讶,C语言程序能用来设计游戏而且可转入到手机?在这种好奇心的驱使下,我们告诉学生,学会C语言的时候他们也能编出更多甚至比这更好的程序,接着进一步告诉他们C语言无比强大的功能与作用,使得学生充满对C语言的向往,从而激发其兴趣。 因为高职院校的学生英语、数学基础普遍较差,在激发学生兴趣后,要趁机打消学生英语薄弱的顾虑,告诉他们其实在C语言里用到的英文并不很多,能看懂编译时出现的英文就行,教学过程把常见语句告诉他们中文意思就能解决问题。 2改革课程教学内容 将整个C语言语法知识分解为四个部分。每个部分让学生独立学习与独立参加考试,目的是为了让学生在上一个阶段掌握大部分内容的基础上去学习一个部分,直到全部内容系统地学完,现将课程内容大致分成如下四个部分: 第一部分 1.概述与算法基础知识 2.数据类型、运算符和表达式 第二部分 1.最简单的C程序设计——顺序结构程序设计 2.选择结构程序设计 3.循环结构程序设计 第三部分 1.数组 2.函数 3.结构体和共用体 第四部分 1.预处理命令 2.指针 3.文件 经过这样划分后整个学期教学过程就分成四个阶段进行,可以达到循序渐进的效果。 3以实例为引,讲解语法规则,转变学生学习动机、学以致用 对于职业院校的学生来说,学习语法不是学习C语言程序设计的真正目的,应该在掌握语法的基础上,通过上机实践,真正的让学生学会用C语言来解决各种实际问题,学以致用。教师应在开学初就让学生充分了解学习C语言并不难,然后在以后的教学过程中,要使学生在学习中得到快乐、尝试成功的喜悦,提高学习的积极性和主动性,让《C语言程序设计》真正成为学生喜爱的课程。 教师在教学过程中,不能一味地按书本去讲,而要多举些实际的例子,多与日常应用相结合,用C语言解决实际问题,使学生明白C语言的用处及其强大的功能。例如,在讲授for循环时,可以计算当前班级的所有学生的平均成绩,计算总分时,用for循环计算,最后把总分除以班级人数即可得到班级学生的平均分,这样就可以节省很多工作量,而且保证结果的正确性。在课上可先把一个简单的例子给学生演示一遍,然后告诉学生具体算法设计过程,再让学生上机调试,在调试过程中让学生由统计一门课程到统计一个学生多门成绩。让他们在调试过程发现光用循环语句不能达到目的,于是引导他们学习下阶段中的数组就能解决此问题,由此让学生在解决问题的过程中产生自学的意识。 C语言还是一门实践性相当强的课程。学好C语言,要理论与实践并重。学习中存在的疑点或难点,学生可通过上机调试得到明确解答,同时也加深对学习内容的理解。教师在上课时,给学生举的例子要当场演示,在多媒体教学电脑上编译运行程序,得出正确的结果,加深学生的印象。对学生而言,在每一次的上机前应做好充分准备,编写好上机内容。对上机中出现的问题应能调试分析,编写实验报告,分析程序结果。学生只有反复上机操作,才能对C语言有更深、更全面的认识和理解,才能逐步提高实际操作和学习的能力。 4改革上机操作的实践环节,让学生当学习的主人 程序设计课程是一门实践性很强的课程,包括课堂教学和实验教学两部分。实验教学是课堂教学不可缺少的补充,实验教学质量的好坏影响课程的整体教学效果和质量,只听不练是学不好的,因此必须多编程、多上机调试。只有经过上机调试,编写的程序达到了预期的目的才算基本上掌握了编程知识。因此,要加强实践性教学环节,主要从以下几方面着手。 (1)在教学计划的安排上要增强实践性教学的学时,最好达到理论和实验的学时比例为1:1。 (2)在教学过程中,作为教学主体的教师除了讲述理论外,应尽可能地开设习题课,引导学生思考和给予学生自己分析问题的锻炼机会。 (3)在有限的设备条件下,学校应尽量提供好的实践环境和实践机会,尽可能的开放实验室和部分机房,鼓励学生独立进行工作,培养独立思考的能力和创新精神。 (4)充分发挥网络媒体的作用。以校园网为平台组建班级学习论坛。将课件与相关的视频教程加载到论坛中,以便学生随时都可以学习。开辟学生讨论空间,让学生把自己编写的程序上传至论坛中,让学生互相学习比较,教师定期点评程序质量。 5改革成绩认定方式 引入多角度评定成绩的因素,建立客观全面的考核机制。改变传统的以一张考卷决定学生在本门课程的学习中是合格还是重修的方式。综合考虑学生每个阶段的考核结果的基础上,四个阶段分别占10%,25%,30%,35%。同时鼓励学生以证代考,如获得全国计算机等级考试中的二级C语言证书,或获得省级以上的程序设计大赛三等奖以的学生可以不用参加期末考试等,以此方式鼓励学生。 总之,C语言是一门非常优秀的编程语言,学生也知道在工作过程中非常有用。但由于C语言自身比较复杂和灵活,因而掌握起来有一定难度,但一旦激发了学生的学习兴趣,并在教学过程采取有效的方法与手段,让学生积极参与到实践中来,就能取较好的教学效果。 摘要:C语言功能强大,几乎所有高校都开设了《C语言程序设计》这门课程。本文就C语言的教学方法进行了探讨,并提出了几种可供借鉴的方法。 关键词:C语言,程序设计,教学方法,学习兴趣 参考文献 [1]张建珍.C语言教学方法探究[J].计算机教育,2007,(18). [2]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社,2006. [3]彭丽.ARCS动机设计教学模式在高校C语言教学中的应用软件导刊.教学技术2007,(11). 1 指针的概念理解 理解指针变量和普通变量的区别, 如:int a=1, b=2, *p=&a, *q;q=&b;前一条语句含义是定义变量a、b和指针变量p、q, 同时将变量a的值赋值为1和变量b的值赋值为2, 再将变量a的地址赋值给指针变量p;后面一条语句是将变量b的地址赋值给指针变量p, 这样就可以通过指针变量p和q间接访问变量a和b。如果通过这样枯燥的语言来表述, 对于一部分同学理解起来就有一定的难度。但是可以通过图示的方法来阐述。 如图1所示, 采用图示方法展示出普通变量a、b和指针变量p、q之间的关系, 指针其实是内存地址, 而内存中的单元是按字节编址 (每个地址编码对应一个字节空间) , 从图中也可以看出整型变量a和b分别占用二个字节的内存空间。同时也能看出每个指针变量也是占用二个字节的空间, 因为每个指针变量都是存储一个地址码。 2 指针的应用 在实际教学过程中, 特别是在实验教学过程中经常发现学生在指针的运用上很容易出现错误, 特别是在和数组的结合使用中。 2.1指针的初始化 指针的运用中必须先对指针初始化, 然后再使用。没有初始化的指针所指向的地址空间是一个不确定的内存空间, 对于一个不确定的内存空间进行操作, 会造成非法内存空间的访问, 甚至造成系统崩溃。 如例一中所示, 其中的指针变量p没有赋初始值, 在执行语句*p=i;时。因为指针p没有初始化, p所指向内存中的一个任意地址, 如果这个任意值恰好是一个空间的内存单元, 那么这个程序的执行就没有问题, 但是如果p所指向内存地址恰好是一个系统内存地址, 这样就会造成系统内存地址的非法访问而造成系统崩溃。 例1: 采用图示方法分析, 如图2中所示, 指针P没有一个确定的值, 它可能是其他任意的一个值。如果这个随机值恰好是3002, 那么在执行完语句*P=i:后。是将一个与例1程序无关的内存空间的值改变为i的值。 不同数据类型的变量, 占用的字节数不同, 系统把变量占据存储单元的第一个字节的地址作为该变量的地址。 a.间接访问运算 用变量名对其所对应的存储单元的内容进行读写称为直接访问, 而通过存储单元的地址对其内容进行读写的则称为间接访问。尽管指针变量中保存的是存储单元的地址, 而引入指针的目的主要是为了更方便快捷地访问存储单元的内容。间接访问是在引用的指针变量前面加一个“*”号, 用来表示指针所指向的存储单元的值或内容。 需要说明的是:在定义指针变量和在引用时“*”的含义是不同的。【int a=5, *p】中的“*”表示所定义的p是一个指针变量, 而在语句printf (“%d”, *p) 中的*p则是间接访问, 表示指针变量p所指向的存储单元的内容。由于指针的间接访问是访问存储单元的内容, 所以语句*p=&a在编译时也将出现警告错误。 b.指针变量加或减一个整型量, 从而得到另一个地址, 当然自增自减运算也是合法的。例如当指针变量p指向一个一维数组的首地址, 则p+n表示的是下标为n的元素地址。指针变量乘除一个整型量无意义, C语言也不允许此类语句出现。 c.由于指针变量中的地址也是一数值, 所以指针变量间也可以进行关系运算。 d.两个类型相同的指针变量可以相减, 例如指向同一数组的指针变量相减可以得到两个指针间元素的个数。相加或相乘则无意义。 由于++与*优先级相同, 且均为自右至左结合, 所以当用间接访问形式使得所指变量自加或自减时, 应使用括号。例如:指针变量p已指向变量a, 用间接访问形式使得变量a自加1, 应写为 (*p) ++, 即等价于a++, 但不能写成*p++, *p++是后面要介绍的一种指针运算, 所以必须要分开。 由于数组占据一块连续的存储单元, 且数组中的各元素的相对位置总是固定的, 所以对数组元素的引用除了使用下标外, 还可以使用指针运算来实现。 由于C语言中的一维数组名代表数组的首地址, 即数组的第一个元素所在存储单元的地址, 所以&a[0]与a是等价的, p=&a[0]也可写为p=a。 按照C语言的规定, 当指针变量p指向数组中的某一元素时, p+1则指向下一个元素, p+n指向后面第n个元素;同样, p-1指向前一个元素, 而p-n则指向前面第n个元素。当指针移动1, 系统内部移动的字节数, 取决于指针变量p的基类型。若为字符型则指针移动1个字节, 若为整型, 则指针移动两个字节, 依此类推。 当p指向数组a的首地址时, 表示数组元素a[i]有四种形式:a[i]* (a+i) * (p+i) p[i]。需要说明的是:指针变量与数组名相比, 可以进行自加自减或赋值运算。例如p++或p=p+n, 它们分别表示指针变量p指向下一个元素和指向后面第n个元素。而数组名一旦定义, 则所代表的地址是不能改变的。虽然* (a+i) 也能访问数组中每个元素, 但它是通过i的变化来实现的。 由于a[i]可以看作是一维数组名, 所以它代表该行的首地址, 因此, 二维数组a中的任一元素的地址既可以通过&a[i][j]求得, 也可以通过a[i]+j求得, 即&a[i][j]与a[i]+j等价。在一维数组的讨论中, a[i]与* (a+i) 等价。因此, 若将a[i]+j中的a[i]用* (a+i) 代换, 则二维数组元素的地址可用* (a+i) +j表示, 相应的数组元素表示为* (* (a+i) +j) 。 3 加强实验教学环节 实验教学也是课堂理论教学的重要辅助教学部分, 而C语言又是一门实践性比较强的课程。C语言中的指针运用非常灵活, 尤其是指针部分的内容对于多数同学难以掌握, 在实际编写程序的时候容易出现错误, 所以要进行实际的上机调试程序, 从中不断摸索和积累, 才能把指针内容掌握, 并加以灵活的应用。 结束语 C语言是一门计算机专业和相关专业的重要基础课程, 具有很强的灵活性。在进行C语言课程教学过程中, 针对整个课程的重点和难点的指针部分内容教学, 可以通过图示表示方法更加直观、形象的展示给学生, 方便于教师讲解, 另一方面通过上机实验教学加强理解和运用、使学生能够灵活掌握和运用指针进行编程。 摘要:C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、移植性好, 既具有高级语言的优点, 又具有低级语言的许多特点。C语言指针部分的内容是教学的难点, 本文通过图示方法来阐述指针的概念、指针的应用和指针与数组之间的联系。 关键词:C语言,指针,数组,图示方法 参考文献 [1]康莉.零基础学C语言[M].北京:机械工业出版社, 2009, 4. [2]谭浩强.C语言程序设计[M].北京:清华大学出版社, 2000. [3]王柏盛.C语言程序设计[M].北京:高等教育出版社, 2004. 关键词:高职高专 C语言 教学方法 教学改革 中图分类号:G64 文献标识码:A 文章编号:1672-3791(2014)11(c)-0179-01 随着计算机技术发展及普遍应用,学生的计算机技术基础教育已势在必行,由于C语言有功能丰富、目标程序效率高、可直接对硬件进行操作的诸多优点,成为各类高职高专院校中计算机技术基础教学的首选必修课,它是计算机专业和电类专业学生必不可少的基础课程。通过该课程的学习,学生可以掌握程序设计的基本方法并逐步形成正确的程序设计思想,还可以锻炼学生的逻辑思维能力,为后继课程打下基础。 1 课程教学存在的问题 学生缺乏学习兴趣和主动性。由于学生的基础差,学习积极性和学习动力不高,学习方法欠妥,逻辑思维和抽象思维能力普遍不强。使得学生在学习C语言复杂的基本概念和语法规则时,学习的难度比较大,学习的过程中感觉内容比较枯燥,很多原本基础就比较差的学生学习起C语言起来就更没有兴趣了,学习动力也不强,难以正常开展C语言课程的教学。 传统教学的效果差。在传统的C语言教学模式中,授课重点总是放在程序设计语言的基本语法和基本结构上,这种老师讲学生听的灌输模式虽然能较好地保证知识的系统性与完整性,却忽略如何培养学生的程序设计能力和思维创新能力,使得学生学习C语言的积极性不高,达不到好的教学效果。 教学互动性差。教师上课只是一味的讲解知识点,课后只是简单地布置一些课后习题,只是让学生重温一下教学内容。由于缺乏有效的监督检查,学生可以通过网络等其他途径来寻找答案,至于是不是自己独立思考完成的,就不得而知了。 实践教学安排不合理。C语言的实践教学学时总是少于理论教学学时,不利于更多的开实践教学。实践教学中只是老师简单的布置几个上机题目,让学生自己编写程序,没有具体的实验步骤和实验安排以及考核标准。 2 教学方法的改革与实施 提高学生的学习兴趣。由于C语言本身的难度,使得C语言教学课程比较抽象。只有把复杂难懂的程序简单化、才能激发学生的学习兴趣,将程序具体化,生动形象展示出来,让学生多了解C语言发展历史,用具体的实践成果给学生演示C语言的功能和作用,才能使得学生更主动地学习C语言,从而提高学生的学习积极性,增强学生的自信心。教师可以把一个比较大的案例,让学生们自己组成一个个的小组,将案例拆分成一个个小案例,再合作解决。这样学生们可以在一起互相探讨解决方法,协作完成一些遇到的問题,通过探讨问题,解决问题的过程,可以锻炼学生综合应用知识的能力、培养其创新能力和团结协作精神。 合理的选择教材。教师可以选择适合高职高专学生水平的教材,本科教材偏难,不适合高职高专的学生。为了提高高职学生的阅读效率,应该选择通俗易懂、概念清晰、强化编程思想、注重实用性的高职高专优秀教材。如果能够选取采用项目驱动法的教材,由于整本书围绕一个项目展开,根据C语言的知识体系将整个项目分割成一个个的模块,这样就可以更好地开展实验教学,通过这些模块的实践操作,更好地掌握C语言编程技巧。 采用互动教学模式。所谓互动式教学,就是通过营造多边互动的教学环境,在教学双方平等交流探讨的过程中,达到不同观点碰撞交融,进而激发教学双方的主动性和探索性,达成一种双赢的教学效果的一种教学方式。基于C语言这门课的特点可以采用探讨式、案例式、陷阱式等多种互动方式教学。互动式教学是一个全体的过程,要促使每个学生积极参与其中,而决不能只局限个别优秀学生与老师之间。有些学生有发言欲望但是过于腼腆,还有些学生学习积极性不高,这就要通过各种方式推进互动。理论课结束后,鼓励学生通过电子邮件的方式,处理课堂遗留的问题,并对教师的教学方法提出一些建议。实验课结束后,提交实验报告,不仅仅是提交代码,更要记录下调试过程和解决思路,鼓励一题多解。同时合理的实践环节可以提高学生的求知欲,设计一个短期任务与长期任务相结合的上机任务,时刻调动学生的学习兴趣。在互动式教学方式中,教师尊重学生的个性以及性格的多样化,教与学双方民主、自由,都以积极主动的状态参与活动过程。学生在教学活动中从被动接受知识转变为主动学习的角色,从“要我学”转换成到“我要学”,教师从单纯的灌输知识转变成抛砖引玉,引导学生自主学习的角色,真正实现了教与学的双赢。 完善考试方法。由于C语言程序的特点,应该更加强调实验考核的重要性,实验考核应该采用期末上机考核和平时编程考核相结合的方式,上机考核则最好使用能自动改卷、自动评分的考试软件,平时编程考核则包括基本训练(自测作业和课后作业)和综合训练(课程设计)的完成情况,引导和督促学生平时多编程,编好程。 3 结语 在高职高专的C语言教学中,应多从学生的角度去考虑,让学生能更顺利地理解所学内容,并能灵活掌握所学知识点,培养程序设计的思想,提高程序设计的能力,为后面的相关课程打下坚实的基础。由于高职高专的学生基础差,欠缺自我约束和自我控制的能力,因此如何进一步改进教学模式和教学方法,以取得更好的教学效果,仍需要在今后教学中不断地实践和探索。 参考文献 [1]廖雷.C语言程序设计基础[M].北京:高等教育出版社,2006. [2]郝杰.高职高专电气类专业C语言课程教学探讨[J].民营科技,2009(11):37. 当今计算机已广泛应用于社会生活的各个领域, 并向普及化方向发展。对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语言专业教学探讨】推荐阅读: C语言教学网站09-04 C语言教学中指针07-13 C语言教学方法09-26 C语言教学改革10-08 C语言中指针的教学05-29 单片机C语言教学06-30 探讨幼儿的语言教学07-03 C语言程序设计2教学大纲10-16 c语言程序设计课程教学大纲20107-26 《C语言程序设计》双语教学的实践与思考06-15C语言专业教学探讨 篇6
C语言教学改革探讨 篇7
C语言函数教学方法探讨 篇8
《C语言程序设计》教学探讨 篇9
C语言指针教学方法探讨 篇10
C语言专业教学探讨 篇11
C语言程序设计教学探讨 篇12