谭浩强C语言ppt
(3) 数据结构丰富,具有现代化语言的各种数据结 构。C的数据类型有整型、实型、字符型、数组 类型、指针类型、结构体类型、共用体类型等。 能用来实现各种复杂的数据结构(如链表、树、 栈等)的运算。尤其是指针类型数据,使用起来 比PASCAL更为灵活、多样。 (4) 具有结构化的控制语句(如if…else语句、while 语句、do…while语句、switch语句、for语句)。 用函数作为程序的模块单位,便于实现程序的模 块化。C是良好的结构化语言, 符合现代编程风 格的要求。
456。第4行使sum的值为a+b,第5行中“%d”是输入输 出的“格式字符串”,用来指定输入输出时的数据类型 和格式(详见第4章),“%d”表示“以十进制整数形式输 出”。在执行输出时,此位置上代以一个十进制整数值。 printf函数中括弧内最右端sum是要输出的变量,现在它
的值为579(即123+456之值)。因此输出一行信息为sum is
高级: BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2;
中级: C,FORTH,宏汇编;
低级: 汇编语言 一般仍习惯将C语言称为高级语言,因为C程序也要通过编译、 连接才能得到可执行的目标程序,这是和其他高级语言相 同的。
C的以上特点,读者现在也许还不能深刻理解,待学完C以后
应用最广泛的几种计算机语言之一。以1978年发表的
UNIX第7版中的C编译程序为基础,Brian W.Kernighan
和Dennis M.Ritchie (合称K&R)合著了影响深远的名著 《The C Programming Language》,这本书中介绍的C
语言成为后来广泛使用的C语言版本的基础,它被称为标
能有较大的自由度,以适应宽广的应用面。总之,C语言
对程序员要求较高。程序员使用C语言编写程序会感到限 制少,灵活性大,功能强,可以编写出任何类型的程序。
现在,C语言已不仅用来编写系统软件,也用来编写应用
软件。学习和使用C的人已越来越多。
1.3 简单的C程序介绍
下面先介绍几个简单的C程序,然后从中分析C程序的特性。 例 1.1 main ( ) { printf ("This is a C program.\n"); } 本程序的作用是输出以下一行信息: This is a c program. 其中 main 表示“主函数”。每一个C程序都必须有一个 main 函数。函数体由大括弧{}括起来。本例中主函数内只有一个输 出语句,printf是C语言中的输出函数(详见第4章)。双引号 (双括号)内的字符串原样输出。“\n”是换行符,即在输出 “This is a c program.”后回车换行。语句最后有一分号。
1972年至1973年间,贝尔实验室的D.M.Ritchie 在B语言的基础 上设计出了C语言(取BCPL的第二个字母)。C语言既保持了
BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺
点(过于简单,数据无类型等)。最初的C语言只是为描述和 实现UNIX操作系统提供一种工作语言而设计的。1973年, K.Thompson和D.M.Ritchie两人合作把UNIX的90%以上用C 改写,即UNIX第5版。原来的UNIX 操作系统是1969年由美
(6) C语言能进行位(bit)操作,能实现汇编语言的大 部分功能,可以直接对硬件进行操作。因此C既 具有高级语言的功能,又具有低级语言的许多功 能,可用来写系统软件。C语言的这种双重性, 使它既是成功的系统描述语言,又是通用的程序 设计语言。 有人把C称为“高级语言中的低级语言” 或“中级 语言”,意为兼有高级和低级语言的特点。按此 观点可将各语言分类如下:
再回顾一下,就会有比较深的体会。我们从应用的角度出 发对C语言和其他传统的高级语言作一简单比较。
从掌握语言的难易程度来看,C语言比其他语言难一些。
BASIC是初学者入门的较好的语言,FORTRAN也比较 好掌握。对科学计算多用FORTRAN或PL/Ⅰ;对商业和管 理等数据处理领域,用COBOL为宜。C语言虽然也可用 于科学计算和管理领域,但并不理想,C的特长不在这里。 对操作系统和系统实用程序以及需要对硬件进行操作的 场合,用C语言明显地优越于其他高级语言,有的大型应 用软件也用C语言编写。从教学角度,由于PASCAL是世 界上第一个结构化语言,而曾被认为是计算机专业的比 较理想的教学语言。目前在数据结构等课程中一般用 PASCAL语言举例。但PASCAL语言难以推广到各实际 应用领域,
1990年,国际标准化组织ISO(International Standard Organization) 接受87 ANSI C为ISO C 的标准(ISO 9899—
1990)。目前流行的C编译系统都是以它为基础的。本书的
叙述基本上以ANSI C 为基础。目前广泛流行的各种版本 C语言编译系统虽然基本部分是相同的,但也有一些不同。 在微型机上使用的有Microsoft C、 Turbo C、 Quick C、 BORLAND C等,它们的不同版本又略有差异。因此,读
Ken Thompson 以BCPL语言为基础, 又做了进 一步简化, 设计出了很简单的而且很接近硬件的 B语言 (取BCPL的第一个字母), 并用B语言写了 第一个UNIX操作系统,在PDP7上实现。1971 年在PDP11/20上实现了B语言,并写了UNIX 操作系统。但B语言过于简单,功能有限。
到目前为止基本上只是教学语言。C语言也是理想的结构 化语言, 且描述能力强, 同样适于教学。 操作系统课程 多结合UNIX讲解,而UNIX与C不可分,因此,C语言已 经成为被广泛使用的教学语言。C除了能用于教学外,还
有广泛的应用领域,因此更有生命力。PASCAL和其他
高级语言的设计目标是通过严格的语法定义和检查来保 证程序的正确性,而C则是强调灵活性,使程序设计人员
UNIX操作系统迅速地在各种机器上实现。例如VAX、
AT&T等计算机系统都相继开发了UNIX。随着UNIX的日 益广泛使用,C语言也迅速得到推广。C语言和UNIX可以
说是一对孪生兄弟,在发展过程中相辅相成。1978年以后,
C语言已先后移植到大、中、小、微型机上,已独立于 UNIX和PDP了。现在C语言已风靡全世界,成为世界上
国的贝尔实验室的K.Thompson和D.M.Ritchie开发成功的,
是用汇编语言写的。
后来,C语言多次做了改进,但主要还是在贝尔实验室内部 使用。直到1975年UNIX第6版公布后,C语言的突出优点 才引起人们的普遍注意。1977年出现了不依赖于具体机器 的C语言编译文本《可移植C语言编译程序》,使C移植 到其他机器时所需做的工作大大简化了,这也推动了
准C。1983年,美国国家标准化协会(ANSI)根据C语言问 世以来各种版本对C的发展和扩充,制定了新的标准,称 为ANSI C。 ANSI C比原来的标准C有了很大的发展。K & R在1988年修改了他们的经典著作《The C Programming Language》,按照 ANSI C 标准重新写了 该书。1987年,ANSI又公布了新标准——87 ANSIC。
579 例1.3 main ( )/* 主函数*/ { int a, b, c; /*声明部分,定义变量*/
scanf ("%d,%d",&a,&b);
/*输入变量a和b的值*/
c=max (a,b); /*调用max函数,将得到的值赋给c*/ printf ("max=%d",c); /*输出c的值*/ } int max(int x,int y) /* 定义max函数,函数值为整 型, 形式参数x,y为整型*/ {int z; /* max函数中的声明部分,定义本函数中用 到的变量z为整型*/ if (x>y) z=x; else z=y; return (z); /*将z的值返回,通过max带回调用处*/ }
(5) 语法限制不太严格,程序设计自由度大。例如对数 组下标越界不做检查,由程序编写者自己保证程序的 正确。对变量的类型使用比较灵活,例如整型数据与 字符型数据可以通用。一般的高级语言语法检查比较 严,能检查出几乎所有的语法错误。而C语言允许程 序编写者有较大的自由度,因此,放宽了语法检查。 程序员应当仔细检查程序,保证其正确,而不要过分 依赖C编译程序去查错。“限制”与“灵活”是一对 矛盾。限制严格,就失去灵活性;而强调灵活,就必然 放松限制。一个不熟练的编程人员,编一个正确的C 程序可能会比编一个其他高级语言程序难一些。也就ห้องสมุดไป่ตู้是说,对用C语言的人,要求对程序设计更熟练一些。
1972年至1973年间,贝尔实验室的D.M.Ritchie 在B语言的 基础上设计出了C语言(取BCPL的第二个字母)。C语言既 保持了BCPL和B语言的优点(精练,接近硬件),又克服了 它们的缺点(过于简单,数据无类型等)。最初的C语言只
是为描述和实现UNIX操作系统提供一种工作语言而设计
的。1973年,K.Thompson和D.M.Ritchie两人合作把 UNIX的90%以上用C改写,即UNIX第5版。原来的UNIX 操作系统是1969年由美国的贝尔实验室的K.Thompson和 D.M.Ritchie开发成功的,是用汇编语言写的。
者应了解所用的计算机系统所配置的C编译系统的特点和
规定 (可以参阅有关手册)。
1.2 C语言的特点
一种语言之所以能存在和发展,并具有生命力,总是有其不 同于(或优于)其他语言的特点。C语言的主要特点如下。 (1) 语言简洁、紧凑,使用方便、灵活。C语言一共只有32 个关键字,9种控制语句,程序书写形式自由,主要用小写 字母表示,压缩了一切不必要的成分。下面将C与 PASCAL语言做一比较。 (2) 运算符丰富。C的运算符包含的范围很广泛,共有34种 运算符。C把括号、赋值、强制类型转换等都作为运算符 处理,从而使C的运算类型极其丰富,表达式类型多样化。 灵活使用各种运算符可以实现在其他高级语言中难以实现 的运算。