Fortran语言学习.ppt

上传人:wuy****n92 文档编号:70725383 上传时间:2023-01-27 格式:PPT 页数:387 大小:1.23MB
返回 下载 相关 举报
Fortran语言学习.ppt_第1页
第1页 / 共387页
Fortran语言学习.ppt_第2页
第2页 / 共387页
点击查看更多>>
资源描述

《Fortran语言学习.ppt》由会员分享,可在线阅读,更多相关《Fortran语言学习.ppt(387页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Fortran语言语言(Fortran77结构化程序设计)结构化程序设计)普通高校计算机基础教学系列课程1/26/20231 说明第一章 算法(略)第二章 计算机和计算机程序(略)1/26/20232第三章第三章 Fortran Fortran语言程序设计初步语言程序设计初步1/26/202333.1Fortran语言的发展概况语言的发展概况 FORmula TRANslator 公式翻译器 Fortran语言是一种适合于科学和工程计算问题的程序设计语言;也是计算机高级语言发展史上使用最早的一种程序设计语言。1/26/202343.1Fortran语言的发展概况语言的发展概况 Fortran语

2、言的发展过程:1951年由约翰贝克斯等人开始研究Fortran语言;1957年第一个Fortran程序在IBM704机上运行;1958和1962年先后推出Fortran和Fortran;1966和1978年先后颁布Fortran66和Fortran77;1991年颁布了Fortran90。现在已经有了Fortran 95,Fortran 20031/26/20235Fortran语言的特征语言的特征Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。易学,语法严谨。可以直接对矩阵和复数进行运算。自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。很

3、多专用的大型数值运算计算机针对Fortran做了优化。广泛地应用于并行计算和高性能计算领域。Fortran 90,Fortran 95,Fortran 2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。1/26/202363.2简单的简单的Fortran程序分析程序分析 例1:求一元二次方程x2+3x-5.6=0的根,并打印结果。利用公式:(这里,a=1,b=3,c=-5.6)1/26/202373.2简单的简单的Fortran程序分析程序分析编程如下:c the roots of the quadratic equation a=1.0 b=3.0 c=-5.6 x1=

