基于C语言的程序设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 计算机系统的工作原理

本节将介绍计算机系统的组成、程序设计的基本知识,以及C语言概述。

1.1.1 计算机系统的组成

根据冯·诺依曼设计计算机的思想,计算机系统由计算机硬件和计算机软件两部分组成。

1. 计算机硬件

计算机硬件是指组成计算机系统的设备或机器,是“看得见,摸得着”的物理部件,它是组成计算机系统的基础。计算机硬件一般包括中央处理器(CPU)、内存储器、外存储器、输入设备和输出设备。中央处理器包括运算器和控制器。CPU与内存储器合称为主机,外存储器、输入设备和输出设备合称为外部设备。计算机硬件的组成可以用下列公式表示,它们之间的关系如图1-1所示。

图1-1 计算机硬件之间的关系

计算机硬件=主机(CPU+内存储器)+外设(外存储器+输入设备+输出设备)

2. 计算机软件

计算机软件是指组成计算机系统的程序、数据和文档。程序是指令的有序集合;数据是信息在计算机中的表示,是计算机处理的对象;文档是各种说明文本,是软件操作的辅助性资源。计算机的所有工作都必须在软件的控制下才能进行,没有软件的计算机称为“裸机”,是任何工作都不能做的。计算机软件的组成可以用下列公式表示。

计算机软件=系统软件(OS+DBMS+编译+服务程序)+应用软件(源程序+应用软件包)

根据软件的作用可以把软件分为系统软件和应用软件。系统软件是支持和管理计算机硬件的软件,是服务于硬件的,它创立的是一个平台;应用软件是完成用户某项要求的软件,是服务于特定用户的,它满足某一个应用领域。软件的作用如图1-2所示。

图1-2 软件的作用

系统软件包括操作系统、数据库管理系统、计算机编译语言和各种系统服务性程序。应用软件包括计算机源程序和应用软件包。所有这些软件,操作系统是基础,是其他软件的平台。没有操作系统,其他软件就无法工作。

从软件的构成上,可以用以下公式描述软件:

软件=程序+数据+文档资料

(1)程序

从通俗的角度讲,程序是让计算机解决问题的方法步骤。从专业的角度讲,程序是指令的有序集合,即程序=算法+数据结构。算法就是解决问题的方法。数据结构就是要计算机处理的数据在计算机中的存储和描述,即为数据的表示范围、数据间的关系和数据所能参与的运算。

也可以说程序是符号+规则,用规定的符号和符合规则的一组有意义的有序的指令集合称之为程序。为了解决同一个问题而编写的若干个程序的集合叫做程序集。在程序集中,首先被执行的程序叫主程序,在主程序执行期间被调用的程序称之为子程序。在程序定义中的“有意义”强调了程序要解决问题的目的性。

要让计算机按人们的意图做某项工作,必须使计算机能接受人们向它发出的各种命令和信息。但目前的大部分计算机还不能直接懂得人类的自然语言,只能接受用特定的信息代码编写成的一条条指令。计算机能识别并执行的信息符号代码的指令集合称为计算机语言,根据其发展,把它分为机器语言、汇编语言和高级语言三类。

第一,机器语言。机器语言是指用二进制代码直接表达指令的语言。机器语言程序可以被计算机识别并执行,但由于每条指令都是由0和1组成的数串,不好记忆,容易出错,不同机型的指令代码不同,现在一般的计算机用户很少使用它设计程序。

第二,汇编语言。汇编语言是用一些指令助记符(指令功能的英文词缩写)来表示机器语言每条指令的一种语言。如加法指令ADD,减法指令SUB,传送数据指令MOV等。汇编语言的指令要比机器语言易于记忆理解,不易出错。但这种语言没有从根本上减少指令,且繁琐,不易移植,功能弱,一般用户很少用这种语言编写程序。用汇编语言编写的程序不能被计算机直接执行,必须经过汇编程序汇编转换成机器语言程序后,才能执行。

第三,高级语言。高级语言是比较接近人类自然语言和数学描述的语言。高级语言一条命令的功能可以代替几条、几十条汇编语言的指令功能。因此,高级语言更简便、易学、易记,通用性强,兼容性好,便于移植,高级语言是目前广泛使用的程序设计语言。常用的有BASIC、Fortran、Pascal、C语言等。

