第4344讲计算机应用基础1.docx
《第4344讲计算机应用基础1.docx》由会员分享,可在线阅读,更多相关《第4344讲计算机应用基础1.docx(14页珍藏版)》请在冰豆网上搜索。
第4344讲计算机应用基础1
第七章计算机应用基础
第一节计算机基础知识
一个计算机系统可分为两部分:
硬件和软件。
一、硬件的组成和功能
计算机的硬件由以下部分组成:
中央处理器(即CPU)、内存储器、输入输出设备、外存储器。
中央处理器包括运算器和控制器。
控制器的主要作用,是使计算机能自动地执行存放在内存储器的程序。
运算器的作用则是进行加、减、乘、除等运算。
现代中央处理器的形式通常是一个集成电路芯片。
内存储器的功能是保存大量的程序和数据等信息。
通常,内存储器只能在计算机开机(通电)时才能保存信息;一旦关机,它保存的信息通常也随之丢去。
因此,内存储器不能用来永久保存信息。
现代的内存储器通常由若干个集成电路芯片组成。
内存储器通常又简称为内存。
当需要永久保存信息时,一般使用外存储器。
外存储器有很多形式,常见的有磁盘、光盘、磁带、闪存等。
输入输出设备包括输入设备、输出设备和既能输入又能输出的设备。
它们起着把各种信息(程序、数据、命令等)输入计算机以及把各种处理结果从计算机中输出的重要功能。
常见的输入输出设备有键盘、磁盘机、显示器、打印机等等。
二、软件的组成及功能
软件是指各种程序及其总和。
软件对于计算机的使用是必需的。
软件可分为系统软件和非系统软件两类。
系统软件包括操作系统、编译程序和解释程序、各种程序设计语言等等。
非系统软件主要是指各种实用程序,包括用户自己编写的程序。
操作系统的功能是提高计算机的使用效率和方便用户使用计算机。
操作系统是用户与计算机之间的接口。
各种程序设计语言可用来编写程序。
程序设计语言分为机器语言、汇编语言和高级语言三个层次。
计算机能直接接受的只是以二进制数表示的机器语言。
汇编语言是机器语言的符号表示并且需要翻译成机器语言才能执行。
用高级语言编写的程序更是必须通过编译程序或解释程序翻译成机器语言才能供机器执行。
常用的高级语言有BASIC、FORTRAN、C等等。
用机器语言或汇编语言编写的程序一般效率较高、执行速度较快;而用高级语言编写的程序则一般效率较低、执行速度较慢。
但用高级语言编写程序要比用机器语言或汇编语言编写程序容易些。
实用程序是非常丰富的,可用于各种各样的具体目的。
用户也可自己编写各种实用程序。
三、数制转换
计算机内的数可有二进制、八进制、十六进制、十进制等不同的表现形式。
人们多习惯于用十进制,计算机则主要使用二进制。
因为同一个数可表示成不同进制的形式,故常有必要进行数制间的转换。
我们可以一般地描述r进制,其中r是一个大于1的正整数。
r进制有如下特点:
(1)数的每一位只能取r个不同的数字,其符号集是{0,1,…r-1};
(2)逢r进位,r进制数的从小数点开始向左的第i位数(i=0,l,…,m)的权是ri,从小数点开始向右的第i位数(i=I,2,…,m)的权是ri。
我们用()r表示括号内的数是r进制数。
因此,对r进制数(amam-1…ala0a-1a-2…a-n)r按权展开的表达式为:
(amam-1…ala0a-1a-2…a-n)r
=am×rm+am-1×rm-1+。
。
。
+a1×r1+a0×r0+a-1×r-1+a-2×r-2+。
。
。
+a-n×r-n(7-1-1)
例如,对十进制数,r=10,符号集为{0,1,2,3,4,5,6,7,8,9}。
对十六进制数,r=16,符号集为{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}。
不同数制之间的转换,对于整数部分,往往可直接按定义进行,即直接法,也可用余数法转换。
采用余数法时,若要将r进制的整数M转换成t进制数的整数,则把M除以t并取余,再把上述得数除以t并取余,……,直至不能再除时,最后的商也作为余数。
所有的余数按从后到前的次序依次从左到右排列就构成了所要求的t进制数。
【例7-1-1】把(1101011)2转换成十进制数。
【解】用直接法。
(1101011)2=1×26+1×25+0×24+1×23+0×22+1×21十1×20=(107)10
【例7-1-2】把(107)10转换成二进制数。
【解】用余数法。
107/2得53余1;53/2得26余1;26/2得13余0;13/2得6余1;6/2得3余0;3/2得1余1。
把最后的得数1亦作为余数,把所有的余数按从后到前的次序从左到右排列得:
(107)10=(1101011)2不同数制之间的转换,对于小数部分,可用取整法,即:
要将r进制数的小数M转换成t进制数的小数时,把M乘t,取整数部分;又取上一步得数的小数部分再乘t,再取整数部分;……;直至完毕或达到要求的位数。
然后把各整数按从前到后的次序从左到右排列,即构成所求的小数部分。
【例7-1-3】把(0.375)10转换成二进制数。
【解】用取整法。
0.375×2=0.75,整数为0,小数为0.75;0.75×2=1.50,整数为1,小数为0.5;0.5×2=1.0,整数为1,小数为0,停止。
把所得的整数按从前到后的次序从左到右排列,即得所求的二进制数(0.0ll)2即
(0.375)10=(0.0ll)2
【例7-1-4】把(0.011)2转换成十进制数。
【解】用取整法。
(0.011)2×(10)10=(0.011)2×(1010)2=(11.11)2,整(11)2=3,小数为(0.11)2;(0.11)2×(1010)2=(111.1)2,整数为(111)2=7,为(0.1)2;(0.1)2×(1010)2=(101)2,整数为(101)2=5,小数为0,停止。
所以(0.0ll)2=(0.375)10
第三节计算机程序设计语言
一、程序设计语言
计算机程序设计语言又称算法语言。
目前国内外比较通用的算法语言有多种,如BASIC、FORTRAN、PASCAL、ALGOL、C等。
随着算法语言本身的发展和完善,同一语言中还有不同的标准文本问世。
每种语言都有其自身的规则和特点,但也有共性的地方。
在目前通用的算法语言中,FORTRAN语言特别适用于科学计算,又是为我国广大结构工程技术人员较为普遍掌握的一种语言,因此,本次注册结构工程师考试的内容选为FORTRAN语言。
FORTRAN语言于50年代出现于美国。
1966年,美国国家标准化协会(ANSI)公布了标准FORTRAN(ANSIX3.9-1966)',1977年对其进行了修订,1978年,将其定为国家标准,称为FORTRAN77(ANSIX3.9-1978)。
以下有关内容,主要参照FORTRAN77的标准进行说明。
二、FORTRAN的程序构成和基本规定
(一)程序构成
一个完整的FORTRAN程序由一个主程序或一个主程序和若干个子程序组成。
主程序与每个子程序都是一个独立的程序单位,称为一个程序模块。
关于程序的构成,有如下一些基本规定。
1.程序由若干行组成。
2.在FORTRAN中,程序行分为语句行和注释行。
(1)语句行由FORTRAN语句组成,包括执行语句和非执行语句。
执行语句使计算机在运行时产生某些操作,如赋值语句、输入输出语句等。
非执行语句为计算机在编译或运行时提供某种信息,本身不产生操作,如说明语句、格式语句等。
(2)注释行又称为非语句行,在程序中起注释作用,便于程序的编写、修改和维护。
3.FORTRAN规定,每个语句行只能写一个语句;但当语句长度超过规定的一行范围、或者为表达清晰起见需要将一个语句分行书写时,可以采用连续行。
连续行的第一行称为始行,以后各行称为续行。
4.FORTRAN语句可以有标号。
标号作为一个语句被其他语句引用的标志。
在同一个程序单位中,不能出现相同的语句标号。
5.程序单位的最后一行语句,必须是END语句。
如果一个FORTRAN语句行与注释行的集合,最末没有END,可称其为一个语句块或程序段,但不能作为一个程序单位。
(二)书写规则
1.FORTRAN77的字符集由26个英文字母、10个数字和其他13个专用字符组成。
2.一个程序行有80列,每列写一个字符。
3.程序行的第1列如写上C或*,表示该行为注释行。
注释内容可写在该行中除第1列外的任何位置。
4.在语句行中,程序行的第1列至第5列为语句标号区,标号区内是最多为5位的元符号整数;程序行的第6列为续行区,若某行为续行,则标号区必须空白,且第6列为非0的任一FORTRAN77字符(不能为空格);第7列至第72列为语句区。
例如,在边长为B的正方形中挖一个半径为R的圆,计算剩余的面积;若B<2R,则给出相关信息。
该问题的FORTRAN程序可编写如下。
CComputationofarea.
READ*,B,R
IF(B.LT.2*R)THEN
WRITE(*,10)
10FORMAT('Errormessage:
Blessthan2*R’)
ELSE
WRITE(*,,(”AREA=”,FI0.2))
$B*B-3.14159*R*R
ENDIF
END
本例中,第1行为注释行,第5行为带标号的语句,第7~8行为连续行,符号$为续行标志。
(三)常量与变量
1.常量指程序中其值固定不变的一些量,包括以下6种类型。
(1)整形常量,也称整数。
一个整数可采用正、负号和数字字符表示,正号可以省略.。
(2)实型常量,也称实数。
可以用小数形式或指数形式表示。
用指数形式表示的实数如11.3E5,+11.3E+5,1.E-12,-.23E12等。
(3)双精度实型常量,或称双精度实数。
双精度实数也是实数。
但在一般的微型计算机中,实数的有效位数为7位,双精度实数的有效位数可以达到15~17位。
双精度实数的表示方法,除在指数形式的表达中用字符D代替E以外,其余和实数相同。
(4)复型常量,简称复数。
在FORTRAN中,用一对圆括弧括起来的两个实数表示。
如(12.0,-6.E2)表示复数12.0—600.0i。
(5)逻辑型常量。
FORTRAN中的逻辑型常量有两个值:
.TRUE.与.FALSE.。
(6)字符型常量,也称为字符串。
计算机系统使用的若干个字符,用一对单引号括起来后,就作为字符串。
2.变量指在程序运行期间可以改变的量。
(1)变量的类型与常量相对应,分为整型变量、实型变量、双精度实型变量、复型变量、逻辑型变量与字符串变量。
(2)变量名按一定的规则命名。
在FORTRAN中,变量名采用1至6个字符(数字或字母),其中第一个字符必须是字母。
FORTRAN77规定,变量名书写时不区别字母的大写与小写,例如ABc与aBC都指同一个变量。
(3)变量类型的说明方法。
1)I-N隐含规则。
在程序单位中没有其他说明时,以字母I,J,K,L,M,N中的任一个字母打头命名的变量都是整型变量。
2)用类型说明语句规定变量类型。
例如:
INTEGERA,COUNT
REALICOUNT
DOUBLEPRECISIONXING
COMPLEXDUP
LOGICALJUG
CHARACTER头10FILENM
分别表示变量A,COUNT为整型,ICOUNT为实型,XING为双精度实型,DUP为复制,JUG为逻辑型,FILENM为字符型变量,其长度为10个字符。
3)用隐含说明语句IMPLICIT语句,可以将程序单位中以某一字母开头的所有变量指定为所需类型。
例如:
IMPLICITINTEGER(A,C),REAL(I-K)
指定了以A与C字母开头的所有变量都是整型变量,以字母I至K开头的所有变量为实型变量。
类型说明语句和隐含说明语句只在本程序单位中有效;它们必须放在程序单位所有可执行语句的前面,而IMPLICIT语句又必须在所有的类型说明语句的前面。
确定变量类型的三种方法中,类型说明语句的优先级最高,I-N规则的优先级最低。
(四)数组
1.数组的定义
有些互相关联的数据,作为单个变量处理并不方便。
程序设计语言通常把这种相互关联的数据按一定的顺序关系组成一个集合,该集合称为数组;组成数组的基本单元称为数组元素,每一个数组元素对应一个数据。
在FORTRAN中,使用数组前必须对数组进行定义,包括对数组命名;确定数组的类型;确定数组的维数及大小;指出数组各维下标的下限与上限。
数组的命名规则与变量的命名规则相同。
确定数组类型、维数及其大小的方法有以下两种。
(1)用类型说明语句定义数组。
例如:
INTEGERX(-2:
30),XYZ(1:
20,0:
15)
定义了两个整型数组。
其中X称为一维数组,下标的下限与上限分别为-2与30,即这个一维数组共有30-(-2)+1=33个元素,它们分别为:
X(-2),X(-1),X(0),X
(1),…,X(30);XYZ称为二维数组,第一个下标的下限与上限分别为1与20,第二个下标的下限与上限分别为0与15,即这个二维数组共有(20-1+1)x(15-0+1)=20×16=320个整型元素,它们分别为:
XYZ(1,0),XYZ(1,1),…,XYZ(1,15)
XYZ(20,0),XYZ(20,1),…,XYZ(20,15)
字符型数组必须用类型说明语句定义。
例如:
CHARACTER*8OUT(10)
数组OUT每个元素的长度都是8,即每个元素都可以存放8个字符。
(2)用DIMENSION语句定义数组。
这时,数组的类型按隐含规则确定,或者可以用类型说明语句再次说明其类型。
例如:
DIMENSIONIM[(-1:
10),IA(0:
100,-2:
0),X(1:
5)
REALIA
INTEGERX
其中,IM为一维整型数组,IA为2维实型数组,X为一维整型数组。
当数组的下标下限为1时,可以省略说明下标下限。
例如,下列数组说明
DIMENSIONA(100),B(5,5)
等价于
DIMENSIONA(1:
100),B(1:
5,1:
5)
目前在许多微机上使用的FORTRAN77子集中,数组的下标下限只允许为1,并且也只允许用省略下限的数组说明。
数组说明语句必须放在所有可执行语句与DATA语句之前。
2.数组在内存中的存储形式
在FORTRAN中,数组的各元素是按顺序存储在计算机内存单元中的。
(特别需要注意的是,2维和2维以上的多维数组中,各元素是以列为主存储的。
例如,有一个二维数组1(1:
2,1:
3),该数组可以写成数表的形式
I(1,1)I(1,2)I(1,3)
I(2,1)I(2,2)I(2,3)
各元素的值为I(1,1)=1,1(1,2)=2,1(1,3)=-1,I(2,1)=20,I(2,2)=40,I(2,3)=50,在内存中存放的顺序是1(1,1),1(2,1),1(1,2),I(2,2),I(1,3)I(2,3),如果按内存存放顺序将这个数组的元素打印出来,数据的顺序将是:
1,20,2,40,-1,50
其他多维数组中的元素也是按同样规则存储的,即先存储第1列,再存储第2列,以此类推,最后存储数组中的最后一列。
(五)各种运算符及其运算的优先级
1.算术运算符。
FORTRAN有五个算术运算符,它们是:
加法运算符+
减法运算符-
乘法运算符*除法运算符/
乘幕运算符**
这五个算术运算符的运算顺序是:
(1)乘幕运算符**优先级最高;
(2)乘法与除法运算符*,/优先级次之;
(3)加法与减法运算符十,一优先级最低。
对于同一优先级的两个运算符,按"先左后右"的原则进行计算。
2.关系运算符。
FORTRAN有六个关系运算符,用于比较两个表达式相等或不等。
它们是:
大于.GT.
大于或等于.GE.
小于.LT.
小于或等于.LE.
等于.EQ.
不等于.NE.
经过关系运算符比较后,得到一个逻辑型的值。
例如,整型变量I的值为10,J的值为12,则I.LT.J的结果为"真"(.TRUE.),而I.EQ.J的结果为"假"(.FALSE.)。
3.逻辑运算符。
FORTRAN有五个逻辑运算符,它们是:
逻辑与.AND.两个逻辑型量都为"真"时,其值为"真",否则为"假",
逻辑或.OR.两个逻辑型量都为"假"时,其值为"假",否则为"真";
逻辑非.NOT.一个逻辑型量为"真"时,其值为"假",否则为"真",
逻辑等.EQV.两个逻辑型量等值时,其值为"真",否则为"假",
逻辑不等.NEQV.两个逻辑型量不等值时,其值为"真",否则为"假"。
逻辑运算符中,除了逻辑非运算符.NOT.只有一个运算对象外,其余四个逻辑运算符均有两个运算对象。
逻辑运算符的优先级如下:
(1).NOT.
(2).AND.
(3).OR.
(4).EQV.与.NEQV.这两个运算符按"先左后右"的原则进行计算。
三、赋值语句
赋值语句的一般格式为:
变量名=表达式
其中,连接变量名和表达式的符号""称为赋值号。
在FORTRAN77中,有三种赋值语句:
算术赋值语句,逻辑赋值语句和字符赋值语句。
(一)算术赋值语句
1.算术赋值语句中赋值号右边是算术表达式。
算术表达式可以是单:
个变量或数组元素,可以是用算术运算符号连接起来的数值计算过程。
(1)算术表达式中的各个数据量(常量或变量)的类型一般应该一致。
如果不一致,FORTRAN程序在运行中先将其进行转换,再进行计算。
例如实型变量和整型变量进行计算时,整型变量的数值先被转换为实型。
(2)算术表达式计算中,特别应注意两个整型量之间的除法(称为整除)。
例如,算术表达式10.0-2/4*10.0的计算过程是
10.0–0*10.0=10.0-0.0=10.0
如果表达式写为10.0-2/4.0*10.0,则计算过程是
10.0-2.0/4.0*10.0=10.0-0.5*10.0=5.0
因为2/4是整除,其结果为0,而进行2/4.0的计算时,整型量2先被转化为实型。
2.算术赋值左边只能是数值型变量名或数值型数组元素。
如果赋值号左边的变量与右边的表达式类型不一样时,系统将自动把右边表达式计算的结果转换为与左边变量的类型一致后再赋给该变量。
(二)逻辑赋值语句
在逻辑赋值语句中,赋值号左边为逻辑变量或逻辑型数组元素,右边为一个逻辑表达式。
(三)字符赋值语句
1.字符赋值语句赋值号的左边为字符变量或字符型数组元素。
2.赋值号的右边为字符表达式,可以是单个字符串或用字符运算符连接起来的字符串。
字符运算符只有一个,表示为矿,含义为连接该符号两边的字符串.
3.执行字符赋值语句时,应注意字符串的长度与赋值号右边变量或数组元素的长度的关系。
例如:
CHARACTER*4A,B*6,C
A='FILE
B=A//’'NAME'
C=B(5:
6)
定义字符型变量时,根据类型说明语句的规定,A、C长度为4,而变量B因有专门说明,其长度为6。
程序运行后,变量A的长度与赋值号右边字符串长一致,A的值为‘FILE';而B的长度小于‘FILE'和‘NAME'两个字符串长度之和,因此多余的字符被截去,B的值为‘FILENA';C的结果为‘NA__',其中最后两格为空格符,这是因为C的长度为4,大于字符串‘NA'的长度,于是在其右边补上2个空格符后形成4个字符长再赋值给C.在上面的程序例中,出现表达式B(5:
6),称为"子串",表示取出字符串的一部分,本例中,表示将B的字符串‘FILENA'中的第5个字符至第6个字符取出.
四、循环语句
(一)DO语句
DO语句的一般形式为:
DOnV=el,e2,e3
n循环体
其中,n为语句标号;V为循环控制变量,它只能是简单变量(整型或实型),不能是表达式;el,e2,e3分别为循环控制变量的初值、终值与增量(步长),它们都可以是表达式,当e3为1时可以省略不写。
循环体是若干语句的集合,其中最后一个语句称为循环终端语句;若循环体只有一个语句,则该语句也就是终端语句。
终端语句必须有标号n。
在DO循环执行时,首先计算表达式el,e2,e3的值,并将它们化为与循环控制变量V的类型一致;然后将初值赋给循环控制变量v,并计算需要循环的次数;最后根据循环次数重复执行循环体中的语句,并每次执行完循环体后,将循环控制变量增值一次,循环次数减少一次。
当循环次数为零时,则结束循环,转向程序规定的下一个语句。
(二)继续语句CONTINUE
CONTINUE是一个可执行语句,其功能是使程序的流程继续到逻辑上的下一个语句。
FORTRAN77规定,循环终端语句必须是一个可执行语句,但不能是GOTO语句、块IF语句、ELSE语句、ELSEIF语句、ENDIF语句、00语句、STOP语句、END语句。
由于这些限制,通常用CONTINUE语句作为循环的终端语句。
当然,CONTINUE语句也可用在其他场合。
(三)循环嵌套
使用循环嵌套可以实现多重循环。
这时应注意各重循环的层次和循环变量的关系。
例如,编写一个计算乘法表的程序段,可以写为:
DO101=1,9
DO8J=l,9
IJ=I*j
8CONTINUE
10CONTINUE
本例中,外层循环控制变量I初值为1,终值为9,内层循环控制变量J初值为外层循环控制变量I的当前值,终值为9。
外层的第1次循环,内层经过9-1+1=9次循环,依次计算1×I二1,I×2=2,…,I×9=9,外层的第2次循环,内层经过9-2+1二8次循环,依次计算2×2=4,2×3=6,…,2×9=18……
(四)使用循环语句应注意的若干问题
1.正确选定循环变量的初值。
比如,对累加问题和连乘问题,变量初值不正确,使影响最终结果。
例如计算m=l!
十2!
+……十10!
采用循环语句编写程序,涉及到累加和连乘。
其程序可编写如下:
m=0
n=1
DO201=1,10
n=n×I
m=m十n
20CONTINUE
PRINT*,m
END
例中,n用于存放连乘结果,其初值设定为1,而m用于存放累加结果,其初值设定为0。
2.DO语句可以和转换语句,条件语句等结合起来使用,此时应注意从循环体内可以转向循环体外,但不允许从循环体外转向循环体内;从内层循环中可以转向外层循环,但不允许从外层循环转向内层循环中。
3.当内外层循环体的终端语句相同,且两个终端语句之间没有其他语句时,可以合并使用一个终端语句。
例如,前面计算乘法表的程序段可以写为:
DO10I=1.9
DO10J=I,9
IJ=I*j
10CONTINUE
或写为
DO10I=1,9
0010J=I,9
10IJ=I*J
习题:
I.目前一般计算机系统的工作原理是(B);,
A.程序设计
B.二进制
C.存储程序和程序控制
D.结构化
2.在微型机计算机中,应用最普遍的字符编码是(B)。
A.BCD码
B.ASCII码
C.汉字编码
D.补码
3.计算机中的字节是个常用的单位,一个字节由(C)