ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:119.88KB ,
资源ID:27472299      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27472299.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第4546讲计算机应用基础2.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第4546讲计算机应用基础2.docx

1、第4546讲计算机应用基础2五、输入输出语句(一)表控输入输出表控输入输出语句是一种隐含格式的输入输出语句,其格式由程序编译系统提供,在 程序语句中不予表示。1.表控输出语句FORTRAN 77表控输出语句有两种方式:PRINT*,输出量表WRITE (*,*)输出量表这两种表控输出语句的作用是相同的,但一般微机上的FORTRAN 77子集不提供PRINT 语句,所以通常使用WRITE 语句。2.表控输入FORTRAN 77表控输入语句有两种型式:READ*,输入量表READ (*,*)输入量表表控输入又称为自由格式输入。表控输入语句要求用户在隐含的输入设备(通常是键 盘)上输入所需的数据,在

2、输入数据时,各数据之间用逗号或空格分隔。 (二)格式输入输出1.格式输出数据语句WRITE语句和FORMAT语句WRITE语句的一般形式为:WRITE (u, f)输出量表其中, u为部件说明符,用以指出在哪个设备上进行输出,通常也称为通道号,当U为记号*时,表示在显示器(标准输出设备)上进行输出。f为格式说明,它通常是一个格式语句的标号,用以指出输出数据所采用的格式。格式语句的一般形式为:标号FORMAT (格式说明)例如:WRITE (*, 10) A, B, A*B10 FORMAT (lX, F6.2, F7.3, F10.4)FORMAT语句中,第一个1X称为纵向控制符,它表示前进一

3、空格后再输出后面的数 据,后面的三个项分别说明了三个实型数据输出的,称为格式编辑符。FORTRAN 77也允许在WRITE语句中直接指定输出格式,从而可以省略格式语句 FORMAT。例如,上面的输出语句与格式语句可以合并成一个,即:WRITE (*, I (1X , F6. 2, F7. 3, F10.4) ) A, B, A*B2.格式编辑符 FORTRAN常用的格式符有十几种,详细可参照任何一本FORTRAN教材或专用于册。(三)隐循环的输入输出数组元素的输入输出可以采用循环方式实现。 例如:DIMENSION X (20)DO 10 1= 1, 20 20 READ*, X (I)程序段

4、执行时进行20次循环,每次输入1个数据。这个输入程序段可以改写如下: DIMENSION X (20)READ*, (X (I), I = 1, 20)其中第2句就是隐循环的输入语句。循环控制变量I的初值为1,终值为20,步长为1而 予以省略。隐循环语句的作用与语句是相同的;但使用隐循环语句时, 20个数据允 许一次性输入,当然,数据与数据之间要用空格符或逗号区别开来。 隐循环语句也用于输出语句,也可使用多重循环。例如DIMENSION Y (l0, 6)READ (*,*) (Y (I, J), J=1, 6), I1, 10)WRITE (*, 5) (Y (I, J), J1, 6),

5、I1, 10) 5 FORMAT (lX, 6F10.2)运行程序段时,首先读入60个数据, Y (1, 1), Y (1,2), Y (1, 6), Y (2, 1), Y (2, 2), Y (2, 6), Y (10, 1), Y (10, 2), Y (10, 6), 然后输出60个数据,每行输出6个数据,数据的排列顺序与输入时相同。六、控制语句一般情况下, FORTRAN程序是按语句顺序执行的,但需要时,可以改变这种顺序。 这种改变可以通过各种控制转移语句、逻辑条件语句等来实现。 (一)转移语句1.无条件转移语句无条件转移语句的一般形式为:GOTO n当程序流程到达GOTO语句时,随

6、后就转向语句标号为n的语句。标号为n的语句必须 是可执行语句,但它在程序中的排列位置,可以在引导到它的GOTO语句之后,也可以 在该GOTO 语句之前。元条件转移语句常和其他控制语句结合起来使用。 2.算术条件转移语句算术条件转移语句的一般形式为:IF (e) nl, n2, n3其中, e必须是算术表达式,当表达式运算结果e0时,转向标号为n3的语句。例如,计算边长为B的正方形中挖去半径为R的圆后的面积,若B2R,则给出相 关信息。该问题的FORTRAN程序可用别辽条件转移语句编写如下。C Computation of area.READ*B.RIF (B-2*R) 5, 15, 155 W