高级语言虽然好学易用,但用高级语言编写的源程序,实际上是不能直接在计算机内运行的,还必须经过翻译转换成计算机所能识别的机器语言程序,即目标程序,才可运行。高级语言通常采用编译程序和解释程序两种翻译方式,如图1-3所示。

图1-3 源程序的两种翻译方式

解释程序是边翻译边运行,即从源程序中取一条指令转换一次执行一次,直到结束。编译程序是翻译完后再运行,即将源程序的每条指令全部转换成机器语言表达的程序(目标程序)再运行。每一种高级语言,都有一套与之相对应的翻译程序。

(2)数据

数据有广义和狭义之分。广义的数据概念是指对客观事物的描述,即用语言、文字、声音、图形、图像等手段对客观事物的形状、颜色、质地、运行状态等特性的描述。也就是用数字表示的是数据,用其他符号表示的也是数据。如268是数据,“我是一个学生”也是数据,一张照片、一段录音、一段电影都是数据。

在讲狭义的数据之前,先介绍一个概念——信息。信息是有用的数据或加工后的数据。所有的描述都是数据,但不一定是信息。今天对我来说数据有用,它就是信息;明天对我来说数据无用,就不是信息了。所以,信息具有一定的时效性、相对性。

从狭义上来讲,也就是是否能被计算机接收和处理,若能被计算机接收和处理的信息就是计算机数据。在计算机内部,通常数据和信息不加区分,数据就是信息,信息就是数据。在计算机中往往把数据分成不同的类型,对数量描述的能进行算术运算的数据是数值型数据,如268。对事物性质描述的是字符型数据,如“我是一个学生”。

(3)文档资料

文档资料是由应用软件和系统软件产生的信息的集合,一般以文件的形式保存在磁盘上。在程序设计中,我们所处理的文档资料大多是数据文件。

计算机硬件和计算机软件在计算机系统中是相辅相成、缺一不可的,它们共同组成了计算机系统,如图1-3 所示。计算机硬件是计算机的躯体和基础,计算机软件是计算机的头脑和灵魂,没有软件的计算机和缺少硬件的计算机都不能成为完整的计算机系统。二者相互推动,共同促进计算机的发展。

图1-3 计算机系统的组成

1.1.2 计算机系统的工作过程

计算机开机后,CPU首先执行固化在只读存储器(ROM)中的一小部分操作系统程序,这部分程序称为基本输入输出系统(BIOS),它启动操作系统的装载过程,先把一部分操作系统从磁盘读入内存,然后再由读入的这部分操作系统装载其他的操作系统程序。装载操作系统的过程称为自举或引导。操作系统被装载到内存后,计算机才能接收用户的命令,执行其他的程序,直到用户关机。程序是由一系列指令所组成的有序集合,计算机执行程序就是执行这一系列指令。

1. 指令和程序的概念

指令就是让计算机完成某个操作所发出的指令或命令,即计算机完成某个操作的依据。一条指令通常有操作码和操作数两部分组成,操作码指明该指令要完成的操作,操作数是所要完成操作的对象。一台计算机的所有指令的集合,称为该计算机的指令系统。

使用者根据解决某一问题的步骤,选用一条条指令进行有序的排列。计算机执行了一个指令序列,便可完成预定的任务。这一个指令序列就称为程序。显然,程序中的每一条指令必须使用计算机的指令系统中的指令。因此指令系统是提供给使用者编制程序的基本依据。指令系统反映了计算机的基本功能,不同的计算机其指令系统也不相同。

2. 计算机执行指令的过程

计算机执行指令一般分为三个阶段。首先将要执行的指令从内存中取出送入CPU,然后由CPU对指令进行分析译码,判断该条指令要完成的操作,最后向各个部件发出完成该操作的控制信号,完成该指令的功能。当一条指令执行完后就处理下一条指令。一般将第一阶段称为取指令阶段,第二阶段称为分析指令阶段,第三个阶段称为执行指令阶段。

3. 程序的执行过程

计算机在运行时,CPU从内存读出一条指令到CPU内执行,指令执行完后再从内存读出下一条执行。CPU不断地取指令、分析指令、执行指令。

总之,计算机的工作就是执行程序,即自动连续地执行一系列指令,而程序开发人员的工作就是编制程序。一条指令的功能虽然是有限的,但是在人精心编制下的一系列指令组成的程序可完成的任务是无限多的。