C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
简介随着科技的发展和人工智能时代的来临,计算机中程序设计具有越来越重要的地位。C语言程序设计是程序设计者的入门语言,它使学习者更能容易理解。当然它也能设计出一些高级的应用软件和系统软件。C语言程序设计还能帮助我们学习其它计算机语言如我们熟悉的java语言vb语 言的设计,因此C语言是初学者必备的语言。
冯.诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯.诺依曼思想,这是计算机发展史上的里程碑。自1945 年至今大多采用其结构,因此冯.诺依曼被称为计算机之父。他的体系结构计算机由运算器,控制器,存储器,输入设备,输出设备五大部件构成。C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言中具有举足轻重的地位。1
C 语言是一种十分强大的语言,可以进行多种方式进行程序的设计,它是一种很有特色的高级语言通过若干个函数组成,它具备构成程序设计的 3 种基本结构顺序,选择和循环结构。C语言编辑简洁明了,运算符丰富且功能强大还有编译预处理功能。此语言的移植性好不同的处理器用不同的编译器编译指令达到移植的效果。1
发展历程C语言的原型ALGOL 60语言(也称为A语言) 。
1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。
1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。
1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。
而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。
1987年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。C语言的主要特点,即经典的87 ANSIC。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE III PLUS、DBASE IV 都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了。
1990年,国际化标准组织ISO(Intrernational StandardOrganization)接受了87 ANSI C为ISO C的标准(ISO9899-1990)。1994年,ISO修订了C语言的标准。目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则略有差别。
特点1. C语言是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2.C语言是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大。
4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX、LINUX等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,明显优于其它高级语言,有一些大型应用软件也是用C语言编写的。2
优点1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4、是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5、语法限制不太严格,程序设计自由度大
虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。
6、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
7、生成目标代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10%~20%。
8、适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX、windows 98.windows NT;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。3
缺点1.C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2.C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。2
常用编译器有Microsoft Visual C++,Borland C++,WatcomC++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,WatcomC++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C,Dev-C++,C-Free,win-tc 等等......
C语言的结构化设计C语言每个阶段的处理都比较容易使人理解。它采用自顶向下, 逐步细化,模块化设计,结构化编码的方法来保证完成程序。
自顶向下逐步细化通过自顶向下逐步细化可以使C语言代码的出错率降低,更能提高C语言程序的执行效率,它能使一个具体的问题抽象化再加以注释方便人们的理解。1
模块化设计它把一个复杂的问题进行了模块化,使每个模块的功能更简洁,更单一,模块在语言中可通过函数实现。 例如贪吃蛇游戏的设计可分为六个模块。游戏开始时,固定蛇身的长度,其位置任意。
(1) 蛇头撞到自身和周围边框时游戏结束,重新开始时撞到食物蛇身长度增加一个单位。
(2) 吃到一定长度或时间停止为通关。
(3) 可以通过设置蛇的运动速度加快游戏的进度。
(4) 可以使用外部设备如键盘及手柄控制蛇的运动方向如果不控 制蛇则按当前方向运动。
(5) 设置显示游戏的级别及分数。
这些模块可以通过C语言程序设计中的函数及代码完成。1
结构化编码设计好结构化算法之后,还要进行结构化编码,将其用设计好的算法用具体的程序设计语言来表示,得到结构化程序。1
C语言程序设计中遇到的障碍C语言的应用范围很广,也很方便,能够适应大多数的程序设计,也为学习者学习其他软件提供了很大的帮助作用,但是在具体应用过程中还是出现了很多问题。
时间中断计算机控制系统是一个精密的控制系统,尤其注重时效性,必须要在规定时间之内完成多项规定任务,这就对计时有了很严格的要求。所以传统的时钟法难以满足需要,在C语言程序设计过程中我们一般都用ICH进行计时,准确而且能适应编程过程中的各种突发状况。在实际操作过程中,计算机控制系统很有可能会出现信号中断的现象,或者由于工作人员失误指令可能会出现错误,一旦操作失误或者出现各种突发情况都有可能会导致计算机的死机,影响整个程序设计的进程。在这个时候,C语言就可以很好地应对和解决,可以通过仿真对计算机进行浮点运算处理,通俗意思也就是说时间中断会受到图形、浮点运算的影响,而且一定程度上会受到很大的限制。4
汉字显示及数组输入计算机控制系统在一定程度上对C语言程序设计有辅助作用,一般都是通过构建函数的形式来辅助C语言完成汉字处理的,但是并不能完全实现自动化,还是需要我们自己 来设置起始点、颜色、汉字库以及背景色等基本内容,有了这些,函数才能成功将数据进行转换,也才能对字符进行汉字识别。但是函数毕竟是一个固定的公式或者程序,不可能对所有字符串都能进行转换和识别,如果语言比较复杂或者表达不直接就很难识别出来,另一方面,程序的固定内存本身也是有限的,一旦字符串比较大就难以存储,也给C语言程序设计带来了很多问题。4
混合编程在计算机控制系统的运行过程中,很多时候后台可利用的时间是有限的要受到控制的,所以程序员经常会用C语言来进行混合编程,这样能够很好的缩短设计时间,也能更好地提高工作效率。但是,一旦涉及到混合编程,问题就比较复杂,需要程序员设计出更多、更复杂、更能适应程序设计的函数模型,这对程序员的 工作无疑增加了很大的难度。4
本词条内容贡献者为:
徐恒山 - 讲师 - 西北农林科技大学