c语言范文

时间:2023-11-03 01:30:22

c语言

c语言篇1

关键词: C程序设计 运算符 预算顺序 算法 结构

一、引言

现在许多院校的计算机专业开设了C语言课程,将其作为学生学习程序设计技术的入门课程,这与C语言的特点是分不开的。C语言不但可以编写系统软件,而且可以根据用户的需要编写出满足用户要求的应用软件,尤其是C语言具有很好的对计算机的硬件编程能力。同时,C语言具有逻辑性强、处理问题周密、严谨的特点,是集知识和技能于一体,实践性很强的课程。学生通过学习C语言可掌握程序设计的一些基本方法和技巧。然而C语言的数据类型较多、表达式丰富、语法结构较复杂,是一门教师难教、学生难学的课程。

《C程序设计》的内容很丰富,按照我们现在的教学大纲,教学的主要内容是基础知识、四种结构的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,多进行练习和上机调试。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不要气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了。学习C语言始终要记住“曙光在前头”和“千金难买回头看”。学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识。这是我们学生最不易做到的,然而却又是最重要的。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C语言知识。那么,我们到底该如何学好《C程序设计》呢?

二、奠定基础――了解、学好运算符和运算顺序

C语言的运算非常灵活,功能十分丰富,运算种类远多于其他程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单。但初学者往往会觉得这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来会得心应手,而有些可暂时放弃不理,等用到时再记不迟。对于运算符的优先级也是必须明确的。《C程序设计》运算符可分为15种优先级,从高到低,优先级为1―15,且除第2、3级和第14级为从右至左结合外,其他都是从左至右结合,它决定着同级运算符的运算顺序。这里就给大家介绍一个优先级口诀:

括号成员第一

全体单目第二

乘除余三、加减四

移位五、关系六

等于(与)不等排第七

位与异位和位或

“三分天下”八九十

逻辑或跟与

十二和十一

条件高于赋值

逗号运算级最低。[1]

下面我们来举个例子:

a=3;b=5;c=++a*b;d=a++*b;

对于c=++a*b来说,按表中所列顺序,++先执行,*后执行,所以++a执行后,a的值为4,由于++为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了。而对于d=a++*b来说,由于a++为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20。

三、砌砖垒墙――了解、学好四种程序结构

(1)顺序结构

顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。例如:a=3,b=5,现交换a,b的值。这个问题就好像交换两个杯子的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c=a;a=b;b=c;执行结果是a=5,b=c=3。

(2)分支结构

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。那么就先来简单介绍一下二分支选择结构。C语言的if语句有两种基本形式,即独立的if结构和if-else结构。[2]其语法形式如下:

1)独立的if结构

if(表达式)

语句

2)if-else结构

if(表达式)

语句1

else

语句2

再来看一下分支嵌套的语法形式

if(表达式1)

if(表达式2)语句1

else语句2

else语句3

(3)循环结构

循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构。C语言中提供四种循环,即goto循环、while循环、do-while循环和for循环。[3]四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do...while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。对于它们的异同点,我们也应该了解,明确:用while和do...while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式,后执行循环体,而do...while循环是先执行循环体后判断表达式,也就是说do...while的循环体最少被执行一次,而while循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和continue语句进行控制的。[4]在这里介绍一下三种常见循环的一般格式:

1)while循环:

while(表达式)

循环体

2)do-while循环:

do

循环体

while(表达式)

3)for循环:

for(表达式1;表达式2;表达式3)

循环体语句(组)

(4)模块化程序结构

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写。因此常说:C程序=主函数+子函数。因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。[5]

其实,顺序结构、分支结构和循环结构并不是彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,但是不管哪种结构,我们均可广义地把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。[6]

四、修饰――掌握一些简单的算法

所谓算法,就是解决某类问题的方法。确切地说,就是对某一类特定的问题,给出解决该问题的一系列(有穷的)操作,而每一操作都有其确切的意义,并在有限时间内可以计算出结果。一个算法有多少个输入量,它是问题给出的初始数据,经过算法的实现,它有一个或多个输出量,这就是算法对输入运算的结果,即问题的解答。《C程序设计》教学大纲,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。[7]如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如要将两个变量X、Y的值交换。

用自然语言描述如下:

步骤1,将X值存入中间变量Z中:XZ。

步骤2,将Y值存入变量X中:YX。

步骤3,将中间变量Z值存入Y中:ZY。

用伪代码可表示如下:

BEGIN

xz

yx

zy

END

当然还可以用流程图表示,这里就不列举了。

五、结语

在大学里,许多学C语言的人,都有着不同的目的。有的人是认真对待每一门所学的课程,包括C语言,有的人是对程序设计有着浓厚的兴趣,还有的人只是为了获得学分而学习C语言。这样,一部分人会觉得C语言容易学,一部分人又会觉得C语言难学,还有一部分人会觉得C语言容易学,但是不会编写程序。这样就导致了学习C语言效果的差异。其实,学习C语言并不是进行一种职业培训,而是一种综合思维的训练。我们应当正确认识什么是程序,并学会一种思考问题的方法,初步掌握用C语言来进行程序设计。

参考文献:

[1]田祥宏,荣政.C语言程序设计.西安电子科技大学出版社,2007.

[2]李丽娟.C程序设计基础教程.

[3]Stephen Prata著.云巅工作室译.C Primer Plus.

[4]Kenneth A.Reek著.徐波译.C和指针POINTERS ON C.

[5][Bryant02]Bryant、O’Hallaron.深入理解计算机系统(Computer Systems:A Programmer’s Perspective).

c语言篇2

关键字:C语言;编程;课堂教学

C语言是一门实用性很强的编程语言,它的教学目的是让学生通过课堂理论知识的学习和上机课的实践操作,掌握一定的语法规则和编程能力,为今后的程序设计和软件开发做好准备。同其他计算机语言类一样,C语言语法规则多,知识点琐碎且枯燥,往往在课程开始,学生还有些学习兴趣,但是随着内容的不断深入,使用方法随之灵活多变,使得学生变得摸不清头脑,学习兴趣和学习态度受到影响。因此如何上好C语言课,是目前老师和学生们面临的共同难题。

一、存在的问题

