c语言范例6篇

c语言

c语言范文1

关键词:C语言;教学方法;思维转化;启发式教学;软件工程

一、前言

C语言是一种通用性计算机程序设计语言。它兼有汇编语言和高级语言的双重优点,运用它既能编写操作系统软件,又能开发各个领域的应用软件。C语言的实用性使之成为编程的首选语言。学好了C语言,再进一步深造C++/VC++,JAVA等言语,就有了坚实的基础。但目前很多学生在学习《C语言程序设计》后,感觉读程序还凑合,编程则“难于上青天”部分学生甚至毫无编程想法,仅仅是为应付考试而死记硬背,完全背离了高职教育的初衷。因此,如何在C语言教学中启发并训练学生的编程思维,是每个教师应深思的问理。以下是笔者在C语言教学中的一些看法,愿和同行探讨。

二、上好第一堂课

如何上好第一堂《C语言程序设计》课是至关重要的。因为学生都是初次接触C语言,C语言对他们来说是神秘的,“兴趣永远是最好的老师”,有了兴趣他们才会积极主动地去学习,所以第一堂课的成功与否直接关系到学生能否对这门课产生兴趣,所以我觉得第一堂课应为“趣味C语言导学课”。

(一)程序结果展示,激发兴趣

要激发学生的兴趣。首先要让大家知道C语言的强大功能,利用它我们能编写各种软件,通过幻灯片向学生展示各种结果画面,例如从50年代玩的摇杆游戏到如今的电脑游戏。相信这时有些学生已经有些“蠢蠢欲动”了。恨不得立刻学好C语言。

(二)强调C语言的重要性

C语言是学生今后学好后继课程的基础,比如数据结构。C++,JAVA等。虽然程序设计语言更新很快,但如果真正掌握精了程序设计思想,具备了真正解决实际问题的能力。语言再更新可程序设计的本质不会变。

(三)传授C语言的学习方法

C语言是一门实践性课程,要理论结合实践,加强学生的动手能力,解决问题的能力,在学习方法上给以学生指导,告诉学生如何自学,如何听课,如何动手实践,明确一点:“C语言不是看会的,也不是听会的,而是亲自动手实践练会的”,强调实践的重要性。

(四)认识C语言的编译环境。

在visual studio2005环境下,举出几个简单的小程序演示给他们看,并逐一讲解,引导学生自己去发现程序中存在的缺陷以及改进的方式。熟悉C语言源程序到可执行文件的整个操作流程。让他们仿照所列举的几个程序模仿着编一个小程序。

二、C语言教学方法

(一)抽象思维到形象思维的转化

让学习过程变得轻松有趣是激发学生兴趣的关键所在,C语言本身是一门极其抽象难懂的学科,把抽象的问题形象化,使本来枯燥无味的C语言变得魅力无限,符合学生的认知规律,可以收到良好的效果。

(二)采用问题启发式授课,激发自主学习

针对C语言概念多,语法繁的现状,采用问题启发式教学可以将难理解、难记忆的概念和规则变成一系列时而醒目、时而深奥的问题呈现在课堂教学中,这样就能把学生的注意力集中起来,学习积极性调动起来,达到师生互动的效果,教师自问自答为主,有问有答,互问互答,改变单调死板、照本宣科的牧师讲法。这种启发式、讨论式、交流式的教法,不仅改变原来的灌输式,而且增强了学生自主学习的能力。

(三)“引申法”“框架法”和“求异法”相结合

所谓“引申法”是指是结合已经解决的问题,因势利导,引导学生在此基础上解决相关联的问题。“引申法”可以培养学生在程序设计方面的发散思维。提高程序设计中的应变能力。问题是活的,但程序是有章可循的。最终使学生明白,语法是有限的,可解决的问题是无限的。只有在分析实际向题的基础上,以清晰的思路去设计算法,才能举一反三,以不变应万变。

“框架法”可培养学生的全局思维和算法的整体设计能力。具体体现在两方面:一是在学生有了一点编程基础后要利用伪代码或流程图,从算法设计的角度讲解编程思路,而不应拘泥于语法细节,不分主次、逐条语句的讲解代码。通过此框架,可使初学者对函数设计的关键问题有清晰的认识,利于从统筹全局的角度去考虑问题,体现了程序设计逐步求精的思路。这样可以层次分明,突出算法设计的关键,利于培养学生的编程思路。二是在学习重点章函数时,由于新的算法已很少,主要是学习用函数调用的方法来重新编制以前所熟悉的程序,那么我们可以把着眼点放在函数的设计框架上,体现参数设计、返回值设计等关键问题,而无需细讲函数体的实现细节。

“求异法”:一个固定的问题。解决的方法可能不唯一,如果能启发学生多角度、多侧面去寻求解决问题的办法,则可激发学生思考的积极性,提高其学习兴致。在C语言中一题多解的情况有很多,有意识地引导新思路,鼓励新方法,以培养学生在编程中的求异思维,而不是死记硬背,墨守成规。

(四)理论教学与学生实践相结合,提高程序调试能力

