《3Fortran语言程序设计初步--FORTRAN语言程序设计-教学课件.ppt》由会员分享,可在线阅读,更多相关《3Fortran语言程序设计初步--FORTRAN语言程序设计-教学课件.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1第八章 常用算法的程序设计举例第一章 算法第二章 计算机和计算机程序第四章 逻辑运算和选择结构第五章 循环结构的实现第六章 Fortran的数据结构第七章 数据的输入、输出第三章 Fortran语言程序设计初步2第三章第三章 Fortran语言程序设计初步语言程序设计初步一、一、一、一、FortranFortranFortranFortran语言的发展概况语言的发展概况语言的发展概况语言的发展概况FortranFortran是世界上是世界上是世界上是世界上第一个第一个第一个第一个被正式推广使用的高级语言。被正式推广使用的高级语言。被正式推广使用的高级语言。被正式推广使用的高级语言。Fortr
2、anFortran的思想最初是由的思想最初是由的思想最初是由的思想最初是由约翰约翰约翰约翰 贝克斯(贝克斯(贝克斯(贝克斯(John BackusJohn Backus)在在在在19541954年提出的,第一个年提出的,第一个年提出的,第一个年提出的,第一个FortranFortran程序则在程序则在程序则在程序则在19561956年年年年4 4月得以运行。月得以运行。月得以运行。月得以运行。FortranFortran是是是是Formula TranslatorFormula Translator的缩写。的缩写。的缩写。的缩写。31958年年FORTRAN II1962年年FORTRAN I
3、V(Fortran 66)1978年年Fortran 771992年,年,Fortran90标准终于问世。主要增加面向标准终于问世。主要增加面向对象概念及工具,提供指针,加强数组功能,改对象概念及工具,提供指针,加强数组功能,改良编写格式。良编写格式。1997年,最新标准年,最新标准 Fortran95。可视为可视为90的修订版,的修订版,主要加强了主要加强了Fortran在并行计算方面的支持。在并行计算方面的支持。4二、简单的二、简单的二、简单的二、简单的Fortran77Fortran77程序分析程序分析程序分析程序分析1.1.求三数平均求三数平均求三数平均求三数平均C Calculate
4、 the average of three numbersC Calculate the average of three numbers x=90.5x=90.5 y=87.0 y=87.0 z=68.5 z=68.5 aver=(x+y+z)/3.0 aver=(x+y+z)/3.0 writewrite(*,*)The three numbers are,x,y,z(*,*)The three numbers are,x,y,z writewrite(*,*)average=,aver(*,*)average=,aver endend63.3.FortranFortran源程序特征源程序
5、特征源程序特征源程序特征(1)(1)一个程序由一个或若干个一个程序由一个或若干个一个程序由一个或若干个一个程序由一个或若干个程序单位程序单位程序单位程序单位组成组成组成组成 。(2)(2)每个程序单位都以每个程序单位都以每个程序单位都以每个程序单位都以“ENDEND”结束结束结束结束 。一个程序单位就是一个一个程序单位就是一个一个程序单位就是一个一个程序单位就是一个模块模块模块模块,结构化程序设计需,结构化程序设计需,结构化程序设计需,结构化程序设计需要采用模块化方法,子程序是实现模块化的有效方法。要采用模块化方法,子程序是实现模块化的有效方法。要采用模块化方法,子程序是实现模块化的有效方法。
6、要采用模块化方法,子程序是实现模块化的有效方法。END END既是一个程序单位的结束标志,又是一个独既是一个程序单位的结束标志,又是一个独既是一个程序单位的结束标志,又是一个独既是一个程序单位的结束标志,又是一个独立的语句(结束语句)。主程序的立的语句(结束语句)。主程序的立的语句(结束语句)。主程序的立的语句(结束语句)。主程序的ENDEND语句的作用是语句的作用是语句的作用是语句的作用是使程序使程序使程序使程序“停止运行停止运行停止运行停止运行”。子程序中的。子程序中的。子程序中的。子程序中的ENDEND语句是语句是语句是语句是“使流使流使流使流程返回调用程序程返回调用程序程返回调用程序程
7、返回调用程序”。7(4)(4)一行只写一个语句,不能写几个语句。一行只写一个语句,不能写几个语句。一行只写一个语句,不能写几个语句。一行只写一个语句,不能写几个语句。(3)(3)一个程序单位由若干条一个程序单位由若干条一个程序单位由若干条一个程序单位由若干条语句行语句行语句行语句行和和和和非语句行非语句行非语句行非语句行构成。构成。构成。构成。语句包括语句包括语句包括语句包括执行语句执行语句执行语句执行语句和和和和非执行语句非执行语句非执行语句非执行语句。非语句行即非语句行即非语句行即非语句行即注释行注释行注释行注释行,不参加编译,中英文均可。,不参加编译,中英文均可。,不参加编译,中英文均可
8、。,不参加编译,中英文均可。如果一个语句太长,一行内写不下,可以写在如果一个语句太长,一行内写不下,可以写在如果一个语句太长,一行内写不下,可以写在如果一个语句太长,一行内写不下,可以写在继续继续继续继续行行行行(要用(要用(要用(要用“续行标志续行标志续行标志续行标志”)。(5)(5)语句可以没有标号,也可以有标号语句可以没有标号,也可以有标号语句可以没有标号,也可以有标号语句可以没有标号,也可以有标号。标号的作用是为了调用识别。同一个程序单位不标号的作用是为了调用识别。同一个程序单位不标号的作用是为了调用识别。同一个程序单位不标号的作用是为了调用识别。同一个程序单位不能有两个相同标号的语句
9、能有两个相同标号的语句能有两个相同标号的语句能有两个相同标号的语句 。标号不必有序。标号不必有序。标号不必有序。标号不必有序。8(6)(6)各类语句的位置有一定规定。各类语句的位置有一定规定。各类语句的位置有一定规定。各类语句的位置有一定规定。(7)(7)Fortran77Fortran77规定了程序书写的格式。规定了程序书写的格式。规定了程序书写的格式。规定了程序书写的格式。例如:例如:例如:例如:ProgramProgram语句是主程序的第一个语句,语句是主程序的第一个语句,语句是主程序的第一个语句,语句是主程序的第一个语句,FunctionFunction语句语句语句语句是函数子程序的第
10、一个语句,是函数子程序的第一个语句,是函数子程序的第一个语句,是函数子程序的第一个语句,EndEnd语句只能是程序单语句只能是程序单语句只能是程序单语句只能是程序单位中最后一行。位中最后一行。位中最后一行。位中最后一行。程序单位中各类语句的顺序请见程序单位中各类语句的顺序请见程序单位中各类语句的顺序请见程序单位中各类语句的顺序请见附录附录附录附录3 3。10 标号区内不得出现标号以外的内容,但注释行例外。标号区内不得出现标号以外的内容,但注释行例外。标号区内不得出现标号以外的内容,但注释行例外。标号区内不得出现标号以外的内容,但注释行例外。一行中一行中一行中一行中第一列为第一列为第一列为第一列
11、为“C”C”或或或或“*”“*”的,该行即被认为注释的,该行即被认为注释的,该行即被认为注释的,该行即被认为注释行行行行。第一列上出现的不是第一列上出现的不是第一列上出现的不是第一列上出现的不是数字数字数字数字、空格空格空格空格或或或或“C C”和和和和“*”的字符,编译时按出错处理。的字符,编译时按出错处理。的字符,编译时按出错处理。的字符,编译时按出错处理。2.2.续行标志区(第续行标志区(第续行标志区(第续行标志区(第6 6列)列)列)列)第第第第6 6列上为列上为列上为列上为非空格非空格非空格非空格和和和和非零非零非零非零的字符,则该行被视作上的字符,则该行被视作上的字符,则该行被视作
12、上的字符,则该行被视作上一行的继续行。一个语句允许最多有一行的继续行。一个语句允许最多有一行的继续行。一个语句允许最多有一行的继续行。一个语句允许最多有1919个继续行。个继续行。个继续行。个继续行。建议:续行标志使用语句中一般不出现的字符,或建议:续行标志使用语句中一般不出现的字符,或建议:续行标志使用语句中一般不出现的字符,或建议:续行标志使用语句中一般不出现的字符,或在续行标志与续行正文间加入一定数量的空格。在续行标志与续行正文间加入一定数量的空格。在续行标志与续行正文间加入一定数量的空格。在续行标志与续行正文间加入一定数量的空格。113.3.语句区(语句区(语句区(语句区(7 7 72
13、72列)列)列)列)语句可以从第语句可以从第语句可以从第语句可以从第7 7列以后任何位置开始书写。列以后任何位置开始书写。列以后任何位置开始书写。列以后任何位置开始书写。语句区语句区语句区语句区的空格不起作用,但引号内字符串中的空格除外的空格不起作用,但引号内字符串中的空格除外的空格不起作用,但引号内字符串中的空格除外的空格不起作用,但引号内字符串中的空格除外。4.4.注释区(注释区(注释区(注释区(73 73 8080列)列)列)列)程序员一般利用此程序员一般利用此程序员一般利用此程序员一般利用此8 8列为程序行编顺序号以便查找。列为程序行编顺序号以便查找。列为程序行编顺序号以便查找。列为程
14、序行编顺序号以便查找。不是语句的一部分,在编译时对该区不予处理。在打不是语句的一部分,在编译时对该区不予处理。在打不是语句的一部分,在编译时对该区不予处理。在打不是语句的一部分,在编译时对该区不予处理。在打印程序清单时原样照印。印程序清单时原样照印。印程序清单时原样照印。印程序清单时原样照印。13Free FormatFree Format(自由格式)(自由格式)(自由格式)(自由格式)“!”后的文本均为注释。后的文本均为注释。后的文本均为注释。后的文本均为注释。每行可以编写每行可以编写每行可以编写每行可以编写132132个字符。个字符。个字符。个字符。行号放在每行程序的最前面。行号放在每行程
15、序的最前面。行号放在每行程序的最前面。行号放在每行程序的最前面。一行程序代码如果是符号一行程序代码如果是符号一行程序代码如果是符号一行程序代码如果是符号&,代表下一行程序和这一行连接。,代表下一行程序和这一行连接。,代表下一行程序和这一行连接。,代表下一行程序和这一行连接。如果一行程序代码的开头是符号如果一行程序代码的开头是符号如果一行程序代码的开头是符号如果一行程序代码的开头是符号&,代表会和上一行程序连接。,代表会和上一行程序连接。,代表会和上一行程序连接。,代表会和上一行程序连接。空格同样无意义。空格同样无意义。空格同样无意义。空格同样无意义。!Free Format!Free Form
16、atProgram mainProgram mainWrite(*,*)hello !Write(*,*)hello !这也是注释这也是注释这也是注释这也是注释Write(*,*)&Write(*,*)&hellohelloendend15 微机中,一般用两个字节(微机中,一般用两个字节(微机中,一般用两个字节(微机中,一般用两个字节(1616位)来存放一个整数。位)来存放一个整数。位)来存放一个整数。位)来存放一个整数。用一位存放数值的符号,其余为数本身(用二进制表示)用一位存放数值的符号,其余为数本身(用二进制表示)用一位存放数值的符号,其余为数本身(用二进制表示)用一位存放数值的符号,其
17、余为数本身(用二进制表示)。第。第。第。第1 1位为位为位为位为“0”“0”表示正,表示正,表示正,表示正,“1”“1”表示负。整数的范围是有表示负。整数的范围是有表示负。整数的范围是有表示负。整数的范围是有限的,为限的,为限的,为限的,为-32768-327683276732767。-8-8、0 0、+123+123、76 76、8 9 8 9 是整数;是整数;是整数;是整数;-10.0-10.0、0.76 0.76、-8.-8.、0.0.、+.0+.0、12,000 12,000 都不是整数。都不是整数。都不是整数。都不是整数。例如:例如:例如:例如:162.2.实型常量实型常量实型常量实
18、型常量(又称(又称(又称(又称实数实数实数实数)(1 1)小数形式)小数形式)小数形式)小数形式 由一个或多个数字和一个小数点组成由一个或多个数字和一个小数点组成由一个或多个数字和一个小数点组成由一个或多个数字和一个小数点组成(必须包含一(必须包含一(必须包含一(必须包含一个小数点而且只能有一个小数点)个小数点而且只能有一个小数点)个小数点而且只能有一个小数点)个小数点而且只能有一个小数点)。如。如。如。如+12.3+12.3、-68.56-68.56、3.753.75、0.00.0等。等。等。等。小数点前或小数点后可以不出现数字,但不能小数小数点前或小数点后可以不出现数字,但不能小数小数点前
19、或小数点后可以不出现数字,但不能小数小数点前或小数点后可以不出现数字,但不能小数点前后都不出现数字。如点前后都不出现数字。如点前后都不出现数字。如点前后都不出现数字。如60.60.、.36.36、.0.0合法,而合法,而合法,而合法,而1818、.(只有一个小数点而无数字)非法。(只有一个小数点而无数字)非法。(只有一个小数点而无数字)非法。(只有一个小数点而无数字)非法。18 在计算机内存中,一般以在计算机内存中,一般以在计算机内存中,一般以在计算机内存中,一般以4 4个字节(个字节(个字节(个字节(3232位)来存放一位)来存放一位)来存放一位)来存放一个实数,且一律以指数形式存放。由三个
20、部分组成:个实数,且一律以指数形式存放。由三个部分组成:个实数,且一律以指数形式存放。由三个部分组成:个实数,且一律以指数形式存放。由三个部分组成:1 1)数符;数符;数符;数符;2 2)指数包括符号;)指数包括符号;)指数包括符号;)指数包括符号;3 3)数字部分。)数字部分。)数字部分。)数字部分。由于存储指数部分和数字部分的位(由于存储指数部分和数字部分的位(由于存储指数部分和数字部分的位(由于存储指数部分和数字部分的位(bitbit)是有限的,是有限的,是有限的,是有限的,因此一个实数的因此一个实数的因此一个实数的因此一个实数的有效数字有效数字有效数字有效数字和和和和数数数数的范围都是
21、的范围都是的范围都是的范围都是有限有限有限有限的。的。的。的。一个实数用指数形式表示,可以由多种形式,如一个实数用指数形式表示,可以由多种形式,如一个实数用指数形式表示,可以由多种形式,如一个实数用指数形式表示,可以由多种形式,如1234.51234.5可以表示为:可以表示为:可以表示为:可以表示为:它们都是等价的。它们都是等价的。它们都是等价的。它们都是等价的。19五、五、五、五、变量变量变量变量1.1.变量的概念变量的概念变量的概念变量的概念在程序运行期间其值可以变化的量。在程序运行期间其值可以变化的量。在程序运行期间其值可以变化的量。在程序运行期间其值可以变化的量。2.2.变量名变量名变
22、量名变量名规则:规则:规则:规则:1.1.必须以字母开头;必须以字母开头;必须以字母开头;必须以字母开头;2.2.在一个字母后面可以跟在一个字母后面可以跟在一个字母后面可以跟在一个字母后面可以跟1 15 5位数字或字母。位数字或字母。位数字或字母。位数字或字母。如果变量名超过如果变量名超过如果变量名超过如果变量名超过6 6个字符,则只有前个字符,则只有前个字符,则只有前个字符,则只有前6 6个有效。个有效。个有效。个有效。20A A,X1X1,ABCDABCD,CHINACHINA,TOTALTOTAL,G861G8613X3X,X+YX+Y,U.S.AU.S.A,WAN-LIWAN-LI,D
23、R.LIDR.LI合法!合法!合法!合法!非法!非法!非法!非法!SHANGHAISHANGHAISHANGHONGSHANGHONG同一变量!同一变量!同一变量!同一变量!注意:注意:注意:注意:1.1.大小写等价;大小写等价;大小写等价;大小写等价;2.2.变量名之间插入空格不起作用;变量名之间插入空格不起作用;变量名之间插入空格不起作用;变量名之间插入空格不起作用;3.3.变量名应尽量做到变量名应尽量做到变量名应尽量做到变量名应尽量做到“见名知义见名知义见名知义见名知义”;4.Fortran没有保留字,即函数名等可作为变量没有保留字,即函数名等可作为变量(最好不用作变量,以免混淆最好不用
24、作变量,以免混淆),但在同一程序),但在同一程序单位中变量名不能与已出现的函数名和语句定义单位中变量名不能与已出现的函数名和语句定义符重名。符重名。213.3.变量类型变量类型变量类型变量类型 变量是开辟的存储单元,用来存放常量的,相应变量是开辟的存储单元,用来存放常量的,相应的有的有整型变量、实型变量、双精度变量、复型变量、整型变量、实型变量、双精度变量、复型变量、逻辑型变量和字符型变量逻辑型变量和字符型变量。变量在内存中所占的字节。变量在内存中所占的字节数和数据存储形式与相应类型的常数相同。数和数据存储形式与相应类型的常数相同。变量类型的规定:变量类型的规定:变量类型的规定:变量类型的规定
25、:1.I-N隐含约定:凡以字母隐含约定:凡以字母I、J、K、L、M、N六个六个字母开头的,即认为该变量为整型变量。以其它字母字母开头的,即认为该变量为整型变量。以其它字母开头的变量为实型变量。开头的变量为实型变量。a99、book、YOUNG1、XIJ等为实型变量。等为实型变量。I、J6、knife、Long、M1607、number为整型变量为整型变量;222.类型说明语句:有类型说明语句:有integer(整型)、整型)、real(实型)、实型)、double precision(双精度)、双精度)、complex(复型)、复型)、logical(逻辑型)、逻辑型)、character(字
26、符型)字符型)六种类型说明语六种类型说明语句。可用其改变句。可用其改变IN约定限制。约定限制。INTEGER AB,OTAL,X8REAL IMAX,NUMBER,JOB53.implicit语句(隐含说明语句):可以用语句(隐含说明语句):可以用implicit语句语句将某一字母开头的全部变量指定为所需类型。将某一字母开头的全部变量指定为所需类型。IMPLICIT INTEGER(A,C,T-V)IMPLICIT INTEGER(A-C),REAL(I,K)IMPLICIT REAL(I,K)24六、六、六、六、FORTRANFORTRAN函数函数函数函数 (1)自变量有个数规定,且必须为)
27、自变量有个数规定,且必须为常数常数或或有确定值的变有确定值的变量和表达式量和表达式。例如:例如:abs(-1.0)、sqrt(a)、log(1.0+2.0)、int(a+b)均合法。均合法。(2)函数)函数自变量有类型规定,函数值也有类型规定自变量有类型规定,函数值也有类型规定。如:。如:mod(a1,a2)的结果与自变量类型一致的结果与自变量类型一致。(3)函数名有通用名和专用名之分,一般使用通用名。)函数名有通用名和专用名之分,一般使用通用名。在调用子程序时,如果内部函数作为实参,则必须使用专在调用子程序时,如果内部函数作为实参,则必须使用专用名。用名。25 (4)三角函数中角度的单位是)
28、三角函数中角度的单位是“弧度弧度”而不是而不是“度度”。(5)INT函数的作用是简单的截去小数部分。函数的作用是简单的截去小数部分。INT(8.5)=8,INT(-8.5)=-8(6)SIGN函数的作用是函数的作用是“符号传递符号传递”,可检查,可检查A和和B是是否同符号。否同符号。SIGN(6.5,-8.3)=-6.5SIGN(-6.5,8.3)=6.526七、七、Fortran算术表达式算术表达式1.算术运算符和运算优先级算术运算符和运算优先级括号括号 函数函数 乘方乘方*乘除乘除 */加减加减 同一优先级,遵循同一优先级,遵循“从左到右从左到右”原则。原则。乘方乘方*乘乘*除除/加加 减
29、减2.Fortran算术表达式的含义和表示方法算术表达式的含义和表示方法Fortran的运算符和括号将各的运算符和括号将各Fortran运算元素(包括常量、运算元素(包括常量、变量、函数、数组元素)连结起来的一个有值的式子。变量、函数、数组元素)连结起来的一个有值的式子。算术表达式;关系表达式;逻辑表达式;字符表达式。算术表达式;关系表达式;逻辑表达式;字符表达式。28一些正误比较一些正误比较293.表达式运算中的类型问题表达式运算中的类型问题 FORTRAN 77允许不同类型的算术量(包括整型、实允许不同类型的算术量(包括整型、实型、双精度、复型)间的算术运算,但型、双精度、复型)间的算术运
30、算,但不允许在算术量和不允许在算术量和非算术量(如逻辑型、字符型)之间进行算术运算非算术量(如逻辑型、字符型)之间进行算术运算。同类型的算术量之间运算的结果仍保持原类型,如同类型的算术量之间运算的结果仍保持原类型,如 5/2=2、1/2=0。不同类型时,编译系统遵循。不同类型时,编译系统遵循“低级转换成低级转换成高级高级”(实型比整型高)原则将它们转换成同一类型,然(实型比整型高)原则将它们转换成同一类型,然后进行运算。后进行运算。类型的转换是从左而右进行的,在遇到不同类型的算类型的转换是从左而右进行的,在遇到不同类型的算术量时才进行转换。如:术量时才进行转换。如:1/4*20.0=?31八、
31、八、赋值语句赋值语句1.赋值语句的性质和作用赋值语句的性质和作用 V=e变量变量=表达式表达式1.有三类赋值语句:算术赋值语句、逻辑赋值语句、字符有三类赋值语句:算术赋值语句、逻辑赋值语句、字符赋值语句。赋值语句。几点说明:几点说明:2.赋值语句中赋值语句中“=”号是赋值符号,而不是等号。例如:号是赋值符号,而不是等号。例如:N=N+1。323.算术赋值语句兼有计算和赋值双重功能。算术赋值语句兼有计算和赋值双重功能。4.赋值号左边只能是变量名(或数值元素名),而不能赋值号左边只能是变量名(或数值元素名),而不能是表达式,赋值号右边可以是常量、变量或表达式。是表达式,赋值号右边可以是常量、变量或
32、表达式。程序程序1A=1.0B=2.0A=BPRINT*,A,BEND程序程序2A=1.0B=2.0B=APRINT*,A,BEND332.执行赋值语句时的类型转换问题执行赋值语句时的类型转换问题 算术赋值语句中的被赋值变量和右边表达式的类型算术赋值语句中的被赋值变量和右边表达式的类型可以相同,也可以不同。可以相同,也可以不同。如果类型不同,则是先进行表达式的求值,然后将如果类型不同,则是先进行表达式的求值,然后将该表达式的值转换为被赋值变量的类型该表达式的值转换为被赋值变量的类型。如如 IMAX=3.5*2.1的值不是的值不是7.35而是而是7。34九、九、简单的输出语句简单的输出语句1.输
33、出语句的作用和分类输出语句的作用和分类Fortran的输出格式有三类:的输出格式有三类:(1)按用户指定的格式输出;按用户指定的格式输出;(2)系统隐含的标准格式输出(又称表控格式);系统隐含的标准格式输出(又称表控格式);(3)无格式的输出,即以二进制形式输出。无格式的输出,即以二进制形式输出。2.表控输出语句表控输出语句 用这种方式输出数据时,系统自动地分别为每一用这种方式输出数据时,系统自动地分别为每一个不同类型的数据规定所占的列数和表数形式。个不同类型的数据规定所占的列数和表数形式。WRITE(*,*)A,BPRINT *,A,B35(1)系统为每个整数分配)系统为每个整数分配1013
34、列,列,数据打印在这些列数据打印在这些列的右端的右端。(2)一个实数分配给)一个实数分配给15 18列,其中小数部分列,其中小数部分6 7列。如列。如果实数的值很大,以上格式无法容纳,则系统会自动改成用果实数的值很大,以上格式无法容纳,则系统会自动改成用标准化的指数形式输出。标准化的指数形式输出。(3)对一个用指数形式输出的实数分配给)对一个用指数形式输出的实数分配给15列,其中指数列,其中指数部分部分4 5列,小数部分列,小数部分6列。列。36(5)一条)一条print或或write语句可同时输出多个整数和实数。当语句可同时输出多个整数和实数。当在一行内打印不下时,会自动换行再打印,直到把全
35、部需输在一行内打印不下时,会自动换行再打印,直到把全部需输出的数据打印完为止。出的数据打印完为止。(6)如果如果print或或write语句中无任何输出项,它将输出一个语句中无任何输出项,它将输出一个空白行空白行。(4)如果实数的整数部分位数多于系统规定的有效位数)如果实数的整数部分位数多于系统规定的有效位数(例如(例如IBMPC为为7位位),或实数的数值小于,或实数的数值小于1,则在,则在输出时输出时会自动转换成规范化的指数形式输出会自动转换成规范化的指数形式输出。如。如123106和和0.132的的输出为,输出为,表控输出结果因不同计算机而异表控输出结果因不同计算机而异!PRINT *,或
36、 WRITE(*,*)37十、十、简单的输入语句简单的输入语句1.输入语句的作用和分类输入语句的作用和分类Fortran的输入格式有三类:的输入格式有三类:(1)按用户指定的格式输入;按用户指定的格式输入;(2)用自由格式输入(又称表控输入);用自由格式输入(又称表控输入);(3)无格式的输入,即以二进制形式输入。无格式的输入,即以二进制形式输入。2.表控输入语句表控输入语句 用户不必指定输入数据的格式,只需将数据按其用户不必指定输入数据的格式,只需将数据按其合法形式依次输入即可,合法形式依次输入即可,数据间以逗号或空格间隔数据间以逗号或空格间隔。READ *,A,B READ(*,*)A,B
37、38(1)输入数据的个数应当不少于输入数据的个数应当不少于READ语句中变量的个数。语句中变量的个数。输入数据的类型要与输入数据的类型要与READ语句中相应变量的类型一致。语句中相应变量的类型一致。如果输入的第一个数据行上数据个数少于如果输入的第一个数据行上数据个数少于READ语句中语句中变量的个数,则系统会继续从第二个输入的数据行中读数。变量的个数,则系统会继续从第二个输入的数据行中读数。如果输入的数据不足,计算机将等待用户继续输入数据,直如果输入的数据不足,计算机将等待用户继续输入数据,直到输入完全部数据为止。到输入完全部数据为止。3,10,7.5,-15.8 3,10 7.5,-15.8
38、 3 10 7.5,-15.8 READ(*,*)i,j,a,b(2)如果输入的数据个数多于所需的个数,则多余的数据如果输入的数据个数多于所需的个数,则多余的数据不起作用。不起作用。3,10,7.5,-15.8,30,70.6 39(3)每一个每一个READ语句都是从一个新的输入行开始读数的。语句都是从一个新的输入行开始读数的。READ(*,*)i,j READ(*,*)a,b READ(*,*)x,y输入输入 3,10,7.5,-15.8 30.0,70.6 i=3j=10 x=?a=30.0 y=?b=70.6 则则(4)如果在输入数据行中出现)如果在输入数据行中出现“”号,表示对号,表示
39、对READ语语句的输入到此结束,未被赋值的变量不予赋值。句的输入到此结束,未被赋值的变量不予赋值。READ(*,*)i,j,a,b输入输入 3,10/7.5,-15.8 i=3 a值不变值不变j=10 b值不变值不变40相当于相当于(5)一个数据的数字之间不要插入空格。一个数据的数字之间不要插入空格。3,1 0,7.5,-15.8 3,1,0,7.5,-15.8(6)数据类型应与变量类型一致。)数据类型应与变量类型一致。如果变量为整型,输入数据为实型,按出错处理。如果变量为整型,输入数据为实型,按出错处理。如果变量为实型,输入数据为整型,一般通融。如果变量为实型,输入数据为整型,一般通融。41
40、十一、十一、参数语句(参数语句(PARAMETER语句)语句)在程序中要多次用到某些常数,可以用一个符号在程序中要多次用到某些常数,可以用一个符号来代表一个常量。来代表一个常量。PARAMETER(PI=3.1415926)S=2.0*PI*RINTEGER A,B,CPARAMETER(A=2,B=5,C=3)I=MOD(A,B)+C 用来定义符号常量,应写在所有执行语句之前。用来定义符号常量,应写在所有执行语句之前。符号常量的定名规则与定变量名相同,遵循符号常量的定名规则与定变量名相同,遵循I-N隐含隐含约定,如需改变类型,可在之前加类型说明语句。约定,如需改变类型,可在之前加类型说明语句
41、。42(1)在程序定义一个符号常量后,不能再改变它的值。)在程序定义一个符号常量后,不能再改变它的值。PARAMETER(PI=3.14)PI=3PARAMETER(PI=3.14)READ(*,*)PI(2)用符号常量好处是:如果需要改变某一常数时,不需一)用符号常量好处是:如果需要改变某一常数时,不需一一改变这个常数,只需改变参数语句中符号常量的值则可。一改变这个常数,只需改变参数语句中符号常量的值则可。PARAMETER(price=1.0)Total1=price*3Total2=price*4Total3=price*5(3)符号常量可以是数值型、逻辑型和字符型的。)符号常量可以是数
42、值型、逻辑型和字符型的。符号常符号常量不能作为语句标号量不能作为语句标号,也不能出现在,也不能出现在FORMAT语句中代替语句中代替常数。常数。几点说明:几点说明:43十二、十二、END语句、语句、STOP语句、语句、PAUSE语句语句 END语句应该出现在程序单位的最后一行,一个语句应该出现在程序单位的最后一行,一个程序单位中只能有一个程序单位中只能有一个END语句。语句。它的作用有:结束本程序单位的运行,作为一个它的作用有:结束本程序单位的运行,作为一个程序单位的结束标志,子程序中的程序单位的结束标志,子程序中的END还有使流程返还有使流程返回调用程序(兼有回调用程序(兼有RETURN语句
43、的功能)。语句的功能)。一个程序单位中可以有多个一个程序单位中可以有多个STOP语句,执行到任语句,执行到任一个一个STOP语句处时,程序即停止运行语句处时,程序即停止运行。在子程序中如。在子程序中如果有果有STOP语句,也是使整个程序停止运行。语句,也是使整个程序停止运行。STOP 1111 或或 STOP ERROR1其中,其中,1111和和ERROR1为输出信息,供调试程序和辨为输出信息,供调试程序和辨别流程用。数字为不超过别流程用。数字为不超过5位的整数,字符串加引号。位的整数,字符串加引号。44 PAUSE语句是暂停语句语句是暂停语句,调试程序用,调试完成,调试程序用,调试完成后可删
44、去。程序暂停时,后可删去。程序暂停时,按回车键则继续运行按回车键则继续运行。使用方使用方法同法同STOP语句。语句。45十三、十三、程序举例程序举例 program exam1read(*,*)a,b,cs=(a+b+c)/2.0area=sqrt(s*(s-a)*(s-b)*(s-c)write(*,*)a=,a,b=,b,c=,cwrite(*,*)area=,areaend1.求三角形面积。(用公式求三角形面积。(用公式 )46 program exam2real IR0=100.R1=20.R2=50.U=100.R12=R1*R2/(R1+R2)R=R0+R12I=U/Rwrite(
45、*,*)R=,Rwrite(*,*)I=,Iend2.已知已知U=100v,R1=20,R2=50,R0=100 。求等效电阻求等效电阻R和总电流和总电流I。47 program exam3parameter(pi=3.1415926)h=20000.R=6.37154e6vc=7900.*sqrt(R)/sqrt(h+R)ve=vc*sqrt(2.0)c=2.0*pi*(h+R)t=c/vcvc=int(vc*3600./1000.*100.+0.5)/100.ve=int(ve*3600./1000.*100.+0.5)/100.t=int(t/60.*100.+0.5)/100.writ
46、e(*,*)vc=,vc,Km/hwrite(*,*)ve=,ve,Km/hwrite(*,*)time=,t,minutesend3.已知:人造卫星距地面已知:人造卫星距地面h=20000m,地球半径地球半径 R=6.37106m。求:求:(1)卫星绕地球圆周运动速度卫星绕地球圆周运动速度Vc(Km/h)和脱离轨道速度和脱离轨道速度Ve(Km/h),(2)环行一周所需时间。以上结果取小数点后两位,对第三位四舍五入。环行一周所需时间。以上结果取小数点后两位,对第三位四舍五入。48上机目的:上机目的:1.熟悉熟悉PowerStation集成开发环境;集成开发环境;2.掌握掌握Fortran程序的上机步骤;程序的上机步骤;3.掌握掌握Fortran程序的结构、书写规则;程序的结构、书写规则;4.掌握掌握Fortran基本数据类型及其描述、运算;基本数据类型及其描述、运算;5.掌握掌握Fortran最基本的语句。最基本的语句。上机内容:上机内容:1.调试课本中的所有程序;调试课本中的所有程序;2.76页第页第11、12题。题。49 program ex1 x=1.0e30 y=-1.0e30 z=1.0 a=(x+y)+z b=x+(y+z)print*,a print*,b end