目前,各院校计算机专业学生对该门课程存在着很多问题。首先,学生对这门课没有明确的学习目的与态度,很多人认为该门课程就是介绍C语言的一些概念、语法规则等基础知识,另有一些学生则认为跟其他的程序开发语言,如,Java、C#等相比,C语言已经过时,用处不大。其次,我们的教师在C语言的课堂讲授上大多数还停留传统的基础上,没有创新,授课还是以基础语法的讲授和掌握为主,虽然这使得学生系统和完整地学习了理论知识,但却忽略了学生的编程能力和思维能力的培养,造成学生被动式的接受教育,因此他们积极性并不高,学习兴趣不强。在上机课过程中有的学生过分依赖书本,每次上机,学生就拿着书本上已有的代码来验证算法,因而对知识的运用上缺乏灵活多变的能力。第三,虽然课后我们布置了一些题目让学生们去巩固课堂上的知识点,但是因为缺乏对过程的监督,大部分学生根本不是通过自己独立思考来完成的,而是抄袭网络或者一些教材上的案例,因此教师根本无法真正检测学生是否学会所讲授内容。

二、可采用的措施和方法

针对在教学过程中可能存在的问题,可采用以下措施来进行改进。

1.重视第一次课,让学生对C语言产生的良好印象

学生们以前从未接触过C语言,对此既好奇又有所畏惧。第一次课课堂效果的好坏,直接影响到今后学生对这门课程的学习兴趣和积极性。因此,可以在第一次课时讲解一些能够被学生所接受的内容。比如:给学生展示一些C语言编出的小游戏,激发学生的好奇心。向学生展示C语言的重要性。给学生讲解C语言的编译环境,了解程序执行过程等。

2.采用自上而下、逐步细化和模块化的程序设计思想

也就是先整体规划设计,再确定具体方案,最后进行各部分的设计。用这种方法便于验证算法的正确性,在向下一层展开之前仔细检查本设计是否正确,正确后再向下一步细化。如果每一层的设计都没有问题,那么整个算法就是正确的。如果在调试的过程中出现了错误,也方便查找原因。另外,在程序比较复杂的时候,还可以采用模块化的设计,根据程序的功能将其划分为若干的子功能模块,如果子模块还太大,那么就继续划分成二级子模块。通俗一点来讲,就是将一个大的任务分成若干个子任务,这样的话每一个子任务完成起来就要简单多了。

3.多次讲解,反复练习,熟练掌握

由于C语言程序书写很自由,它的运算符又多样化,这使得学生在某些问题上经常犯一些小的错误,比如,书写符号不规范,变量的类型搞不清,缺少句末符号,丢三落四的的情况经常出现。针对这类问题,我们可以采用反复讲解,重复练习,让学生彻底改掉这些小的毛病,直至规范。

4.培养学生的编程能力

由于很多学生的数学底子比较薄弱,逻辑思维能力不强。因此对于C语言这类程序设计课程的教学带来了一些困难。所以课题上,我们除了要加强学生在计算机基础能力的训练上以外,还要讲解一些数学知识及逻辑知识。比如,我们在向学生讲解一道等差数列的程序算法之前,可以先让学生重新回顾一下中学时代所学的等差数列的概念及相关计算公式,然后再运用到我们的程序上,这样循序渐进,学生才容易接受。对那些带有复杂的数学公式的算法要大胆取舍,看清哪些适合于学生。这样虽然学生少学了一些复杂深奥的东西,但是降低了学习的难度,增强了他们的学习信心和积极性。这样自然也对学生编程能力的培养起到了推动作用。

5.重视上机实践

要想学好C语言,上机实践课非常重要。学生上机操作做好了,才能树立编程的信心,才能够产生成就感,激发他们的学习热情。在上机实践课之前,我们可以先给学生布置好题目,让学生有充分的时间为此做准备,教师可采用引导的方法给学生一些提示,比如要用到哪些算法,函数,整个程序的结构设计包括哪些模块等等。在上机过程中,也给予学生适当的指导,多多鼓励学生,不要仅仅局限于课本上的条条框框,而要引导学他们向创新思维飞跃。上机课结束后,要及时查看学生的实训效果,而不能不管不问,让学生知道老师对他们的评价,对他们所做的及时给予认可,要让学生知道,编程并不像他们想象中的那么难,只要肯动手动脑,就能做到。

三、结束语

我们知道,任何的教学方法都不能涵盖所有的教学内容。在实际教学过程中,我们要善于综合运用各种教学方法,结合学生的实际情况,不断总结,找到最适合他们的方法。C语言教学方法的改进也不是一蹴而就的,我们要以学生为中心,围绕学生开展教学,不但让学生充分认识该课程的重要性,也要让他们掌握正确的学习方法,并以提高他们的编程能力和动手实践能力为目标。这样,才能适应现代职业教学的理念,为我们的社会培养出优秀的人才。

【参考文献】

[1]谭浩强.《C程序设计(第三版)》[M].北京:清华大学出版社.2005.[2]冉崇善.《C语言程序设计教程》[M].北京:机械工业出版社.2009:11.

c语言篇3

1、C语言是高级语言。

2、机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。

3、汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

4、高级语言主要是相对于汇编语言而言的,是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。

(来源:文章屋网 )

c语言篇4

C语言并不是绝对意义上最快的语言,但是它的效率非常好,在切合大部分机器模型并给出统一抽象的基础上,几乎没有其他语言做得更好了。这也是C语言哲学的一部分:在统一硬件抽象模型的基础上,尽可能地利用所在硬件环境的一切资源。对于把C语言作为自己唯一开发语言的程序员来说,很有必要开拓自己的眼界,这样才能更为清晰地理解C语言的内在精神。并不是说,某某语言本身是用C语言来实现,那么C语言就可以以同样的方式,解决那种语言解决的问题(甚至更为高效)。一些C语言中的概念,到了另一种语言中,很可能用完全不同的方式展现出来。正如自然语言会影响人的思维方式一样,编程语言一样会影响人对某种算法的编码形式。在C里,我们总以为某些写法是自然而然的,但换了种语言很可能并不尽然。

无论如何,C语言的语法和设计影响了许多其他语言,最为彻底的是C++,以及大多数程序员都能叫得出名字的一些流行语言:Java、PHP、JavaScript、Perl、C#、D、Objective-C等。这给人造成一种错觉:新的语言取代了旧的,对旧语言做了改良和完善。最广泛传播的观点是,C++是C的一个超集,它能做C能做的所有事情,且能做得更好。持有这种观点的C++程序员们甚至把已有的各种C代码用C++重新实现。但实际上,C和C++更应该被看成是相互平等的存在。C++更像是一种借用了几乎全部C语法(但还是有细微差异)的全新语言。它们在很多方面都有设计理念上的差异。C++企图完全兼容C的语法却不想完全继承C语言的理念,这使它背负了巨大的包袱。而C的另一个继任者:Objective-C,抛弃了一些东西,则显得清爽一些。