对程序设计课来说,理论学习和上机要两手抓,两手都要抓硬。实验课不能流于形式,让学生照抄照搬,甚至身在曹营心在汉。必须给学生思考、创新的启迪,训练其实践能力,实验课要生动活泼,使学生既掌握书中的重点算法,又有充分的思考空间,让学生充分体会到顿悟和创造的乐趣。在进行每一部分的学习的时候,都应该配有相应的学生上机实践的机会。这样学生既锻炼了动手能力,又巩固了所学的知识。还应该让学生养成上机前分析题目,决定算法与数据结构,并编出程序源代码的好习惯,这样在上机时,学生就有的放矢,主要精力放在调式程序上需。对于普遍存在的问题,进行集中提示、讲解、演示以增加学生的印象。井及时检查总结学生上机实验的完成情况。

(五)在整个教学环节中,巧妙地引人软件工程的基本思想

计算机科学属工程技术科学,为使学生有良好的编程思维,应注重软件工程思想的渗透。对软件生存周期的几个阶段,即问题定义、可行性研究、需求分析、概要设计、详细设计、编码、调试、运行与维护,可以通过常规的C程序设计实例来体现,以培养学生编程中的工程思维。这样并没有费很大力气讲抽象的概念,却可培养学生在程序设计中从软件工程角度去系统分析问题的良好习惯。虽然问题小了些,但“窥一斑而知全局”,经反复强化问题求解中所蕴含的基本思想,将有效地训练学生程序设计中统筹全局的工程思维能力。

c语言范文2

关键词: C语言 指针 函数 数组

“指针”是C语言中广泛使用的一种数据类型,运用指针编程是C语言最主要的风格之一。利用指针可以表示各种数据结构,它与函数、数组的使用和传递数据有密切联系,能方便地访问数组,还能像汇编语言一样处理内存地址,从而编出精致而高效的程序。指针极大地强化了C语言的功能。学习指针是学习C语言最重要的一环,能否正确理解和使用指针是判断是否掌握了C语言的重要标志。但是指针也是C语言最危险的特性,如果使用不当,则很容易指到意想不到的地方,产生错误也很难发现。因此,对于初学者来说,应特别注意指针的应用。怎样才能应用好指针呢?下面笔者以在计算机C语言教学中的体会与大家进行探讨。

一、理解指针

在C语言中任何数据只要定义了,在内存中就是有一定的存储单元的。存储单元就是变量在计算机中的存储地址,指针就是用来表示这些地址的变量。所以简单地说,指针就是地址,变量的指针就是变量的地址,这里还涉及一个概念就是指针变量,所谓指针变量就是用来存放指针(地址)的变量。例如:int a;假设a的地址是2000,而2000又存储在变量point中,那么变量point就是指针的变量简称指针变量,a就是指针变量所指向的变量。很多初学者都存在这样的误区:既然指针放的是地址,而2000正好是变量a的地址,那么对于指针point就可以这样赋值:point=2000,这是错误的,这里的2000表示的不是地址是一个整型数据。所以对于指针变量的赋值只能用取地址运算符“&”进行赋值即:point=&a;&a即为a的地址。

二、指针与函数

指针作为C语言的精华有很多用途,除具有一般的功能外,其中具体特殊功能的应用总结起来有三个方面:一是用于在函数中可以返回多个值;二是可以实现动态调用函数;三是实现数组的动态定义。其中,普通变量作为函数的参数,传递的是变量的值,因此只能带回一个返回值,但在有些场合需要返回多个值,这就必须用到指针做函数的参数,因为指针作为参数传递的是地址,让实参和形参指向同一个变量的地址,N个形参所指向的变量的值改变了,N个实参的值也自然改变了,从而实现了带回多个返回值。这里举个例子,编写一个函数实现两个数从小到大输出。这个程序需要子函数实现两个数的交换,把交换后的两个值通过指针传回主函数输出,传回来的是两个值。所以普通变量做函数的参数是无法实现的,只能用指针作为函数的参数。具体实现:

子函数实现交换:

swap(p1,p2)

int *p1,*p2;

{int p;

p=*p1;

*p1=*p2;

*p2=p;

}

主程序实现调用,输出:

main()

