160 likes | 312 Views
第一章 C语言概述. 1.1 C语言出现的历史背景 l C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合于作为系统描述语言,既用来写系统软件,也可用来写应用软件。 l C语言是第三代语言(面向过程的高级语言,第一代:机器语言;第二代:汇编语言). 机器语言. 汇编语言. 高级语言. 特点:二进制表示、面向机器、直接运行。. 特点:符号化的机器语言、面向机器、翻译后运行。. 特点:类自然语言、面向问题、翻译后运行。. 2+3. 0101 0010 0011. 2+3. ADD 2,3. 高级语言程序. 翻译系统. 二进制机器语言.
E N D
第一章C语言概述 • 1.1 C语言出现的历史背景 • l C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合于作为系统描述语言,既用来写系统软件,也可用来写应用软件。 • lC语言是第三代语言(面向过程的高级语言,第一代:机器语言;第二代:汇编语言) 机器语言 汇编语言 高级语言 特点:二进制表示、面向机器、直接运行。 特点:符号化的机器语言、面向机器、翻译后运行。 特点:类自然语言、面向问题、翻译后运行。 2+3 010100100011 2+3 ADD 2,3 高级语言程序 翻译系统 二进制机器语言 编译或解释程序。
1.1 C语言出现的历史背景 • 以前的操作系统等系统软件主要是由汇编语言编写的(包括UNIX操作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如,对内存地址的操作、位操作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。 • C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。1960年出现的ALGOL60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL(Combined Programming Language)语言,CPL语言在ALGOL60的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的Matin Richards对CPL语言作了简化,推出了BCPL (Basic Combined Programming Language)语言。
1.1 C语言出现的历史背景 • 后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用。直到1975年UNIX第6版公布后,C语言的突出优点才引起人们普遍注意。1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所需做的工作大大简化了,这也推动了UNIX操作系统迅速地在各种机器上实现。随着UNIX的日益广泛使用,C语言也迅速得到推广,C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成。1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一。 • 以1978年发表的UNIX第7版中的C编译程序为基础,Brian W. kernighan和Dennis M. Ritchie (合称K&R)合著了影响深远的名著《The C programming language》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C。 1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版
1.1 C语言出现的历史背景 • 本对C的发展和扩充,制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。K&R在1988年修改了他们的经典著作《The C Programming Language》,按照ANSI C标准重新写了该书。1987年,ANSI又公布了新标准一87 ANSI C.目前流行的C编译系统都是以它为基础的。本书的叙述基本上以87 ANSI C为基础。目前广泛流行的各种版本C语言编译系统虽然基本部分是相同的,但也有一些不同。在微型机上使用的有Microsoft C ,Turbo C, Quick C等,它们的不同版本又略有差异。 • Java,C++等面向对象语言(第四代语言)是在C语言基础上发展起来的。
1.2 C语言的特点 C语言的特点: ⑴C语言具有完善的功能和非常高的效率。 ⑵C语言可以对硬件操作,是介于汇编语言和高级语言之间的一种语言。 ⑶C语言是结构化的程序设计语言。 ⑷C语言具有丰富的数据类型和运算类型。 ⑸C 语言具有良好的移植性。 ⑹C语言书写灵活,表达简洁。
1.2 C语言的特点 下面对于它的一些特点进行说明: 语法限制不大严格,程序设计自由度大 C语言允许程序编写者有较大的自由度,因此放宽了语法检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C编译程序去查错。“限制”与“灵活”是一对矛盾。限制严格,就失去灵活性;而强调灵活,就必然放松限制。一个不熟练的人员,编一个正确的C程序可能会比编一个其它高级语言程序难一些。也就是说,对用C语言的人,要求对程序设计更熟练一些。
1.2 C语言的特点 C语言允许直接访问物理地址 能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作,因此C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。有人把C称为“高级语言中的低级语言”,也有人称它为“中级语言”因为兼有高级和低级语言的特点。 生成目标代码质量高,程序执行效率高 一般只比汇编程序生成的目标代码效率低10~20%。
1.3 简单的C程序介绍 C语言的基本程序结构: 实例:输入两个数及其运算关系,输出运算结果。 # include <stdio.h> void main(void) /*test1.c*/ { char ch; int a, b; int c; scanf(“%d %c %d”,&a,&ch,&b); c=fun(a,ch,b); printf(“a%cb=%d”,ch,c); } int fun(int x,char op,int y) { int z; switch(op) { case ‘+’: z=x+y; break; case ‘-‘ : z=x-y; break; case ‘*’: z=x*y; break; case ‘/’ : z=x/y; break; } return z; } 主函数 子函数 实例运行 ⒈程序是由函数组成的,函数是由语句组成的。其中主函数有且唯一,主函数名为main。子函数可有可无也可以有多个。 ⒉C语言的系统构词必须用小写,用户构词可以大小写混用。 ⒊C语言的语句用;作为结束,因此一句可以用一行或几行书 写,但不能割裂构词。 ⒋各词之间用一个或几个space分隔。
1.3 简单的C程序介绍 例: main () /*test2.c */ { printf ("This is a C program \n"); } 实例运行 main表示“主函数”,每一个C程序都必须有一个main函数。 函数体由大括弧{ }括起 只有一个输出语句,printf是C语言中的输出函数; “\n”是换行符.
1.3 简单的C程序介绍 例:求两个数之和 main () /* test3.c */ { int a, b, sum; a=123;b=456; sum=a+b; printf("Sum of a plus b is %d\n",sum); } 实例运行
1.3 简单的C程序介绍 例: 求两个数中较大者 main() /* test4.c */ { int a,b,c; /*定义变量*/ printf("Input a,b:"); scanf("%d,%d",&a,&b); /*输入变量a和b的值*/ c=max(a,b); /*调用max函数,将得到的值赋给c */ printf("Max of a and b is %d\n",c); /*输出c的值*/ } int max(x,y)/*定义max函数,x,y为形式参数*/ int x,y; /* 对形参x,y 作类型定义 */ {int z; /* max函数中用到的变量z,也要加以定义 */ if(x>y) z=x; else z=y; return (z); } /* 将z的值返回,通过max带回调用处 */ 实例运行
1.3 简单的C程序介绍 • 小结: • C程序是由函数构成的。一个C源程序至少包含一个函数(main函数)。C的函数相当于其它语言中的子程序。用函数来实现特定的功能。可以说C是函数式的语言。程序全部工作都是由函数来完成的。C的函数库十分丰富, 标准C提供一百多个库函数,TurboC和MS C4.0提供三百多个库函数。 C的这种特点使得容易实现程序的模块化。 • 一个函数由两部分组成: • (1)函数的说明部分。包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型。 • 例: 前面例题中的max函数的说明部分为。 • int max ( int x, inty) • 函数类型函数名 函数参数类型函数参数名
1.3 简单的C程序介绍 • (2)函数体,即函数说明部分下面的大括弧{…}内的部分。如果一个函数内有多个大括弧,则最外层的一对{ }为函数体的范围。 • 函数体一般包括: • ①变量定义。 • ②执行部分。由若干个语句组成。 • 当然,在某些情况下也可以没有变量定义部分。甚至可以既无变量定义也无执行部分。如: • dump() { } • 它是一个空函数,什么也下干,但这是合法的。 • 一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前在另一些函数之后)。
1.3 简单的C程序介绍 • C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上,C程序没有行号. • 每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。 例如: • c=a十b; • C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成.C对输入输出实行“函数化” • 可以用/*……*/对C程序中的任何部分作注释,一个好的,有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。
1.4 C程序的上机步骤(实验教程P181) • 用TurboC运行C程序的步骤: • 调用Turbo C程序,进入Turbo C的集成开发环境; • 改变用户的工作目录(文件所在目录) • File->Change Dir • 确立TC的工作环境 • Option->Directions 注意:要将所做的修改保存到tcconfig.tc。(option->save option) • 编辑源文件。根据需要输入或修改源程序。 如: File.c(文件名大小等效) • 编译源程序。 • 执行程序。
例:求某数的绝对值。 void main() {int a,b; printf ("input a number"); scanf("%d",&a); if (a<0) b=-a; else b=a; printf ("|a|=%d\n",b); }