收藏 分销(赏)

FORTRAN95第01章-概述讲课讲稿.ppt

上传人:快乐****生活 文档编号:11189740 上传时间:2025-07-05 格式:PPT 页数:79 大小:462KB 下载积分:16 金币
下载 相关 举报
FORTRAN95第01章-概述讲课讲稿.ppt_第1页
第1页 / 共79页
FORTRAN95第01章-概述讲课讲稿.ppt_第2页
第2页 / 共79页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,FORTRAN95第01章-概述,课程安排,学时安排,:,讲课,44,学时,上机实践,20,学时,考核方法,:,期末一次性考试,笔试,+,上机,笔试占,80,上机占,20,平时作业少于,2/3,无考试资格,.,2,第,1,章,FORTRAN 95,简单程序设计,本章主要内容,:,Fortran,语言的基本概念,Fortran95,语言的用途,程序的书写格式,Fortran95,基本数据类型的表示方法,Fortran95,表达式的书写方法,Fortran95,赋值语句的用法,Fortran95,简单的输入与输出语句的用法,初步学会简单,Fortran95,程序的编写,3,1.1,程序设计概述,1.1.1,程序设计语言,程序设计就是编写程序,计算机通过执行程序完成指定任务的,编写程序有几种方法:,用机器语言编写程序,用汇编语言编写程序,用高级语言编写程序,4,用高级语言编写程序,:,高级语言是接近自然语言和数学语言的编程语言,通常说的,“,程序设计语言,”,所指的就是这类语言。,5,用户采用高级语言编程,上机的过程如图,1-1,所示,.,有错,有错,有错,编写源程序,编辑输入,编译,产生目标程序,装配连接形成可执行程序,执行程序,(,如需要可输入数据,),输出结果,图,1-1,采用高级语言编程上机过程,6,用高级语言编写的程序通常称为,源程序,。,计算机不能直接识别和执行源程序,必须把,它们先翻译成机器指令程序,称,“,目标程序,”,,,然后再由计算机执行目标程序。这个,“,翻译,”,工作是由一个称为,“,编译程序,”,的软件完成的,不同的高级语言有不同的编译程序。用高级,语言编程解决实际问题,前提是:在计算机中,安装该高级语言的编译程序。,7,其中,“,装配连接,”,是由“,连接程序,”完成的,,其任务是将若干个目标程序(包括库函数),连接在一起,并执行重定位操作及自动的库,文件检索,然后形成可执行的程序。连接好,的程序保存在外存,随时可装入主存中运行。,8,1.1.2,程序设计过程,一、程序设计步骤,1,确定所要解决的问题及应达到的要求,2,分析问题构造模型,根据实际问题确定物理模型,再用数学语言描述它,即列出解题的数学公式或方程式,也就是建立数学模型。,3,选择计算方法,4,确定算法并绘制流程图,5,编写程序,6,程序调试,7,正式运行,9,二、算法,所谓算法指为在有限步内解决一个具体问,题而规定的意义明确的步骤。是为计算机设,计的执行步骤。,10,一个算法应具有以下基本特征:,(,1,)有穷性 一个算法必须在执行有限步之后结束。,(,2,)确定性 算法的每一步骤,其顺序和内容都必须有,确切的定义,不能有模棱两可的解释和二义性。,(,3,)有效性 也称为可行性,指算法的每一步都能使算,法的执行者(人或机器)明确其含义并能去实现所规定,的操作。,(,4,)有零个或多个输入 输入是指执行算法时需要从外,界取得必要的初始数据。有的算法表面上无输入(即零,个输入),但实际上算法执行所需的初值已被嵌入在算,法中了。,(,5,)有一个或多个输出 每个算法应至少有一个输出步,骤,告知解决问题的结果。评价一个算法通常还考虑以,下标准:执行算法所需时间的长短、执行算法所需存储,空间,即所需计算机存容量的大小。除此之外,算法的,正确性、最佳性和精确性等也是评价算法的标准。,11,三、流程图,上述算法可以用文字表达,也可以用流程,图来表示。有时用流程图表示算法更有利于,编写程序,可以减少编程过程中的错误。,圆角矩形:开始和结束,矩形:处理,菱形:判别的条件,平行四边形:输入或输出,带箭头的线:执行的先后次序,12,1.2 FORTRAN,语言简介,1.2.1 FORTRAN,语言简史,FORTRAN,语言是一种在国际上广泛流行的,适用于科技计算的高级程序设计语言。,FORTRAN,的名字来自英文的,Formula Translator,,即数学公式翻译器的意思。,FORTRAN,语言最初是在,1954,年由美国,IBM,公司提出的。,1966,年制定了,FORTRAN,语言的统一标准,,这套标准后来被称为,FORTRAN66,13,1977,年又制定了新的,FORTRAN,语言标准,,并在,1978,年由美国国家标准协会(,ANSI,)正,式公布,称为,FORTRAN77,1992,年正式由国际标准化组织,ISO,公布了,新的标准,称为,FORTRAN90,1997,年国际标准化组织,ISO,再次公布了,FORTRAN,语言的新标准,这就是,FORTRAN95,。主要加强了,FORTRAN,在高性能并行运算方面的支持。此外,,FORTRAN2003,的标准正在制定中,不久的将来会,正式发布。新标准将增强对面向对象程序设计的支,持。,14,1.2.2FORTRAN,字符集,“,字符集,”,是指编写程序时所能使用的全部字符和符号。,FORTRAN,语言的字符集包括的字符及符号有:,26,个英文字母,:,AZ,及,az,(在,FORTRAN,程序中英文字母不分大小写),数字,:,09,22,个特殊符号,:,=+-*/,(),。,!,“,%,?¥,_,其中的特殊符号除了做为数学运算符号外,还,有其他用法,15,1.2.3 FORTRAN,程序的组成,一、,FORTRAN,程序结构,是一种段式结构(或称块结构)。每个,FORTRAN,程序由,一个主程序段和若干个子程序段及模块组成。,主程序段有且仅有一个,子程序段和模块根据需要可用零个或多个。每个程序段可以独立编写,实现不同的功能,,程序运行总是从主程序段开始,。每个程序段都有自己的段头语句,但主程序段的段头语句可以省略。,16,二、,FORTRAN,语句,每个程序段和模块由若干条,FORTRAN,语句,组成,这些语句又分为可执行语句和非执行语,句。,可执行语句,在程序执行时使计算机产生,某种特定的操作,如赋值、输入输出、控制,转移等。,非执行语句,只是用于将某些信息(如变量的类型、数组的维数及大小、数,据的输入输出格式等)通知编译程序,使编,译程序在编译源程序时按这些信息要求进行,处理。程序执行时非执行语句不会使计算机,产生任何操作。,17,FORTRAN,语句在使用时有基本的顺序要求,,不能随意放置,表,1-1,给出了这些语句在程序,中的顺序要求,18,注,释,行,PROGRAM,、,FUNCTION,、,SUBROUTINE,、,BLOCK DATA,、,MODULE,USE,FORMAT,IMPLICIT NONE,PARAMETER,IMPLICIT,及其他说明语句,DATA,可执行语句,CONTAINS,内部过程或模块过程,END,19,其中:,(,1,),PROGRAM,、,FUNCTION,、,SUBROUTINE,、,MODULE,、,BLOCKDATA,均为程序段的段头语句,只能出现在每个程序段开,始的位置上;,(,2,),END,语句是程序段的结束语句,只能出现在各程序段的最后,(,3,),USE,语句只能出现在段头语之后,其他语句之前;,(,4,),FORMAT,语句可以出现在,USE,语句和结束语句之间的任何位,置上;,(,5,),IMPLICIT NONE,语句在,USE,语句之后,在其他说明语句之,前出现;,(,6,),PARAMETER,语句可出现在,DATA,语句和可执行语句之前,,IMPLICIT NONE,语句之后的任何位置上;,(,7,)其他说明语句应出现在,DATA,语句和可执行语句之前;,(,8,),DATA,语句可在说明语句之后,,END,语句之前的任何位置上,(,9,)注释行不是,FORTRAN,语句,仅为程序设计者提供了一种注,释说明的手段,可以写在程序的任何位置上。,20,1.2.4 FORTRAN,程序书写格式,一、固定格式,固定格式是一种,FORTRAN,程序的旧式写法,采用这种写法的,程序代码文件扩展名为,“,.FOR,”,或,“,.F,”,。在,“,固定格式,”,中,每一行至多,写一个语句,且最多可写,72,个有效字符:,第,1,个字符,,如果是字母,C,或*号,说明此行为注释行,仅起说,明作用,不会被编译;,第,15,个字符,,如果是数字,则表示是该行的代号,称为语句标,号,如不需要则只能是空格或全,0,;,第,6,个字符,,如果是数字,“,0,”,或空格以外的任何学符,表示该行,是上一行的继续行;,第,772,个字符,,是,FORTRAN,语句的书写区域;,第,73,个字符及之后的字符,将被忽略,有的编译程序会给出错误,提示。,21,二、自由格式(目前最流行的书写格式),自由格式是,FORTRAN90,之后的新写法,取消了许多限制,没,有规定每行的第几个字符有什么作用,:,每行最多可写,132,个字符;,叹号,“,!,”,后的内容都是注释;,如果需要写语句标号,则标号可以紧挨着写在语句第,1,个字符,前面;,一行字符的最后如果是符号,“,&,”,,则表示下一行是该行的继,续。如果一行程序代码开头是符号,&,,则其上一行的最后非空格,符必须是一个,&,号,且,&,号前不能有空格,表示该行是上一行的继,续。这种形式的续行允许把一个常数、变量名、关键字等分开放,在两行上。,在一行中可写上多个语句,但每两个语句之间必须用分号,“,;,”,隔开。,用自由格式书写的,FORTRAN,程序文件,其扩展名为,“,.F90,”,。,以下是用自由格式书写的,FORTRAN,程序实例。,22,!,Free Format,program main,!,已知,a,b,c,求一元二次方程的根,a=1.0;b=3.0;c=-5.6,!,一行书写多个语句,x1=,(,-b+sqrt,(,b*b-4.0*a*c,),/&,!,下一行是续行,(,2.0*a,),x2=,(,-b-sq&,!,下一行是续行,&rt,(,b*b-4.0*a*c,),/2.0/a,write,(*,10,),x1,x2,10 format,(,1x,2f6.2,),stop,end,23,1.3 FORTRAN,基本数据类型,在程序设计语言中数据有类型之分,不同类型的数,据取值范围不同,处理方式不同,存储形式和书写形,式也不同。,FORTRAN,语言中有五种基本数据类型。,24,一、整型(,INTEGER,),整型表示整数的类型,分长整型和短整型。在,PC,机中,长整型,占,4,个字节(,32bit,),可保存的数值范围,在,-21474836482147483647,之间(,-2,31,2,31,-1,);,短整,型,占,2,个字节,保存的数值范围在,-3276832767,之间,即(,-2,15,2,15,-1,)。,25,几个,短整型,数值(补码):,01111111 11111111 32767,00000000 00000001 1,00000000 00000000 0,11111111 11111111 -1,10000000 00000001 -32767,10000000 00000000 -32768,26,二,、实型(,REAL,),实型数也称浮点数,分单精度和双精度。单,精度实型数在,PC,机中占,4,个字节,有效位数为,67,位,可表示的最大正数为,3.410,38,,最小正数为,1.1810,-38,;双精度实型数占,8,个字节,有效位数,为,1516,位,可表示的最大正数为,1.7910,308,,最,小数为,2.2310,-308,阶符,解码,数符,尾数,27,三,、复型(,COMPLEX,),复型用以说明,a+bi,形式的数值。,复数中,a,、,b,的值为两个实型数,,因此复型也分单精度和双精度复型,28,四,、字符型(,CHARACTER,),字符也是一种数据,,这种数据称为字符型数据,它是一个字符串,,其中的一个字符占一个字节的存储空间,,存储其,ascii,值。,29,五,、逻辑型(,LOGICAL,),逻辑型数据表示逻辑判断的结果,,分别为,“,真,”,(,TRUE,)和,“,假,”,(,FALSE,)。,通常以,1,或非,0,代表,TRUE,,,0,代表,FALSE,。,30,1.4 FORTRAN,表达式,1.4.1,常量与变量,一、常量,常量的指程度运行过程中其值固定不变的量。通,常也将常量称为常数。不同类型的常数有不同的表示,方法。,31,1,整型常数,在整型常数中,除了正、负号外,不能包含,其他任何非数字符号。例如,,128 +256 -128 0 -0,+32767,都是正确的整型常数,而,123,567 100.0,-4.0 0.,都是不正确的整型常数。,32,2,实型常数,实型常数有多种不同的表示形式。,(,1,)基本实常数形式,基本实常数形式与日常习惯写法相同,由,一个正(或负)号、整数部分、小数点和小数,部分组成。其中正号可以省略,并且允许没有,整数部分或小数部分,但小数点是必须的。例,如,0.0 .02 314.-27.567 256.0 +0.05,都是正确的表示形式。,33,(,2,)指数形式的实常数,指数形式实常数一般用于表示一个较大或较小,的数。一个指数型实常数由一个整型常数或基本,实常数后跟一个字母,E,,,E,后跟一个正或负的整型,常数组成。例如,,1.2E+0.8 -2.025E+16,0.4415E-05 1E+04 15E-06,都是正确的指数形式,的实常数。使用指数形式的实常数时应注意:,E,及其后的整型数表示,10,的乘幂,,E,后不能是,非整数;,单独的指数部分不能做为常数,如,E+02,不表,示,10,2,,可以写成,1E+02,。,34,(,3,),双精度型常数形式,双精度型常数与上述指数形式实常数表示方法基本相同,只是,把指数部分的字母,E,换成字母,D,。例如,,3.141592653589798D0 -1.23456789D-6 .01D-8 1.5D100,都是双精度型常数。,双精度型常数中必须含有字母,D,,它连同其后,的整数同样表示,10,的乘幂,同上述指数形式实常数不同,,D,后最多,可有三位整数,而,E,后最多只有两位整数。,35,3.,复型常数,一个复型常数由两个用括号括起来的整型或实型常数组成,且两,个常数之间用逗号分隔。形式为(,a,,,b,),其中,a,为实部,b,为虚部。,例如,:,(,1,,,2,)(,2.5,,,-3.07,)(,0.0,,,-0.455,)(,9.8,,,0.0,),都是正,确的复型常数,它们分别表示复数,1+2i 2.5-3.07i -0.455i 9.8,复型常数的实部或虚部为零时,零不能省略。,36,4,逻辑型常数,逻辑型常数只有两个值,即,“,真,”,值和,“,假,”,值,,在,FORTRAN,语言中,用,.TRUE.,表示“真值”,,用,.FALSE.,表示“假”值,,,其中,左右两个圆点不可省略。,37,5,字符型常数,字符型常数是用英文的单引号或双引号括起来的字符串。,字符串中的字符可以是,ASCII,码字符集中的任何可显示,字符,也可以是汉字,例如:,FORTRAN,“123”,“2003-12-5”,“,天津大学”,38,字符常数的值就是引号之间的字符,字符常数的长度,是字符串中字符的个数,两端的,定界符引号不计算在长度之内。例如:,FORTRAN,的长度为,7,;,“,天津大学,”,的长度为,8,,一个汉学按两个字符处理。,若字符符型常数中有一个引号则应同时连写两个引号,计算长度时按一个字符计算。例如:,I t s,长度为,4,I t s,长度为,5,a b c d,长度为,5,a b c d,长度为,6,a b c d,长度为,6,a b c d,长度为,5,39,二、变量,在程序中变量代表存放不同类型常数的内存空间。每,个变量有一个名字,故不同的变量各代表不同的内存,空间。,1,变量的命名规则,FORTRAN,语言中对变量命名有以下规则:,(,1,)变量名的第一个字符必须是字母,其余字符可以,是字母、数字和下划线;,(,2,)变量名的长度最大为,31,个字符(与系统相关);,(,3,)变量名不能和程序名(包括主程序、子程序和模,块)同名。同时尽量避免和,FORTRAN,语言中的语句,名、标准函数名同名,这样在语法上虽然没问题,但,容易引起混淆。,40,以下是正确的变量命名:,A,、,BG5,、,TIME,、,SUM01,、,KK,、,S_1,以下是错误或不适宜的变量命名,5xy,(以非字母字符开头),A?C,(含有非字母、数字字符),F(X),(含有非字母、数字字符),(不是,FORTRAN,字符集中的字符),WRITE,(用,FORTRAN,保留字作为变量,名是不合适的),41,2,变量类型的说明,说明变量的类型就是说明这个变量可存储什么类型的数,据,同时告知编译程序预留多大空间以存储数据。说明,变量的类型有以下几种方法。,(,1,)用类型语句说明变量类型,类型名,(KIND=,字节数,):,变量名表,其中:,变量名表是用逗号分隔的被说明的变量名,;,类型名用于说明变量名表中变量的类型,可以是,INTEGER,、,REAL,、,COMPLEX,、,CHARACTER,、,LGICAL,(KIND=,字节数,),表示变量占用内存的字节数,可以省略此项,不同类型有不同的缺省长度,。,42,整型变量的说明,INTEGER(KIND=4):X1,Y1,说明两个整型变量,X1,、,Y1,其中,KIND=4,表示这两个变量分别用,4,个字节存放整数。,INTEGER:X1,Y1,没有说明变量的长度,默认为一个整型变量占,4,个字节,INTEGER(KIND=2):A,B,C,说明,A,,,B,,,C,为三个整型变量,各占,2,个字节的。,43,实型变量的说明,REAL,:,M1,,,M2,REAL,(,KIND=4,):,M1,,,M2,REAL,(,KIND=8,):,M1,,,M2,这三个语句中,前两个语句功能相同,说明,M1,、,M2,为两个各占用,4,个字节的单精度实型,变量;第三个语句说明,M1,、,M2,是各占用,8,个,字节的双精度实型变量。,44,复型变量的说明,COMPLEX,:,A,,,B,,,C,COMPLEX,(,KIND=4,):,A,,,B,,,C,COMPLEX,(,KIND=8,):,A,,,B,,,C,其中前两个语句功能相同,说明,A,,,B,,,C,为,三个单精度复型;第三个语句说明三个变量均,为双精度复型。,45,逻辑型变量的说明,LOGICAL,:,A,,,B,LOGICAL,(,KIND=2,):,A,,,B,LOGICAL,(,KIND=4,):,A,,,B,逻辑型变量虽然同样可以说明它所占用内存空,间大小,但实际意义不大,通常不需用,KIND,去设置。,46,字符型变量的说明,字符型变量用来保存一个字符或一个字符,串。其说明方法与其他变量类型的说明格式有,所不同,见以下例子。,CHARACTER,:,C1,,,C2,说明,C1,,,C2,这两个数量各存放一个字符。,CHARACTER(LEN=10),:,C1,,,C2,说明,C1,,,C2,这两个数量各存放,10,个字符。,47,(,2,)变量类型的其他说明方法,用,IMPLICIT,语句说明变量类型,IMPICIT INTEGER,(,A,,,B,),说明,A,,,B,开头的变量都是整型变量。,IMPLICIT INTEGER,(,A-F,,,I,,,K,),说明,A,到,F,及,I,、,K,开头的变量均为整型变量。,IMPLICIT REAL,(,M-P,),说明,M,到,P,开头的变量都为实型变量。,IMPLICIT COMLEX,(,C,),说明以字母,C,开头的变量都为复型变量。,48,隐含说明变量的类型,这种说明方法是根据变量名称的第一个字母自动决定变,量的类型,且仅适用于整型和实型变量,凡是以,I,、,J,、,K,、,L,、,M,、,N,开头的变量名均为整型变量,其他字母开头的,变量都作为单精度实型变量。这种方法最好不要使用。好,的程序员在写程序时都会先对变量进行说明才使用,这样,能清楚了解程序执行时的内存使用情况,同时也可避免很,多,“,人为错误,”,。最好是在程序开头写上以下语句:,IMPLICIT NONE,该语句关闭,“,隐含说明,”,,所有变量都要先说明后使用,,以避免在程序中使用没意义(未赋值)的变量。但要注意,,这个语句要放在,USE,语句的下一行,任何其它语句之前,,不能放在其他位置。,49,三、常数的命名,常数的命名就是给常数起名字,这样在程序中用到这个常,数时不必写这个常数,而直接写这个常数的名字,从而给,编写程序、阅读程序以及修改程序带来方便。例如:,REAL,:,PI,PARAMETER,(,PI=3.14159,),也可以在类型说明时,同时给常数命名。例如:,REAL,,,PARAMETER,:,PI=3.14159,这里,PARAMETER,是作为一个形容词,(,称为属性描述符,),双,冒号表示这个形容词,“,形容,”,完毕,后面开始常量命名,,冒号在这里不能省略。当类型说明语句和其他类似的,“,形容词,”,连用时都要写上这个冒号。,50,1.4.2 FORTRAN,库函数(标准函数、内部函数),在程序设计中常要用到数学中的一些函数,如三,角函数、指数函数、对数函数、求根函数、绝对值,函数等。,FORTRAN,将这些常用的函数编成一系列,独立的子程序,,如果需要用到这些函数,用户不必,自己再去编写求这些函数值的程序,只需直接写出,函数名字和有关的自变量即可。例如求,|x|,,只要写,ABS,(,x,)就可以了。系统会按函数名从函数库中找,出计算该函数的子程序,从而完成函数的求值。,51,函数名,数学含义,ABS,|X|,EXP,E,x,SQRT,SIN,Sinx,COS,cosx,TAN,tanx,LOG,log,e,x,LOGIO,log,10,x,INT,取整,MOD,求模,MAX,最大值,MIN,最小值,表,1-2,常用库函数,52,使用库函数的一般形式,:,函数名(自变量),“自变量”(或,“,参数,”,)可以是一个或多个。,关于库函数的说明:,(,1,)自变量有类型的要求,并由自变量的类型决定函数,类型。,(,2,)函数各分,“,通用名,”,(也称,“,属名,”,)和,“,专用名,”,。使用通用名时函数值类型随自变量的类型而定,使用专用名时只允许用指定类型的自变量,且只能得到固定类型的函数值。,(,3,)自变量必须用括号括起来,且三角函数的自变量单,位是弧度。,(,4,)自变量可以是表达式,且可以嵌套引用。例如,EXP,(,x+2.5,)、,SIN,(,ABS(X),)。,53,1.4.3,算术表达式和字符表达式,一、算术表达式,算术表达式是用算术运算符将常数、变量、,函数等运算元素按一定规则组成的算式。,1,算术运算符,FORTRAN,程序中使用的算术运算符按运,算优先级从,“,低,”,到,“,高,”,排列如下:,+,加法,-,减法 *乘法,/,除法 *乘幂,注:可以使用括号,“,(),”,表示括号内的部分优先运算,54,以下是一些算术表达式的例子。,数学式子 算术表达式,a*exp(x)-sin(alpha+beta)*2,3.14159*R*2,在编写表达式时首先要注意以下几点:,(,1,)乘号是不能省略的,且乘幂必须用两个连续的,“,*,”,号表示,例如,x3,和,2ab,的写法是不允许的,应写成,x*3,和,2*a*b,。,55,(,2,)同类型的两个运算元素运算后类型不变,例如,“,1/2,”,结果为,0,而不是,0.5,。,(,3,)同一个算术表达式中允许出现不同类型的运算元,素,但运算结果的类型遵守如下规则:,一个实型数和一个整型数运算,结果为实型;,一个双精度数和一个单精度数或整型数运算,结,果为双精度数;,一个复型数和其他类型数运算,结果为复型数。,对不同类型数据混合运算时的类型转换是逐步进行,的,即一边转换一边计算,而不是先转换成统一类型后,再计算,例如,5.0-5/2,结果不是,2.5,而是,3.0,。,56,二、字符表达式,字符表达式是用字符运算将若干个字符型量连接起来的,表达式。,字符型量可以是字符常数、字符变量、字符数组元素、,字符子串和字符型函数。,字符运算符只有一个,即,“,/,”,,表示将两个字符串连接起来。例如,字符表达式,FORT,/,RAN95,,其值为,FORTRAN95,。,“,That,s,”,/,“,right,”,,其值为,That,s right.,。当使用双撇号将字符串括起来时,字符串中每个单撇号为一个字符。,That,”,s,/,right,,其值为,That,s right.,。当使用单撇号将字符串括起来时,字符串中的两个连续撇号表示一个单撇号字符。,其它字符型量使用的例子将在以后章节中见到。,57,1.5,赋值语句,一、赋值语句,赋值语句是,FORTRAN,程序中使用最多的语句,它,的作用是将一个值赋予某个量。其一般形式为:,V=e,其中:,V,可以是一个变量名、数组名、数组元素、数组,片段或字符子串,,e,是一个表达式(包括单个常量或变,量),,“,=,”,称赋值号。,赋值语句的功能是,先计算出表达式,e,的值,然后将,此值转换成和,V,的类型一致后赋给,V,,即送到,V,所表示,的内存单元中。,下面是一些赋值语句的例子。,58,A=3.5*SIN,(,0.5,)*,6.0+4.5,DX=-0.12345D-10,X=X+1.0,C=,(,2.5,,,-0.9,),C1=,ABCD,/,XYZ,(假定,C1,是字符型变量),其中前四个赋值语句中,“,=,”,两边都是数值型,量,通常称这种赋值语句为,“,算术赋值语句,”,第,五个赋值语句中都是字符型量,称其为字符赋,值语句。,59,几点说明,1,赋值号左边不能是表达式、函数或常数。例如,X+Y=5,,,5=X+Y,,,SIN,(,X,),=3.14159/2.0,都是错误的。,2,一个赋值语句不能给多个变量赋值。例如,A=B=C=0,是不允许的。,3,对算术赋值语句,赋值号丙边的类型不一致时,表,达式的值自动换成与赋值号左边的量的类型一致后再赋,值。例如,I=6.5*3,(设,I,为整型变量)执行后,I,的值为,19,,而,不是,19.5,。又如,A=3*5/2,(设,A,为实型变量)执行后,A,的值,为,7.0,。再如,C=,(,2.5,-0.9,)(设,C,为实型变量)执行后,C,的,值为,2.5,,不是(,2.5,-0.9,)。,60,二 给变量赋初值,给变量赋值不一定只利用赋值语句,可以在定义变量时给变量赋初值。例如,INTEGER,:,a=1,REAL,:,b=2.0,COMPLEX,:,c=,(,1.0,,,2.0,),CHARACTER,(,LEN=10,):,str=,“,FORTRAN 95,”,注意,在定义变量时赋初值,赋值号右边不能是含有运算符的表达式,而且语句中的两个冒号不能省略。利用赋值语句给变量赋值是在程序执行时完成的,而在定义变量时赋初值是在程序被编译时实现的,可以提高程序的执行速度。,61,1.6,简单的输入与输出,FORTRAN,提供了丰富的输入输出功能。这些功能是通过输入输出语句实现的。,本节介绍简单的输入输出方法,即使用表控格式输入输出语句实现输入输出。所谓表控格式是指输入输出语句中不提供数据的输入输出格式,而按编译程序提供的隐含格式进行数据的输入输出。,62,1.6.1,表控输入语句,表控输入语句的形式:,READ,(,UNIT=u,,*)输入表,或,READ*,,输入表,其中,,UNIT=u,指定输入设备,,u,为输入设备号;,“,*,”,号表示表控输入,,“,UNIT,”,可以省略;,“,输入表,”,可以是变量、数组元素名、数组名、子串名等,它,们之间用逗号分隔开。,语句的功能是从,“,u,”,指定的设备输入若干个数据,然后一一对应的赋给输入表中的元素。,63,例如,READ,(,UNIT=5,,*),A,,,B,,,C,表示从,5,号设备输入三个数据,分别赋给变量,A,、,B,、,C,。该语句也可以写成,READ,(,5,,*),A,,,B,,,C,,,省略了,“,UNIT=,”,。这个语句还可以写成如下形式:,READ,(*,*),A,,,B,,,C,或者写成,READ*,A,,,B,,,C,形式。这些形式彼此是等价的,都表示以表控格式,从键盘输入三个数据分别赋给,A,、,B,、,C,。,64,在程序中使用表控格式输入数据时,当执行到,该语句,显示器上会出现一个光标,等待从键盘,输入数据。输入多个数据时,数据之间用逗号或空,格隔开,若输入字符常数,而且字符常数中有空格,符或逗号,则要使用撇号将字符串括起来。,65,INTEGER A,,,B,,,C,REAL X,,,Y,,,Z,CHARACTER,(,LEN=20,),C1,,,C2,READ*,,,A,,,B,,,C,READ*,(*,*),X,,,Y,,,Z,READ,(*,*),C1,,,C2,当执行到,READ,语句时,若从键盘输入以下数据:,1,,,2,,,3,4.0,,,5.0,,,6.0,HAPPY BIRTHDAY,则执行结果是,A=1,,,B=2,,,C=3,,,X=4.0,,,Y=5.0,,,Z=6.0,,,C1=,“,HAPPY,”,,,C2=,“,BIRTHDAY,”,。,66,1.6.2,表控输出语句,表控输出语句的形式:,WRITE,(,UNIT=u,,*)输出表,其中,,UNIT=u,指定输出设备,,“,UNIT,”,可以省略;,u,为输出设备号;,“,*,”,表示表控输出;,“,输出表,”,中可以包含变量、常数、数组名、数组元素名、子串名、函数名或一般表达式,各项之间用逗号隔开。该语句的功能是在,“,u,”,指定的设备上输出输出表中各项的值。,系统默认的输出设备号是,6,,表示在显示器上输出,可以,用,“,*,”,号表示默认设备。因此表控输出语句的以下几种写法是等价的。,WRITE,(,UNIT=6,,*),A,,,B,,,C,WRITE,(,UNIT=5,,*),A,,,B,,,C,WRITE,(,UNIT=*,,*),A,,,B,,,C,WRITE,(*,*),A,,,B,,,C,67,表控输出语句还有另一种形式:,PRINT*,,输出表,这个语句只能用于在标准输出设备上输出数据,它不能用,UNIT=u,指定输出设备,这是和,WRITE,语句的主要区别。,另外注意,,WRITE,语句不能写成,“,WRITE*,输出表”,这,样的形式,即,WRITE,后面不能省略括号,同样,PRINT,后也,不能加括号。,下面是表控输出语句的例子。,INTEGER I,,,J,REAL A,,,B,WRITE,(*,*),I,,,J,PRINT*,,,A,,,B,如果设,I=49,,,J=-128,,,A=2.05,,,B=17.38,,则输出结果,为:,68,0,69,采用表控输出时:整型数输出占,15,位,不足,15,位,右对齐左边补空格,且正号不输出,;,实型数占,15,位,,其中小数部分占,6,位,不足,15,位右对齐左边补空格,,正号不输出;双精度实型数占,24,位,小数部分占,15,位,不足,24,位右对齐,右边补空格,正号不输出;,复型数输出时,输出的实部和虚部用逗号分开且用,括号括起来;字符型数据原样输出,但作为定界符,的撇号不输出,两个字符串间留一空格。,见以下例子,70,COMPLEX X,,,Y,CHARACTER,(,LEN=10,),B,CHARACTER A,A=,H,B=,ELLO,X=,(,1.0,,,1.0,),B=,(,1.0,,,2.0,),WRITE,(*,*),A,,,B,WRITE,(*,*),“,X+Y=,”,,,X+Y,当两个表控语句执行后会输出以下结果:,H ELLO,X+Y=,(,2.000000,,,3.000000,),71,对上面这些例子中的表控输出语句,都可以使,用,PRINT,语句代替,结果是一样的,例如,PRINT*,,,A,,,B,PRINT*,,,“,X+Y=,”,,,X+Y,72,1.7,程序举例,例,1.,编写一个进行复数加、减、乘、除及简,单字符处理的程序。,73,program ex101,s1,(,6,:),=,“,evening.,”,complex a,b write(*,*)s1,Character(len=20)s1,s2 write(*,*)index(s2,,,substring),Character(len=5)substring write,(*,*,),s1/s2,s1=,“,Good moring.,”,write(*,*)ichar(,“,A,”,),char(65),s2=,“,Have a nice day.,”,write(*,*)len(s1),len_trim(s1),substring=,“,nice,”,write(*,*)s1(2,:,5),a=,(,1.0,,,1.0,),!a=1+1i s1,(,6,:,6,),=,”,!,”,b=,(,1.0,,,2.0,),!b=1+2i write,(*,*,),s1,Write(*,*),“,a+b=,”,a+b,“,a-b=,”,a-b stop,Write(*,*),“,a*b=,”,a*b,“,a/b=,”,a/b,end,Write(*,*)s1,PROGRAM,是主程序的开始语句,它的一般形式为,PROGRAM,程序名,74,a+b=(2.000000,3.000000)a-b=(0.000000E+00,-1.000000),a*b=(-1.000000,3.000000)a/b=(0.6000000,-0.2000000),Good morning.,Good evening.,8,Good evening.Have a nice day.,65 A,20 12,ood,Good!evening.,75,例,2,编写程序,从键盘输入,5,个整数和,5,个实数,分别求出它们的最大值。,program ex102,implicit none,integer k1,k2,k3,k4,k5,IMAX,real r1,r2,r3,r4,r5,RMAX,print*,“,Please input five integer numbers:,”,read,(*,*,),k1,k2,k3,k4,k5,print*,“,Please input five real numbers:,”,read,(*,*,),r1,r2,r3,r4,r5,IMAX=max,(,k1,k2,k3,k4,k5,),RMAX=max,(,r1,r2,r3,r4,r5,),Print*,“,IMAX=,”,IMAX,“,RMAX=,”,RMAX,end,76,例,3,编写程序,输入,a,和,的值,计算,的值,并输出结果。其中,为度数。程序如下:,program ex103,implicit none,real m,n,alfa,a,t,read,(*,*,),a,alfa,t=alfa*3.14159/180.0,m=a*(a+sin(t),n=a*(1.0+cos(t),write(*,*)”m=”,m,”n=”,n,stop,end,77,例,4,输入以秒为单位的时间,将其换算为几日几时几分几秒。,分析:将秒数除以,60,,商为分钟,余数为秒;再用分钟除以,60,,商,为小时,余数为分钟;再用小时除以,24,,商为日数,余数为小时。,并用,d,、,h,、,m,、,s,分别表示日、时、分、秒。,程序如下:,program ex104,impl
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服