回顾C++出现的时代背景是把面向对象当成解决复杂问题的“银弹”的年代。这使得C++在发明之初,迅速占领了大量原本是C语言的市场,甚至被看成是C语言的替代品。但C++的拥趸们并没有等到这一天。历史证明,面向对象也不是“银弹”。最近十年,C++的粉丝们从C++语言的犄角旮旯里挖掘出来的各种武器,让C++语言变成了包含多种编程范式的巨无霸,却并没有让解决问题变得更容易。这并不完全是语言的问题,可能有很大程度上是面向对象等开发方法本身的问题。这也证明了C语言保持自身的简洁正是其生机昂然的源泉。

对于C语言不是母语的程序员来说,有充分的理由去学习一下C语言。那是低投入、高产出的。它会使你学会在硬件层次上思考问题(这或许对你是一个新的思维角度),而且C语言已经非常稳定,不会再有(它本身也不希望有)大的变化,不用担心学到的知识会过时。C语言在1990年制定出一个现在通行的标准(C90)以来,在C的主流开发社区中几乎没有变过。虽然,从1999年开始,C语言委员会几经修订C语言的新标准(C99),但似乎并不被广泛接受。虽然有很大程度上,这是源于世界上最大的C/C++商业编译器提供商微软对其不感兴趣,但在开源界,即使有GNUC对C语言新标准的不断推动,那些实际用C语言做开发的大佬们还是纷纷表示,新的标准还不是很成熟。新的特性也不是特别有必要。

C语言从语言角度上讲,最大缺陷在于要求程序员自己去做内存管理。用C语言去处理复杂的数据结构,程序员大部分的时间都花在了这上面,并且滋生了无数Bug。调试C程序变成了一项独立于编写C程序的技能。防止缓冲区溢出、防止数据读写越界、正确的动态回收内存、避免悬空指针,这些在大部分语言看起来不可思议的关注点,在C语言程序员眼里变得稀松平常,甚至是衡量C程序员技能经验水平的重要标志。可要知道,这些和具体问题的解决过程无关。

这个问题在一定程度上也促使了Java的诞生。Java采用虚拟机和字节码的方式改造了底层的机器模型,并在底层模型的基础上加入了垃圾回收机制,并在语言层面取消了指针。在C语言的原生地,也有更多的动态(脚本)语言出现。先是有Awk这样的简易语言,后有Perl,再是Python等的流行。在Unix风格下,程序员倾向于为特定领域设计特定的语言。C和Unix的设计哲学是一体的。它们都鼓励清晰的模块化设计,让模块之间独立,再用薄的胶合层联系起来。脚本语言在现代类Unix系统上大量出现并充当这种粘合工作就是一种发展必然。而原本的充当粘合部分的脚本语言,也逐步发展起来,远远超出脚本的用途范畴。作为程序员,尤其是C程序员,必须对它们有所了解并掌握其中的一些,才能适应现代的挑战。

我们不应该指望一门语言解决所有的问题。至于C语言本身,它将在很长的一段时间,带着它的优点和缺陷,继续扮演它在计算机世界中重要的角色。

作者单位:徐州空军学院基础部

参考文献:

[1]严桂兰.C语言程序设计与应用教程[M].福建:厦门大学出版社,2001.

c语言篇5

关键词:C语言;C语言学习;C语言技巧

中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)12-21713-03

Shallowly Discusses the C Language Learning Skills

CHEN Wu

(Electronic Information Institute of Yangtze University, Jingzhou 434023, China)

Abstract:C language as a broad international popular computer language, Over the years we have been like to learn but difficult to learn. This article is Based on a brief introduction to the C language, combined with years C language learning experience of the author, analysis of the skill of learning C language and participation computer rank test.

Key words:C language; C language studies; the C language skill; C program

1 学习C语言的意义

一提起C语言,大家就有说不出的忧与喜,为什么呢?很多人都认为它难学,但如果学进去了,就会觉得其乐无穷。

在学习C语言之前,我们先了解一下C语言的发展史。C语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的DEC PDP-11计算机上使用。它由早期的编程语言BCPL(Basic Combind Programming Language)发展演变而来。在1970年,AT&T贝尔实验室的 Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致C语言的问世。随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。

C语言是国际上广泛流行的计算机语言,既可以用来写系统软件,也可以用来写应用软件。许多著名的软件,如DBASEⅢ PLUS、DBASEⅣ 都是由C 语言编写的。学好C语言,可以为以后学习其他语言打下一个良好的基础,比如网络编程语言PHP的绝大部分内容与C语言相同,如果学过C语言,那么再学PHP就会非常轻松。

2 TC2.0的使用方法

TC2.0是TURBO C2.0的简称。Turbo C是美国Borland公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。该公司在1987年首次推出Turbo C 1.0产品,1988年,Borland公司又推出Turbo C1.5版本,增加了图形库和文本窗口函数库等,而Turbo C 2.0则是该公司1989年出版的。TC2.0下载好后,要安装在C盘的根目录下,也就是地址C:\TC下。安装好后,打开TC的应用程序,将出现以下界面:

其中顶上一行为Turbo C 2.0主菜单,中间窗口为编辑区,接下来是信息窗口,最底下一行为参考行。这四个窗口构成了Turbo C 2.0的主屏幕,以后的编程、编译、调试以及运行都将在这个主屏幕中进行。其实,上面这么多的菜单栏,只要掌握几个功能就行了。首先,按F10键,进入主菜单,用键盘上的“”和“”键可以选择菜单中所需要的菜单项,被选中的项以“反相”形式显示(如菜单中的各项原来是以白底\字显示,选中后就会改为\底白字显示)。此时按回车键或者“”键,就会出现一个下拉菜单。开始选择File的下拉菜单中的new选项,创建一个新的文件,当把源程序编写好后,按F9键,完成编译和连接,这时屏幕上会显示编译或连接时有无错误的信息框,按任意键,信息框消失,光标停留在出错之处。修改完毕后,再按F9,再次进行编译与连接,直到不再显示出错为止,再按Ctrl+F9组合键,系统就会执行程序,如果需要输入数据,则应从键盘输入数据,按回车键后,再按Alt+F5查看结果。最后选择File下拉菜单下的Save或者Save as保存,Save是保存在默认目录下,Save as是自己选择目录保存。最后按Alt+X关闭窗口。在使用TC时一定要习惯使用键盘,虽说有些版本的TC可以使用鼠标进行操作,但在计算机二级考试中的TC可不能用鼠标。再提一点,就是TC2.0与TC3.0的区别,最明显的是在TC2.0中有很多头文件不用加上去,但用TC3.0编写程序时,在每个程序的开头,都要加上#include(stdio.h),如果要进行算术运算,就要加上#include(math.h),而这些在TC2.0中都不需要加。

