01--C语言的发展
计算机程序
程序——组计算机能识别和执行的指令
程序和指令是计算机系统中最基本的概念
计算机语言
计算机和人都能识别的语言---计算机语言
计算机语言的发展阶段:
-
机器语言: 计算机工作基于二进制,从根本上说,计算机只能识别和接受由0和1组成的指令。 计算机能直接识别和接受的二进制代码称为机器指令,机器指令的集合就是该机器的机器语言。
-
符号语言:为了克服机器语言的缺点,人们创造出符号语言,它是用一些字母和数字表示一个指令。(例如 -用ADD表示“加”)显然,计算机并不能直接识别和接受符号语言的指令,需要用一种称为汇编程序的软件把符号语言转成机器指令。一般,一条符号语言的指令对应转换为一条机器指令。转换的过程称为“代真”或“汇编”。因此,符号语言又称为符号汇编语言或汇编语言。
-
低级语言:不同型号的计算机的机器语言和汇编语言是互不相通的,机器语言和汇编语言是完全依赖于具体机器特性的,是面向机器的语言,离计算机“很近”,故称为计算机低级语言。
-
高级语言:为了克服低级语言的缺点,20世纪50年代创造出了第一个计算机高级语言—FORTRAN语言,不依赖于具体的机器,用它写出的程序对任何型号的计算机都适用,它与具体机器距离“较远”,故称为高级语言
编译过程:
计算机也不能直接识别高级语言程序,也要进行“翻译”。用一种称为编译程序的软件,把高级语言写的程序(称为源程序),转换为机器指令的程序(目标程序),然后让计算机执行机器指令程序,最后得到结果。
高级语言的发展阶段
高级语言的一条语句往往对应多条机器指令
-
非结构化的语言
-
结构化语言
-
面向对象的语言
C语言的发展
-
1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出了C语言,最初,C语言只是为描述和实现Unix操作系统提供一种工作语言而设计的
-
1973年,Ken Thompson和D.M.Ritchie合作把Unix的90%以上用C语言改写,即Unix第五版,随着Unix的日益广泛的使用,C语言也迅速得到推广
-
1978年以后,C语言先后移植到大、小、中和微型计算机上,成为全世界应用最广泛的程序设计高级语言
-
1978年,Brian W.Kernighan和Dennis M.Ritchie一起写了 “The C Programming Language ”,它是实际上第一个C语言标准
-
1983年,ANSI(美国国家标准协会),制定第一次C语言标准草案
-
1989年,公布了一个完整的C语言标准——ANSI X3. 159-1989(常称为 ANSI C 或C89)
-
1990年,ISO(国际标准化组织)接受C89作为国际标准
-
1999年,ISO又对C语言标准进行了修订,称为C99(C99是C89的补充)
C语言主要特点
-
语言简洁、紧凑,使用方便、灵活(共有37个关键字)
-
运算符丰富(共有34种运算符)
-
数据类型丰富
-
具有结构化控制语句 (如 if ...else语句、while语句、do...while语句、switch语句和for语句),用函数作为程序的模块化单位。C语言是完全模块化和结构化的语言
-
语法限制不太严格
-
可移植性高
-
生成目标代码质量高,程序执行效率高
-
C语言允许直接访问物理地址,能进行位(bit)运算,能实现汇编语言的大部分功能,可以直接对硬件进行操作
简单的C语言程序结构
例如:
# include<stdio.h> int main() { printf("hello world !!! \n"); return 0; } 分析以上代码: 1、 用# include指令把头文件里面的信息调入供使用,如果没有#include 就不可能执行printf函数,printf函数是输出。 2、stdio.h是系统提供的一个文件名,stdio 是standdard input&outputd的缩写,文件后缀名 .h 的意思是头文件。 3、每一个语句最后都有一个分号,表示语句结束 4、return 0 函数执行完毕时返回函数值0
C语言允许两种注释方式
-
单行注释——以 / / 开始,换行符结束
-
多行注释—— 以 /* 开始 , 以 */ 结束
-
注意:字符串中的//和/*都不作为注释的开始,而是作为字符串的一部分
C语言程序的结构:
1、一个程序由一个或多个源程序文件组成
-
一个源文件中可以包含三个部分:
-
预处理指令——如:# include <stdio.h>
-
全局声明——在函数外声明的变量称为全局变量
-
函数定义
2、函数是C语言的只要组成部分——函数是C语言的基本单位
-
一个C语言程序是由一个或多个函数组成的,其中必须包含一个main函数(且只能有一个main函数)
-
一个小程序只包含一个源程序文件,一个源程序文件中包含若干个函数(其中有一个main函数)
-
在进行编译时,是以源程序文件为对象进行的
3、一个函数包括两个部分(函数首部和函数体)
-
函数首部——即函数第一行,包括函数名、函数类型、函数属性、函数参数(形式参数)名、参数类型。例如
int max (int x, int y )
如果函数没有参数类型则在括号中写void,也可以是空括号
-
函数体——函数首部下面的花括号内的部分
函数体一般包括两部分——声明部分和执行部分
4、程序总是从main函数开始执行的
5、程序中要求计算机的操作是由C语句完成的
6、在每个数据声明和语句的最后必须有一个分号
7、C语言本身不提供输入输出语句——输入输出的操作是由库函数scanf和printfd等函数完成的
8、程序应当包含注释
程序设计的任务
程序设计——从确定任务到得到结果、写出文档的全过程
一般经历以下几个工作阶段:
-
问题分析——建立模型
-
设计算法——一般用流程图表示解题步骤
-
编写程序
-
对源程序进行编辑、编译和连接
-
运行程序,分析结果,除此之外还要对程序进行测试。测试——设计多组测试数据,检查程序对不同数据的运行情况,从中尽量发现程序中存在的漏洞,并修改程序,使之能适用于各种情况
-
编写程序文档(说明书)
软件是计算机程序和程序文档的总称