4、(-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,x2100 format(1x,x1=,f6.2,x2=,f6.2)end1/26/202383.2简单的简单的Fortran程序分析程序分析执行结果:x1=1.30 x2=-4.30 例例2 2:试求:试求3!3!,6!6!,9!9!的值。的值。编程如下:编程如下:1/26/202393.2简单的简单的Fortran程序分析程序分析主程序:子程序:c main program c subprogram j=k(3)function k(n)l

5、=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 end1/26/2023103.2简单的简单的Fortran程序分析程序分析 Fortran程序的基本结构:一个Fortran源程序由一个或多个程序单位组成,每个程序单位以“end”语句结束。每个程序单位包括若干行语句行(执行语句和非执行语句行)语句行(执行语句和非执行语句行)非语句行(注释行)非语句行(注释行)语句前可不设标号,也可根据需要设标号。各类语句在程序单位中的位置有一定规则。

6、程序必须按规定格式书写。1/26/2023113.3Fortran源程序的书写格式源程序的书写格式 Fortran77源程序必须按以下格式书写:每行只能在80列内书写,并把80列分为4个区。15列:标号区(15 位无符号整数;第1列为“*”或“c”时,为注释行)第6列:续行标志区(非空格或非零字符;最多19个续行)772列:语句区(书写语句;一行只能写一条语句)7380列:语句注释区(一般作编号注释)1/26/2023123.4Fortran程序的编辑与运行程序的编辑与运行Fortran PowerStation 4.0集成开发环境 简 介1/26/2023133.4Fortran程序的编辑与

7、运行程序的编辑与运行一、Fortran PowerStation 4.0的启动 选“开始”“程序”“Fortran PowerStation 4.0”“Microsoft Developer Studio”。二、创建项目工作间 选“File”“New”“Project Workspace”“Console Application”,并输入项目工作间名称(如:aaa)和存放项目工作间的位置或路径(如:c:for)Create。1/26/2023143.4Fortran程序的编辑与运行程序的编辑与运行三、给项目工作间添加和编辑文件 打开指定的项目工作间选“Insert”“File into Pro

8、ject”输入要添加的文件名(如:st01.for)“Add”。然后按Fortran程序的书写规则编辑程序。四、编译项目工作间中的文件 打开指定的文件选“Build”“Compile st01.for”。五、连编项目文件 选“Build”“Build aaa.exe”。六、运行项目文件 选“Build”“Execute aaa.exe”。(显示程序执行结果)1/26/2023153.4Fortran程序的编辑与运行程序的编辑与运行注:若Fortran程序是由一个主程序文件和若干个子程序文件组成,则应将各文件添加到同一项目工作间,分别进行编译,然后连编和运行项目文件。七、打开项目文件 选“Fil

9、e”“Open”在打开对话框文件类型下拉列表中选“Project Workspace(*.mdp)”然后选项目工作间文件夹中的项目文件。1/26/2023163.5常常量量常量在程序执行期间其值固定不变的量。Fortran处理六种类型的常量:整型常量(Integer)实型常量(Real)双精度常量(Double precision)复型常量(Complex)逻辑型常量(Logical)字符型常量(Character)1/26/2023173.5常常量量3.5.1 整型常量 包括正、负整数和零。例:5,-13,0,说明:在(16位)微机中,整数的取值范围为:-215215-1(-32768327

10、67)在(32位)微机中,整数的取值范围为:-231231-1(-21474836482147483647)1/26/2023183.5常常量量3.5.2 实型常量(有二种表示形式)小数形式例:15.8,-21.05,14.0,14.,.17,0.0,指数形式(通常表示较大或较小的数)例:1000000001.0E+8 0.00001251.25E-05 数字部分 指数部分1/26/2023193.5常常量量说明:一个数值用指数形式表示时有两种表达方式:一个基本实数后面跟指数部分。例:0.8768.76E-1 -2589.4-2.5894E+3一个整数后面跟指数部分。例:0.876876E-3

11、 -2589.4-25894E-11/26/2023203.5常常量量同一个数值可用不同的指数形式表示。例:0.8768.76E-187.6E-2876E-3计算机在输出时,按标准化指数形式输出。例:0.282.800000E-01 -59.58E+12-5.958000E+13 即数字部分大于1,且小数点前只有一位非零数字的指数输出形式。在微机中,一般用四个字节存放一个实数,其取值范围为:10-751075。超出此范围时为“溢出”错误。1/26/2023213.5常常量量下列形式为不合法的指数形式:单独的小数点和单独的指数部分。例:.E5,E10 指数部分只能是整数,不能带小数点。例:8E0

12、.5,12.3E1.5 1/26/2023223.6变变量量变量在程序执行期间其值可以改变的量。3.6.1 变量的概念 Fortran为每一个变量分配一个相应的存储单元;每个变量在每个时刻只能有一个确定的值。例:x=4.5 x x=8.0 x注:在程序中用到的变量都必须要有确定的值。4.58.01/26/2023233.6变变量量3.6.2 变量名变量名标识一个变量所用的名字。命名规则:变量名的第一个字符必须是字母;在第一个字符后可跟15个字母或数字。例:x,m1,total,k123,1/26/2023243.6变变量量注意几点:变量名不区分大小写字母。例:TOTAL,Total,total

13、 代表同一变量变量名中的空格不起作用。例:abc,a bc,ab c,a b c 代表同一变量变量名尽量做到“见名知义”AVER、SUM、Imax允许变量名与语言中具有特定含义的字(“保留字”)同名。例:sin,read,open,end,建议不要使用fortran中具有特定含义的字作变量名1/26/2023253.6变变量量3.6.3 变量的类型 Fortran能处理各种类型的变量。不同类型的变量用来存放不同类型的数据。变量类型的说明(三种方式)隐含说明 即以I、j、k、l、m、n开头的变量为整型变量,以其它字母开头的变量为实型变量。(“IN规则”)例:imax,m5,number,为整型变

14、量 v,h2,aver,为实型变量1/26/2023263.6变变量量显式说明即用类型说明语句指定变量的类型。如:Integer说明变量为整型变量Real说明变量为实型变量Double precision说明变量为双精度变量Complex说明变量为复型变量Logical说明变量为逻辑型变量Character说明变量为字符型变量1/26/2023273.6变变量量如:Integer abc,xyz real imax,k3 logical a1,kpz用implicit语句说明 即说明用某一字母开头的变量为指定的类型。例:implicit integer(a,b),real(k)implicit

15、 integer(x-z)1/26/2023283.6变变量量三种类型说明的优先级:高 类型说明语句(显式说明)implicit语句说明低 “IN规则”1/26/2023293.7Fortran内部函数内部函数 在编制Fortran程序时,经常要用到一些基本的数学函数,如三角函数、指数函数、对数函数等。为方便用户,Fortran编译系统已提供了这些函数的计算程序,需要时即可调用。Fortran内部函数调用格式:函数名(自变量)1/26/2023303.7Fortran内部函数内部函数如:sin(90*3.14159/180)1.0sqrt(9.0)3.0abs(-5.6)5.6int(6.75

16、)6exp(3.0)20.085540Fortran77全部内部函数见附录1/26/2023313.7Fortran内部函数内部函数注意几点:函数自变量(参数)必须用括号括起来。例:sinx+cosx sin(x)+cos(x)函数自变量可以是常量、变量或表达式。例:exp(3.0)sin(x+cos(x)有些函数的类型是由自变量的类型确定的。例:mod(8.0,3.0)2.0 mod(8,3)2三角函数的角度单位是“弧度”而不是“度”。函数名分为“通用名”和“专用名”内部函数名一般用“通用名”。1/26/2023323.8Fortran算术表达式算术表达式Fortran77提供了四种表达式:

17、算术表达式关系表达式逻辑表达式字符表达式 算术表达式将各运算元素(常量、变量、函数和数组等)用算术运算符连接起来的一个有值的式子。1/26/2023333.8Fortran算术表达式算术表达式一、算术运算符及其优先级算术运算符(五种)加(+)减(-)乘(*)除(/)乘方(*)算术运算符的优先级 括号函数乘方乘、除加、减注:同级运算“先左后右”,连续乘方时“先右后左”。1/26/2023343.8Fortran算术表达式算术表达式例:3+5-6.0*8.5/4*2+sin(x)3+5-6.08.542sinx x*y*z、x*(y*z)xyz (x*y)*z (xy)z有了算术表达式概念之后,我

18、们就可以将:数学运算式Fortran算术表达式1/26/2023353.8Fortran算术表达式算术表达式二、算术表达式书写规则表达式中的各运算元素之间必须用运算符分隔。例:xyzx*y*z 2(x+y)2*(x+y)作任何运算的表达式只能写在一行。例:(a+b)/(c+d)a+b/c+d 1/26/2023363.8Fortran算术表达式算术表达式两个运算符不能紧邻。例:a/(-b)-a/b a/-b表达式一律用小括号。例:ax+b(y+c)a*(x+b*(y+c)1/26/2023373.8Fortran算术表达式算术表达式三、表达式求值中的类型问题同类型量运算的结果,仍为原类型。例:

19、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(属同类量运算)1/26/2023383.8Fortran算术表达式算术表达式四、运算中的误差问题整数量运算没有误差实型量由于有效位数的限制,运算时会出现误差 例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)=?1/26/2

20、023393.9赋值语句赋值语句Fortran提供三类赋值语句:算术赋值语句 逻辑赋值语句 字符赋值语句一、算术赋值语句一般格式 V=e 功能:把赋值号右边表达式的值,赋给赋值号左边的变量或数组元素。例:S=3.14159*r*21/26/2023403.9赋值语句赋值语句二、算术赋值语句中的类型转换问题 赋值号两边类型一致时,直接赋值。例:k=355 赋值号两边类型不一致时,先计算,再转换,最后赋值。例:y1=6*2 (y1的值为12.0)Imax=3.6*2(imax的值为7(7.27)1/26/2023413.9赋值语句赋值语句注意几点:赋值号左边只能是变量或数组元素,不能为带运算符的表

21、达式。例:3*a=6*x+sin(x)一个赋值语句只能给一个变量或数组元素赋值。例:a=b=c=d=3.5 一个赋值语句执行后,赋值号左边变量的原值被右边表达式的值取代。例:x=1.0 x=x+1.0 (x的值为2.0)1/26/2023423.10简单的输出语句简单的输出语句用户编制的程序必须要有输出语句,把结果显示或打印出来。Fortran提供了三种输出方式:表控格式输出(标准或固定格式输出)指定格式输出无格式输出(二进制形式,适应磁盘文件)一、表控格式输出 按Fortran编译系统隐含规定的格式输出。(即系统根据输出数据的不同类型,自动给出相应的输出格式。)1/26/2023433.10

22、简单的输出语句简单的输出语句二、表控格式输出语句 一般格式:print,输出表列 write(,)输出表列 例1:print,56.8,125 或 write(,)56.8,125 例2:print,a,b,c 或 write(,)a,b,c1/26/2023443.10简单的输出语句简单的输出语句例3:x=12.5 y=90.5 z=x+y print*,x,y print*,z=,z end 运行结果:12.500000 90.500000 Z=103.0000001/26/2023453.10简单的输出语句简单的输出语句整数的表控格式输出 规定:每个整数占12列,数据打印在右端,左补空格

23、。例:print*,123,-1128 输出结果:123-11281/26/2023463.10简单的输出语句简单的输出语句实数的表控格式输出 规定:每个实数占16列,数据打印在右端,左补空格。例:print*,15.4,-321.45 输出结果:15.400000-321.4500001/26/2023473.10简单的输出语句简单的输出语句当实数值的绝对值107或1时,按标准的指数形式输出。例:print*,-10000000.,0.98 输出结果:-1.000000E+079.800000E-011/26/2023483.11简单的输入语句简单的输入语句Fortran提供了三种输入方式:

24、表控格式输入(自由格式输入)指定格式输入无格式输入一、表控格式输入 表控格式输入根据变量的数据类型输入相应的数据形式,数据间以逗号或空格分隔的输入方式。1/26/2023493.11简单的输入语句简单的输入语句二、表控格式输入语句 一般格式:read,输入表列 read(,)输入表列例1:read,a,b (若a=14.7,b=30.0)键盘输入:14.7,30.01/26/2023503.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

25、=10)键盘输入:1.5,2.5,3.5 5,101/26/2023513.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(计算机将等待用户继续输入数据)1/26/2023523.11简单的输入语句简单的输入语句注意几点:一个read语句可以分多行输入,但每一个read语句必须从新的一行输入。例:read,x,y,z(若x=1.5,y=2.5,z=3.5)re

26、ad,i,j (若i=5,j=10)键盘输入:1.5 2.5 3.5 5,10 若键盘输入:1.5,2.5,3.5,5,10 (错)1/26/2023533.11简单的输入语句简单的输入语句在输入数据时若出现“/”,则终止对此read语句的输入。例:read,x,y,z 键盘输入:1.5,2.5/(变量z的值为原值或为零。)1/26/2023543.12参数语句(参数语句(parameter语句)语句)一、parameter语句的功能 为常量命名,即用一个符号代表一个常量。二、parameter语句一般形式 Parameter(p1=c1,p2=c2,pn=cn)其中:pn符号常量;cn常量。

27、1/26/2023553.12参数语句(参数语句(parameter语句)语句)例:求半径为0.5m的圆面积和圆周长。编程如下:parameter(r=0.5,pi=3.14159)s=pi*r*2 h=2.0*pi*r print*,s,h end1/26/2023563.12参数语句(参数语句(parameter语句)语句)注意几点:参数语句必须写在所有可执行语句之前;符号常量的命名规则及类型与变量相同,并遵循“IN规则”;程序中不能给符号常量再赋值。1/26/2023573.13pause语句语句,stop语句语句,end语语句句一、pause语句 一般形式 Pause n 注:n为15

28、位正整数或字符常量。功能 暂停程序的执行。(一个程序单位可以有多个pause语句)1/26/2023583.13pause语句语句,stop语句语句,end语语句句例:parameter(r=0.5,pi=3.14159)s=pi*r*2 h=2.0*pi*r pause 打印面积和周长 print*,s,h end1/26/2023593.13pause语句语句,stop语句语句,end语语句句二、stop语句 一般形式 stop n 注:n为15位正整数或字符常量。功能 终止程序的执行。(一个程序单位可以有多个stop语句)1/26/2023603.13pause语句语句,stop语句语句

29、,end语句语句三、end语句 一般形式 end 功能 对主程序:终止程序的执行和作为程序单位的结束标志;对子程序:返回调用程序和作为程序单位的结束标志。(一个程序单位只能有一个end语句)1/26/202361课后练习题课后练习题P7576:第五、八、十一题1/26/202362第四章第四章 逻辑运算和选择结构逻辑运算和选择结构1/26/202363计算机程序 程序设计的基本方法程序设计的基本方法计算机解决问题所需要的一系列代码化指令序计算机解决问题所需要的一系列代码化指令序列列计算机程序计算机程序。程序程序=数据结构数据结构+算法算法即即“程序就是在数据的某些特定的表示方式和程序就是在数据

30、的某些特定的表示方式和结构的基础上,对抽象算法的具体描述。结构的基础上,对抽象算法的具体描述。”上述公式可扩充为:上述公式可扩充为:程序程序=数据结构数据结构+算法算法+程序设计方法程序设计方法+语言工具语言工具1/26/202364所谓面向过程的程序设计,是指利用面向过程的语言工具(如Basic、Pascal、Fortran和C等)进行程序开发的各项活动。程序设计的基本方法程序设计的基本方法面向过程的程序设计优点:优点:编程简单、结构性强、可读性好,程序执行时序特征明编程简单、结构性强、可读性好,程序执行时序特征明显;遵循这种结构的程序只有一个入口和一个出口。显;遵循这种结构的程序只有一个入

31、口和一个出口。缺点:缺点:存在数据与程序模块的分离和程序的可重用性差等问题。存在数据与程序模块的分离和程序的可重用性差等问题。基本思想:基本思想:把一个需要求解的复杂把一个需要求解的复杂问题分为若干个模块来处理,问题分为若干个模块来处理,每个模块处理一个子问题;每个模块处理一个子问题;设计时遵循设计时遵循自顶向下自顶向下、逐步逐步细化细化、模块化设计模块化设计和和结构化结构化编码编码的原则。的原则。1/26/202365程序设计的基本方法程序设计的基本方法结构化程序设计方法:结构化编码结构化编码在结构化程序设计中,任何复杂的算法,都可以由在结构化程序设计中,任何复杂的算法,都可以由三三种基本结

32、构种基本结构组成。组成。在构造算法时,也仅以三种基本结构作为基本单元。在构造算法时,也仅以三种基本结构作为基本单元。遵循这种结构的程序只有遵循这种结构的程序只有一个输入口一个输入口和和一个输出口一个输出口。模块化设计模块化设计将一个复杂问题的程序分为若干个程序模块,每个模块将一个复杂问题的程序分为若干个程序模块,每个模块完成一项特定功能;其中有一个完成一项特定功能;其中有一个主模块主模块和若干个和若干个子模块子模块,主模块控制各个子模块来实现整个程序的功能。,主模块控制各个子模块来实现整个程序的功能。自顶向下,逐步细化自顶向下,逐步细化1/26/202366程序设计的基本方法程序设计的基本方法

33、面向对象的程序设计面向对象的程序设计是一种新的程序设计范型。它将一些新的理念和结构化程序设计中好的思想相融合,提供了一种全新的程序设计方法。基本思想基本思想将将一一个个需需要要求求解解的的问问题题分分解解为为一一系系列列实实体体(对对象象),然然后后围围绕绕这这些些对对象象建建立立数数据据和和函函数数;函函数数的的功功能能决决定定了了该该对对象象的的行行为为。规规定定一一个个对对象象的的函函数数可可以以访访问问另另一一对对象象的的函函数数,但但一一个个对对象象的的数数据据不不能能应应用用于于另另一对象的函数中。一对象的函数中。几个基本概念:几个基本概念:三类机制:三类机制:类类,对象对象,属性

34、属性,事件事件,方法方法封装、继承、多态封装、继承、多态1/26/2023674.1算法及其表示方法算法及其表示方法一、算法的概念 算法解决某一问题所采取的方法和步骤。计算机算法计算机能够执行的算法。计算机算法的特征:有穷性操作步骤是有限的。确定性方法步骤是明确的。有效性方法是正确的,步骤是完整的。必须有输入和输出。(取得必要的信息,给出正确的结果。)1/26/2023684.1算法及其表示方法算法及其表示方法 Fortran是结构化程序设计语言,每个程序单位可由三种基本结构组成:顺序结构 分支选择结构 循环结构 实践证明,任何复杂的问题都可以用这三种基本结构来描述。1/26/2023694.

35、1算法及其表示方法算法及其表示方法二、算法的表示 用NS流程图表示。(由几种功能框组合而成)矩形框用于表示顺序结构。如:若先执行语句A,再执行语句B。AB1/26/2023704.1算法及其表示方法算法及其表示方法例:若a=1.5,b=4.5,求a+b的平方。画NS图:编程:A=1.5 B=4.5 C=(a+b)*2 Print*,c end1.5a4.5b(a+b)2c打印 c结束1/26/2023714.1算法及其表示方法算法及其表示方法三角框用于表示分支选择结构。如:若P为条件,当P成立执行语句A,否则执行语句B。PTrue FalseA BPAB1/26/2023724.1算法及其表示

36、方法算法及其表示方法L形框用于表示循环结构。当型循环(P为条件,A循环体)如:若条件P成立,则执行循环体A,否则跳出循环体。PAYNPA1/26/2023734.1算法及其表示方法算法及其表示方法 直到型循环(P为条件,A循环体)如:首先执行循环体A,若条件P不成立继续执行循环体A,直到条件P成立为止。APPAYN1/26/2023744.2关系表达式关系表达式关系表达式是构成选择结构判断条件的基本式子。它也是一种最简单的逻辑表达式。一、关系运算符(P80 表4-1).gt.(大于).ge.(大于等于).eq.(等于).lt.(小于).le.(小于等于).ne.(不等于)1/26/202375

37、4.2关系表达式关系表达式二、关系表达式的一般形式 算术量关系运算符算术量 即:关系表达式是由关系运算符将两个算术量连接起来的式子。关系表达式的运算元素是算术量,结果是逻辑量:真(.True.)或假(.False.)。1/26/2023764.2关系表达式关系表达式有了关系表达式,我们就可以将:数学关系式 Fortran关系表达式例:x+y15.4 a+ba-b ex2.17 1/26/2023774.2关系表达式关系表达式注意:算术运算优先于关系运算。如:等同于(a+b).ne.(a-b)实数运算误差对关系表达式的影响如:值为.false.1.0/3.0*3.0=0.9999999 对于 a

38、bs(a-b).lt.1E-6 abs(c-d).gt.1E-61/26/2023784.3逻辑表达式逻辑表达式关系表达式只能表达简单的关系,如:5x10就不能用关系表达式表达,此时要用逻辑表达式。1/26/2023794.3逻辑表达式逻辑表达式一、逻辑表达式的一般形式 逻辑量逻辑运算符逻辑量即:逻辑表达式是由逻辑运算符将两个逻辑量连接起来的式子。逻辑表达式的运算元素是逻辑量,结果也是逻辑量:真(.True.)或假(.False.)。逻辑量包括逻辑常量、逻辑变量和关系表达式。1/26/2023804.3逻辑表达式逻辑表达式二、逻辑常量 两个:.true.(真).false.(假)三、逻辑变量

39、用于存放逻辑常量的变量。逻辑变量可以通过赋值语句来接受逻辑常量的值,但在使用前,要进行类型说明。例:logical a,b a=.true.b=.false.1/26/2023814.3逻辑表达式逻辑表达式四、逻辑运算符 .and.(逻辑与).or.(逻辑或).not.(逻辑非).eqv.(逻辑等(同或).neqv.(逻辑不等(异或)1/26/2023824.3逻辑表达式逻辑表达式五、逻辑运算符的运算规则(P83 表4.3)若a,b为两个逻辑量,则:(当a、b同时为真时,为真。)(当a、b中任意一个为真或同时为真时,为真。).not.a(当a为真,其值为假;当a为假,其值真。)(当a、b为同一

40、逻辑常量时,为真。)(当a、b不为同一逻辑常量时,为真。)1/26/2023834.3逻辑表达式逻辑表达式六、逻辑表达式的运算次序(P84 表4.5)运算次序为:括号算术运算关系运算逻辑运算 而逻辑运算:.not.and.or.eqv.,.neqv.1/26/2023844.3逻辑表达式逻辑表达式例1:写出下列条件的逻辑表达式。5k10 f3g或f5t abs(f).le.3*g.or.abs(f).eq.5*t 1a8并且1b8(a.ge.1.and.a.le.8).and.(b.ge.1.and.b.le.8)1/26/2023854.3逻辑表达式逻辑表达式例2:若a=2.5,b=7.5,

41、c=5.0,d=6.0,求下列逻辑表达式的值。().and.()t f f 1/26/2023864.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 .T1/26/2023874.4用块用块if实现选择结构实现选择结构有以下三种典型的块if选择结构:if(条件)then (块if语句)块 (then块)endif (endif语句)PA1/26/2023884.4用块用块if实现选择结构实现选择结构 if(条件)then 块1 (then块)el

42、se 块2 (else块)endif PAB1/26/2023894.4用块用块if实现选择结构实现选择结构例:2X3 (X2)Y X5 (X2)编程如下:read(*,*)xif(x.le.2)then y=2*x+3else y=x+5endifwrite(*,*)x=,x,y=,yendX2True FalseY=2X3 Y=X+5输出结果输出结果结束结束输入输入X值值1/26/2023904.4用块用块if实现选择结构实现选择结构 if(条件1)then 块1 else if(条件2)then 块2 (else if块)else if(条件n)then 块n else 块(n+1)en

43、dif 1/26/2023914.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 1/26/2023924.4用块用块if实现选择结构实现选择结构一个块if 语句必须和一个endif语句相对应。块if 中的“then块”、“else块”和“else if块”可为空块。1/26/2023934.4用块用块if实现选择结构实现选择结构

44、例1:求一元二次方程ax2+bx+c=0的根。(当b2-4ac0时有两个实根,b2-4ac0时有两个复根。)输入输入a、b、cb24acdtrued0false计算两实根计算两实根计算两复根计算两复根输出输出x1,x2输出输出x1,x2结束结束1/26/2023944.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)

45、/(2.0*a)endif x2=(-b-e)/(2.0*a)end print*,x1=,x1 print*,x2=,x2 else1/26/2023954.4用块用块if实现选择结构实现选择结构例2:求下列函数值。0 (x-10)2x+20 (-10 x0)y=20 (0 x20)30-0.5x (20 x40)50-x (40 x50)0 (x50)1/26/2023964.4用块用块if实现选择结构实现选择结构 输入输入x xtrue true x x-10-10 false falsetrue true x x0 0 false falsetrue true x x2020 fals

46、e falsetrue true x x4040 false falsetruetrue x x5050 falsefalse y=50-x y=0 y=50-x y=0打印打印y yy y0 0y=20y=20y=30-0.5xy=30-0.5xy=2x+20y=2x+201/26/2023974.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 en

47、dif 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 else1/26/2023984.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.

48、0)then y=50.0-x else y=0.0 endif1/26/2023994.5逻辑逻辑if语句语句 逻辑if语句也是一种选择结构,但与块if 不同,主要表现在:只用一行表示一个选择结构;仅当条件成立时执行,并且只执行一条语句。逻辑if语句的一般形式:If条件语句 例:if(n.le.100)n=n+11/26/20231004.5逻辑逻辑if语句语句例:2X3 (X2)Y X5 (X2)编程如下: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(*,*

49、)y=,y y=x+5 end endif write(*,*)y=,y end1/26/2023101课后练习题课后练习题P96:第一三题;第四、五、七题1/26/2023102第五章第五章 循环结构的实现循环结构的实现1/26/2023103第五章第五章 循环结构的实现循环结构的实现 所谓循环,是指在程序执行过程中需要重复执行的程序段。在实际问题中,我们经常遇到循环,如:求 n,n!,无条件循环 GOTO 循环结构 直到型循环 条件循环 当型循环 计数型循环1/26/20231045.1用用goto语句实现循环语句实现循环goto语句的一般形式:goto 其中:s1语句标号。功能:程序执行

50、到此语句时,无条件的转向标号为s1的语句去执行。例:求例:求1 11010的累加和。的累加和。编写程序段:编写程序段:integer x,suminteger x,sum x=0.0 x=0.0 sum=0.0 sum=0.0 10 x=x+1 10 x=x+1 sum=sum+x sum=sum+x goto 10 goto 101/26/20231055.1用用goto语句实现循环语句实现循环 如果我们把以上goto语句作为逻辑if语句中的执行语句,则就可以实现有条件的循环。即:integer x,sum 求110的累加和 x=0.0 sum=0.0 10 x=x+1 sum=sum+x

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