3 C语言内容概述

C语言的内容大致可以分为这么几块:(1)C语言的运算符与运算顺序;(2)C语言的三种基本程序结构,顺序,选择,循环;(3)数组;(4)函数;(5)指针;(6)结构体与共用体;(7)文件。本文针对这些内容,每一块简要介绍几句,也许对大家的C语言学习有些许帮助。

3.1 C语言的运算符与运算顺序

学好C语言的运算符和运算顺序,这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后就会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用时再记不迟。

3.2 C语言的三种基本结构

C语言的三种基本结构是构成程序的最基本的框架,顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如选择结构中的复合语句、循环结构中的循环体等。在学习选择结构时,要注意它的嵌套使用,也就是一个if语句中又有一个if语句,在if的判断语句中要注意一个问题,就是=与==的区别,比如if(b=1)与if(b==1),在执行完if(b=1)后,b的值为1,而执行完if(b==1)后,b的不变。在循环语句中,要注意break与continue的用法与区别,break语句是使程序从循环体中退出,从而结束循环;而continue语句是结束本次循环,进入下一个循环。

3.3 数组

数组就是一个同类元素的集合,也就是说,一个数组中的元素必须是同类型的,数组主要有一维数组与二维数组,而二维数组的本质就是一维数组,说通俗一点,二维数组就是把一维数组拆成了几行。要注意对二维数组的几种定义与初始化的方法:

(1)可以只对部分元素赋初值,未赋初值的元素自动取0值。

例如:int a[3][3]={{1},{2},{3}}; 是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值为:1 0 0 2 0 0 3 0 0。int a [3][3]={{0,1},{0,0,2},{3}}; 赋值后的元素值分别为 0 1 0 0 0 2 3 0 0。

(2)如对全部元素赋初值,则第一维的长度可以不给出。

例如:int a[3][3]={1,2,3,4,5,6,7,8,9}; 可以写为:int a[][3]={1,2,3,4,5,6,7,8,9}。

C语言中,只能单个引用数组元素,而不能一次引用整个数组元素,在对数组进行引用与赋值时,要学会使用循环语句。还有一点就是要注意把字符串赋给数组的几种方法。

3.4 函数

函数是C源程序的基本模块。从函数定义的角度看,函数可分为库函数和用户定义函数两种。C语言的函数兼有其它语言中的函数和过程两种功能,从这个角度看,又可把函数分为有返回值函数和无返回值函数两种。从主调函数和被调函数之间数据传送的角度看又可分为无参函数和有参函数两种。函数定义的一般格式:

[数据类型] 函数名([形式参数])

{类型说明;

语句;}

函数一般都有返回值,用return语句返回返回值。要学会函数的递归调用与嵌套调用,注意函数的值传递与地址传递。

3.5 指针

有人说,指针是C语言的灵魂,它C语言中广泛使用的一种数据类型,学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要做到这些,指针也是不难掌握的。假定P是指针,那么P就是指针变量,它的内容是地址量,*P是指针的目标变量,它的内容是数据,&P是指针变量占用的存储区域地址。把整型变量a 的地址赋予p可以有以下两种方式:

(1)指针变量初始化的方法

int a;int *p=&a;

(2)赋值语句的方法

int a;int *p;p=&a;

不允许把一个数赋予指针变量,故下面的赋值是错误的:int *p;p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 也是错误的。指针与数组的联系也是十分密切的。有如下例子:

int *p,s[10];

P=s;

可以用&s[i],s+i,p+i来表示s[i]的地址。

int *p,s[10][10];

p=s;

可以用&s[i][j]和p+i*10+j来表示s[i][j]的地址。

把字符串的首地址赋予指向字符类型的指针变量。例如:char *pc;pc="c language"; 或用初始化赋值的方法写为:char *pc="C Language"; 这里应说明的是并不是把整个字符串装入指针变量,而是把存放该字符串的字符数组的首地址装入指针变量,要特别注意指针作为函数参数时,可以在调用一个函数时得到多个由被调函数修改的值,还有返回指针的问题,许多库函数都是返回指针值,在调用时一般都要设立相应的指针来接受返回值。

3.6 结构体与共用体

结构和联合是两种构造类型数据,是用户定义新数据类型的重要手段。要学会结构体与共用体类型数据的定义方法和引用方法与用指针和结构体构成链表,链表的建立、输出,这些是以后编写一个大型程序必不可少的。

3.7 文件

C系统把文件当作一个“流”,按字节进行处理。C文件按编码方式分为二进制文件和ASCII文件。C语言中,用文件指针标识文件,当一个文件被 打开时,可取得该文件指针。文件在读写之前必须打开,读写结束必须关闭。文件可按只读、只写、读写、追加四种操作方式打开,同时还必须指定文件的类型是二进制文件还是文本文件。文件可按字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写。文件内部的位置指针可指示当前的读写位置,移动该指针可以对文件实现随机读写。

4 C语言的学习技巧

有人说,C语言的学习就是一个体力活,也就是说,要勤上机。对此,笔者深有感触,可以说学习C语言的过程就是上机的过程。在学习C语言的第一个星期,笔者花了三个小时看书,十五个小时上机。那时,刚接触C语言,不知道从何下手,但笔者悟出了一个道理,就是学习任何一种语言,都要从软件方面着手。到网上查阅资料后,找到了TC2.0,下载安装好后,就照着书本操练起来。当时,笔者对C语言的语法一窍不通,就是照着书一个字母、一个字母的往上敲,边敲边看书上对这个程序的解释,敲完后,就运行程序,但界面上显示在程序中还有几处错误,又照着书一个一个字地对,发现不是这儿少了一个分号,就是那个单词打错了,改过来再次运行就成功了。有时,一个程序调试了半天就是找不到错误所在,就有点泄气了,但是,万事开头难,只要度过了这个难关就好了。就这样,不停的敲程序,不停的改,逐渐有了些感觉。学习就是要有兴趣,有兴趣了就可以学好任何东西。在对C语言地一些基本的语法有所了解后,就尝试着对书上的程序进行一些改动或者自己编写一些小程序,看看改了某个地方后程序会发生什么变化,如果发生了变化,就考虑为什么会发生这些变化,如何消除这些变化,就这样对这些程序进行剖析,对C语言有了更进一步的了解;有时,当脑海中有了某些想法时,就在计算机上进行模拟,当然这些想法有时会成功,有时会失败,每当成功了,就有一种成就感,失败了也不气馁,这样对C语言的兴趣逐渐浓厚起来了,有时一下课笔者就往机房跑,把自己又有的想法与疑惑到电脑上进行试验。学习C语言时,不要怕看长程序,自己多分析几个长的程序后,再去看那些短的程序时,一眼就可以看出程序的目的。

下面再来谈一谈计算机二级考试。全国计算机二级考试每年四月份与九月份各举行一次,由笔试与机试两部分组成,笔试120分钟,机试60分钟,笔试部分又有两部分组成,公共基础知识与C语言程序设计知识,只有选择题与填空题。机试只有三道题,填空,改错与程序设计。笔试只要把历年的考试题做完就可以了,而机试是从一百套题中抽出来的,那一百套题的题库是公开的,考试前把那一百套题做一遍就应该没问题了。在进行机试时,一定要注意这几个问题:做填空题时,一定要把空的下划线去掉,做填空与改错时不要增行删行,因为机试是电脑评卷,电脑在改这两题是是逐行逐行的扫描,一旦发现哪一行与标准答案有不相符的地方就会判为错误,哪怕写对了。做机试题目时,一定要有输出结果,不然就会没分,还有如果题目中这样说:请设计一个程序,将一个数的奇位输出,比如输入7654321,那么就要输出7531。当你把程序修改完或设计好后,一定要输入7654321,而不要输入其它数,电脑评卷时是要看你的结果的,如果结果不是7531,而是其它,可能会判你错。最后做完题一定要保存,最好选择save,而不选save as。

参考文献:

[1]谭浩强. C语言程序设计[M]. 第二版.北京:清华大学出版社,2005.

[2]全国计算机等级考试全真笔试+上机考题解答与训练[M]. 电子科技大学出版社,2005.

[3]全国计算机等级考试二级教程――C语言程序设计[M]. 高等教育出版社,2002.

[4]全国计算机等级考试考试大纲.2006.

c语言篇6

关键词:面向对象的程序设计;内存分配;封装;STL;多线程技术;软件工程

现代操作系统的诞生和发展与C语言是密不可分的,因此C语言是非常重要的程序设计语言。C++在C的基础上增加了面向对象的概念,从而具备了现代编程语言的一切特征。C和C++是密不可分的,在计算机软件领域,提到C或者C++时,实际上都是指C/C++。对于计算机及信息类专业的学生,甚或对计算机软件从业人员,C/C++无疑占据着无可替代的核心位置。和C/C++语言本身的重要性相比,目前大多数高校的C/C++课程设置和教学内容却相对落后,这和教材建设滞后相关,也和教材编著者缺少应用实践经验有很大关系。

程序设计是一门实践性非常强的课程,因此整个教学环节应该以应用为导向,以上机实验为手段,不断强化和巩固各种基本概念和核心技术,才能培养出能胜任实际工作的合格毕业生,让学生在走向工作岗位的第一天就具备很强的竞争力。

现在,计算机和网络已经非常普及,这为教学提供了极为方便的实践手段,与其他专业相比具有天然的优越性。然而,也正因为计算机和网络的普及,竞争也变得异常激烈,仅仅掌握一点基础知识,满足于完成课本作业,已无法适应当前的就业形势。如何在激烈的就业竞争中胜出,是每个大学生从入学第一天起就必须正视和严肃面对的问题,也是每个高校教育工作者需要不断思考和探索的重大课题。

1以C++为重点,强调面向对象的程序设计思想

目前,大多数高校信息类专业将C和C++作为

两门课程分开教学,并且主要以C语言为主,C++甚至成为选修课程。这一方面是出于课时划分的需要,另一方面也和当前流行的教材相关。这样的划分虽然秉承了C语言和C++语言的发展历程,却忽略了现实需求。现代程序设计以对象为基本概念,以面向对象的设计为核心思想。面向对象的程序设计应该是程序设计的起点和基本要求,没有对象这个概念,软件设计无从谈起。

但是和Java等纯面向对象的编程语言不同的是,C++语言一开始就继承或者说兼容了C语言的几乎全部特征。因此,它并不是一个纯面向对象的程序设计语言,这大大增加了它的复杂性。必须强调的是,C++语言的复杂性虽然增加了学生学习的难度,但是正因为它兼容了C语言的语法特征,使其具备了直接操作内存的能力,从而成为开发系统级软件和大型软件的不二选择,其重要性也是其他语言不能比拟的。掌握了C/C++,就等于拥有了通向软件设计领域的金钥匙。另一方面,所有的程序设计语言都是相通的,掌握了功能强大、既能接近系统底层又具有高级语言全部特征的C/C++程序设计语言,再学习其他高级语言就会轻车熟路。

合理分配C和C++的教学时间,将重点转向C++,是一个艰难但重要的选择。这需要好的教材,也需要好的教学计划。C和C++是分不开的,不应该将其割裂开,要从起点就强调面向对象的概念。

在教材内容设置上,可以分为基础篇和高级篇,这样既利于学生循序渐进,也利于学时划分。基础篇应包括C和C++的基本概念和语法,如基本数据类型、指针、函数、类的基本概念,对象的生命周期、对象的内存映射等。高级篇应包括类的高级特征和复杂应用,并以最新的C++标准为基础,培养学生解决复杂和实际问题的能力。如何合理划分教学内容,需要不断地探索。高级篇的内容可以集中教学,也可以作为其他课程的实践部分进行。

2以内存分配和管理为核心,强化专业训练

由于具备了直接操作内存的能力,C/C++语言的功能变得十分强大,复杂性也大大增强。内存概念应该是编程学习和实践的核心,是教学与实践的重中之重。和内存相关的主要概念有:指针、引用、数组、结构、对象生命期、栈、堆、函数参数传递等。