{int a,b;

int *pointer_1,*pointer_2;

scanf(“%d,%d”,&a,&b);

point_ 1=&a;

point_2=&b;

if(a

swap(point_1,point_2);

printf(“%d,%d”,a,b);

}

由此可见,要通过函数调用得到N个返回值可以通过以下三步实现:(1)主调函数中设N个变量,用N个指针指向他们;(2)将指针变量作实参,将N个变量的地址传给形参;(3)通过形参指针变量指向的改变,改变N个变量的值。最后主调函数中就可以得到N个变量的返回值。

三、指针与数组

前面提到任何数据都有存储单元,都有指针。所以,从这个角度出发可以将指针分为:指向变量的指针、数组指针、字符指针、指向指针的指针、函数指针、结构变量的指针及文件指针,等等。其中,指向变量的指针就是存储变量的地址的,这是指针最简单的一种类型。那么一个变量有地址,一个数组有若干个元素,每个元素都有一个地址,所谓数组的指针,就是指数组的名称,实际上是指向整个数组空间的起始地址。数组元素的指针是数组元素的地址。例如:int a[10];int*p;这里的数组名a就是数组的首地址,本质上是一个指针。a[2]表示距离a指向空间向后2个位置所在空间中的存放的值,所以a[2]=*(a+2)。那么如果让p=a,p就是指向数组的指针,对于a我们可以做加减整数运算,利用它表示数组中任何数据的值。那么对于指针也可以通过加减整数运算来表示数组中的任何数据。指针变量加上或减区一个整数n表示把指针指向的当前位置向前或向后移动n个位置。具体移动的字节数和指针数组的类型在内存所占的字节数有关系,如果指针数组类型为整型,在内存中占2个字节,那么,指针p+1,实际上的地址值就是原址加2,对于数组元素来说就是指针向后移动一个元素。如int a[10],*p,*s;p=a;s=p+2;其中s的值表示数组中首地址向后移动2个数组元素的位置,表示a[2]对应的地址,而具体移动的字节数则为4个字节。为了表示两个地址间存在的距离,可以通过指针间的减法实现。指针之间是不能有加法操作的,指针的加减运算只能对数组指针变量进行,对指向其他类型的变量的指针变量做加减运算是毫无意义的。而且两个指针变量之间的运算只有指向同一数组时它们之间才能进行运算,否则运算将失去意义。

四、结语

C语言是到目前为止学习最多的程序设计语言之一,也是国外大学计算机专业唯一的必修课程。在整个C语言教学中,指针是一个十分重要的部分,也是最难掌握的部分之一。本文从对指针概念的理解、指针在函数和数组的使用等方面系统论述了指针,目的是让大家清晰地了解指针、掌握指针,从而高效地应用指针。只有掌握好指针,才能充分发挥C语言的优势。

参考文献:

[1]谭浩强.C程序设计教程.北京:清华大学出版社,2008,11.

[2]陈刚.C语言程序设计.清华大学出版社,2010,2.

c语言范文3

关键词:C语言;学习;编程

1 C语言的特点和优势

C语言是学习编程语言的基础,它集合了很多语言的特点,我们都知道语言之间是相同的,而C语言能够把很多语言的特点集中起来,有高级语言和低级语言的特点,能够编辑系统软件和应用软件,所以C语言是一个非常重要的语言。要想学好C语言,首先要了解下它的历史,1970年美国AT&T贝尔实验室的Ken Thompson以BCPL语言为基础设计出很简单很接近硬件的B语言,但B语言过于简单,功能有限,继而在1972年―1973年期间美国贝尔实验室D.M在B语言的基础上设计出C语言,所以C语言用起来非常的方便,能够给程序带来自由和便利,这也是很多软件用它的原因之一。在C语言的语法中,运算和程序书写是非常丰富的,在编写程序的过程中能够用到的运算方法有很多,可以实现很多高级程序无法实现的功能,使用起来灵活多样,能实现各种复杂的数据结构的运算。C语言还能够直接的访问物理地址进行各种操作,非常方便的对程序进行控制和编译。

2 学习枯燥乏味之理由

在学习C语言的过程中很多学生对C语言提不起任何的兴趣,导致在上课的时候压力很大,听不进去,甚至无法理解。C语言的功能非常强大,这是我们学习的最基本理由,而且目前C语言的用途很广,收到计算机方向的重视,所以我们也必须对自己要重视起来,大部分同学在学习起来觉得很枯燥,理论的东西很难记住,对C语言的认识也不够深入,所以会造成一个学期学完之后反过来想想,觉得一无所获。那究其缘由为何会出现这样的情况呢?

个人认为首先一个是教学方式上,C语言的理论东西偏多,不能通过一些直接的感官方式给学生,造成学生的理解困难,如果能通过很直观的方式来呈现内容的话效果应该会比较好,比如说多进行上机的操作,让程序能够通过界面的方式反馈出来等等。

其次是在C语言中有很多的算法和结构让很多同学觉得眼花,很多同学只是简单的靠记忆把他记忆下来,这样效果就很低,而且非常枯燥,应该要通过更多的实践练习掌握它们的规律和方法。

最后就是教师在教学上应该要注重教学方法,不能仅仅简单的理论教学和实践教学,应该把学生放在第一位,能够听懂才是关键,否则一堂课下来内容讲完了,学生收不到你的效果。教师在课堂讲解的过程中除了课程教授之外,还要传达C语言在整个计算机学习中的重要性,让学生更加深入的去理解和分析,增强他们的学习兴趣,这个才是关键。

3 编程技巧

同学们之所以学习的非常吃力,觉得C语言很枯燥,归根结底是没有掌握到C语言的学习技巧,其实对于初学者来说觉得学习吃力是正常的,学习任何一门语言都是有一个过程的,关键问题在于你要掌握其精髓的地方,只要掌握了重点一定能够学好语言。对于C语言我们应该要更加注重其编程技巧,接下来就阐述几个比较有用的技巧。

⑴指针掌握。指针的掌握在C语言中是非常重要的,也是C语言中一个非常重要的技巧之一。指针能够在运算的过程中提高速度,让整个编程的语句变得更加简单,不足的地方就是消耗的内存要大点,但是和整个编程语言来说微不足道,如果本身内存就有富裕的话那么就一点问题都没有了,所以同学们在学习这一章的时候一定要加强自我的学习能力,除了老师上课讲的知识之外,可以多去网上找相关资料进行补充,把指针这一章做好学习。

⑵数学知识掌握。数学知识在整个计算机学习的过程中是非常重要的,能够解决C语言中的很多问题,IT界有句话叫“数学是计算机之母”,由此可见数学在计算机学习中的重要地位。同时,在整个C语言的学习中如果能够很好的用到数学思想的话也能够促进学习,在编程之前首先进行分析,通过什么样的算法能够更加简单,这就是数学的一种运用,所以数学知识对学习编程语言非常有作用。

⑶位运算的掌握。使用位运算可以使代码更简洁,效率更高)使问题得到解决。其实在所有的计算机程序中可以说位是最小的数据单位,一般而言所有的运算和操作都可以通过“位运算”来解决,这足见“位”在编程语言中的重要性。在C语言当中去应用能够提高效率,解决更多的问题。