7、RITE (*, 10)10 FORMAT (Error message: B less than 2*R)GOTO 2015 AREA=B*B-3.14159*R*RWRITE *AREA20 CONTINUEEND本例中,在算术条件转移语句的第1个分支后,使用了GOTO语句;倘没有此语句,则 程序按顺序仍会执行标号为15的语句,从而得出不正确的结果。3.计算转移语句计算转移语句的一般形式为:GOTO (n1, n2, nm), e其中, ni (i = 1, 2, m)是被转向的语句标号,共m个; e是一个整型算术表达 式,其值不得小于1且不得大于m。当e的值等于1时,程序转向标号nl的语

8、句,当e 的值等于2时转向标号n2的话句,当e的值为m时转向标号为nm的语句。整型算术表 达式e前的逗号可以省略。计算转移语句通常也和GOTO语句结合起来使用。 例如,有如下一个程序:READ*,MGOTO (20, 30, 40, 50) M20 N=M GOTO 60 30 N=M*2 GOTO 60 40 N=M*3 GOTO 6050 NM*460 WRITE铃,NEND程序运行时,若输入1,则转向标号为20的语句,x的值为1 ;若输入2,则转向标号为 30的语句,x的值为4;输入3,转向标号为40的语句,x的值为9,输入4,转向标号 为50的语句,x的值为160(二)逻辑条件语句1.

9、逻辑IF语句逻辑IF 语句用来实现选择结构。它的一般形式为:IF (逻辑表达式)内嵌语句其中内嵌语句是单独的一个可执行语句。逻辑IF语句执行时,首先计算逻辑表达式的值, 如果逻辑表达式的值为真,则执行内嵌语句,若内嵌语句非转移语句,则执行该语句 后继续按顺序往下执行,若内嵌语句是转移语句,则转向指定的语句;如果逻辑表达式的 值为假,则不执行内嵌语句,而直接执行该语句后面的语句。例如,从键盘读入一个代表百分制成绩的数据,如果数据在90-100之间就输出 Excellent ,在80-89之间输出Good ,在60-79之间输出Pass ,在60以下则输出 Not pass 。其程序可以如下编写:

10、READ (*.*) IPOINTIF (IPOINT. GT .100. OR. IPOINT. LT. 0) WRITE (*,*) DATA ERRORIF (IPOINT.GE.90.AND. IPOINT. LE.100) WRITE (*.*) ExcellentIF (IPOINT.GE.80.AND.IPOINT.LT.89) WRITE ( * . *GoodIF (IPOINT.GE.60.AND. IPOINT. LT. 79) WRITE (*.*) PassIF (IPOINT.GE.0.AND. IPOINT. LT.59) WRITE (*.*) Not Pass

11、END2.块IF结构的各种形式 (1)块IF和ENDIF形式IF (逻辑表达式) THEN语句块ENDIF当逻辑表达式的值为真时,执行语句块,否则按顺序执行ENDIF后的语句。例如, 如下程序段:READ*, RN, ANIF (RN.GE.O.O.AND.AN.GT.0.0) THENSTRESSRN/ANWRITE*RN,AN,STRESSEND当RN大于等于零且AN大于零时,执行赋值语句和输出语句。(2)使用ELSE的形式IF (逻辑表达式) THEN语句块1ELSE语句块2ENDIF当逻辑表达式的值为真时,执行语句块1 ,当逻辑表达式的值为假时,执行语句块2。由此可见,使用ELSE的形

12、式,可以进行两个分支的选择。(3)使用ELSE IF的形式IF (逻辑表达式1) THEN语句块1ELSE IF (逻辑表达式2) THEN语句块2ELSE语句块3ENDIF这种形式,允许在三个分支中作出选择。当逻辑表达式1的值为真时,执行语句 块1表示的分支;当逻辑表达式1的值为假而逻辑表达式2的值为真时,执行语 句块2表示的分支;当逻辑表达式1的值和逻辑表达式2的值均为假时,执行语句块 3表示的分支。3.块IF结构的嵌套在一个块IF结构的语句块中,可以完整地包含另一个或多个块IF结构,称为块IF 的嵌磁。块的嵌套可以多层。七、函数与子程序(过程)(一)内部函数内部函数是预先编制的一些常用函

13、数或算法的过程,由FORTRAN语言提供,可以, 直接调用。内部函数调用时的一般形式是:内部函数名(实元表)实元表中元素的数据类型、个数是预先规定的。常用内部函数及其功能可查阅FORTRAN教材或用户手册。(二)语句函数1.语句函数的定义定义语句函数的语句称为语句函数语句。其一般形式为:函数名(形参表) =表达式。其中,函数名的命名规则与一般变量名相同,所以它也可以用类型说明语句等来说明。形参又称哑元,是一些变量名,一般应出现在表达式中。语句函数在程序单位中的位置,应在所有可执行语句之前。2.语句函数的调用调用语句函数的结果是得到一个函数值,因此,调用语句函数时代之以实际变量(又称实元)。(三

14、)函数子程序一个函数子程序是一个独立的FORTRAN程序单位。它的第一个语句必须是FUNCTION语句,最后一个语句必须是END 语句。即函数子程序的一般结构为:类型说明 FUNCTION函数名(形参表)语句块RETURNEND也可以写为:FUNCTION函数名(形参表)类型说明函数名语句块RETURNEND其中函数名的命名规则与变量相间,而函数名的类型决定了函数值的类型。 在函数子程序中,形参可以是变量名、数组名、外部过程名,而形参的命名与类型说 明也与变量相同,形参数组也必须在函数子程序中予以定义。函数子程序的函数值由函数名带回到调用该函数子程序的程序,因此,在函数子程序 中必须对函数名赋

15、值。在函数子程序中,函数名应该像普通变量那样来使用。 在函数子程序中,所有的名字、语句标号都可以和其他程序单位中的相同而彼此没有 任何关系。在函数子程序中, END语句的功能有两个:一是表示该程序单位的结束,二是具 有返回语句RETURN的功能。函数子程序中必须有并且只有一个END语句,而且只 能是子程序的最后一个语句。当在子程序的其他位置须要返回时,可以使用RETURN 语句。(四)子程序1.子程序的结构一个子程序是一个独立的FORTRAN程序单位。子程序的第一个语句必须是SUBROUTINE语句,最后一个语句必须是END 语句。 即子程序的一般结构为:SUBROUTINE子程序名(形参表)

16、语句块RETURNEND子程序名的命名规则与普通变量相同。但是子程序中的子程序名不能用于返回数值,这与函数子程序是不同的。因此,子程序名没有类型,它不能在本程序单位中使用。 SUBROUTINE 语句中的形参表可以省略。这时子程序名后的括弧不要保留。对子程序的其他有关规定与函数子程序相同。2.子程序的调用子程序调用通过CALL 语句实现。其形式为:CALL子程序名(实参)其他有关对子程序的调用规定与函数子程序相同。八、程序单位间的数据传递(一)虚实结合虚实结合又称哑实结合,是各程序单位(主程序和各种过程如函数子程序)之间传递数据的一种重要途径。1.变量的虚实结合当子程序等过程的形参为变量时,则

17、在调用时所对应的实参可以是类型相同的常数、变量、数组元素或表达式;子程序调用后,其运行的结果通过这些实参返回到调用者。在FORTRAN77中,当形参变量所对应的实参是变量或数组元素时,则它们之间的结合方 式是地址结合;而当形参变量所对应的实参是常数或表达式时,其结合方法对于不同的 FORTRAN系统有可能是不同的。2.数组的虚实结合当子程序中的形参为数组名时,则在调用时所对应的实参必须是数组名或数组元素。如果实参是数组名,则实参数组与形参数组按地址结合,实参数组与形参数组都从第 一个元素开始按列逐个对应。例如,有主程序与子程序如下:PROGRAM MAININTEGER A (0:5)CALL

18、 SB (A)ENDSUBROUTINE SB (B) INTEGER B (-1:2)END则在主程序中使用CALL语句调用子程序SB时,实参数组与形参数组的结合情况如下:实参数组 形参数组A (0)B (-1)A (1)一一B (0)A (2)B (1)A (3)一一B (2)A (4)A (5)也即调用SB时,A数组的头4个元素与B数组的元素对应,这些对应元素实际上为同一 存储地址。如果实参是数组元素,则从该元素开始依次与形参数组的第一个元素起按列逐个对 应,它们也是按地址结合。例如,有主程序与子程序如下:PROGRAM MAINDIMENTION A (8)CALL SB (A(5))

19、 ENDSUBROUTINE SB (B) DIMENSION B (3)END则在调用语句执行时,实参数组A与形参数组B的结合情况如下: 实参数组形参数组A (1)A (2)A (3)A (4)A (5)B (1)A (6)一一B (2)A (7)B (3)A (8)FORTRAN 77规定,不管实参是数组名还是数组元素,用作实参的数组,其维数、各维下标的上下限及数组中元素个数可以和与之结合的形参数组不同,但要求从与形参数组的第一个元素结合的实参数组元素算起,以后的实参数组元素的个数不能少于形参数组元素的个数。多维数组或数组元素虚实结合时,要特别注意FORTRAN中数组按列存放的规定, 不要

20、搞错存储地址的对应关系。例如:PROGRAM MAINDIMENSION A (3, 2)CALL SB (A)。ENDSUBROUTINE SB (B) DIMENSION B (2, 3)。END这种情况下,数组元索地址的对应关系是:实参数组 形参数组A (1, 1)一一B (1, 1)A (2, 1)一一B (2, 1)A (3, 1) 一一B (1, 2)A (1, 2) 一一B (2, 2)A (2, 2) 一一B (1, 3)A (3, 2) 一一B (2, 3)3.可调数组在主程序中定义数组元素时,定义说明符中各维下标的上下限必须为整常数,不能是 变量或算术表达式。但在子程序中定

21、义数组时,允许用变量来定义各维下标的上下限。子 程序中用变量来定义各维下标上下限的数组称为可调数组。但使用可调数组必须遵循以下 几个原则。(1)可调数组名必须是形参数组名。(2)说明可调数组各维下标上下限的表达式中只能出现整型变量,且这种变量必须是 形参或出现在COMMON 语句中。但在某些FORTRAN 77子集中,定义可调数组各维下 标上下限时只能是整型变量,而不能是任何算术表达式。(3)可调数组的大小不得超过对应实参数组的大小。4.字符型变量的虚实结合(1)当子程序中的形参为字符型变量时,对应的实参必须是字符型变量、字符常数、 字符型数组元素或字符表达式。字符型实参必须用CHARACTE

22、R 语句加以说明。 (2)如果字符型形参的长度小于对应的实参长度,则从实参中最左边的字符开始与形 参结合,而实参中右边多余的字符被截去。例如:CHARACTER A*5A=ABCDECALL SB (A)ENDSUBROUTINE SB (X)CHARACTER X*3WRITE (* , *) XEND程序执行后的输出结果为: ABC。(3)在FORTRAN 77中,对字符型形参的长度还可以用*号来说明,此时,形 参字符变量自动与对应的实参取相同的长度。例如在上面的子程序SB中,如果将CHARACTER X*3改变为CHARACTER X* (*) ,则执行后,输出的结果为: ABCDE。

23、(4)当子程序中形参为字符型数组时,如果形参字符型数组元素的长度与对应实参字符型数组元素长度一致,则其虚实结合的情况与一般的数组虚实结合的情况相同。如果形参与实参的字符型数组元素长度不同,则按字符依次对应。例如,有主程序与子程序 如下:CHARACTER A (5) *3DATA AI ABC, DEF, GHI, JKL, MNO / CALL SB (A)ENDSUBROUTINE SB (D) CHARACTER D (4) *2END则形参数组D中元素的值为:D (1): ABD (2): CDD (3): EFD (4): GH (5)过程名的虚实结合 FORTRAN允许子程序中的形

24、参为过程名,此时,调用程序中的实参必须是过程名.如果实参是外部过程名(如函数子程序名、子程序名) ,则该外部过程名在调用程序 中必须用EXTERNAL 语句说明。如果实参是内部过程名(如内部函数名) ,则该内部过程名在调用中必须用INTRINSIC语句说明。(二)公用区语句1.公用区语句的一般形式COMMON 公用区名l/变量表1, 公用区名2/变量表2 没有公用区名的就称为无名公用区,其他都是有名公用区;一个完整的程序只能设置一个无名公用区,但可以有多个有名公用区;变量表中,可以是变量名、数组名、数组说明符,互相之间用逗号隔开。例如:COMMON a, b (3), c (2)定义了b是3个

25、元素的一维数组, c是2个元素的一维数组。这条语句与下面两句语句是 等价的:DIMENSION b (3), c (2)COMMON a, b, c2.利用公用区进行数据传递时,在元名公用区或同名的有名公用区中,位置排列相 同的变量、数组,实际上使用同一存储地址,亦即共享同一数据。例如:PROGRAM MAINCOMMON a, I (2) /COMl/d, c。CALL SBENDSUBROUTINE SBCOMMON aa, K (2) /COMl/f, gEND其中,主程序中的变量a的数据与子程序的变量aa共享,数组1的数据与JK共享,而d, c的数据分别与f, g共享。由此可以知道,各

26、个程序单位中COMMON语句中的变量类型 必须按位置一一对应一致才能正确传递数据。九、文件 FORTRAN程序输入输出的基本单位称为记录。记录是数值或字符的序列。记录的集合称作文件。(一)文件的存取方式1.顺序文件顺序文件中的记录是一个接一个按顺序存放的,即总从第1个记录开始,然后是第2 个记录,第3个记录,要取任何一个记录,都必须从第1个记录开始。 2.直接文件直接文件又称直接存取文件,或随机文件。它可以按任意顺序读写某一记录。直接文 件中每个记录的长度都是相等的。(二)文件操作语句文件操作语句有打开文件的OPEN语句和关闭文件的CLOSE 语句。此外还有文件的 读写语句READ语句和WRI

27、TE语句。(三)文件定位设想在文件的读写操作时存在一根指针。起先指针停在文件的开始处,随着文件存取 的进行,指针在文件中移动。控制指针的位置,即定位,在FORTRAN中可以通过如下 语句来实现。I.REWIND语句REWIND语句也称回绕语句。它的形式是:REWIND设备号它使与指定设备号相连的文件中的指针定位在文件的开头。在FORTRAN中,用OPEN语句打开一个文件,指针也是在文件的开头位置。因此 对一个已经打开的文件,要使指针移到开头,也可组合使用CLOSE和OPEN 语句。2.BACKSPACE语句语句BACKSPACE的形式是:BACKSPACE设备号它使与指定设备号相连的文件中的指

28、针退回一个记录。例题:1.语句序列DO 10 I1,5,2DO 10 J2,6,210 KI+JWRITE (*,*)执行的结果是(C)(A) K=9 (B) K=10 (C) K=11 (D) K=122.若有INTEGER A (-2:, 0: 3, 1: 2) ,按照在内存中的存储次序,数组A中第8号元素为(B)(A) A (-1,0,2) (B) A (0,1,1)(C) A (2, 1,2) (D) A (1, 1,1)3.对下列程序段READ (*,*) XIF ( (X. LT. - 5.0) .OR. (X.EQ. -1.0) THENY=0.0ELSEIF (X.LT.0.0

29、) THENY=1.0/(X+1.0)ELSEIF (X. LT.5.0) THENY=1.0/(X+2.0)ELSEY=0.0ENDIFWRITE (*,*) Y若输入4.0,则结果为:(A) 0.0 (B) 1/5 (C) 1/6 (D) 1/4十2.04.以下程序段PROGRAM MAINEXTERNAL FXYTX (FX, 3, 2)PRINT *,YENDFUNCTION TX (FUN, A, B)TX= (FUN (A) - FUN (B) /2.0ENDFUNCTION FX (X)FX=X*XEND运行的结果为(C)(A) 9 (B) 4 (C) 2.5 (D) 6.5习题

30、:1.以下程序段DIMENSION A (4)READ*,A10 J = I + 120 IF (A (I) . LT. A (J) THEN T=A (J)A (J)=A (I)A (I)=TENDIFJ=J+lIF (J.LE.A) GOTO 20I=I+1IF (1. LE.3) GOTO 10PRINT*, A (4)END若输入4, 2, 3, 5,则程序运行结果为(B)(A) 4(B) 2(C) 3 (D) 52.对下列程序段PARAMETER (N=3)INTEGER A (N, N)READ*,ADO 10 J=1, NLS=0DO 20 1= 1, N20 LS= LS+ A (I, J)LS=LS/NDO 30 I=1, N30 A (I, J) = A(I, J)-LS10 CONTINUEPRINT*,AEND若输入2, 4, 6, 8, 10, 12, 14, 16, 18

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1