现实中使用某软件时,经常会遇到“程序崩溃”现象。这几乎都是由于不当的内存访问引起的,其本质原因是程序中存在严重的逻辑错误。在编译时,编译者不一定能够及时发现这些错误,但在运行时,当错误逻辑被触发时,很有可能造成内存混乱,从而引起非法地址访问,进而导致程序崩溃。这种错误比一般的业务逻辑错误导致的计算结果不正确等问题更隐蔽、更致命。一个专业的程序员,必须在编写代码阶段就保证代码的高质量,不应该等出现问题再进行查找和排除。因此,在整个程序设计教学中,必须加强内存概念的理解,并不断地训练和巩固。

每个变量所代表的对象,无论是基本数据类型还是复杂对象,运行时都需要实例化,都需要占用内存。内存是何时分配的?分配了多少?何时释放?栈内存和堆内存的区别是什么?对象生命周期的本质是什么?函数调用的本质是什么?参数是如何传递的?函数返回值的本质是什么?这些问题在当前的教学中常常被忽略,而实际上,它们是每个合格的程序员必须深刻理解和准确回答出的问题。因为不理解这些概念,就不可能编写出正确高效的代码,设计出来的程序也一定是存在隐患甚至是错误百出的。在教学中,应该加强培养学生在这方面的专业素养。

3强调程序结构和高效封装,为职业级开发作准备

简单来说,程序的流程无非顺序、分支、循环三种。任何复杂、大型的程序,也是这些基本流程组成的。但是,编写程序时如何划分结构,合理地编写函数,做到代码的复用,用以上几种简单流程组合出一个结构清晰而又效率很高的程序,是考验编程者水平的关键,也是任何编程语言开发程序员都要面临的问题。不过,由于C/C++语言大多用于大型软件以及系统级软件的开发,强调程序结构的重要性显得更为迫切和必要。

编写程序就如同建筑师设计摩天大楼一样,既需要严谨的结构,也需要艺术性的加工。好的程序代码,阅读起来就像欣赏艺术品,给人美的享受。而劣质的程序,完全看不出编写者的思路,混乱复杂,这样的程序即使能够正确执行,也没有任何生命力。

现代编程技术强调的是高效性和可读性的结合。在不影响总体效率的情形下,以结构清晰、高可读性为第一要素,而强调封装正是这一要求的具体体现。所谓封装,有两个层次,一是函数的封装,二是对象的封装。函数封装主要是指将某个单一功能封装在一个函数内部。合理的函数功能定义有利于写出结构清晰的程序,有利于代码的复用,而将不相关的代码一股脑儿堆在一起,写出超大函数,则是函数封装的大忌。对象的封装就更重要了,这是面向对象程序设计中的核心问题。对象概念要定义清晰、明确,成员函数要功能单一,除非有充足的理由,所有成员变量都应设为私有,对象和外界打交道的唯一途径就是公共成员函数。封装对程序的维护至关重要,是现代程序设计的第一要素。

4掌握STL,理解和使用核心数据结构

标准模板库(Standard Template Library, STL)早已成为C++的标准。在商业软件开发中,它们是每个程序员都要时刻使用和深度掌握的,重要性不言而喻。

在数据结构课程中,学生会接触到栈、队列、链表、集合、映射、树、哈希表等常见数据结构。理解和掌握这些概念,对于简化程序设计,提高程序效率,程序的标准化、模块化设计至关重要。

大多数教材会将C/C++作为教学语言,来讲解这些基本的数据结构。自己动手编写简单的代码并实现,有利于概念的理解和掌握。但在商业开发中,必须使用成熟的已成为C++标准的STL,作为这些数据结构的标准实现。要掌握和使用STL,首先要深度理解模板技术。模板技术是编程技术发展过程中的一次革命,它的出现极大地提高了代码的复用程度,同时保持了程序的效率。它和面向对象的技术相辅相成,类似而又不同,掌握好这两项技术就迈进了C++编程的核心领地。

5重视高级概念

目前,多核技术得到了普通应用,互联网早已普及到千家万户。在软件开发中,开发人员必须掌握多线程技术和网络技术,因此教师要着力加大这方面的教学,使学生的知识技能水平跟上时代的步伐。

多线程技术属于编程中的高级领域,对开发者要求较高。要掌握好多线程技术,必须有扎实的基本功,要深刻理解同步、事件等重要概念。在教学上,教师可结合操作系统等课程进行教学。

网络编程涉及到的知识也比较多,教师可配合计算机网络等进行教学。以前,这一领域显得比较高深,随着网络的普及,学生对许多概念都有感性的认识,在此基础上进行专业训练,已没有太多难度。

另外,数据库操作也是软件开发中必备的技术,教师可以结合数据库课程展开教学。

除了以上几点,和平台相关的一些技术,如Windows平台下的窗口、消息、注册表等技术,以及类Unix平台下的进程管理、进程间通信、文件系统等,也是非常重要的。对这些高级技术的学习不能仅停留在语言层面,要进一步熟练掌握,这对于立志进入软件开发行业的学生非常重要。

6重视职业接轨,强调软件工程

开发软件,不仅仅是写代码。写代码仅是其中的一个环节。一个完整的产品或项目开发过程,都要经历需求分析、方案设计、代码编写、系统测试、产品部署、产品维护等各个环节。要加强在各个环节的训练,提高职业素养,学生才能在就业竞争中占得先机,才能在工作岗位上快速进入状态。

这些训练可以安排在高年级,特别是毕业设计阶段来实施。教师要锻炼学生用学到的知识和技能解决实际问题的能力,要提高学生分析问题的能力,提高其综合设计水平。要训练和提高学生使用集成开发环境的能力、编译调试程序的能力、书写规范文档的能力、团队合作开发的能力。通过这些系统的训练,学生就基本完成了从学业到职业的接轨。

7结语

C/C++语言在计算机相关专业的教学中占据着及其重要的地位,在学生的就业技能储备中更是排在了十分优先的位置。因此,C/C++语言教学必须紧密结合实际,针对企业对员工知识水平的真实需求,在教学内容及课时分配等环节上进行重大而科学的调整,才可避免教育和就业需求之间的脱节。在教学内容的调整上,参考文献[1]至[4]等提供了十分重要的素材,本文中提到的几个方面则是重中之重。

参考文献:

[1] Scott Meyers. Effective C++中文版[M]. 侯捷,译. 武汉:华中科技大学出版社,2001.

[2] 侯捷. STL源码剖析[M]. 武汉:华中科技大学出版社,2002.

[3] Thomas H Cormen, Charles E Leiserson, Ronakd L Rivest,et al. 算法导论[M]. 潘金贵,顾铁成,李成法,等译. 北京:机械工业出版社,2007.

[4] Cay S. Horstmann,Gary Cornell. 最新Java 2 核心技术[M]. 王建华,董志敏,杨保明,等译. 北京:机械工业出版社,2003.

Research on C/C++ Language Teaching Planning For Information Major

ZHAO Gui-qin

(Technical School, Shanghai Jiao Tong University, Shanghai 201101, China)

Abstract: Current C/C++ teaching materials and plans in information major of most universities are far away from the basic requirements to the C/C++ software developers in market. This article presents that object-oriented programming, memory allocation and management, program encapsulation, STL, multithread, software engineering practice are necessary in teaching practice. These advances are useful for improving the adaptability of graduates to their first job.

c语言篇7

    论文关键词:高职,语言,程序设计,教学方法

    引言

    《C语言程序设计》(以下简称“C语言”)是程序设计中一种用途非常广泛的语言,在计算机控制、单片机应用、数控技术、嵌入式开发、电子技术等相关行业中都将C语言作为主要的应用系统开发设计语言,同时C语言也是计算机应用专业中《数据结构》、《C++程序设计》及其它编程语言类课程的前导课程,还是信息产业部计算机专业和软件专业水平资格考试(软考)考试中要求的主要程序设计语言。

    C语言旨在培养学生计算机编程基本思想、编程基本技能及逻辑思维能力。掌握运用C语言编程来解决岗位工作中实际问题的方法和步骤,为提高职业能力和拓展职业空间打下坚实基础。C语言是高职高专计算机类和电子类各专业重要的专业基础课和职业素质必修课,在整个课程教学体系中起到重要的作用。

    1C语言难学原因

    在教学过程中发现,学生普遍认为C语言不好学、学不懂、概念复杂、枯燥难学、容易出错,学生的畏学、厌学情绪严重。这不但影响了课程的教学效果,也影响了整个课程体系中后续课程的教学效果。结合近年的教学实践,总结分析C语言难学有如下几个原因:

    1.1课程安排靠前

    作为计算机入门语言和专业技能语言,C语言课程在计算机专业教学中具有承前启后的作用。我校学生有将近一年的顶岗实习,也就是说真正在校学习时间只有2年多一点,如果把c语言安排在第二学期,将会使整个专业课程体系往后推移,导致后面的学期中一学期内有几门语言,使得学生学习语法混乱,c语言的基础作用不明显,同时课程体系违背循序渐进的学习认知过程,学生学习效果大打折扣。因此权衡比较还是把c语言安排在大一上学期。安排在第一学期也有一些问题,由于学生刚入学,大部分学生也没有计算机基础知识,加之作为一门计算机高级语言,C语言与自然语言差异比较大,又包含了数组、函数、指针、结构体、位运算等复杂内容,加之高职高专学制短的特点,教学计划制定学时较少。这种“内容多、课时少、没基础”的靠前安排法,自然使学生学习起来有一定的难度。

    1.2教材知识点松散

    现在许多高职院校采用的是大学本科的教材,只是使用过程中降低要求而已,虽然也有标识是"高职高专"的教材,但也往往是大学教材"删繁就简"略加修改,然而这并不适合高职学生,基本没有跳出传统C语言教材的框架。

    很多教材的编排上也是照传统的谭教授编的经典本科教材的安排来的,先讲简单的知识点,然后逐步讲解复杂的知识点,到最后知识点讲完了,课程也结束了。要针对一个具体问题设计出一个程序,一般要涉及很多的知识点,要想全面的了解一个程序功能的知识点,需要等到教材快要讲完的时候,所以很多学生在学习过程中感觉学了大半本书的c语言,还是学的不知所谓,针对具体问题还不知道怎么编程,要想自己编写一个程序,普遍感觉到无从下手,学生的学习热情也在这一过程中逐步消磨殆尽,逐渐形成厌学心理。

    1.3学生数理及英语基础差

    高职院校学生自身基础的薄弱是一个普遍现象,我们学院也不例外。随着我国教育政策改革,在扩招的影响下,使招来的学生水平参差不齐。特别是现在,经过多年的大学扩招,不仅使进入本科院校学生的比例增加,也使通过复读高中再考进本科的几率加大,因此学习较好的学生进入了本科,学习中等的学生去复读了,学习很一般的选择了高职院校。以今年为例,高职的高考分数线理科为260多分(总分750)。很多学生数学、英语基础较差,在学习一些c语言语句时,不明白语句英语单词的意思,加大了理解语句的难度,在读程序例子时,也会纠缠于printf语句中的一些提示性的英语语句;在设计程序时对算法、流程等逻辑不容易理解和接受;同时在程序调试时,对于用英语显示的出错提示信息看不懂,调试程序困难,找不出错误,无从下手,久而久之,对C语言产生了畏惧思想并最终放弃学习。

    2方法探索

    要在现存的实际环境下把c语言教好,让c语言带领学生入程序设计之门并能让学生拥有一项专业技能,确实需要对c语言进行教学改革。结合近年教学实践体会,可以采取如下几个改革措施来提高老师的教学质量和学生的学习效果:

    2.1针对课程定位、明确课程教学目标

    c语言是计算机类专业的重要的专业基础技能素质课,是一门应用性、理论性很强的课程。其特点是概念多、较抽象和涉及面广,其整体实现思想和技术又往往难于理解。作为程序设计语言,教学的最终目的,就是让学生能针对具体问题能够自己分析、设计、编码和最终调试成功。按高职高专应用型人才的培养目标,培养用人单位能够直接上岗的人才,教学目标还应增加培养大型项目编程经验的内容。所以说,C语言的教学目标是培养学生针对具体问题进行分析、设计、编码和调试程序的能力及掌握常见项目类型的项目开发经验。

    2.2整合教材,精选内容

c语言篇8

关键词:c语言 程序设计能力 教学改革

C语言程序设计课程是白城师范学院计算机科学与技术、计算机应用和软件工程等专业的一门专业基础课,是数据结构、操作系统等专业课程的先导课程,因此占有举足轻重的地位。C语言程序设计课程的教学目标是以C语言为平台,使学生全面了解程序设计的总体思路、程序设计的基本算法、并能使用C语言进行构化程序设计,为今后使用C语言解决实际问题打下良好的基础。由于C语言比较灵活,而且是学生学习的第一门程序设计课程,所以如何让学生在较短的时间内迅速掌握新知识,真正有效培养学生的实际编程能力、分析和解决问题的能力并能够加以应用,是当前迫切需要解决的问题。

1 C语言教学中存在的问题分析

目前,传统的C语言教学普遍存在着以老师理论讲授为主,先介绍语法规则,再举例验证和说明,仅从语言的使用进行教学,忽视了知识的综合运用,缺乏对学生学习兴趣的培养,学生容易感到枯燥乏味,不能充分调动学习的积极性和动力,很多学生上课能够听得懂,自己编程时却无从下手,造成学生由于不能独立完成教师布置的任务,而使学生产生恐惧和厌学心理。C语言教学中还普遍存在重理论,对课程的实践性重视不够的现象。以往学生的实验内容大部分是验证性的,较死板和枯燥,实际知识运用的训练较少,学生兴趣不大,实践项目的设计没有充分考虑能力目标的培养而过多关注程序语言本身。针对C语言教学中存在的问题和现象,作者积极进行教学改革和探索,以求提高学生的编程能力和分析、解决问题的能力。

2 C语言教学改革措施探讨

2.1 C语言理论教学改革措施

由于传统的教学内容和方法枯燥,学生学习没有兴趣,缺乏主动性,如何激发学生的学习热情呢?

兴趣是最好的老师,创造一个学生乐学的环境。首先要建立良好的师生关系,学生喜欢老师,做学生的知心朋友,与学生建立起信任、友爱关系,学生会从心理上愿意学习老师讲授的课程。其次,教师应精心设计教学内容,改变过去单一的“满堂灌”的注入式教学。在课堂中引入大量经典的、趣味性浓的、联系生活实际的案例,在教学过程中,注意设置疑难问题,通过耐心的引导使学生渐入佳境,设置问题让学生自主探讨解体之道,让他们的思想活跃起来,并提高其学习编程的兴趣,从而更深入地展开学习。同时,各章节教学案例的设计兼顾知识结构的连贯性,由前一个实训项目为基础开展下一个实训项目的研究。各项目的实训内容接续紧密,循序渐进,知识结构螺旋式上升,教师主导课堂进度,真正突出学生的主体作用,使学生在轻松活跃的教学氛围中拓展思维,自主探索。这套教学相长的教学模式突出了学生的主体地位,极大的激发了学生的主观能动性,教学氛围非常活跃。在教学过程中不断对学生强化学习算法是为了解决实际问题,并引导学生进行算法分析和设计实践,真正做到学以致用。第三,将多媒体教学与传统教学有机结合,能给传统教学方式注入新的活力。现代化多媒体教学手段是基于传统讲学模式发展而来,多媒体在课堂教学中的应用,使刻板的讲学变得生动形象。并不是所有教学内容都适合采用多媒体,教师可以有选择地进行融合和重组,进行多媒体课程设计时,注意将多媒体与板书两种教学手段相互融合,使教学节奏更加紧凑。通过图文、声像与板书的融合运用,使讲学内容更加形象、具体,以活跃学生的思维,激发其求知欲望,从而形成学习动机。

2.2 C语言实验教学改革措施

实践课程是C语言程序设计教学中的重要组成部分。单向灌输式理论讲学只能丰富学生的理论知识,但无法培养其实践技能。这恰恰与C语言课堂的教学目标背道而驰。实践教学需要辅以有效的上机操作。在C语言实验教学中,普遍存在实验题目枯燥单一,且与实际脱节现象。造成实验教学课程机械,学生没有兴趣,学习主动性差,学生写程序能力不能得到实际提高。所以在实验教学过程中,我们应该多设计一些跟实际生活相关的实验。设置必做与选做题,以满足各个层次学生的需要。上机操作前,教师须明确教学内容和上机任务,课前要求学生编好要调试的程序,为上机做好准备。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。上机内容除了调试程序外,还要要求学生分析程序算法结构。调试成功后,逐步引导学生基于理论知识进一步优化算法,锻炼其实际应用能力,课后要求学生完成实验报告。本课程结束后安排一次综合性实验,旨在要求学生综合利用所学的程序设计知识,编程解决实际问题,提高分析、解决问题的能力。

2.3 C语言课程组全体教师共同设计和开发了C语言网络课程平台,该平台为学生提供了课程简介、课程教案、教学大纲、考试大纲、实验教学大纲、教学日历、习题、开放实验项目、在线测试、在线交流等网络教学资源,为教师和学生开辟了一个开放式的辅助教学空间,能引导学生自主性学习,为开展教学和课程辅导提供了有利条件,弥补了课堂和实验教学的不足,大大活跃和丰富了教学活动。实践证明可以进一步调动学生的学习积极性,培养学生的自主学习能力和问题求解能力。

2.4 以ACM竞赛为依托,开发在线评测系统(简称OJ),培养学生实际动手能力与团结协作精神。ACM国际大学生程序设计竞赛已经成为最具影响力的大学生计算机竞赛。旨在使大学生运用计算机来充分展示自己分析问题和解决问题的能力。白城师范学院计算机科学学院学生每年都组建几支队伍参加省大学生程序设计竞赛的选拔。为此,我系教师共同研制开发了在线评测系统,学生可以在在线评测系统上挑选各种题目,挑战自我,提高自我,学习各种数据结构和算法;同时还可以模拟比赛的环境,培养学生团结合作能力,真正实现“以任务为驱动,教师为主导,学生为主体,强调自主学习,客观评价,培养协作能力,创新能力和探究能力”的实验教学新平台。

3 结束语

程序设计能力是理论和实践相结合的具体表现,作者根据多年的教学经验,对C语言理论和实验教学的改革措施进行了深入探讨,并通过开发网络课程平台和ACM在线评测系统,进一步提高了学生学习的积极性和主动性,增强了学生的实际编程和问题求解能力,真正实现了C语言程序设计课程的教学目标。

参考文献:

[1]李豫颖.C语言教学改革浅见[J].贵州教育学院学报,2008(09).

[2]张敬.关于C语言教学改革的若干思考[J].电脑知识与技术,2012(09).

[3]李玺,李亭升.大学C语言教学改革探索[J].中小企业管理与科技(下旬刊),2012(03).

上一篇:易语言范文 下一篇:无线数据传输范文