资源描述:
《计算物理课件 第二章 Fortran程序设计初步.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二章Fortran程序设计初步1.Fortran程序简例1.1编程实例1.2Fortran程序的特点2.Fortran程序的基本组成2.1字符集2.2程序组成3.数学运算3.1常量和变量类型3.2内在函数3.3算术表达式2《计算物理导论》课多媒体课件2.1Fortran程序简例程序实例基本语句程序特点[例1.1]输入两个数,求算数平均和几何平均值。Fortran77/90程序第一章Fortran程序设计初步程序示例比较洛阳师范学院物理系C------求两种平均値----PROGRAMExample_1_1REALa,b,av1,av2RE
2、AD(*,*)a,bav1=(a+b)/2av2=sqrt(a*b)WRITE(*,*)av1,av2ENDPROGRAMExample_1_1!求平均REAL::a,b,av1,av2READ*,a,bav1=(a+b)/2;av2=(a*b)**0.5PRINT*,av1,av2END第一章Fortran程序设计初步程序説明:程序中第1行是注释行,对程序起说明作用。F77注释行是以“C”或“!”作为该行第一个字符的,F90可在任意一行末以“!”开始作为注释符。第2行是主程序名,第3行是变量类型定义,第4行是输入语句,第5-6行是赋值部分
3、,第7行是打印输出语句,最后是程序结束。注意F77的固定书写格式和F90的自由格式。F90中用“;”将两行并为一行。洛阳师范学院物理系第一章Fortran程序设计初步固定格式示例!求一元二次方程两个实根PROGRAMquadraticREALa,b,c,d,x1,x2READ*,a,b,c输入系数d=b*b–4*a*c算判别式100IF(d>=0)THENx1=(–b+SQRT(d))/(2*a)x2=(–b–SQRT(d))&/(2*a)PRINT*,'x1=',x1PRINT*,'x2=',x2ELSEPRINT*,'该方程有复数根。'
4、ENDIFEND程序结束标号区(1-5列)语句区(7-72列)注释区(73-80列)续行区(6列)洛阳师范学院物理系第一章Fortran程序设计初步标号区:第l—5列可以写l至5位整数。也可以没有标号。标号区中的空格不起作用。如lOO与100或100作用相同。标号应是无符号整数(无正负号或小数点)。标号大小顺序没有任何要求。假如第二行的标号为1000,第三行的标号可以是10,也可以是99999。标号区内不得出现标号以外的内容,但注释行例外。注释行的内容可以写在标号区内,一行中第一列为C或*的,该行即被认为注释行,编译时对该行内容不作翻译,对
5、程序运行不产生任何影响。如果在第一列上出现的不是数字、空格或C和*的字符,编译时按出错处理。续行区:第6列如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。注意在某些系统中,这个字符可以不限于上面所列的,如@}]~等字符均可使用。F77允许一个语句有19个续行(即一个语句最多可以写成20行)。有的程序中第6列上用“l”,“2”,…表示该行是第1个或第2个续行,但用数字字符容易与第7列的数字形成连续的数字串而引起错觉,故最好使用固定的特殊字符。洛阳师范学院物理系第一章Fortran程序设计初步语句区:第7—72列不要求一
6、定从第7列开始写语句,可以从第7列以后(72列以前)的任何一列开始写,但一行只能写一个语句。如果写满了72列,一旦在终端上修改程序时在该行又插入了一些字符,就会使本行最后几个字符超出语句区而引起意料不到的错误。特别注意到语句最后的空格将可能溢出72列,在某些计算机系统上将导致难以查出的错误。应注意,引号内的字符串中所包括的空格是有效的,不能忽略。注释区:第73—80列在卡片输入法时代,程序员一般利用此8列为程序行编序号以便查找。注释区只对程序员提供辨别信息,不是语句的一部分,在编译时不对72—80列作处理。洛阳师范学院物理系第一章Fortr
7、an程序设计初步自由格式示例!求一元二次方程两个实根PROGRAMquadraticREALa,b,c,d,x1,x2READ*,a,b,c!输入系数d=b*b–4*a*c!计算判别式IF(d>=0)THENx1=(–b+SQRT(d))/(2*a);x2=(–b–SQRT(d))/(2*a)PRINT*,'x1=',x1PRINT*,'x2=',x2ELSEPRINT*,'该方程有复数根。'ENDIFEND!程序结束洛阳师范学院物理系第一章Fortran程序设计初步行:一行为132列。可以有复数条程序语句,语句间用分号“;”分开。语句没有
8、位置规定。注释行:起始用注释符“!”号,此行其后的所有字符均作为注释(字符串中的!号除外,如print*,’help!!!!’)。续行:当一个语句非常长以至于132列都书写不下时