fortran选择结构及基本语句
Fortran选择结构---精品资料
(2)单分支块IF结构 IF (逻辑表达式) THEN 块 ENDIF IF (G<60) THEN WRITE(*,*) “不及格” ENDIF T
逻辑表达式
F
块
(3)多分支结构 IF (逻辑表达式1) THEN 块1 ELSE IF(逻辑表达式2) THEN 块2 …… ELSE IF(逻辑表达式N) THEN 块N IF (G<60) THEN ELSE WRITE(*,*) “不及格” 块N+1 ELSE IF(G>=60.and.G<90) THEN WRITE(*,*) “及格” END IF ELSE WRITE(*,*) “优秀” ENDIF
结束
例32 求一元二次方程 ax2+bx+c=0的解 ① a=0,不是二次方程 ② b2-4ac=0,有两个相等的实数根 ③ b2-4ac>0,有两个不等的实数根 ④ b2-4ac <0,有两个共轭复根 阅读例32并画出程序流程图(作业)
程序如下: real a, b, c, d, d1, d2, e, x1, x2 read(*,*) a, b, c d=b*b-4*a*c if(a==0) then if(b/=0) then write(*,*) "一次方程,根为:",c/b else write(*,*) "方程无意义 " end if else
3.4 逻辑 IF 语句
格式:IF (条件表达式) 可执行语句 注意: 逻辑IF语句后面的可执行语句只能为一个 语句且不换行,否则只能用块IF语句代替。
IF (GRADE>60) THEN PRINT*,GRADE ENDIF 等价于: IF (GRADE>60) PRINT*,GRADE
Fortran语言基本语法
Fortran语⾔基本语法a、Fortran 之基本规定:在Fortran的规定中,程序的开始需先宣告变量形式,接着才能⽤这些变量来写程序内容,再整个程序中的第⼀⾏必须空⽩,除⾮键⼊英⽂字母c或*⽤以表⽰那⼀列为说明项⽽⾮实际之计算式⼦。
第⼆⾏⾄第五⾏为地址⾏,可⽤数字标⽰其地址,⽤以执⾏程序时控制之⽤。
第六⾏⽤以填⼊⼀个⾮零的数字或字母表⽰连结上⼀列的式⼦。
第7⾏⾄72⾏则为程序主体之所在,若不⼩⼼在72⾏之后键⼊程序Fortran将不于理会。
再程序的最后⼀列⽤ end命令告知程序终了。
b、变量(Variable)Fortran语法中的变量相当于函数上变量,但其种类则更多,举凡复数(complex)、整数(integer)、实数(real)、逻辑(logical)和字符串(character)等等。
对于变量的规定是变量的第⼀个字母为英⽂字母,其长度最长为6个字,除刚刚说的第⼀个字之外,其余的可为数字或字母,以下为⼏个简单范例: Integer count,pg1real time,po2pc、运算符号与内定函数:Fortran 基本的运算符号如下:+加法;-减法;*乘法;/ 除法**平⽅;**(n) n次⽅除了上列之基本运算符号之外,数值计算上常⽤之函数如三⾓等等亦以写成内定含式,常⽤的以下⼏项:log 对数函数;exp 指数函数;sin、cos、tan、cot、sec和csc等三⾓函数;abs 绝对值;asin、acos、atan、acot、asec和acsc等反三⾓函数。
D、控制结构:结构化Fortran有⼀些控制的结构,关系控制即是其中之⼀种,⽤以⽐较两变量之间关系,包含有:.lt. 表⽰⼩于.gt. 表⽰⼤于.eq. 表⽰等于.le. 表⽰⼩于或等于.ge. 表⽰⼤于或等于.ne. 表⽰不等于另⼀种重要的控制为逻辑控制,包含有:.not. .not. p => 若p为⾮真则为真.and. p .and. q => p和q为真则为真.or. p .or. q => p或q其⼀为真则为真.eqv. p .eqv. q => p和q同为真或同为⾮真则为真.neqv. p .neqv. q => p或q之中⼀为真⼀为⾮真则为真e、输⼊与输出结构:> Fortran 经常会有⼀些数值需要输⼊或计算的值需要输出,这时 Fortran 便提供了⼀些格式码好让使⽤者将欲输⼊或输出的数值针对其变量的特性作较佳的安排设计,兹举例如下,其中输出之资料格式完全相同:a、write(*,10) i,j,k10 format (1x,2I5,I3)b、assign 10 to ifmt10 format (1x,2I5,I3)write (*,ifmt) i,j,kc、write (*,'(1x,2I5,I3)') i,j,kd、character*11 fmtchfmtch='(1x,2I5,I3)'write (*,fmtch) i,j,k其中X表⽰空格之意,1x即是空⼀格, write为输出的指令,若改为 read 则为输⼊指令,I为整数的格式码, 2I5 表⽰输出的总位数为五,⽽这样的格式重复两次,其余尚有不同之各种格式码,常⽤的有:1. F 格式码,⽤于实数变量,其⼀般型态为 rFw.d ,其中F表实数,r为重复次数,w为总位数,⽽d为⼩数字数。
2FORTRAN基本语句
第一节
类型说明语句
I-N规则
(3)隐含说明变量的类型
根据变量名称的第一个字母自动决定变量的类型, 根据变量名称的第一个字母自动决定变量的类型, 变量名称的第一个字母自动决定变量的类型 且仅适用于整型和实型变量。 且仅适用于整型和实型变量。 IMax,Number,JOB,COUNT,TOTAL, 例 J,IMax,Number,JOB,COUNT,TOTAL,BOOK 最好不用这种不经说明就使用变量的方法。 最好不用这种不经说明就使用变量的方法。好的 程序员在编写程序时都会先对变量进行说明才使用变 这样能清楚了解程序执行时的内存使用情况, 量,这样能清楚了解程序执行时的内存使用情况,同 时也可避免很多“人为错误” 时也可避免很多“人为错误”。
第三节
赋值语句
三、赋值过程的类型转换作用 在一个算术赋值语句V=e V=e中 赋值变量( 在一个算术赋值语句V=e中,赋值变量(V)和表达式 的类型既可以相同,也可以不相同。Fortran中对于赋 (e)的类型既可以相同,也可以不相同。Fortran中对于赋 值时的类型转换问题作了如下规定。 值时的类型转换问题作了如下规定。 如果变量V与表达式e的类型相同,则直接进行赋值, □如果变量V与表达式e的类型相同,则直接进行赋值, 不需进行类型转换。 不需进行类型转换。 如果变量V与表达式e的类型不同, □如果变量V与表达式e的类型不同,则首先进行表达式 的求值,然后求值的结果转换为赋值变量的类型。 的求值,然后求值的结果转换为赋值变量的类型。 例1、交换A,B值; 交换A 例2、 计算
答案: 、 答案:1、2.0*SIN(3.14/4)/3.0 ( ) 2、(Sin(4.0)+cos(10*3.14/180))*exp(2.5)/ 、 (Sqrt(2.0)+abs(a*x)+log(3.0*5))
fortran教程[技巧]
前言FORTRAN90的新特性1、淘汰了所有转移语句,增加了新的控制结构,使程序结构化。
增加了结构块,模块及过程的调用灵活形式。
2、加强数组的算法功能。
提出超载概念与实现方法。
提高了文字处理功能。
3、更接近自然语言与公式演算。
允许在字符数据用选取不同种别。
特别:语句书写对列的要求放宽:一般一行写一条语句(也可也多个语句,用“;”分隔),没有标号区、续行区、正文区的区别。
一行最多为132列,可以在任何列处中断语句,中断处写一个“&”,随后在下一行任意列处继续。
一个语句最长不能超过2640个字符。
语句结尾不可有标号、符号。
注释以“!”开始,可以位于任何位置。
***以下只讨论与FORTRAN77不相同处。
第一章FORTRAN90的基本语句第一节类型说明语句1、变量名全长不得超过31个字符。
2、变量类型定义:INTEGER::X,YREAL::ACOMPLEX::B,C,D3、建议淘汰隐式说明,在程序说明部分一开始就写:IMPLICIT NONE向系统声明不使用隐式说明。
4、可以在变量说明时就置初值。
如:REAL::X=1.1,Y,Z=2.25、种别——决定变量的精度和所占内存单元数。
a.如:REAL(KIND=2)::X 说明变量X为REAL型,种别为2。
KIND是种别说明关键字。
如没有种别说明,则采用系统省缺值。
b.有关函数:KIND(X) 返回X的种别参数。
当X取常数0时,返回省缺种别参数。
如KI ND(0)、KIND(0.0)、KIND(.FALSE.)、KIND('A')分别返回整型、实型、逻辑型、字符型的省缺种别参数。
SELECTED_REAL_KIND(N,M) 返回种别参数,使之满足十进制有效位为N, 值范围在10**(-M)和10**M之间的实数。
SELECTED_INT_KIND(N,M) 与上类似,选择整型类别。
c.常数类别表示对数值型常数、逻辑型常数用后缀法,即在常数后加一下划线,再跟种别参数。
fortran循环结构及基本语句
fortran循环结构及基本语句Fortran中的循环结构包括DO循环和DO WHILE循环。
基本语句包括赋值语句、条件语句和IO语句。
1.DO循环结构:DO循环结构用于重复执行一段代码块,语法如下:DO variable = start, end, step!代码块ENDDO在循环开始前,将变量初始化为start的值,然后执行代码块。
然后将变量增加step的值,并检查是否达到end的值,如果没有达到则继续执行代码块,直到达到end的值为止。
2.DOWHILE循环结构:DOWHILE循环结构用于在满足条件时重复执行一段代码块,语法如下:DO WHILE (condition)!代码块ENDDO在每次循环开始前,检查condition是否为真,如果为真则执行代码块,然后再次检查condition。
只有当condition为假时,循环才会结束。
3.赋值语句:赋值语句用于将一个值赋给一个变量,语法如下:variable = expression可以使用算术运算符和函数来计算expression的值,并将结果赋给变量。
4.条件语句:条件语句用于根据条件选择执行不同的代码块,常用的条件语句有IF语句和SELECTCASE语句。
-IF语句的语法如下:IF (condition) THEN!代码块1ELSE IF (condition) THEN!代码块2ELSE!代码块3ENDIF根据condition的值选择执行代码块1、代码块2或代码块3-SELECTCASE语句的语法如下:SELECT CASE (expression)CASE (value1)!代码块1CASE (value2)!代码块2CASEDEFAULT!代码块3ENDSELECT根据expression的值选择执行相应的代码块,如果没有匹配的值,则执行默认的代码块。
5.IO语句:IO语句用于输入和输出数据,常用的IO语句有WRITE和READ语句。
fortran select case语句
fortran select case语句FORTRAN SELECT CASE 语句FORTRAN 的 SELECT CASE 语句是一个非常强大的选择语句,用来指定当出现某种情况时执行特定的语句,可以替代 IF-THEN-ELSE 结构和 SWITCH-CASE 结构,可以让程序编写更加灵活,更容易阅读与维护。
SELECT CASE 语句格式如下:SELECT CASE(表达式)CASE 值1语句1CASE 值2语句2….CASE DEFAULT语句3END SELECT其中,表达式可以是任意有效的 FORTRAN 标量表达式,它的类型包括整数,实数,字符串及其他数据类型。
CASE 值1 、 CASE 值2 等等是 CASE 值,它们必须和表达式的类型匹配;当表达式的值等于某个 CASE 值时,紧接着的语句会被执行,然后跳出该 SELECT CASE 块,开始执行 SELECT CASE 之后的语句。
CASE DEFAULT 是 SELECT CASE 的可选结束语句,当表达式的值不等于任何一个 CASE 值时,CASE DEFAULT 后的语句会被执行,然后跳出 SELECT CASE 块。
下面是一个例子,它演示了如何使用 SELECT CASE 语句来判断一个整数并打印出相应的消息:CPROGRAM SELECT_CASEIMPLICIT NONEINTEGER :: iWRITE(*,*) ‘Please enter an integer number : ’READ(*,*) iSELECT CASE (i)CASE (1,3,5,7,9)WRITE(*,*) ‘The number is an odd number.’CASE (2,4,6,8,10)WRITE(*,*) ‘The number is an even number.’END SELECTEND PROGRAM SELECT_CASE上面的程序会把用户输入的数字进行比较,如果该数字是奇数,就会打印“The number is an odd number”;如果是偶数就会打印“The number is an even number”。
FORTRAN语言第3章(共8章)
会再去执行。这一点同后面的SELECT CASE完
全不同。也就是说IF结构中的选择条件是允许重 叠的,但SELECT CASE语句不允许选择条件有 重叠。
第二节 块IF选择结构
1.ELSEIF语句其作用相当于将ELSE语句与其 后的ELSE块中的块IF语句连接在一起。 2.同块IF语句不同, ELSEIF语句与ENDIF语 句间不存在一一对应关系。 3.在这种IF结构中,允许使用多个ELSEIF语 句。在最后一个ELSEIF语句之后,可以有与 之对应的ELSE语句,也可以没有。当有 ELSE语句在最后时,表示如果前面所有的条 件都不成立,执行其后的ELSE块;如果没有 ELSE块,则表示如果前面所有的条件都不成 立时,流程转到ENDIF语句。
条 件 1 假 条 件 2 真 条 件 ...... 1 块 2 块 ...... 块 n 块 n +1 真 假 条 件 n 真 假 假
EN D IF 的 后 继 语 句
第二节 块IF选择结构
多重判断的IF结构中,判断条件的成立具有
唯一性。即一旦有判断条件成立,就去执行相应
的模块,如果其后仍有判断条件是成立的,也不
一个嵌套分支结构可使用若干个块 IF语句,相应就有若干个ENDIF语句,
每个块IF语句还可能使用一些ELSE
IF语句、ELSE语句,这就可能构成一 个复杂的IF-ELSEIF-THEN-ELSE结构。
当嵌套层次过多时,往往一时难以找
到同一层的块IF中的各语句,一般可 按以下方法确定: (1)从最内层的块IF语句开始,向下找到离它最近的ENDIF 语句,将它们用线括起来,这就是同一层次的块IF。 (2)由内向外重复这一个过程,直到遇见最外层块IF语句和 ENDIF语句为止。 (3)在书写嵌套分支结构时采取缩进方式进行程序书写,程 序的嵌套层次就容易确定。
fortran语言语法
FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。
经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。
目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :<说实话,从科技发展的趋势来说这不是好事。
您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受!强烈建议阅读《发掘C#特性赋予科学计算项目以威力》1 FORTRAN77四则运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→()2 FORTRAN77变量类型2.1隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
2.2用类型说明语句确定变量类型:可以改变I-N规则2.3用IMPLICIT语句将某一字母开头的全部变量指定为所需类型如IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。
2.4数组的说明与使用使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3) REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)10FORMAT(1X,5(A2,I2,1X,A2,I4))2.5使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/-1.0,-1.0,-1.0/DATA A/-1.0/,B/-1.0/,C/-1.0/DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)DATA CHN/10*' '/INTEGER NUM(1000)DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/3 FORTRAN77程序书写规则•程序中的变量名,不分大小写;•变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;•一行只能写一个语句;•程序的第一个语句固定为PROGRAM 程序名称字符串•某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;•某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;•某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;•某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;•某行的第73至80字符位为注释区,80字符位以后不能有内容。
fortran语言程序设计知识点
fortran语言程序设计知识点Fortran语言是一种面向科学与工程计算的编程语言,因其在数值计算和科学应用方面的高效性而受到广泛使用。
本文将重点介绍Fortran语言程序设计的一些重要知识点。
一、基础语法1.1 变量与数据类型在Fortran中,变量是用于存储数据的容器。
常见的数据类型包括整型(INTEGER)、实型(REAL/DOUBLE PRECISION)、复数型(COMPLEX)、逻辑型(LOGICAL)等。
变量的命名需遵循一定规则,如以字母开头,长度不超过31个字符等。
1.2 运算符与表达式Fortran支持常见的算术运算符(如+、-、*、/)以及逻辑运算符(如. AND.、. OR.、. NOT.)等。
表达式由变量、常数和运算符组成,可以进行数值运算和逻辑判断。
1.3 控制结构Fortran提供循环结构(DO)、条件结构(IF-THEN-ELSE)和选择结构(SELECT CASE)等控制语句,用于控制程序的流程。
二、数组与数据处理2.1 数组定义与操作Fortran中数组是由相同类型的数据元素组成的集合。
可以使用DIMENSION语句定义数组的维度和大小,通过下标访问和修改数组元素。
2.2 数组运算与函数Fortran提供了许多对数组进行运算和处理的函数,如数组求和(SUM)、最大最小值(MAX、MIN)、数组重排(RESHAPE)等,方便对数据进行统计和处理。
2.3 文件读写操作Fortran支持对文件进行读写操作,可以通过OPEN语句打开文件,使用READ和WRITE语句读取和写入数据。
可以根据需要设置文件的访问模式和格式。
三、过程与模块3.1 过程(Subroutine/Function)过程是一段独立的代码块,可接受传入参数并返回值。
在Fortran中,过程可以是子程序(Subroutine)或函数(Function)。
子程序用于完成一系列操作,而函数则返回一个值。
3.2 模块(Module)Fortran中的模块是一个编译单元,用于组织和管理相关的过程和变量。
Fortran77教程-4逻辑运算和选择结构
2
例:计算职工工资。正常工资rate (yuan/h),一周超过 40 hours时,超过部分按1.5 rate (yuan/h) 。
3
c
Payroll with overtime program payroll read(*,*) rate, hours if(hours.gt.40.0) then regpay=rate*40.0 ovtpay=1.5*rate*(hours-40.0) else regpay=rate*hours ovtpay=0.0 end if pay=regpay+ovtpay write(*,*) 'rate=', rate, ' hours=', hours write(*,*) 'regular pay=', regpay, ' overtime pay=', ovtpay write(*,*) 'total pay=', pay end
成绩分级 A : ≥80 B : ≥70且<80 C : ≥60且<70 D : <60
15
给a, b, c三个数排序,要求从小到大输出
16
read(*,*) a,b,c if(a.le.b) then else t=a a=b b=t end if if(b.le.c) then else t=b b=c c=t if(a.le.b) then else t=a a=b b=t end if end if write(*,*) a,b,c end
第一章 算法 第二章 计算机和计算机程序 第三章 Fortran语言程序设计初步 第四章 逻辑运算和选择结构 第五章 循环结构的实现 第六章 Fortran的数据结构 第七章 数据的输入、输出 第八章 常用算法的程序设计举例
fortran知识点总结
fortran知识点总结一、语法结构Fortran语言的语法结构遵循一套严格的规则。
下面是一些常见的语法结构:1. 程序单元:Fortran程序由一个或多个程序单元组成。
每个程序单元由一个或多个声明和执行语句组成。
2. 注释:在Fortran中,注释可以用来提高代码的可读性。
注释以感叹号(!)开头,直到行末为止。
3. 标识符:Fortran中的标识符由字母、数字和下划线组成,且区分大小写。
标识符用于表示变量、函数、子程序等。
4. 变量声明:在Fortran中,变量声明使用关键字“REAL”、“INTEGER”、“LOGICAL”等来指定变量的数据类型。
例如,REAL :: x 表示声明了一个实数类型的变量x。
5. 程序控制结构:Fortran提供了多种控制结构,包括顺序结构、条件结构和循环结构。
这些结构提供了程序的流程控制和逻辑控制。
6. 函数和子程序:Fortran支持函数和子程序的定义和调用。
函数和子程序可以帮助程序员组织和重用代码。
7. 模块和接口:Fortran中的模块和接口提供了一种组织代码的方式。
模块可以包含多个子程序和全局变量,接口可以用来定义子程序的接口。
二、数据类型在Fortran中,数据类型用于表示数据的类型和大小。
Fortran提供了多种数据类型,包括整数、实数、逻辑值、字符、复数等。
下面是一些常见的数据类型:1. 整数:整数类型用于表示整数值。
在Fortran中,整数类型包括“INTEGER”、“LOGICAL” 和“CHARACTER”类型。
2. 实数:实数类型用于表示实数值。
在Fortran中,实数类型包括“REAL”和“COMPLEX”类型。
REAL类型用于表示实数,COMPLEX类型用于表示复数。
3. 字符:字符类型用于表示字符值。
在Fortran中,字符类型使用CHARACTER关键字进行声明。
字符类型可以表示单个字符或者字符数组。
4. 数组:数组类型用于表示多个相同类型的数据。
Fortran语言快速学习指南
Fortran语言快速学习指南Fortran是一种高级程序设计语言,专门用于科学和工程计算。
它是最早的计算机编程语言之一,在科学计算领域一直具有广泛的应用。
本篇文章将提供一份Fortran语言的快速学习指南,帮助读者快速掌握该语言的基本概念和用法。
一、Fortran简介Fortran是一种编译型语言,最初于1957年由IBM公司开发。
它的名字源自“Formula Translation”的缩写,最早用于数值计算和科学研究。
Fortran的设计目标是简化数值计算的编程过程,提高程序的效率和可读性。
二、Fortran的基本语法1. 变量和数据类型在Fortran中,变量是用于存储数据的容器,每个变量都必须先声明后使用。
Fortran提供了多种数据类型,包括整型、实型、字符型等,用于存储不同类型的数据。
2. 数组Fortran中的数组是一种特殊的变量类型,可以同时存储多个值。
数组的声明方式为:TYPE, DIMENSION(下标范围) :: 数组名。
例如,声明一个包含10个整数的数组可以写作:INTEGER, DIMENSION(10) :: array。
3. 条件语句和循环Fortran提供了条件语句(IF语句)和循环结构(DO循环)来控制程序的执行流程。
条件语句根据某个条件的真假来选择不同的执行路径,而循环结构可以重复执行一段代码块多次。
4. 子程序和函数Fortran支持子程序和函数的定义和调用。
子程序用于执行一段特定的代码块,而函数则返回一个值给调用者。
子程序和函数的定义方式为:SUBROUTINE 子程序名和 FUNCTION 函数名。
三、Fortran的特性和优势1. 高效性:Fortran在科学计算领域具有很高的效率和性能优势。
它能够直接利用计算机硬件的特性,进行高速、大规模的数值计算。
2. 数值计算支持:Fortran提供了丰富的数值计算库和函数,方便进行复杂的科学计算。
这些库包括矩阵运算、线性代数、微分方程求解等。
3Fortran程序设计3-选择结构
SELECT CASE(X>=3) CASE(.TRUE.) PRINT *,‘YES’ CASE(.FALSE.) PRINT *,‘NO’ END SELECT
♦ 其它流程控制
GOTO IF 与 GOTO 联用 PAUSE CONTINUE STOP
SELECT CASE(MAJOR) CASE (‘Astronomical Physics’)
语句块1 CASE (‘Applied Physics’)
语句块2 CASE (‘Theoretical Physics’)
语句块3 END SELECT DEPARTMENT_22_MAJOR
逻辑型 SELECT CASE 举例
♦ 选择结构
块 IF
块IF的一般形式可写成:
IF(逻辑表达式) THEN
块1
ELSE
块2
END IF
其中,ELSE 和else块可以省略
← 块IF语句 ← then块
← else块
♦ 选择结构
IF - ELSE IF (多重判断)
IF(逻辑表达式1) THEN …
ELSE IF(逻辑表达式2) THEN …
2 (X.LT.0.).OR.(X.GT.100.)
3 .NOT.(X.LE.O.)
当X<0或X>100时,表达式值为真 当X≤0时,表达式值为假
4 (A.GT.B).EQV.(C.GT.D)
当两个括弧内的值都为真或都为假时,表达式的值为真
5 L1.NEQV.L2
当L1与L2的逻辑值不相同时,表达式的值为真
一个计算问题的解决过程通常包含下面几步:
Fortran教程第三章 选择结构程序设计
所作的处理在其后的块语句中完成。
(3)case default与其后的默认块,是缺省情况,可有可无。
如果加入它,则代表前面所有选择表达式的值皆非的情况下 执行该块。 (4)end select为case结构结束的标志。
例3.3、设计程序,完成小学加、减、乘、除四则运算, 即输入两个数,再输入一个运算符号,做对应的运算,
program exam
implicit none integer n
read *, n
if ( mod(n,3)==0.and.mod(n,5)==0 ) then print *,’该数能同时被3和5整除。’
else
print *,’该数不能同时被3和5整除。’ endif end
块IF结构的组成
program exam3 real g read *,g if (g>=90) then print *,“优秀”
else if( g>=80) then
print *,"良好" else if( g>=60) then
print *, "通过"
else print *,"不及格" endif end
FORTRAN所用的基本逻辑运算有:
.AND.
.EQV.
.OR.
.NEQV.
.NOT.
.XOR.
(1)逻辑与,运算符.AND. 当连接的两个逻辑操作数为真时, 逻辑表达式取值为真,只要一个为假则取假。例如数学表达式 1<X<2,在FORTRAN中应写成逻辑表达式:X>1.AND.X<2。
(2)逻辑或,运算符为.OR. 连接的两个逻辑操作数只要有一个 为真时,逻辑表达式取值为真,全部为假时才为假。例如|X|>5,
FORTRAN95 语法基础
FORTRAN 95 语法基础目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符二、输入与输出:表控、有格式三、选择语句与结构:IF语句、CASE结构四、DO循环结构五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值,动态数组,WHERE、FORALL语句六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序七、派生数据类型与结构体八、指针与动态链表九、文件:存取方式,基本操作语句,各类文件的读写操作十、接口、模块十一、公用区、存储关联、数据块子程序十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示附/录:标准函数与标准子例行程序一、基础部份1-1 FORTRAN 95 应用程序的创建与运行创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。
尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。
但最好还是一开始就进入Studio环境。
创建FORTRAN 95 程序的步骤大致如下:1)启动Microsoft Developer Studio可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio[开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或……\CVF66 \\MSDEV98\dfdev.exeMicrosoft Developer Studio的界面如下图所示:文档窗口工作空间窗口输出窗口2)建立工作空间(WorkSpace)工作空间(WorkSpace)对应着windows资源管理器的一个文件夹。
fortran 顺序结构及基本语句
REAL ----- 一般默认取k=4
REAL(k)或REAL(KIND=k)或REAL*k DOUBLE PRECISION
---- k:4,8
----- 双精度,等价于REAL(8) !声明KIND值为8的3个双精度实型变量 !声明KIND值为4(缺省)的1个实型变量 !a初值为125.5,b初值为0.0
形式
CHARACTER ----- 一般默认取k=1 CHARACTER(k)或CHARACTER(LEN=k)或CHARACTER*k -- k:正整数
示例
CHARACTER(4)e,d,t CHARACTER f,g*5
!声明长度为4的3个字符型变量 !声明长度为1(缺省)和为5的2个字符型变量
操作数类型转换:允许混合运算,按最高级进行转换。
12+13+14.5(12+13)+14.525+14.525.0+14.539.5
长安大学地学信息技术研究所
09/10第一学期 16
字符表达式
字符表达式:字符操作数、字符操作符和圆括号组成。 字符操作数:字符、字符串、字符型变量或字符型函数 字符操作符:求子串(i:j),连接符// 圆括号: 示例
( ),用以改变操作数的操作顺序。
不同类型的操作数和操作符组成的表达式其操作方式、操
作规则及操作结果亦不相同。
四种类型表达式: 算术表达式: 字符表达式: 关系表达式: 逻辑表达式:
(number+12)*count
str1(i:j)//str2 (x+y)<1.25E-25
.NOT.(L1 .AND. L2 .OR. L3)
3.1 常量/实数/范围
fortran逻辑运算和选择结构
write(*,*) 'D' end if end
18
几点说明:
1. ELSE IF语句相当于把ELSE语句和其下一行的块IF 语句连结成一个语句。
2. ELSE IF语句不需END IF语句与之对应。
3.一个块IF可以有多个ELSE IF语句,除非有块IF嵌套 否则只能有一个ELSE语句。
4.当处理多分支选择时,用ELSE IF语句往往比较方便。
5. ELSE IF是在“条件为假”的分支中再继续进行分支 处理的。故在处理多分支的选择时,要把出现几率高的 条件写在前面,以提高效率。
19
read(*,*) grade if(grade.ge.80.) then
write(*,*) 'A ' else if(grade.ge.70.) then
为了避免过多的块IF嵌套,FORTRAN 还提供了
ELSE IF语句来处理“否则,如果…”的情况。
17
read(*,*) grade if(grade.ge.60.) then if(grade.ge.70.) then
if(grade.ge.80.) then write(*,*) 'A'
else write(*,*) 'B'
if(grade.ge.80.) then write(*,*) 'A'
else write(*,*) 'B'
end if else
write(*,*) 'C' end if else write(*,*) 'D' end if end
fortran基本语法
fortran基本语法Fortran是一种高级编程语言,它的全称是Formula Translation,最初是为数学和科学工作者设计的。
它的语法简单易学,特别适合数值计算、科学计算、工程计算和数据处理等领域。
本文将介绍Fortran的基本语法。
1.程序结构Fortran程序由一系列语句组成,每个语句占一行。
程序的执行顺序是从上到下、从左到右。
程序中可以包含注释,注释以“!”开始,直到行末为止。
Fortran程序通常由三个部分组成:程序头、主程序和子程序。
程序头包含程序的名称、作者、日期等信息。
主程序是Fortran程序的核心,它包含了程序的主要计算过程。
子程序是主程序的辅助程序,在主程序中可以调用子程序完成某些计算任务。
2.变量和常量Fortran中的变量是用来保存数据的,变量的类型可以是整数、实数、字符、逻辑等。
变量名必须以字母开头,长度不超过31个字符。
变量的赋值使用符号“=”,例如:a = 10b = 3.14c = 'Hello, World!'Fortran中的常量是指在程序执行期间不会改变的值,常量可以是整数、实数、字符、逻辑等。
Fortran中的常量可以使用以下符号表示:整数常量:例如5,-10等。
实数常量:例如3.14159,-2.5E-3等。
字符常量:例如'Hello, World!','A'等。
逻辑常量:例如.TRUE.,.FALSE.等。
3.运算符Fortran中的运算符包括算术运算符、逻辑运算符和关系运算符。
算术运算符:加:+减:-乘:*除:/幂:**逻辑运算符:非:.NOT.与:.AND.或:.OR.关系运算符:等于:==不等于:/=大于:>小于:<大于等于:>=小于等于:<=4.控制结构Fortran中的控制结构包括分支结构和循环结构。
分支结构:IF语句:根据条件执行不同的语句。
IF (a > b) THENPRINT *, 'a is greater than b'ELSEPRINT *, 'b is greater than a'END IFSELECT CASE语句:根据表达式的值执行不同的语句。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
END
长安大学地学信息技术研究所 09/10学年第一学期 13
嵌套块IF:指块IF语句中又包含块IF语句,可有多层嵌套。 对于嵌套块IF,内外层块IF语句体不能相互交叉。
块IF语句可命名,在嵌套块IF中,可对内外层块IF语句进行命名。
示例:求解方程ax2+bx+c=0,需要检查是否a=0,防止除0溢出。
<控制集合>→<元素>[:<元素>]{,<元素>[:<元素>]}
长安大学地学信息技术研究所 09/10学年第一学期 15
给定学生成绩S,评定优、良、中、及格、不及格等级,并输出。
INTEGER(1) READ (*,*)S
S
SELECT CASE(INT(S)) CASE(90:100) WRITE(*,*)„该学生成绩为:优。’ CASE(80:89) WRITE(*,*)„该学生成绩为:良。’ CASE(70:79) WRITE(*,*)„该学生成绩为:中。’ CASE(60:69) WRITE(*,*)„该学生成绩为:及格。’
WRITE(*,*)„该学生成绩为:不及格。’ ELSE IF (S<70) THEN
END IF
WRITE(*,*)„该学生成绩为:及格。’ ELSE IF (S<80) THEN
END IF
END IF
END IF
WRITE(*,*)„该学生成绩为:中。’ END
长安大学地学信息技术研究所
09/10学年第一学期 12
CASE(0:59)
WRITE(*,*)„该学生成绩为:不及格。’ END SELECT END CASE DEFAULT WRITE(*,*)„输入成绩数据错!!!'
长安大学地学信息技术研究所
09/10学年第一学期 16
4.4 选择结构程序设计举例
[例4.4]任意输入一个整数N(N≥2),确定N是否为素数,输出判定结果。 解:对于整数N,若为偶数,则一定不是素数;若为奇数,从K=3至√N+1,逐个测试 MOD(N,K)是否为零,若有一次为零,则N不是素数,否则N为素数。 LOGICAL :: FLAG=.TRUE. IF (FLAG) THEN
READ (*,*)S IF (S<60) THEN
!程序三
write(*,*)„该学生成绩为:不及格。’
ELSE IF (S<70) THEN write(*,*) „该学生成绩为:及格。’ ELSE IF (S<80) THEN write(*,*) „该学生成绩为:中。’ ELSE IF (S<90) THEN write(*,*) „该学生成绩为:良。’ ELSE write(*,*) „该学生成绩为:优。’ ENDIF
THEN语句体 ENDIF
ELSE语句体
单边选择结构1 真 THEN语句体 ENDIF 单边选择结构2 真 e ENDI F 假 ELSE语句体 e 假
IF (e) THEN
<THEN语句体> ENDIF
IF (e) THEN ELSE
IF (.NOT. e) THEN
<ELSE语句体>
<ELSE语句体> ENDIF ENDIF
READ(*,*)N
SELECT CASE (N) CASE (2) WRITE(*,*) '2是素数。'
WRITE(*,100) N
ELSE WRITE(*,200) N ENDIF
CASE (3:)
IF (MOD(N,2)= =0) THEN WRITE(*,200) N STOP来自CASE DEFAULT
END
长安大学地学信息技术研究所
09/10学年第一学期 11
!程序二
WRITE(*,“(„输入学生成绩:’\)”)
READ (*,*)S IF (S<60) THEN
ELSE IF (S<90) THEN
WRITE(*,*)„该学生成绩为:良。’ ELSE write(*,*)„该学生成绩为:优。’
<基本块IF语句>→IF(<逻辑表达式e>)THEN
[<THEN语句体>]
[ELSE [<ELSE语句体>]] END IF <基本块IF语句>→IF(<逻辑表达式e>)THEN [<THEN语句体>] END IF
<THEN语句体>→{<可执行语句>}
<ELSE语句体>→{<可执行语句>}
基本块IF语句功能:先求e值,为真,执行<THEN语句体>,
第四讲
选择结构及基本语句
长安大学地学信息技术研究所
09/10学年第一学期 1
4.1 概述
顺序结构程序特点:程序自上而下按语句顺序逐句执行。是三大结构之一。
选择结构程序特点:根据条件判定结果决定语句执行顺序。是三大结构之一。 FORTRAN90提供IF和SELECT语句来实现选择结构。 示例:输入学生成绩,判定合格与否,输出判定结果。
Disc=b*b—4*a*c Outer: IF (a/=0) THEN Inner: IF (Disc<0) THEN WRITE(*,*)'Complex roots„ ELSE Inner
X1=(-b+SQRT(Disc))/(2*a)
X2=(-b-SQRT(Disc))/(2*a) END IF Inner END IF Outer
长安大学地学信息技术研究所
09/10学年第一学期 7
[例4.2]输入一个整数,判断它是奇数还是偶数,并打印输出。 解:根据题意设计算法并画程序流程图,如图4-4所示。
程序:
10 20 FORMAT(1X,I5,' IS A EVEN NUMBER.') FORMAT(1X,I5,' IS A ODD NUMBER.') WRITE(*,*) 'PLEASE INPUT A INTEGER NUMBER:„ READ(*,*) N IF(MOD(N,2)= =0)THEN WRITE(*,10) N 假 输入N MOD(N,2)= =0 真
解:根据题意设计算法并画程序流程图,如下图所示。
有三个等价程序可求解这一问题。
真
S<60
假 真 S<70 假 真 S<80 假
真
输出“不及 输出“及 ” ” 输出“中 ” 输出“良 ”
S<90
假
输出“优 ”
长安大学地学信息技术研究所
09/10学年第一学期 10
!程序一 WRITE(*,“(„输入学生成绩:’\)”) READ (*,*)S IF (S<60) WRITE(*,*)„该学生成绩为:不及格。’ IF (S>=60 .AND. S<70) WRITE(*,*)„该学生成绩为:及格。’ IF (S>=70 .AND. S<80) WRITE(*,*)„该学生成绩为:中。’ IF (S>=80 .AND. S<90) WRITE(*,*)„该学生成绩为:良。’ IF (S>=90) WRITE(*,*)„该学生成绩为:优。’
长安大学地学信息技术研究所
09/10学年第一学期 14
MS-FORTRAN
90引入类似PASCAL和C语言中块CASE结构的新功能。
CASE结构功能:计算表达式值,从多个分支中选择一分支执行。
<SELECT语句>→SELECT CASE(<表达式e>)
CASE (<控制集合1>) 集合表示示例:
[<语句体n>]
[ELSE [<语句体n+1>]] END IF
功能:求ei值,为真,执行<语句体i>,均为假,执行<语句体n+1>。
长安大学地学信息技术研究所
09/10学年第一学期 9
给定一学生成绩S,评判该学生等级,并输出评判结果。 评判标准: 优:90≤S≤100;良:80≤S<90;中:70≤S<80 及格:60≤S<70;不及格:S<60
逻辑表达式e两边必须有圆括号。
合法逻辑IF语句: IF (A .GT. Max) Max=A IF (A>B) READ (*,*) A IF (X.EQ.10.0) WRITE(*,*) X IF (ABS(A-B)<1E-7) STOP IF (A>B) EXIT IF (SUM .LT. 100.0) G0TO 10
WRITE(*,*) „数据输入不正确。’ END SELECT 100 FORMAT(1X,I4, „是素数。’) 200 FORMAT(1X,I4, „不是素数。’) END
ENDIF
M=INT(SQRT(FLOAT(N))+1) DO K=3,M,2 IF (MOD(N,K)= =0) FLAG=.FALSE.
1,5,7-9 1,3,5,7,9 125,250,375,500 „pen‟,‟pencil‟,‟desk‟ „A‟,‟B‟,‟C‟,‟D‟ .TRUE.
<语句体1> CASE (<控制集合2>) <语句体2> …… CASE (<控制集合n>)
<语句体n>
[CASE DEFAULT <语句体n+1>] END SELECT
09/10学年第一学期 4
[例4.1]已知三个整数A,B,C,输入其值并打印三个数中最大值。
解:根据题意设计算法并画程序流程图,如图4-2所示。 程序: