首页 Fortran语言教学

Fortran语言教学

举报
开通vip

Fortran语言教学nullFortran语言 (Fortran77结构化程序设计)Fortran语言 (Fortran77结构化程序设计)普通高校计算机基础教学系列课程null 说明 第一章 算法(略) 第二章 计算机和计算机程序(略)第三章 Fortran语言程序设计初步第三章 Fortran语言程序设计初步 3.1 Fortran语言的发展概况 3.1 Fortran语言的发展概况 FORmula TRANslator 公式翻译器 Fortran语言是一种适合于科学和工程计算问题的程序设计语言;也是计算机高...

Fortran语言教学
nullFortran语言 (Fortran77结构化程序设计)Fortran语言 (Fortran77结构化程序设计)普通高校计算机基础教学系列课程null 说明 第一章 算法(略) 第二章 计算机和计算机程序(略)第三章 Fortran语言程序设计初步第三章 Fortran语言程序设计初步 3.1 Fortran语言的发展概况 3.1 Fortran语言的发展概况 FORmula TRANslator 公式翻译器 Fortran语言是一种适合于科学和 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 计算问题的程序设计语言;也是计算机高级语言发展史上使用最早的一种程序设计语言。3.1 Fortran语言的发展概况3.1 Fortran语言的发展概况 Fortran语言的发展过程: 1951年由约翰·贝克斯等人开始研究Fortran语言; 1957年第一个Fortran程序在IBM704机上运行; 1958和1962年先后推出FortranⅡ和FortranⅣ; 1966和1978年先后颁布Fortran66和Fortran77; 1991年颁布了Fortran90。 现在已经有了Fortran 95, Fortran 2003Fortran语言的特征Fortran语言的特征Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。 易学,语法严谨。 可以直接对矩阵和复数进行运算。 自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。 很多专用的大型数值运算计算机针对Fortran做了优化。 广泛地应用于并行计算和高性能计算领域。 Fortran 90,Fortran 95,Fortran 2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。3.2 简单的Fortran程序分析3.2 简单的Fortran程序分析 例1:求一元二次方程x2+3x-5.6=0的根,并打印结果。 利用公式: (这里,a=1,b=3,c=-5.6)3.2 简单的Fortran程序分析3.2 简单的Fortran程序分析 编程如下: c the roots of the quadratic equation a=1.0 b=3.0 c=-5.6 x1=(-b+sqrt(b*b-4.0*a*c))/(2.0*a) x2=(-b-sqrt(b*b-4.0*a*c))/(2.0*a) write(*,100)x1,x2 100 format(1x,'x1=',f6.2,'x2=',f6.2) end 3.2 简单的Fortran程序分析3.2 简单的Fortran程序分析执行结果: x1= 1.30 x2=-4.30 例2:试求3!,6!,9!的值。 编程如下:3.2 简单的Fortran程序分析3.2 简单的Fortran程序分析主程序: 子程序: c main program c subprogram j=k(3) function k(n) l=k(6) k=1 m=k(9) i=2 write(*,*)j,l,m 5 if (i.le.n) then end k=k*i i=i+1 执行结果: goto 5 6 720 362880 endif return end3.2 简单的Fortran程序分析3.2 简单的Fortran程序分析 Fortran程序的基本结构: ⑴一个Fortran源程序由一个或多个程序单位组成,每个程序单位以“end”语句结束。 ⑵每个程序单位包括若干行 语句行(执行语句和非执行语句行) 非语句行(注释行) ⑶语句前可不设标号,也可根据需要设标号。 ⑷各类语句在程序单位中的位置有一定 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 。 ⑸程序必须按规定格式书写。3.3 Fortran源程序的书写格式3.3 Fortran源程序的书写格式 Fortran77源程序必须按以下格式书写: ⑴每行只能在80列内书写,并把80列分为4个区。 ⑵1~5列:标号区 ( 1~5 位无符号整数;第1列为“*”或“c”时,为注释行) ⑶第6列:续行标志区 (非空格或非零字符;最多19个续行) ⑷7~72列:语句区 (书写语句;一行只能写一条语句) ⑸73~80列:语句注释区 (一般作编号注释)3.4 Fortran程序的编辑与运行3.4 Fortran程序的编辑与运行Fortran PowerStation 4.0集成开发环境 简 介3.4 Fortran程序的编辑与运行3.4 Fortran程序的编辑与运行一、Fortran PowerStation 4.0的启动 选“开始”→“程序”→“Fortran PowerStation 4.0”→“Microsoft Developer Studio”。 二、创建项目工作间 选“File”→“New”→“Project Workspace”→“Console Application”,并输入项目工作间名称(如:aaa)和存放项目工作间的位置或路径(如:c:\for\) → Create。3.4 Fortran程序的编辑与运行3.4 Fortran程序的编辑与运行三、给项目工作间添加和编辑文件 打开指定的项目工作间→选 “Insert”→ “File into Project”→输入要添加的文件名(如:st01.for)→“Add”。然后按Fortran程序的书写规则编辑程序。 四、编译项目工作间中的文件 打开指定的文件→选 “Build”→ “Compile st01.for”。 五、连编项目文件 选 “Build”→ “Build aaa.exe”。 六、运行项目文件 选 “Build”→ “Execute aaa.exe”。(显示程序执行结果)3.4 Fortran程序的编辑与运行3.4 Fortran程序的编辑与运行注:若Fortran程序是由一个主程序文件和若干个子程序文件组成,则应将各文件添加到同一项目工作间,分别进行编译,然后连编和运行项目文件。 七、打开项目文件 选“File”→“Open”→在打开对话框文件类型下拉列表中选“Project Workspace(*.mdp)”→然后选项目工作间文件夹中的项目文件。3.5 常 量 3.5 常 量 常量——在程序执行期间其值固定不变的量。 Fortran处理六种类型的常量: ⑴整型常量(Integer) ⑵实型常量(Real) ⑶双精度常量(Double precision) ⑷复型常量(Complex) ⑸逻辑型常量(Logical) ⑹字符型常量(Character)3.5 常 量3.5 常 量3.5.1 整型常量 包括正、负整数和零。 例:5,-13,0,… 说明: ①在(16位)微机中,整数的取值范围为: -215~215-1(-32768~32767) ②在(32位)微机中,整数的取值范围为: -231~231-1(-2147483648~2147483647 )3.5 常 量3.5 常 量3.5.2 实型常量 (有二种表示形式) ⒈小数形式 例:15.8,-21.05,14.0 ,14.,.17,0.0 ,… ⒉指数形式(通常表示较大或较小的数) 例:100000000→1.0E+8 0.0000125→1.25E-05 数字部分 指数部分3.5 常 量3.5 常 量说明: ⑴一个数值用指数形式表示时有两种表达方式: ①一个基本实数后面跟指数部分。 例: 0.876→8.76E-1 -2589.4→-2.5894E+3 ②一个整数后面跟指数部分。 例: 0.876→876E-3 -2589.4→-25894E-13.5 常 量3.5 常 量⑵同一个数值可用不同的指数形式表示。 例: 0.876→8.76E-1→87.6E-2→876E-3 ⑶计算机在输出时,按标准化指数形式输出。 例:0.28→2.800000E-01 -59.58E+12→-5.958000E+13 即数字部分大于1,且小数点前只有一位非零数字的指数输出形式。 ⑷在微机中,一般用四个字节存放一个实数,其取值范围为:10-75~1075。超出此范围时为“溢出”错误。3.5 常 量3.5 常 量⑸下列形式为不合法的指数形式: ①单独的小数点和单独的指数部分。 例:.E5, E10 × ②指数部分只能是整数,不能带小数点。 例:8E0.5, 12.3E1.5 ×3.6 变 量3.6 变 量变量——在程序执行期间其值可以改变的量。 3.6.1 变量的概念 Fortran为每一个变量分配一个相应的存储单元;每个变量在每个时刻只能有一个确定的值。 例:x=4.5 x x=8.0 x 注:在程序中用到的变量都必须要有确定的值。4.58.03.6 变 量3.6 变 量3.6.2 变量名 变量名——标识一个变量所用的名字。 命名规则: 变量名的第一个字符必须是字母; 在第一个字符后可跟1~5个字母或数字。 例: x,m1,total,k123,… 3.6 变 量3.6 变 量注意几点: ⑴变量名不区分大小写字母。 例:TOTAL,Total,total 代表同一变量 ⑵变量名中的空格不起作用。 例:abc,a bc,ab c,a b c 代表同一变量 ⑶变量名尽量做到“见名知义” AVER、SUM、Imax ⑷允许变量名与语言中具有特定含义的字(“保留字”)同名。 例:sin,read,open,end,… 建议不要使用fortran中具有特定含义的字作变量名3.6 变 量3.6 变 量3.6.3 变量的类型 Fortran能处理各种类型的变量。不同类型的变量用来存放不同类型的数据。 变量类型的说明(三种方式) ⒈隐含说明 即以I、j、k、l、m、n开头的变量为整型变量,以其它字母开头的变量为实型变量。(“I~N规则”) 例:imax,m5,number,… 为整型变量 v,h2,aver,… 为实型变量3.6 变 量3.6 变 量⒉显式说明 即用类型说明语句指定变量的类型。 如: Integer——说明变量为整型变量 Real——说明变量为实型变量 Double precision——说明变量为双精度变量 Complex——说明变量为复型变量 Logical——说明变量为逻辑型变量 Character——说明变量为字符型变量3.6 变 量3.6 变 量如: Integer abc,xyz real imax,k3 logical a1,kpz ⒊用implicit语句说明 即说明用某一字母开头的变量为指定的类型。 例: implicit integer(a,b),real(k) implicit integer(x-z)3.6 变 量3.6 变 量三种类型说明的优先级: 高 类型说明语句(显式说明) implicit语句说明 低 “I~N规则”3.7 Fortran内部函数3.7 Fortran内部函数 在编制Fortran程序时,经常要用到一些基本的数学函数,如三角函数、指数函数、对数函数等。为方便用户,Fortran编译系统已提供了这些函数的计算程序,需要时即可调用。 Fortran内部函数调用格式: 函数名(自变量)3.7 Fortran内部函数3.7 Fortran内部函数如: sin(90*3.14159/180) →1.0 sqrt(9.0) →3.0 abs(-5.6) →5.6 int(6.75) →6 exp(3.0) →20.085540 Fortran77全部内部函数见附录Ⅵ3.7 Fortran内部函数3.7 Fortran内部函数注意几点: ⑴函数自变量(参数)必须用括号括起来。 例:sinx+cosx → sin(x)+cos(x) ⑵函数自变量可以是常量、变量或表达式。 例: exp(3.0) sin (x+cos(x)) ⑶有些函数的类型是由自变量的类型确定的。 例:mod(8.0,3.0) →2.0 mod(8,3) →2 ⑷三角函数的角度单位是“弧度”而不是“度”。 ⑸函数名分为“通用名”和“专用名” 内部函数名一般用“通用名”。3.8 Fortran算术表达式3.8 Fortran算术表达式Fortran77提供了四种表达式: 算术表达式 关系表达式 逻辑表达式 字符表达式 算术表达式——将各运算元素(常量、变量、函数和数组等)用算术运算符连接起来的一个有值的式子。3.8 Fortran算术表达式3.8 Fortran算术表达式一、算术运算符及其优先级 ⒈算术运算符(五种) 加(+) 减(-) 乘(*) 除(/) 乘方(**) ⒉算术运算符的优先级 括号→函数→乘方→乘、除→加、减 注:同级运算“先左后右”,连续乘方时“先右后左”。3.8 Fortran算术表达式3.8 Fortran算术表达式例: 3+5-6.0*8.5/4**2+sin(x) →3+5-6.0×8.5÷42+sinx x**y**z、x**(y**z) →xyz (x**y)**z →(xy)z 有了算术表达式概念之后,我们就可以将: 数学运算式→Fortran算术表达式3.8 Fortran算术表达式3.8 Fortran算术表达式二、算术表达式书写规则 ⑴表达式中的各运算元素之间必须用运算符分隔。 例:xyz→x*y*z 2(x+y) → 2*(x+y) ⑵作任何运算的表达式只能写在一行。 例: →(a+b)/(c+d) a+b/c+d ×3.8 Fortran算术表达式3.8 Fortran算术表达式⑶两个运算符不能紧邻。 例: →a/(-b)→-a/b →a/-b ⑷表达式一律用小括号。 例: a[x+b(y+c)] → a*(x+b*(y+c))3.8 Fortran算术表达式3.8 Fortran算术表达式三、表达式求值中的类型问题 ⑴同类型量运算的结果,仍为原类型。 例:4*5=20,4.0*5.0=20.0 6.0/4.0=1.5,6/4=1(≠1.5) ⑵不同类型量运算时,先将低级类型(整型)转换为高级类型(实型),然后再按同类型量进行运算。 例:2.5*4=10.0( ≠10) 2.0**3=2.0*2.0*2.0=8.0(属同类量运算) 3.8 Fortran算术表达式3.8 Fortran算术表达式四、运算中的误差问题 ⑴整数量运算没有误差 ⑵实型量由于有效位数的限制,运算时会出现误差 例1:(1.0/3.0)*3.0=0.9999999 (≠1.0) ∵ 1.0/3.0=0.3333333 例2: X=1E30 Y=-1E30 Z=1.0 (X+Y)+Z=? X+(Y+Z)=?3.9 赋值语句3.9 赋值语句Fortran提供三类赋值语句: 算术赋值语句 逻辑赋值语句 字符赋值语句 一、算术赋值语句一般格式 V=e 功能:把赋值号右边表达式的值,赋给赋值号左边的变量或数组元素。 例: S=3.14159*r**23.9 赋值语句3.9 赋值语句二、算术赋值语句中的类型转换问题 ⑴赋值号两边类型一致时,直接赋值。 例: k=355 ⑵赋值号两边类型不一致时,先计算,再转换,最后赋值。 例:y1=6*2 (y1的值为12.0) Imax=3.6*2 (imax的值为7(7.2→7))3.9 赋值语句3.9 赋值语句注意几点: ⑴赋值号左边只能是变量或数组元素,不能为带运算符的表达式。 例:3*a=6*x+sin(x)× ⑵一个赋值语句只能给一个变量或数组元素赋值。 例:a=b=c=d=3.5 × ⑶一个赋值语句执行后,赋值号左边变量的原值被右边表达式的值取代。 例:x=1.0 x=x+1.0 (x的值为2.0)3.10 简单的输出语句3.10 简单的输出语句用户编制的程序必须要有输出语句,把结果显示或打印出来。 Fortran提供了三种输出方式: ①表控格式输出(标准或固定格式输出) ②指定格式输出 ③无格式输出(二进制形式,适应磁盘文件) 一、表控格式输出 按Fortran编译系统隐含规定的格式输出。(即系统根据输出数据的不同类型,自动给出相应的输出格式。)3.10 简单的输出语句3.10 简单的输出语句二、表控格式输出语句 一般格式: print ﹡,〈输出表列〉 write (﹡,﹡)〈输出表列〉 例1: print ﹡,56.8,125 或 write (﹡,﹡) 56.8,125 例2: print ﹡,a, b, c 或 write (﹡,﹡) a, b, c3.10 简单的输出语句3.10 简单的输出语句例3: x=12.5 y=90.5 z=x+y print *, x, y print *, 'z=', z end 运行结果: 12.500000 90.500000 Z= 103.0000003.10 简单的输出语句3.10 简单的输出语句⒈整数的表控格式输出 规定:每个整数占12列,数据打印在右端,左补空格。 例:print *,123,-1128 输出结果: ︺︺︺︺︺︺︺︺123︺︺︺︺︺︺︺-11283.10 简单的输出语句3.10 简单的输出语句⒉实数的表控格式输出 规定:每个实数占16列,数据打印在右端,左补空格。 例:print *,15.4,-321.45 输出结果: ︺︺︺︺︺︺15.400000︺︺︺︺︺-321.4500003.10 简单的输出语句3.10 简单的输出语句当实数值的绝对值≥107或<1时,按标准的指数形式输出。 例:print *,-10000000.,0.98 输出结果: ︺︺-1.000000E+07︺︺︺︺9.800000E-013.11 简单的输入语句3.11 简单的输入语句Fortran提供了三种输入方式: ①表控格式输入(自由格式输入) ②指定格式输入 ③无格式输入 一、表控格式输入 表控格式输入——根据变量的数据类型输入相应的数据形式,数据间以逗号或空格分隔的输入方式。3.11 简单的输入语句3.11 简单的输入语句二、表控格式输入语句 一般格式: read ﹡,〈输入表列〉 read (﹡,﹡)〈输入表列〉 例1: read ﹡,a, b (若a=14.7, b=30.0) 键盘输入: 14.7,30.0↙3.11 简单的输入语句3.11 简单的输入语句例2: read ﹡,x,k (若x=4.5,k=200) 键盘输入: 4.5,200↙ 例3: read ﹡,x,y,z (若x=1.5,y=2.5,z=3.5) read ﹡,i,j (若i=5,j=10) 键盘输入: 1.5,2.5,3.5↙ 5,10↙ 3.11 简单的输入语句3.11 简单的输入语句注意几点: ⑴输入数据的个数不得少于read语句中变量的个数,但多余的数据也不起作用。 例: read ﹡,x,y,z (若x=1.5,y=2.5,z=3.5) 键盘输入: ① 1.5,2.5,3.5↙ ② 1.5,2.5,3.5,5.2,6.0↙(最后两个数被忽略) ③ 1.5,2.5↙(计算机将等待用户继续输入数据) 3.11 简单的输入语句3.11 简单的输入语句注意几点: ⑵一个read语句可以分多行输入,但每一个read语句必须从新的一行输入。 例: read ﹡,x,y,z (若x=1.5,y=2.5,z=3.5) read ﹡,i,j (若i=5,j=10) 键盘输入: 1.5↙ 2.5↙ 3.5↙ 5,10↙ 若键盘输入: 1.5,2.5,3.5,5,10↙ (错)3.11 简单的输入语句3.11 简单的输入语句⑶在输入数据时若出现“/”,则终止对此read语句的输入。 例: read ﹡,x,y,z 键盘输入: 1.5,2.5/↙ (变量z的值为原值或为零。)3.12 参数语句(parameter语句)3.12 参数语句(parameter语句)一、parameter语句的功能 为常量命名,即用一个符号代表一个常量。 二、parameter语句一般形式 Parameter(p1=c1[,p2=c2,…,pn=cn]) 其中: pn——符号常量; cn——常量。 3.12 参数语句(parameter语句)3.12 参数语句(parameter语句)例:求半径为0.5m的圆面积和圆周长。 编程如下: parameter (r=0.5,pi=3.14159) s=pi*r**2 h=2.0*pi*r print*,s,h end3.12 参数语句(parameter语句)3.12 参数语句(parameter语句)注意几点: ⑴参数语句必须写在所有可执行语句之前; ⑵符号常量的命名规则及类型与变量相同,并遵循“I~N规则”; ⑶程序中不能给符号常量再赋值。3.13 pause语句, stop语句, end语句3.13 pause语句, stop语句, end语句一、pause语句 ⒈一般形式 Pause [n] 注:n为1~5位正整数或字符常量。 ⒉功能 暂停程序的执行。 (一个程序单位可以有多个pause语句)3.13 pause语句, stop语句, end语句3.13 pause语句, stop语句, end语句例: parameter (r=0.5,pi=3.14159) s=pi*r**2 h=2.0*pi*r pause '打印面积和周长' print*,s,h end3.13 pause语句, stop语句, end语句3.13 pause语句, stop语句, end语句二、stop语句 ⒈一般形式 stop [n] 注:n为1~5位正整数或字符常量。 ⒉功能 终止程序的执行。 (一个程序单位可以有多个stop语句)3.13 pause语句, stop语句, end语句3.13 pause语句, stop语句, end语句三、end语句 ⒈一般形式 end ⒉功能 对主程序:终止程序的执行和作为程序单位的结束标志; 对子程序:返回调用程序和作为程序单位的结束标志。 (一个程序单位只能有一个end语句)课后练习题课后练习题 P75~76:第五、八、十一题 第四章 逻辑运算和选择结构第四章 逻辑运算和选择结构 程序设计的基本方法程序设计的基本方法计算机程序 计算机解决问题所需要的一系列代码化指令序列——计算机程序。 程序=数据结构+算法 即“程序就是在数据的某些特定的表示方式和结构的基础上,对抽象算法的具体描述。” 上述公式可扩充为: 程序=数据结构+算法+程序设计方法+语言工具程序设计的基本方法程序设计的基本方法所谓面向过程的程序设计,是指利用面向过程的语言工具(如Basic、Pascal、Fortran和C等)进行程序开发的各项活动。面向过程的程序设计优点:编程简单、结构性强、可读性好,程序执行时序特征明显;遵循这种结构的程序只有一个入口和一个出口。 缺点:存在数据与程序模块的分离和程序的可重用性差等问题。程序设计的基本方法程序设计的基本方法结构化程序设计方法:结构化编码 在结构化程序设计中,任何复杂的算法,都可以由三种基本结构组成。 在构造算法时,也仅以三种基本结构作为基本单元。 遵循这种结构的程序只有一个输入口和一个输出口。模块化设计 将一个复杂问题的程序分为若干个程序模块,每个模块完成一项特定功能;其中有一个主模块和若干个子模块,主模块控制各个子模块来实现整个程序的功能。自顶向下,逐步细化 程序设计的基本方法程序设计的基本方法面向对象的程序设计是一种新的程序设计范型。它将一些新的理念和结构化程序设计中好的思想相融合,提供了一种全新的程序设计方法。面向对象的程序设计4.1 算法及其表示方法4.1 算法及其表示方法一、算法的概念 算法——解决某一问题所采取的方法和步骤。 计算机算法——计算机能够执行的算法。 计算机算法的特征: ⑴有穷性——操作步骤是有限的。 ⑵确定性——方法步骤是明确的。 ⑶有效性——方法是正确的,步骤是完整的。 ⑷必须有输入和输出。(取得必要的信息,给出正确的结果。)4.1 算法及其表示方法4.1 算法及其表示方法 Fortran是结构化程序设计语言,每个程序单位可由三种基本结构组成: ⑴顺序结构 ⑵分支选择结构 ⑶循环结构 实践证明,任何复杂的问题都可以用这三种基本结构来描述。4.1 算法及其表示方法4.1 算法及其表示方法二、算法的表示 用N~S流程图表示。(由几种功能框组合而成) ⑴矩形框——用于表示顺序结构。 如:若先执行语句A,再执行语句B。 AB4.1 算法及其表示方法4.1 算法及其表示方法例:若a=1.5,b=4.5,求a+b的平方。 ①画N~S图: ②编程: A=1.5 B=4.5 C=(a+b)**2 Print *, c end1.5→a4.5→b(a+b)2→c打印 c结束4.1 算法及其表示方法4.1 算法及其表示方法⑵三角框——用于表示分支选择结构。 如:若P为条件,当P成立执行语句A,否则执行语句B。4.1 算法及其表示方法4.1 算法及其表示方法⑶L形框——用于表示循环结构。 ①当型循环(P为条件,A循环体) 如:若条件P成立,则执行循环体A,否则跳出循环体。4.1 算法及其表示方法4.1 算法及其表示方法 ②直到型循环(P为条件,A循环体) 如:首先执行循环体A,若条件P不成立继续执行循环体A,直到条件P成立为止。 4.2 关系表达式4.2 关系表达式 关系表达式是构成选择结构判断条件的基本式子。它也是一种最简单的逻辑表达式。 一、关系运算符(P80 表4-1) .gt. (大于) .ge. (大于等于) .eq. (等于) .lt. (小于) .le. (小于等于) .ne. (不等于)4.2 关系表达式4.2 关系表达式二、关系表达式的一般形式 〈算术量〉〈关系运算符〉〈算术量〉 即: ⑴关系表达式是由关系运算符将两个算术量连接起来的式子。 ⑵关系表达式的运算元素是算术量,结果是逻辑量:真(.True.)或假(.False.)。4.2 关系表达式4.2 关系表达式有了关系表达式,我们就可以将: 数学关系式─→ Fortran关系表达式 例: x+y>15.4 ─→ x+y.gt.15.4 a+b≠a-b ─→ a+b.ne.a-b ex≥2.17 ─→ exp(x).ge.2.17 4.2 关系表达式4.2 关系表达式注意: ⑴算术运算优先于关系运算。 如:a+b.ne.a-b等同于(a+b).ne.(a-b) ⑵实数运算误差对关系表达式的影响 如:1.0/3.0*3.0.EQ.1.0 值为.false. 1.0/3.0*3.0=0.9999999 ∴ 对于 a.eq.b → abs(a-b).lt.1E-6 c.ne.d → abs(c-d).gt.1E-64.3 逻辑表达式4.3 逻辑表达式关系表达式只能表达简单的关系,如: 5≤x≤10 就不能用关系表达式表达,此时要用逻辑表达式。4.3 逻辑表达式4.3 逻辑表达式一、逻辑表达式的一般形式 〈逻辑量〉〈逻辑运算符〉〈逻辑量〉 即: ⑴逻辑表达式是由逻辑运算符将两个逻辑量连接起来的式子。 ⑵逻辑表达式的运算元素是逻辑量,结果也是逻辑量:真(.True.)或假(.False.)。 逻辑量包括逻辑常量、逻辑变量和关系表达式。4.3 逻辑表达式4.3 逻辑表达式二、逻辑常量 两个:①.true.(真)②.false.(假) 三、逻辑变量 ——用于存放逻辑常量的变量。 逻辑变量可以通过赋值语句来接受逻辑常量的值,但在使用前,要进行类型说明。 例: logical a, b a=.true. b=.false.4.3 逻辑表达式4.3 逻辑表达式四、逻辑运算符 .and. (逻辑与) .or. (逻辑或) .not. (逻辑非) .eqv. (逻辑等(同或)) .neqv.(逻辑不等(异或))4.3 逻辑表达式4.3 逻辑表达式五、逻辑运算符的运算规则(P83 表4.3) 若a,b为两个逻辑量,则: a.and.b——(当a、b同时为真时,为真。) a.or.b ——(当a、b中任意一个为真或同时为真时,为真。) .not.a ——(当a为真,其值为假;当a为假,其值真。) a.eqv.b——(当a、b为同一逻辑常量时,为真。) a.neqv.b——(当a、b不为同一逻辑常量时,为真。)4.3 逻辑表达式4.3 逻辑表达式六、逻辑表达式的运算次序(P84 表4.5) 运算次序为: 括号→算术运算→关系运算→逻辑运算 而逻辑运算: .not.→.and.→.or.→.eqv.,.neqv.4.3 逻辑表达式4.3 逻辑表达式例1:写出下列条件的逻辑表达式。 ⑴5≤k≤10 k.ge.5.and.k.le.10 ⑵│f│≤3g或│f│=5t abs(f).le.3*g.or.abs(f).eq.5*t ⑶1≤a≤8并且1≤b≤8 (a.ge.1.and.a.le.8).and.(b.ge.1.and.b.le.8) 4.3 逻辑表达式4.3 逻辑表达式例2:若a=2.5,b=7.5,c=5.0,d=6.0,求下列逻辑表达式的值。 ⑴(a.lt.b).and.(b.lt.c) ①t ②f ③f 4.3 逻辑表达式4.3 逻辑表达式例2:若a=2.5,b=7.5,c=5.0,d=6.0,求下列逻辑表达式的值。 ⑵c/2.0+d.lt.a.and..not..true..or.c.le.d ①8.5 ④F ③T ②F . ⑤F . ⑥T4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构有以下三种典型的块if选择结构: ⑴ if (条件) then (块if语句) 块 (then块) endif (endif语句)4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构⑵ if (条件) then 块1 (then块) else 块2 (else块) endif 4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构例: 2X+3 (X≤2) Y= X+5 (X>2) 编程如下: read(*,*) x if (x.le.2) then y=2*x+3 else y=x+5 endif write(*,*)’x=’,x,’y=’,y end4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构⑶ if (条件1) then 块1 else if (条件2) then 块2 (else if块) ┆ else if (条件n) then 块n [else 块(n+1)] endif 4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构说明: ⑴每个块if中可以完整地包含一个(或多个)块if结构,即构成块if 的嵌套结构。如: if (条件1) then if (条件1) then 块1 if (条件2) then else 块2 if (条件2) then endif 块2 else endif 块1 endif endif 4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构⑵一个块if 语句必须和一个endif语句相对应。 ⑶块if 中的“then块”、“else块”和“else if块”可为空块。 4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构 例1:求一元二次方程ax2+bx+c=0的根。 (当b2-4ac≥0时有两个实根,b2-4ac<0时有两个复根。) 4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构 print*,’input a,b,c:’ read*,a,b,c f=-b/(2.0*a) d=b**2-4.0*a*c g=sqrt(-d)/(2.0*a) if (d.ge.0.0) then print*,'x1=',f,'+i',g e=sqrt(d) print*,'x2=',f,'-i',g x1=(-b+e)/(2.0*a) endif x2=(-b-e)/(2.0*a) end print*,'x1=',x1 print*,'x2=',x2 else4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构例2:求下列函数值。 0 (x<-10) 2x+20 (-10≤x<0) y= 20 (0≤x<20) 30-0.5x (20≤x<40) 50-x (40≤x<50) 0 (x≥50)4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构 输入xtrue x<-10 falsetrue x<0 falsetrue x<20 falsetrue x<40 falsetrue x<50 false y=50-x y=0打印yy=0y=20y=30-0.5xy=2x+204.4 用块 if 实现选择结构4.4 用块 if 实现选择结构源程序一: read*,x if (x.lt.50.0) then if (x.lt.-10.0) then y=50.0-x y=0.0 else else y=0.0 if (x.lt.0.0) then endif y=2.0*x+20.0 endif else endif if (x.lt.20.0) then endif y=20.0 endif else print*,’y=‘,y if (x.lt.40.0) then end y=30.0-0.5*x else4.4 用块 if 实现选择结构4.4 用块 if 实现选择结构源程序二: read*,x print*,’y=‘,y if (x.lt.-10.0) then end y=0.0 else if (x.lt.0.0) then y=2.0*x+20.0 else if (x.lt.20.0) then y=20.0 else if (x.lt.40.0) then y=30.0-0.5*x else if (x.lt.50.0) then y=50.0-x else y=0.0 endif4.5 逻辑 if 语句4.5 逻辑 if 语句 逻辑if语句也是一种选择结构,但与块if 不同,主要表现在: ①只用一行表示一个选择结构; ②仅当条件成立时执行,并且只执行一条语句。 逻辑if语句的一般形式: If〈条件〉语句 例:if (n.le.100) n=n+14.5 逻辑 if 语句4.5 逻辑 if 语句例: 2X+3 (X≤2) Y= X+5 (X>2) 编程如下: read(*,*) x read(*,*)x if (x.le.2) then if(x.le.2) y=2*x+3 y=2*x+3 if(x.gt.2) y=x+5 else write(*,*)’y=’,y y=x+5 end endif write(*,*)’y=’,y end课后练习题课后练习题P96: 第一~三题;第四、五、七题 第五章 循环结构的实现第五章 循环结构的实现 第五章 循环结构的实现第五章 循环结构的实现 所谓循环,是指在程序执行过程中需要重复执行的程序段。 在实际问题中,我们经常遇到循环,如: 求 ∑n,n!,… 无条件循环 GOTO 循环结构 直到型循环 条件循环 当型循环 计数型循环5.1 用goto语句实现循环5.1 用goto语句实现循环goto语句的一般形式: goto 其中:s1——语句标号。 功能:程序执行到此语句时,无条件的转向标号为s1的语句去执行。例:求1~10的累加和。 编写程序段: integer x,sum x=0.0 sum=0.0 10 x=x+1 sum=sum+x goto 105.1 用goto语句实现循环5.1 用goto语句实现循环 如果我们把以上goto语句作为逻辑if语句中的执行语句,则就可以实现有条件的循环。即: integer x,sum 求1~10的累加和 x=0.0 sum=0.0 10 x=x+1 sum=sum+x if(x.lt.10)goto 10 print*,sum end5.2 当型循环的实现5.2 当型循环的实现一、用块if和goto语句实现循环 一般形式: s1 if (条件) then 标号 块 goto s1 endif 所谓当型循环,是指执行循环体要依据事先给定的条件。当条件成立时执行循环,否则就不执行循环。5.2 当型循环的实现5.2 当型循环的实现编程如下: read*,n m=1 i=1 10 if (i.le.n) then m=m*i i=i+1 goto 10 endif print*,m end例:求n!。5.2 当型循环的实现5.2 当型循环的实现 二、用do while语句实现当型循环 一般形式 do s1[,] while (条件) ┆ 循环体 s1 <终端语句>5.2 当型循环的实现5.2 当型循环的实现例:求n!。 编程如下: read*,n m=1 i=1 do 10 while (i.le.n) m=m*i i=i+1 10 continue print*,m end5.3 直到型循环的实现5.3
本文档为【Fortran语言教学】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_343009
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2013-03-04
浏览量:153