当然不管什么样的技巧,应该具体问题具体分析,上述只是个人的一些看法,总体来说能够提高编程效率,通过让同学们不会感到枯燥,让C语言更加广泛的应用。

4 总结

总的来说,C语言的功能非常强大,所以作为我们学生有责任要把它学好,为今后的就业打下基础。C语言作为高校的一门公共基础课,不仅仅是计算机专业开设了,其他非计算机专业的同学也要进行学习,所以学好C语言能够提高自己的编程效率和对编程语言的理解,对整个计算机语言的学习是非常有作用的。希望通过我的个人拙见,让更多的同学学习C语言,而且能够掌握,培养自己的编程能力,这样才能更好的服务社会。

[参考文献]

[1]李自清.浅谈C语言编程中的常见错误和解决方法[J].科技信息(科学教研),2007(33).

c语言范文4

关键词:For语句 循环结构 条件表达式

1、for语句的表达形式

for(表达式1;表达式2;表达式3),3个表达式的主要作用:表达式1设置初始条件,只执行一次;表达式2循环条件表达式,用来判断程序是否继续执行,在每次执行循环体前先执行此表达式,决定是否继续执行循环体;表达式3是对循环的调整,是在执行完循环体后才进行的。所以我们可以对for语句这样理解 for(循环变量赋初值;循环条件;循环变量自增或自减)例如:

for(i=1;i

sum=sum+i;

其中i=1是给循环变量赋初值1,i

(1)for语句表达形式中的表达式1可以省略,但表达式1后边的分号不能省略。例如:

for(;i

(2)for语句表达形式中的表达式2也可以省略,但表达式2后边的分号不能省略。即不设置和检查循环结束的条件。例如:for(i=1; ;i++) sum=sum+i;此时循环无终止的进行下去,也就说表达式2一直为真.

(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。

(4)表达式1和表达式3都没有,只有表达式2,即只给出循环结束条件。对于没有表达式1和表达式3的for循环语句,为了让循环正常执行,应当在for语句前给循环变量赋初值。 从此处我们可以看出for语句比while语句功能更强大,除了可以给出循环条件外,还可以赋初值,使循环变量自动增减等。

(5)表达式1、表达式2和表达式3都可以省略。例如:for(; ;) printf(“%d\\n”,i);

相当于 while(1) printf(“%d\\n”,i);即就是不设初值,不判断表达式2的条件(表达式2始终为真),不改变循环变量。这样程序就无终止的执行循环体语句。显然这样的程序是没有任何价值的。

(6)表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。

例如:for(sum=0;i

(7)表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即就是包含一个以上的简单表达式,中间用逗号隔开。

如:for(sum=0,i=1,i

(8)表达式2一般是关系表达式(如i

①for(i=0;(ch1=getchar())!=’\\n’;i+=ch1);在表达式2中先从终端接收一个字符赋给ch1,然后判断这个赋值表达式的值是否不等于‘\\n’(转移字符 换行),如果不等于’\\n’,就执行这个循环体,它完成的作用是不断输入字符,将他们的ASCⅡ码相加,直到输入一个“换行”符为止,程序结束执行。这里我们要注意的是:此时for语句的循环语句为空语句,把本来要在循环体内处理的内容放在表达式3中,作用是一样的,可见for语句功能的强大,可以再表达式中完成本来应在循环体内完成的操作。

②for(;((ch1=getchar())!=’\\n’;) printf(“%c”,ch1);这个for语句中只有表达式2,而无表达式1和表达式3.它的作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。

运行情况: Computer((输入) Computer(输出)。这里我们要注意的是:从终端键盘向计算机输入时,是在按Enter键以后将一批数据一起送到内存缓冲区去的。因此输出结果不是CCoommppuutteerr,即不是从终端输入一个字符马上输出一个字符,而是在按Enter键后数据才送入内存缓冲,然后每次从缓冲区读一个字符,再输出该字符。

从上面的介绍我们可以看到,C语言的FOR语句使用非常灵活,变化多端。C语言的FOR语句比其他语言中的for语句灵活和强大的多。可以把循环体和一些循环控制无关的操作也作为表达式1和表达式3的出现,这样程序可以比较简洁。

2、for语句的执行过程

(1)先求解表达式1.

(2)再求解表达式2,如果表达式2为真,则执行FOR语句中的循环体,然后执行(3),如果为假,则循环结束,转到第(5)步。

(3)求解表达式3.

(4)转回步骤(2)继续执行。

(5)循环结束,执行for语句下面的一个语句。

3.种循环的比较

(1) 在处理循环语句中,while、do-while和for 都可以用来处理同一个问题,一般情况下他们3个可以互换。

(2)在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环中包含使循环区域结束的语句。For循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体重的操作全部放到表达式3中。因此for语句的功能更强,凡是while循环能完成的,用for循环都能实现。

(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之间完成。而for语句可以在表达式1中实现循环变量的初始化。

(4)while、do-while和for循环,都可以用break语句跳出循环,用continue语句结束本次循环。

4.种循环举例:求1+2+3+……+100,即∑100n=1n

(作者单位:陕西国际商贸学院)

参考文献:

[1]《电脑知识与技术》2009年第24期。

c语言范文5

关键词:Java语言;C语言;代码运行效率

中图分类号:TP311.1

在计算机语言的发展史上,目前总共是发展了四代计算机语言。第一代计算机语言是机器语言。机器语言是计算机的专用语言,在当时是唯一一个可以识别的语言。后几代计算机语言发展是建立在机器语言的基础上的。以机器语言为契机并将机器语言逐步进行简化,直到人类可以进行直观的理解掌握。第二代计算机语言是汇编语言,与机器语言相比,汇编语言进行改革的幅度大大提高,人们在使用时出现错误的几率也降低很多。虽然汇编语言还是有些复杂,但已经开始用字母来代替许多数码。第三代计算机语言是高级语言。高级语言很大程度上考虑了人类的使用习惯,使得在使用时更加便捷。与汇编语言相比,高级语言复杂程度大大降低,在程序中使用的运算符号以及式子都与平常使用的数学计算公式差不多。此外,这种高级语言以简单易学,通用性强,程序比较短著称,由于非常符合人类的使用习惯,其应用也在不断增强,是一种理想的程序设计语言。第四代计算机语言是前几代计算机语言的综合。它根据每一种语言的特点确定其应用范围。在程序运行时,只需输入程序的原始数据,然后命令它们执行。至于程序是怎样执行则由它们本身来决定。因此,这种语言的变化大大简化了人脑的工作量。

1 Java语言的概述

作为一种面向对象的程序设计语言,Java与C++极为类似,但却要比C++简单的多。它在集成其他语言的特点和优势的同时又有自己独特的优势。Java的主要特点如下:(1)简单性。Java可以对内存中产生的垃圾进行自动收集,大幅度降低了程序的复杂程度,此外,Java添加了更为实用的功能的,这使得程序开发更加简单可靠。(2)平立性。Java语言在程序编程过程中是先编译成中间码,然后再进行装载与校验,最后通过翻译出来的不同的机器码来执行。因此,只要能支持Java虚拟机,就可运行各种 Java程序。这也是Java最吸引人、使用方便的原因。(3)面向对象的技术。近年来软件开发中使用最多的就是面向对象的技术。面向对象技术是指在编程过程中,以一种更加直观的、人们更容易接受的方式来编程的技术。而Java的动态联网编程特性,将面向对象的优势发挥到最大。

2 C语言的概述

C语言,作为一种新的程序设计语言,它结合了汇编语言与高级语言两种语言的优势,使得它的应用更加简单、普及。如今,C语言已经应用于各种类型的微型机上。在编写程序时,C语言可以直接进行程序的编程。因此,C语言在应用方面十分广泛,具备很强的数据处理能力。C语言的应用已不仅仅是用于软件开发,各类科研都需要用到C语言。C语言的优点是简洁紧凑、灵活方便;运算符丰富;数据类型丰富;表达方式灵活多用;生成目标代码质量高、程序执行效率高;可移植性高。因为C语言是将相同数据堆放在一块,这就使得C语言的数据存在很大的安全缺陷,一旦出现意外,所有数据都将丢失。此外,C语言在语法限制以及变量的类型上比较宽松,这样就会影响到程序的安全性。而且C语言比其他高级语言的难度大,完全掌握是很不易的。

3 代码运行效率的比较

在进行计算机语言的比较时,要根据不同语言的不同特性,在同一个平台上对语言的效率进行比较。比较过程中要从各语言的基本概念上比较与衡量,最主要的是在实际的运行环境下进行测算,然后根据测算的结果来比较各语言的真正运行时间。通过以上的比较,就可以从中选择出运行效率快、合适的语言。然而,在实际环境中比较时,由于实际环境的多变性,就会影响到语言代码的实际运行结果,降低运行结果的准确度。例如,程序通过CPU需要一定的时间,当遇到更高级别的程序时,就会使该程序暂时进入待命的状态而去执行更高级别的程序,这样也会使其他子程序的暂停运行,各种硬件设备也会停止运行。然而要想在当前的电脑操作系统中避免这种情况的发生还是比较难的,而且也没有这样做的必要。因为在编写程序时所选择的语言算法是可以运行在各类的环境中的。而且对于不同的语言,即使是采用同一种计算方法,测试的结果也会完全不一样。因此,为了能够准确的测试两种语言的运行时间,就要对C语言和Java语言进行试验。测试时需要用Java语言和C语言编辑一小段程序,再对程序进行运行,通过不断地的执行程序测试两者的运行时间,然后计算出总体运行时间平均值,求出运行时间的标准差,就可以方便的看出哪种语言的运行效率更高。

4 Java语言和C语言的运行结果显示

C语言是经过多年发展而来的一种高级语言,具有很强的包容能力,对低级语言也可以通读。而我们常用的计算机语言就是包括低级语言与高级语言在内的。C语言是非常适合初学者的学习和使用的,也正是由于这个原因,在目前大学中开授的课程中也包括C语言。一般来说,对于C语言的学习,只要是能够掌握好指针的使用,就可以非常熟练的使用C语言来编程,而且程序的执行效率也不低。而Java语言是在C语言的基础上进行改进而来的高级语言,对于C语言的各种优点,Java语言也是包含在内。因此,这两种语言进行运行效率的比较时,就需要经过多次重复的测试,才能得到精确的比较结果。

4.1 C语言程序的运行情况

为了更加清楚的了解两种语言的运行效率,我们现对C语言进行测试。测试情况可以通过以下的来进行演示。在运行过程中,会采用一些辅助的语言来讲解。

# include //这是程序的头文件,可以从时间戳上获取程序的时钟周期数。

int64 result[8][1000];这是对程序中的函数进行调用,进行函数的调用时就会跟踪进入函数内部。采用过滤跟踪可以避免普通跟踪时经常遇到的未知错误。

timeO = My Query Counter();在调试工作之前,需要在代码中加入一个断点。通过这个断点,就可以看到程序的调用情况以及运行状态。当程序遇到断点,就会停止运行,状态显示为暂停。

4.2 Java语言的运行情况

int id;对此语句进行扫描时,会提示你这是和Java透视图关联的。

char name[30];第一个字段区域“源文件夹”默认是项目的文件夹。

public class Tester这是Java程序的启动配置。对于大多数的Java而言是不需要的。

int i;Java程序的变量。

for(i=0;i

strcpy(t->name,name);对Java程序的检查过程。也可以对变量进行修改等工作。此视图显示的是当前范围的变量值。

t->next=0;p->next=t;变量发生变化时,变量值不会自动更新。

5 结论

通过以上的程序运行结果可以看出,C语言的运行效率要比Java的高很多。因为C语言是属于编译型的,而Java语言则是解释型的。Java语言运行时要先被翻译成计算机能辨识的二进制代码,然后才能执行。虽然在上面的程序测试中C语言要快于Java语言,但这并不是绝对的。在实际中,要根据不同语言应用范围,才能选择某一语言程序。

参考文献:

[1]卢晓苗.一例Java语言与C语言代码运行效率的比较[J].2010.

[2]张卫民.Java语言及应用[M].北京:清华大学出版社,2009.

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

[4]郑莉,王行言,马素霞.Java语言程序设计[M].北京:清华大学出版,2005.

c语言范文6

关键词:单片机教学;C语言;内容选取;讲授方法;习题和实验

中图分类号:G642 文献标识码:B

1引言

近几年随着单片机和Keil C等开发工具的发展,我们教师在单片机项目开发中都采用C语言编写程序。与汇编语言相比,C语言有诸多优势,为了把单片机C语言编程方法和经验传授给学生,作者结合多年来讲授单片机和C语言的教学心得,以及从事单片机项目开发的经验,将单片机C语言部分写成小册子,补充到单片机教学中。后来组织教师动手编写了C语言版的“单片机原理及应用”讲义,讲义经过试用修改后,由中国水利水电出版社出版发行,其书名为《单片机原理及应用(C语言版)》。在教学中,我们精选C语言的内容,并对一些内容的讲解方法进行了深入地研究,把C语言的一些概念从开始就引入到单片机中,以C语言为主来讲授MCS-51单片机,并且举例和编程都用C语言,试用效果比用汇编语言好,学生更容易掌握用C语言编写单片机程序。

C语言引入单片机教学中是最近几年的事情,因此其内容的选取、一些概念的讲授方法、与之相适应的习题和实验等,都不够完善成熟,为了推进单片机C语言教学,提高单片机的教学水平,将我们在教学中的试验和探索进行总结,形成文字,与同行交流和探讨。

2单片机C语言内容的选取

由于国内把C语言引入单片机教学中的时间比较短,单片机教材中C语言内容差别很大。欲搞好单片机C语言教学,首先需要研究在单片机教学中C语言的内容,进行恰当地选取,从而用较小的篇幅、较少的学时数,使学生较轻松地学习和掌握单片机C语言的内容,实现用C语言熟练编写单片机程序。

2.1单片机开发所需要的C语言知识

从事单片机程序开发所需要的C语言内容,与PC机C语言的内容基本相同,其内容有:基本概念(数据类型、变量和常量、运算符、表达式),程序控制语句,程序基本结构,数组,函数,指针,位操作,结构体与共用体,编译预处理等,只是少了文件操作的内容。这些只是二者相同的方面,对于单片机来说,还需要结合自身的特殊性在数据类型、变量定义、数组、函数、指针、位,结构体与共用体等方面做一些补充和改变。

2.2单片机C语言内容的选取

我们先浏览一下当前国内单片机书中C语言内容的选取,主要有两种情况:一种是在单片机书中安排了C语言的全部内容,并且C语言的内容放在全书的前面,各个内容分章编写,有的内容比较详细,有的不是很详细,这样的安排是认为读者没有C语言的基础,其内容和讲解方法与单片机结合较少,并且习题基本上不涉及单片机的概念,学习效果不会太好。第二种情况是单片机书中安排了C语言的大部分内容,但各个内容编写在一章中,安排的位置有的是放在“指令系统和汇编程序设计”后面,有的是放在书的最后,其内容有做复习的意思,要求读者有一定C语言的基础,有的书与单片机结合得较好,有的结合得不好,更像一般的C语言内容。

2.3我们的单片机C语言内容

我们精选的单片机C语言内容可以用一句话概括:变量(包括一般变量、数组、结构体、位变量、指针、特殊功能寄存器)定义、函数定义和混合编程。现在工科大部分专业都开设了C语言课程,特别是学单片机的专业,无一不开C语言课程,学生都具有C语言的基础,因此在单片机教学中不用重复讲授学习过的C语言内容,只需要讲单片机中所涉及的新内容以及与C语言不同的即可。具体我们在单片机课程中讲授的C语言有以下内容。

(1)C51数据类型及存储:增加了“bit和sbit位类型”、“sfr和sfr16特殊功能寄存器”两种新的数据类型,描述了各种数据在单片机中的存储方式。

(2)C51变量的定义及数据存储区域:对变量、数组、结构体等的定义,增加了“存储区”属性,强调所定义的对象具体存放的区域,并且对“存储类型”属性也作了要求。在内容处理上以基本变量(字符型、整型、浮点型)定义为例进行讲解。

(3)C51位变量的定义,特殊功能寄存器的定义,明确给出具体的定义形式。

(4)C51指针的定义:讲指针的定义及应用,在单片机中用两种指针访问存储器,一种是通用指针,另一种是专用指针,主要是讲专用指针,定义时不仅要清楚其存储区域,更要明确其指向区域。单片机中指针的使用更加自由和方便。

(5)C51的输入/输出:特别安排了格式输入函数“scanf”和格式输出函数“printf”内容,在单片机中这两个函数是对应串行口的输入和输出,并不是PC机C语言的从键盘输入和从显示器输出。

(6)C51函数的定义:讲函数和中断函数的定义,特别是中断函数,必须要明确对应的中断源,强调既不传递参数也不返回值。

(7)C51与汇编语言混合编程:讲解了C51汇编函数的规则、格式和混合编程,该内容为学生将来从事单片机开发进行混合编程提供方法和实例。

(8)C51集成开发软件Keil C简介:介绍了单片机集成开发软件µVision2,使学生尽快掌握单片机C语言程序开发软件。

从上面这些内容可以看出,前6个内容是必须要学习的,并且都是一些零碎的内容,仅涉及了基本概念(数据类型、变量定义)、指针概念、和函数定义格式等几个方面,写成讲义仅有二十来页、三万字左右。可见真正与单片机密切相关的C语言内容并不多,除了混合编程之外,对于学过C语言的学生来说,都非常容易理解和掌握,需要的学时数也较少,而混合编程不是基本内容,在实际教学中,我们也仅是简单地讲一下,不做要求。

3单片机C语言的讲解方法

在内容的讲解中,为了达到使学生容易理解、掌握和应用单片机C语言的目的,我们从三个方面努力:一是尽可能地做到概念明确、清晰、准确;二是紧密结合单片机实际多举例子;三是讲一些应用中的体会,如应该注意的问题、容易出错的地方等。在教学中,以变量定义、专用指针定义、C51汇编语言函数格式三个内容为重点。下面通过对两个重点内容的讲解情况,说明在教学中是怎样做到“概念明确、清晰、准确”的,其他方面不一一赘述,可以参阅教材。

3.1关于变量的定义

我们首先明确给出在单片机C语言变量定义的具体形式。在不少PC机C语言教材中,讲变量的定义时都没有明确给出具体形式,在单片机书中大多数也是如此,在PC机C语言中通过教师举例和书上例子,学生就能够轻松学会定义变量,但是在单片机中就大不一样了。用C语言编写单片机程序遇到最多的问题就是变量的定义,所以明确给出变量的定义形式是非常重要的。我们给出的变量定义的形式为:

[存储类型] 数据类型[存储区]变量名[=初值] (1)

该定义式明确地提出了单片机中C语言变量有4种属性,方括号中的内容可以缺省。“存储类型”这个属性我们仍沿用PC机ANSI C的说法,尽量不改变原来的含义,“存储类型”有4种:动态存储(auto)、静态存储(static)、全局存储(extern)和寄存器存储(register),缺省时为动态存储。

与PC机C语言变量定义的形式比较,多了一个“存储区”属性,这个新的属性极其重要,该属性就是要指明将变量存储在什么地方,变量的“存储区”有:data、bdata、idata、pdata、xdata、code区域,可以根据实际情况选择某一种存储区。缺省时变量的存储区域决定于程序所选取的编译模式,在小模式下缺省存储区为data区域。

当前“存储区”属性的说法很乱,有的书上称为“存储类型”,有的称为“存储空间”,有的称为“存储器类型”,很显然这些说法都不妥,第一种说法与原有的“存储类型”属性术语一样,后两种说法与实际含义不符合,因为“data、bdata、idata……”既不是存储空间也不是存储器,而是某种存储器的一部分,所以将其称为“存储区”最恰当。

另外在定义变量时可以指定存储地址也不再赘述,可以参考教材。

3.2关于专用指针的定义

我们也是明确地给出专用指针定义的形式:

[存储类型]数据类型指向存储区*[指针存储区]指针名 (2)

可见,该定义式明确提出了专用指针有5种属性,这里的“指针存储区”属性与一般变量的“存储区”属性对应,就是指针变量所存储的区域。“指向存储区”属性是程序员通过指针访问数据的存储区,在这里使用“指向存储区”这一术语而不是用“存储区”,使得专用指针变量的概念更清楚。“指针存储区”属性可以省略,省略时指针变量保存在默认的区域;“指向存储区”不能省略,否则就成了通用指针。一般“指向存储区”和“指针存储区”不是同一个区域。

从专用指针定义式(2)来看,指针的定义有些复杂,可能会有人说把问题搞复杂化了,并且使学生产生畏惧心理,但由于“指向存储区”属性和“指针存储区”属性都能够与单片机的实际情况对应起来,使学生对专用指针的概念认识得更清楚。反过来,如果不指出“指针存储区”属性,对于那些善于思考问题的学生反而会产生“指针存放于何处”的疑问,典型的问题如:定义一指向程序存储区的指针,通过该指针读取首地址为0x0100的数表,定义式如下:

unsignedcharcode*point=0x0100;

指针point指向程序区是很明确的,但是会产生疑问,“该指针能够赋值吗”?能够赋值说明指针不是存放在程序区,那它存放于何处?可以给学生讲它存放于默认区,但如果学生问“想把它保存到其他区域该怎么做”?欲想圆满解答必须用定义式(2)。

4单片机C语言的习题和实验

针对单片机C语言的教学内容,编写习题和实验题目,使习题和实验题目与单片机密切结合,与实际应用相联系。

4.1习题内容

编写的习题可以分为三个层次,第一个层次是帮助理解所讲的内容,这一部分主要是一些思考题;第二个层次是所讲内容的简单应用;第三个层次是一些结合实际的应用,这一部分多是编程题。

(1) 帮助理解所讲内容的如有以下题目:

C51定义变量的一般格式是什么?变量的4种属性是什么?

C51的数据存储区域类型有哪些?各种存储区域类型是哪种存储空间,存储范围是什么?

如何将C51变量或数组定义存储到指定的位置?

C51位变量的定义格式是什么?如何定义bdata型字节变量的位变量?

如何定义8位字节型特殊功能寄存器?如何定义16位特殊功能寄存器?如何定义特殊功能寄存器的位变量?

C51专用指针定义的一般格式是什么?如何确定专用指针定义的指向空间和指针变量本身存储的空间?

(2) 基本概念的简单应用题如有以下题目:

定义数码管显示0~9的共阴极显示代码(0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f, 0x6f)数组dis_code,将其定义在code区;

定义给定时器/计数器0赋初值的变量t0l和t0h,将其定义在data区的0x30、0x31处;

定义长度为20的整型数组data_buf于idata区中;

定义长度为100的无符号字符型数组data_array于片外数据区中;

先定义一个无符号字符型变量state于bdata区中,再定义两个与state的最高位和次高位对应的位变量flag_lamp和flag_machine。

(3) 结合实际应用的编程题目如:二进制数与ASCII码相互转换,多位二进制数与十进制数相互转换,排序,不同区域之间数据传送,数字滤波等。

4.2实验内容

针对理论教学内容,编写了两类实验题目,一类是基本概念实验,第二类是与实际应用有关的编程训练实验。其实验题目主要有如下一些:认识变量的存储区属性和存储方式的实验,实验内容为在data、idata、bdata、pdata、xdata区域中分别定义char、unsigned char、int、unsigned int、float等类型的变量,并将其赋值,单步运行程序,观察各个变量所存储的位置和不同类型数据的存放方式。

指针实验,实验内容为定义指向data、idata、xdata、code区域中的unsigned char、unsigned int型指针于指定的位置。通过指针,将源区域某个地方的一些数据传送到目标区域的某个地方,单步运行程序,观察指针变量的变化情况、观察各个区域数据的变化情况。

编程训练实验:排序、查找某区域的某个数据、两个区域中是数据比较、实现延时1ms、10ms倍数的实验等。

5结束语

相对于其他微控制器如三星公司的ARM7及一些较复杂的芯片如射频IC卡芯片MFRC500,MCS-51单片机是一个简单的芯片,初学者之所以感到困难,原因主要是两个方面:一是编程,特别是用汇编语言编程更难,学习单片机的人多数没有接触过汇编语言,欲在短短的十几个学时掌握单片机指令,并能够熟练进行汇编程序设计是不可能的,但如果用C语言编程,并且有较好的编程能力,只要理解了单片机各个部分的工作原理,掌握了相应的特殊功能寄存器(对51子系列主要有6个),就能够顺利地编写单片机程序;第二个原因是实践少,学习单片机与学习其它高级语言课程一样,需要多编程序多练习,虽然过去有Keil C软件可以模拟运行程序,但不够直观,只有在单片机硬件系统上运行才能够直观地看到运行情况和结果,所以Keil C模拟运行程序不能够激发学生的学习兴趣,但做一个硬件系统需要时间较长,并且非常麻烦,致使学生对单片机编程练习较少。

现在有了单片机系统设计和模拟运行软件Proteus,使用该软件可以设计单片机应用系统电路,并且由Keil C生成的执行代码可以在电路中模拟运行,显示出程序在应用系统中的运行情况和结果,非常直观,不仅能够激发学生的学习兴趣,而且电路设计非常快捷,大大提高训练的效率,并且能够使学生的编程能力和电路设计能力同步提高。

Keil C的出现推动了单片机C语言的教学,提高了人们的编写能力,为了充分发挥Proteus的作用,也需要在单片机教学中做一些探索和研究,进一步推动单片机教学改革,不仅使学生更容易掌握单片机编程,而且还能够使学生有更强的硬件电路设计能力。

参考文献:

[1] 周国运.单片机原理与应用(C语言版)[M].北京:中国水利水电出版社,2009.

[2] 谢维成,杨加国.单片机原理与应用及C51程序设计[M].北京:清华大学出版社,2006.