Fortran77教程-4逻辑运算和选择结构

合集下载

Fortran77结构化程序设计

Fortran77结构化程序设计

Fortran77结构化程序设计Fortran77结构化程序设计章节一、引言1.1 程序设计的概述1.2 Fortran77的特点1.3 编写结构化程序的优势章节二、基本语法和数据类型2.1 Fortran77的语法规则2.2 数据类型和变量2.2.1 整型2.2.2 实型2.2.3 逻辑型2.2.4 字符型2.2.5 数组2.2.6 字符串章节三、控制结构3.1 顺序结构3.2 分支结构3.2.1 IF语句3.2.2 CASE语句3.3 循环结构3.3.1 DO循环3.3.2 WHILE循环3.3.3 循环控制语句章节四、子程序和函数4.1 子程序的定义和调用4.2 函数的定义和调用4.3 参数传递4.4 递归调用章节五、文件操作5.1 文件的打开和关闭5.2 读写文件的基本操作5.3 文件的格式化读写5.4 随机访问文件章节六、错误处理和调试技巧6.1 错误类型和处理方法6.2 调试工具和技巧章节七、实例应用7.1 计算圆的面积7.2 求解线性方程组7.3 求解微分方程7.4 图像处理附录:常用函数库A.1 标准数学函数库A.2 字符串处理函数库A.3 文件操作函数库A.4 其他常用函数库附件:示例代码文件法律名词及注释:1、Fortran77:一种高级编程语言,用于科学计算和工程应用。

2、数据类型:变量的属性,如整型、实型、字符型等。

3、分支结构:程序中根据条件选择不同执行路径的结构。

4、循环结构:程序中重复执行某段代码的结构。

5、子程序:独立的代码块,可以被多次调用。

6、函数:接受输入参数并返回结果的子程序。

7、文件操作:程序与外部文件的读写交互。

8、错误处理:处理程序执行过程中的错误和异常情况。

9、调试:通过检查和修复程序错误来确保程序正确执行。

fortran第4章(条件).ppt

fortran第4章(条件).ppt

T
条件
F
语句块1
语句块2
例: 有一折线其关系为: Y= 2X+3 (X≤2) X+5 (X>2) 见图,要求输入一个X值,打印一个相应的Y值.
READ *,X IF (X.LE.2.0) THEN Y=2*X+3 ELSE Y=X+5 ENDIF PRINT *,’X=‘,X,’Y=‘,Y END
3.5.LE.10.0.AND.20.0.LT.15.1
• 逻辑或.OR.
其值为假
例:3.5.LE.10.0.OR.20.0.LT.15.1
3.5.GE.10.0.OR.20.0.LT.15.1
其值为真
其值为假

逻辑同.EQV.(逻辑等值) 例:3.5.LE.10.0.EQV.20.0.LT.15.0 3.5.LE.10.0.EQV.20.0.GE.15.0 其值为假 其值为真
具体操作是: 将e1 RELOP e2 写成 ((e1)-(e2)) RELOP 0 即对两个算术表达式求差,然后与零进行比较,其中 零的类型与表达式((e1)-(e2))的类型相同. 如: 可写作: X*X.LT.2*J X*X-2*J.LT.0.0
4.当算术表达式是非整型时尽量不用关系运算符.EQ.
b b2 4 ac x 1 2 a
b b2 4 ac x 2 2 a
READ *,GRADE
IF(GRADE.GE.8O) PRlNT *,”A” IF(GRADE.GE.6O .AND. GRADE.LT.80) PRlNT *,”B” IF(GRADE.LT.6O) PRlNT *,”C” 逻辑IF语句当条件为“真”时只能执行一个执行语句而不能 执行若干个语句。与块IF相比,逻辑IF语句是在一行中完成 的一个选择操作,因此它又称“行IF语句”以与块IF区别。

Fortran77教程-4逻辑运算和选择结构

Fortran77教程-4逻辑运算和选择结构

read(*,*) grade if(grade.ge.80.) write(*,*) 'A' if(grade.ge.70.) write(*,*) 'B' if(grade.ge.60.) write(*,*) 'C' write(*,*) 'D' end
24
C
单价850,100以上95折优惠,求货款。 price=850 read(*,*) n if(n.ge.100) price=price*0.95 amount=n*price write(*,*) 'n=',n,' amount=',amount end
read(*,*) grade if(grade.le.60.) then write(*,*) ‘D ' else if(grade.le.70.) then write(*,*) ‘C' else if(grade.le.80.) then write(*,*) ‘B' else write(*,*) ‘A' end if end
read(*,*) grade if(grade.ge.80.) then write(*,*) 'A ' else if(grade.ge.70.) then write(*,*) 'B' else if(grade.ge.60.) then write(*,*) 'C' else write(*,*) 'D' end if end
if(grade.ge.60.) then else print *, ’No.’, num print *, ’grade’, grade end if

FORTRAN77编程基础

FORTRAN77编程基础

第三讲FORTRAN 77 编程基础1主要内容⏹FORTRAN 77 基础⏹数据结构⏹控制结构(选择与循环)⏹基本输入输出⏹函数与子程序⏹计时函数⏹文件操作FORTRAN 基础⏹FORTRAN语言发展概况●FOR mula TRAN slation●适用于工程及科学计算的一种高级程序设计语言●1951 年由约翰•贝克斯等人开始研发●1957 年第一个FORTRAN 程序在IBM704 机上运行●1966 和1978 年先后颁布FORTRAN66 和FORTRAN77●1991 和1997 年颁布了Fortran 90和Fortran 95●2004 年公布Frotran2003 标准,面向对象程序设计●2010 年公布Fortran 2008 标准FORTRAN 编译器⏹免费的FORTRAN 编译器⏹商业版FORTRAN 编译器●GNU FORTRAN /gfortran●G95●Intel Fortran 编译器(非商业版)●Power Station 、Compaq Visual Fortran (已停止更新)●Intel Fortran●PGI Fortran●Absoft Pro Fortran●Lahey Fortran程序开发环境⏹Linux 系统⏹Windows 系统●字符界面,命令行方式●Code::Blocks + GCC●Microsoft Visual Studio + Intel Visual Fortran ●Code::Blocks + GCC一个简单的编程示例parameter(n=100)real a(n, n), b(n, n), c(n, n)cdo j = 1, ndo i = 1, na(i,j) = 1.0/(i+j‐1)b(i,j) = 1.0c(i,j) = 0.0enddoenddocdo i = 1, ndo j = 1, ndo k = 1, nc(i,j) = c(i,j) + a(i,k) * b(k,j) enddoenddoenddocprint*, "c(1,1) = ", c(1,1)stopendFORTRAN 程序分析●一个FORTRAN 源程序由一个或多个程序单元组成每个独立的程序单元以“end”语句结束●每个程序单元包括若干行(一行不能写多条语句,但一条语句可以分几行写)●每个程序单元可包含语句行和非语句行(注释行)●语句行:可执行语句和非执行语句行●非执行语句在所有可执行语句行前面●语句可以根据需要设置标号●各类语句在程序单元中的位置必须满足一定规则●程序必须按规定的格式书写源程序书写格式●每行只能在72 列内书写,并把80 列分为4 个区●1~5列:标号区(1~5 位整数)如果第1 列为“* ”或“c ”,则为注释行●第6列:续行标志区续行符可以是任意非空格/非零字符最多19 个续行●7~72 列:语句区(一行只能写一条语句)●73~:被忽略,有的编译器会报错⏹FORTRAN 77 源程序必须按规定的格式书写(Fixed Format 固定格式)⏹源程序●以.f为扩展名●纯文本文件,可使用任何文本编辑器编写⏹编译与执行g77‐O2 –o输出文件名源程序文件名./输出文件名g77 ‐O2 –o hello hello.f./hellog77常用选项-o:指定生成的可执行文件的文件名,缺省为a.out -c:只编译不链接,即只生成目标文件(.o文件)-I path:指定或增加包含文件(如*.h)的搜索路径-L path:指定(增加)库文件的搜索路径-l name:与库文件lib name.a链接-O, -O1, -O2, -O3:优化开关-g:在目标码中加入更多信息,用于程序调试●英文字母:A B C D ... ... X Y Z●下划线和阿拉伯数字:_ 0 1 2 3 4 5 6 7 8 9●特殊符号:空格= + -* / ( ) , . ' : "☞FORTRAN 不区分大小写☞早期的FORTRAN 卡片不允许小写故很多FORTRAN 程序源代码都是大写的FORTRAN 数据结构⏹F77支持基本类型和构造类型的数据结构●基本类型●构造类型:数组、记录、文件●F77 不支持指针整型、实型、双精度、复型、逻辑型、字符型正、负整数和零,缺省取值范围为:[-231, 231-1]②实型常量(Real)小数或指数形式:0.876 →8.76E-1 →87.6E-2指数部分只能是整数,取值范围:[10-38, 1038]③双精度常量(Double precision)8 字节:0.125D+45,取值范围:[10-308,10308]④复型常量(Complex)8 字节:(实数,实数)⑤逻辑型常量(Logical)⑥字符型常量(Character)⏹变量类型整型、实型、双精度、复型、逻辑型、字符型⏹变量名●第一个字符必须是字母●后面可以跟1~5 个字母、下划线或数字现在的FORTRAN 编译器允许多于6 个字符(g77 最多支持约51个字符)●变量名中的空格不起作用。

Fortran77结构化程序设计

Fortran77结构化程序设计

Fortran77结构化程序设计Fortran77结构化程序设计简介Fortran(Formula Translating System)是一种编程语言,特别适用于科学和工程领域的计算。

Fortran的第一版于1957年发布,至今已经发展到Fortran77版本。

Fortran77引入了结构化程序设计的概念,使得程序更易于编写和维护。

本文将介绍Fortran77结构化程序设计的基本原则、控制结构和常用语法。

基本原则结构化程序设计的目标是编写易读、易维护、易的程序。

为了达到这个目标,Fortran77结构化程序设计遵循以下基本原则:1. 模块化:将程序划分为小块的独立模块,每个模块负责完成特定的功能。

2. 单一入口:每个模块只有一个入口点,使得程序的执行流程清晰可见。

3. 自顶向下设计:从程序的总体结构开始,逐步细化到具体的算法和实现细节。

4. 注重可读性:使用有意义的变量和函数名,添加适当的注释,使得程序易于阅读和理解。

控制结构Fortran77提供了几种常用的控制结构来实现程序的流程控制:顺序结构顺序结构是Fortran77中最基本的控制结构,程序按照代码的顺序依次执行。

例如:fortranPROGRAM mnINTEGER :: i, sumsum = 0DO i = 1, 10sum = sum + iEND DOWRITE(,) 'Sum:', sumEND PROGRAM mn上述代码展示了一个简单的程序,通过循环计算1到10的和,并输出结果。

分支结构Fortran77提供了基本的分支控制结构:- `IF`语句:可以根据条件选择性执行代码块。

例如:fortranPROGRAM mnINTEGER :: iDO i = 1, 10IF (i < 5) THENWRITE(,) i, '小于5'ELSEWRITE(,) i, '大于等于5'END IFEND DOEND PROGRAM mn在上述代码中,根据变量`i`的值判断是否小于5,并分别输出不同的信息。

FORTRAN77综述

FORTRAN77综述

FORTRAN77综述data (num(i),i=1,500)/500*0/,(num(i),i=501,1000)/500*1/Fortran77程序书写规则:1、程序中的变量名,不分大小写;2、变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;3、一行只能写一个语句;4、程序的第一个语句固定为program 程序名称字符串5、某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;6、某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;7、某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;8、某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;9、某行的第73至80字符位为注释区,80字符位以后不能有内容。

Fortran77关系运算符:Fortran77逻辑运算符:.gt. 大于.ge. 天于或等于.lt. 小于.le. 小于或等于.eq. 等于.ne. 不等于.and. 逻辑与.or. 逻辑或.not. 逻辑非.eqv. 逻辑等.neqv. 逻辑不等运算符优先级由高到低顺序为:()→**→*或/→+或-→.gt.或.ge.或.lt.或.le.或.eq.或.ne.→.not.→.and.→.or.→.eqv.或.neqvFortran77语句:语句说明备注write(*,*) x1,x2 输出语句第一个*号是指输入输出文件设备号或其它设备机,第二个*号是指表控格式语句的行号,如不print *,x1,x2 输出语句*号是指表控格式语句的行号,如不指定则用默read *,x1,x2 输入语句*号是指表控格式语句的行号,如不指定则用默format(格式符) 控制输入输出格式语句。

注:1.在打印输出时,每一行第1个字符不显示,用来控制纵向走纸或显示行。

第1个字符作用空格正常回车换行0 回车并跳过1行1 换页+ 只回车不换行其它通常是回车换行2.输入小数时,自带小数点优先。

fortran程序设计第4章xhb

fortran程序设计第4章xhb
ELSE PRINT *, ‘C’
END IF ELSE
PRINT *, ‘D’ END IF
[例4.4] 三个数A、B、C,按升序排序。
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
用块IF结构实现选择 结构,其形式为:
IF (条件) THEN then块
ELSE else块
END IF
不成立
成立
条件
else块
then块
[例4.1]计算职工工资。工人每小时计时工资为 RATE,如果一周工作时间超过40小时,加班部分 的工资按正常时间工资的1.5倍计算。
读入RATE, HOURS
Less Than Less than or Equal to
EQual to Not Equal to
数学符号 > ≥ < ≤ = ≠
关系表达式示例:
关系表达式 A .GT. 3.5 A+B .LE. 0.0 SIN(X) .GE. 0.5 A-B .NE. C+D
I .LT. J/2
数学式子 A>3.5
[例4.3]如果在上例的基础上将80分以上定为A等,70~79 分定为B等,60~69分定为C等,小于60分的为D等。
READ (*, *) GRADE IF (GRADE .GE. 60.0) THEN
IF (GRADE .GE. 70) THEN IF (GRADE .GE. 80.0) THEN PRINT *, ‘A’ ELSE PRINT *, ‘B’ END IF

fortran选择结构及基本语句

fortran选择结构及基本语句

CASE(80:89)
WRITE(*,*)‘该学生成绩为:良。’
CASE(70:79)
WRITE(*,*)‘该学生成绩为:中。’
CASE(60:69)
WRITE(*,*)‘该学生成绩为:及格。’
CASE(0:59)
WRITE(*,*)‘该学生成绩为:不及格。’
END SELECT
CASE DEFAULT
基本块IF语句功能:先求e值,为真,执行<THEN语句体>, 为假,执行<ELSE语句体>。
<THEN语句体>和<ELSE语句体>为一程序段(语句序列)。
长安大学地学信息技术研究所
09/10学年第一学期 6
选择结构有三种类型:双边结构、单边结构1、单边结构2。
双边选择结构
IF (e) THEN
真 THEN语句体
IF (S<70) THEN
write(*,*)‘该学生成绩为: 优。’
WRITE(*,*)‘该学生成绩为:及格。’ END IF
ELSE
END IF
IF (S<80) THEN
END IF
WRITE(*,*)‘该学生成绩为:中。E’ND IF
END
长安大学地学信息技术研究所
09/10学年第一学期 12
READ (*,*)i,j IF(i<j) WRITE(*,*)I WRITE(*,*)‘逻辑IF语句执行结束。’ END
输入:125,200 输出:125
逻辑IF语句执行结束。
输入:200,125 输出:逻辑IF语句结束。
长安大学地学信息技术研究所
09/10学年第一学期 3
逻辑IF语句中的可执行语句S只允许是一条语句。

Fortran的数据结构

Fortran的数据结构

比较时使用“.EQ.”、“.NE.”、“ .GT.”、“.GE.”、 “.LT.”、 “.LE.”关系符。 logical a,b,c,d a='shanghai'.ge.'shandong' b='this'.lt.'that' c='the'.eq.'the ' d='agent'.gt.'ago' write(*,*) a,b,c,d end 5. 字符处理内部函数
职工记录 职工名 职工号 性别 年龄 家庭住址
2
在计算机语言中,用数据类型来表示不同的数据结构。 高级语言一般有以下三类数据结构:基本类型、构造类型 和指针类型。 基本类型(简单类型,不可再分):整型、实型、双精度 型、复型、逻辑型、字符型等。 构造类型:数组、记录、文件、集合等。 指针类型:链表、队、栈、树、图等。 FORTRAN77提供基本类型、构造类型。
第一章 算法 第二章 计算机和计算机程序 第三章 Fortran语言程序设计初步 第四章 逻辑运算和选择结构 第五章 循环结构的实现 第六章 Fortran的数据结构 第七章 数据的输入、输出 第八章 常用算法的程序设计举例
1
一、程序中的数据结构
程序处理的对象是数据 某班学生
学生1
学生2

学生30
18
4. 字符表达式和字符关系表达式
Fortran77的字符表达式只有“//”(字符连接符)运算。 character*25 name,name1 name='Fortran Powerstation4.0' name1=name(9:20)//' '//name(1:7) & //name(21:23) write(*,*) '-',name,'-' write(*,*) '-',name1,'-' end Powerstation Fortran4.0name1 字符间可以比较大小,具体规律为: 一般按其ASCII码的值进行比较。例如:字母a小z大, A小Z大;数字0小9大;两个字串比较时,从左至右依此 比较字符,第一个小者即为小;不同长度字串比较时, 短的右端补齐空格;空格字符最小。 19

Fortran77中文帮助教程

Fortran77中文帮助教程
tran77 结构化程序设计
第一章 FORTRAN语言程序设计初步...................................................................................................1 1.1 FORTRAN语言发展概况..........................................................................................................1 1.2 简单的FORTRAN程序分析......................................................................................................1 1.3 FORTRAN 源程序的书写格式................................................................................................1 1.4 Fortran程序的编辑与运行 ........................................................................................................1 1.5 常 量 ..........................................................................................................................................1 1.5.1 整型常量 .........................................................................................................................1 1.5.2 实型常量 .........................................................................................................................1 1.6 变 量 ..........................................................................................................................................2 1.6.1 变量的概念 .....................................................................................................................2 1.6.2 变量名 .............................................................................................................................2 1.6.3 变量类型 .........................................................................................................................2 1.7 Fortran内部函数 ........................................................................................................................2 1.8 Fortran算术表达式 ....................................................................................................................3 1.8.1 算术运算符和运算优先级 .............................................................................................3 1.8.2 表达式运算中的类型问题 .............................................................................................3 1.8.3 运算的误差问题 .............................................................................................................3 1.9 赋值语句 ....................................................................................................................................3 1.10 简单输出语句 ..........................................................................................................................3 1.11 简单输入语句 ..........................................................................................................................4 1.12 PARAMETER语句 ..................................................................................................................5 1.13 END,STOP,PAUSE语句 ....................................................................................................5 总结 ...................................................................................................................................................5

Fortran77 程序基础

Fortran77 程序基础



关系表达式是最简单的一种逻辑表达式,它的一般形式为: <关系运算量> <关系运算符> <关系运算量> 关系运算量可以是算术量,也可以是字符量。算术量可以是数值型常 量、数值型变量、数值函数,还可以是算术表达式。如:
A+B>3.5 40>=40 40<C COS(B)<=0.5 (M+N)*X==0.0 X-Z.NE.(Y+X) 等价于 等价于 等价于 等价于 等价于 等价于 A+B.GT.3.5 40.GE.40 40.LT.C COS(B).LE.0.5 (M+N)*X.EQ.0.0 X-Z.NE.(Y+X)


表控格式输入、输出 格式输入、输出


格式输入输出控制符
常用控制符 i,f,a 写法: nIw;nfw.d; naw 如: integer year, month, day write(*, "(3i8)") year, month, day 又如: real runoff write (*, "(f9.2)") runoff
(A.GT.B).AND.(A.NE.C) (X.LT.-1.0).OR.(X.GT.1.0) .NOT.((A+C)*D.LE.0.0) (A.GT.B).EQV.(C.LE.D) 等价于(A>B).AND.(A/=C) 等价于(X<-1.0).OR.(X>1.0) 等价于.NOT.((A+C)*D<=0.0) 等价于(A>B).EQV.(C<=D)


逻辑表达式的一般形式为: <逻辑运算量><逻辑运算符><逻辑运算量>[<逻辑运算符><逻辑运算量>„] 同关系表达式不同,一个逻辑表达式中可以包括多个逻辑运算符,例如逻辑 表达式“A.GE.10.0.AND.A+C.GT.B+D.OR..NOT..TRUE.”中包含 了.AND.、.OR.、.NOT.三个逻辑运算符。在逻辑表达式中除了有逻辑运算符 外,还可以有关系运算符和算术运算符。 下面是一些逻辑表达式的例子:

Fortran77中文帮助教程

Fortran77中文帮助教程

Fortran语言――Fortran77结构化程序设计第一章 FORTRAN语言程序设计初步 (1)1.1FORTRAN语言发展概况 (1)1.2 简单的FORTRAN程序分析 (1)1.3FORTRAN 源程序的书写格式 (1)1.4Fortran程序的编辑与运行 (1)1.5 常量 (1)1.5.1 整型常量 (1)1.5.2 实型常量 (1)1.6 变量 (2)1.6.1 变量的概念 (2)1.6.2 变量名 (2)1.6.3 变量类型 (2)1.7Fortran内部函数 (2)1.8Fortran算术表达式 (3)1.8.1 算术运算符和运算优先级 (3)1.8.2 表达式运算中的类型问题 (3)1.8.3 运算的误差问题 (3)1.9 赋值语句 (3)1.10 简单输出语句 (3)1.11 简单输入语句 (4)1.12PARAMETER语句 (5)1.13END,STOP,PAUSE语句 (5)总结 (5)第二章逻辑运算和选择结构 (6)2.1 引言 (6)2.2 关系表达式 (6)2.3 逻辑表达式 (6)2.4 用块 IF 实现选择结构 (6)2.5 逻辑IF语句 (7)2.6 算术IF语句 (7)第三章循环结构的实现 (8)3.1 用GOTO语句实现循环 (8)3.2 用DO语句实现循环 (8)3.3 当型循环的实现 (9)3.4 直到型循环的实现 (9)3.5 几种循环形式的关系和比较 (9)第四章 FORTRAN的数据结构 (10)4.1 程序中的数据结构 (10)4.2 双精度数据类型 (10)4.3 复型类型数据 (10)4.4 四种数值型数据之间的转换和运算 (10)4.5 字符型数据 (10)第五章数据的输入和输出 (12)i5.1 概述 (12)5.2 有格式的输出 (12)5.3 有格式的输入 (13)5.4 在PRINT,WRITE和READ语句中包含格式说明 (13)第六章数组 (14)6.1 数组的说明和数组元素的引用 (14)6.2 数组的逻辑结构和存储结构 (14)6.3 数组的输入和输出 (14)6.4 使用DATA语句给数组赋初值 (15)第七章语句函数 (16)7.1 语句函数的定义 (16)7.2 语句函数的引用 (16)第八章子程序 (17)8.1 函数子程序 (17)8.2 子例行程序 (18)8.3 实参和虚参之间的数据传递 (18)第九章数据共用存储单元 (20)9.1 等价语句 (EQUIV ALENCE语句) (20)9.2 公用语句 (20)9.2.1 无名公用区 (20)9.2.2 有名公用区 (21)9.3 数据块子程序 (22)第十章文件 (24)10.1 概述 (24)10.2 文件的基本概念 (24)10.3 数据文件的建立和使用 (24)ii第一章 FORTRAN语言程序设计初步1.1FORTRAN语言发展概况Formula Translation适用于工程及科学计算的一种高级程序设计语言1951年由约翰·贝克斯等人开始研究Fortran语言;1957年第一个Fortran程序在IBM704机上运行;1958和1962年先后推出FortranⅡ和FortranⅣ;1966和1978年先后颁布Fortran66和Fortran77;1991年颁布了Fortran90,1997年颁布Fortran95,2004年颁布Fortran20031.2 简单的FORTRAN程序分析Fortran程序的基本结构:⑴一个Fortran源程序由一个或多个程序单位组成,每个独立的程序单位以“end”语句结束。

Fortran77结构化程序设计

Fortran77结构化程序设计
Fortran内部函数调用格式:
函数名(自变量)
2021/5/15
30
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全部内部函数见附录Ⅵ
• 1958和1962年先后推出FortranⅡ和FortranⅣ;
• 1966和1978年先后颁布Fortran66和Fortran77;
• 1991年颁布了Fortran90。
• 现在已经有了Fortran 95, Fortran 2003
2021/5/15
5
Fortran语言的特征
Fortran语言的最大特性是接近数学公式的自然描 述,在计算机里具有很高的执行效率。
2021/5/15
28
3.6 变 量
三种类型说明的优先级: 高 类型说明语句(显式说明) implicit语句说明 低 “I~N规则”
2021/5/15
29
3.7 Fortran内部函数
在编制Fortran程序时,经常要用到 一些基本的数学函数,如三角函数、指 数函数、对数函数等。为方便用户, Fortran编译系统已提供了这些函数的 计算程序,需要时即可调用。
2021/5/15
31
3.7 Fortran内部函数
注意几点:
⑴函数自变量(参数)必须用括号括起来。
例:sinx+cosx → sin(x)+cos(x)
⑵函数自变量可以是常量、变量或表达式。
例: exp(3.0)
sin (x+cos(x))

第四章结构化程序设计控制结构

第四章结构化程序设计控制结构


PRINT*,‘X1=’,X1,’,X2=’,X2

40 RETURN
• END SUBROUTINE
3. IF 块
IF 块的构造形式为:

IF condition THEN

block1

[ELSE

blockE]

END IF
其中,condition是一个逻辑表达式,其结果不外乎真或假。 block1 和 blockE是语句块,当条件为真,block1 被执行; 否则,blockE 被执行。ELSE 块是可选的。

[CASE DEFAULT

blockD]

END SELECT
其中expr 必须是整型、字符型或者逻辑型变量。Selector 可以是同一类型, 非交叉的值或值范围(:用来规定值的范围)的列表。用CASE块统计 学生得分如下:
SELECT CASE ( INT(Final))

CASE (90:)

case default

PRINT*,‘Consonant’

END SELECT

ELSE

PRINT*,‘Something else’
CASE块的构造形式为:

SELECT CASE (expr)

CASE (selector1)

block1

CASE (selector2)

block2

D=D+1

ELSE

F=F+1

END IF
程序执行一旦发现某个逻辑条件为真,就不会再去判断其他

FORTRAN 77

FORTRAN 77

算法与程序设计第一章算法1、程序:一组计算机指令。

2、设计算法是程序设计的核心。

3、算法:为解决一个问题而采取的方法和步骤。

4、为完成一件工作,包括设计算法和实现算法。

5、计算计算法包括数值运算算法和非数值运算算法。

*STEP(步)6、算法具有通用性、灵活性。

7、算法发的特性:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。

8、表示一个算法:自然语言、流程图、结构化流程图(N-S图,盒图)、伪代码、PAD图。

9、三种基本结构:顺序结构、选择结构(判断结构)、循环结构或重复结构(包括当型循环和直到型循环)10、当型循环:先判断条件是否满足,再执行循环体。

直到型循环:先执行循环体,再判断是否满足条件。

(同一件事两循环的条件互逆)第二章计算机和计算机程序1、计算机的基本组成:运算器、存储器、控制器。

2、工作原理:二进制。

二进制基本原则是“逢二进一”。

3、位是存储信息的最小单位。

又称“比特”。

4、字节:又称“拜特”,计算机8个比特为一个字节。

5、十进制转化二进制:除2取余法。

6、低级语言:机器语言。

高级语言:符号语言和算法语言。

(FORTRAN是最早的算法语言。

)7、算法语言包括语法、语义、语用。

8、算法等式:算法+数据结构=程序算法+数据结构+结构化方法+语言工具=结构化程序9、编辑语言、翻译语言(汇编语言、编译语言、解释语言)。

软件分为系统软件和应用软件。

10、程序开发:定义阶段、开发阶段、使用维护阶段。

第三章初步设计1、“C”“*”注释行,解释说明。

主子程序之分。

2、常量:整形常量(不含小数点)、实型常量、双精度常量、复型常量、逻辑型常量、字符型常量。

3、实型常量:(一)小数形式:如12.9(二)指数形式:如12.3E-54、变量是指在程序运行期间其值是可以变化的量。

5、*TOTAL、Total、total都表示同一变量。

还有尽量做到“见名知义”。

6、“I-N规则”:即I到N开头字母的变量为整型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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的数据结构 第七章 数据的输入、输出 第八章 常用算法的程序设计举例
1
一、引言
在FORTRAN77中,用块IF结构来实现选择结构, 其形式为: IF(条件)THEN then 块 ELSE else 块 END IF
3. 不同类型常变量比较时,遵循低级向高级转化规律。 X.GT.3 4.关系表达式的值不是一个数值,而是逻辑量“真”或“假”。 5.判断实数相等和不等,用.EQ.和.NE.时要特别注意。 (1.0/3.0+1.0/3.0+1.0/3.0).EQ. 1.0 (10.0*0.1).NE. 1.0 A.EQ.B 可改为 ABS(A-B).LT.1E-6 C.NE.D 可改为 ABS(C-D).GT.1E-6
read(*,*) grade if(grade.ge.80.) then write(*,*) 'A ' else if(grade.ge.70.) then write(*,*) 'B' else if(grade.ge.60.) then write(*,*) 'C' else write(*,*) 'D' end if end
求函数值
22
六、逻辑IF语句
逻辑IF语句只有“条件为真”时才有操作,为“假” 时不进行任何操作,且条件为“真”时只能执行一条执行 语句,而后不论“真”或“假”,都接着执行逻辑IF语句 的下一条语句。逻辑IF语句又称行IF语句。 如果在块IF结构中else块空块,而then块只有一条语句, 则用逻辑IF语句比较方便。 if(x.lt.60.0) then write(*,*) grade end if end if(x.lt.60.0) write(*,*) grade
12
四、用块IF实现选择结构
IF(逻辑表达式)THEN 块1 ELSE 块2 END IF 几点说明:
1. 一个块IF是有若干个语句组成的,其中三条语句均 不能单独是使用。
2. 一个块IF必须以块IF语句开始,以END IF语句结束。 一个块IF语句必须和一个END IF语句对应。
13
3. 一个块IF可以不包含ELSE语句和else块,也可以不 包含then块。 if(grade.lt.60.) then print *, ’No.’, num print *, ’grade’, grade end if
10
例如,A=3.5, B=5.0, C=2.5, D=1.0
11
算术运算符的运算对象是数值量,运算结果为数值。 关系运算符的运算对象是数值量,运算结果为逻辑量。 逻辑运算符的运算对象是逻辑量,运算结果仍为逻辑量。
逻辑运算符和算术运算符可以连续用运算符连接运算量, 但关系运算符不可以。
逻辑运算符可以写成:(设L1,L2,L3,L4为逻辑变量) L1 .AND. L2 .AND. L3 .AND. L4 算术运算符可以写成:A+B+C+D 但关系运算符不能写成:A .LT. B .LT. C .LT. D
4
二、关系表达式
关系表达式是最简单的一种逻辑表达式。
其一般形式为:
<算术量>
<关系运算符>
<算术量>
算术量:数值常数、数值型变量、数值函数、算术表达式。 关系运算符:关系比较符。 FORTRAN中有六种关系运算符
5
6
几点注意:
1. 关系运算符字母两侧各有一个句点,不要漏写。
2. 在一个关系表达式中可能包括算术运算符和关系运算符, 先进行算术运算,然后进行关系运算。(建议加括号) i+j.ne.m+n 相当于 (i+j).ne.(m+n)
19
几点说明: 1. ELSE IF语句相当于把ELSE语句和其下一行的块IF 语句连结成一个语句。 2. ELSE IF语句不需END IF语句与之对应。 3.一个块IF可以有多个ELSE IF语句,除非有块IF嵌套 否则只能有一个ELSE语句。 4.当处理多分支选择时,Байду номын сангаасELSE IF语句往往比较方便。 5. ELSE IF是在“条件为假”的分支中再继续进行分支 处理的。故在处理多分支的选择时,要把出现几率高的 条件写在前面,以提高效率。
9
4. 逻辑表达式 <逻辑量> <逻辑运算符> <逻辑量>
FORTRAN77逻辑量包括:
逻辑常量 逻辑型变量 关系表达式
(a.lt.b).and.(a.gt.c) (x.lt.0.).or.(a.gt.100.) .not.(x.le.0.) (a.gt.b).eqv.(c.gt.d) (l1.lt.0.).neqv..true. 注意:.AND.和.EQV.的区别。
read(*,*) grade if(grade.le.60.) then write(*,*) ‘D ' else if(grade.le.70.) then write(*,*) ‘C' else if(grade.le.80.) then write(*,*) ‘B' else write(*,*) ‘A' end if end
20
read(*,*) grade if(grade.ge.80.) then write(*,*) 'A ' else if(grade.ge.70.) then write(*,*) 'B' else if(grade.ge.60.) then write(*,*) 'C' else write(*,*) 'D' end if end
7
三、逻辑表达式
1. 逻辑常量 FORTRAN只有两个逻辑常量 .TRUE. .FALSE. 2. 逻辑型变量 Fortran 用LOGICAL语句说明逻辑变量。 logical a, b a=.true. b=(x+y).gt.z
8
表示“真”,即满足逻辑条件 表示“假”,即不满足逻辑条件
3. 逻辑运算符
因为不论“真”或“假”,都接着执行逻辑IF语句 的下一条语句,故逻辑IF语句的条件要写全。
23
read(*,*) grade if(grade.ge.80.) write(*,*) 'A' if(grade.ge.70..and.grade.lt.80.) write(*,*) 'B' if(grade.ge.60..and.grade.lt.70.) write(*,*) 'C' if(grade.lt.60.) write(*,*) 'D' end
if(grade.ge.60.) then else print *, ’No.’, num print *, ’grade’, grade end if
4. 块IF的嵌套 一个块IF可以嵌套另一个块IF,但另一个块if必须 完整地出现在then块或else块的位置。
14
read(*,*) grade if(grade.ge.60.) then if(grade.ge.70.) then if(grade.ge.80.) then write(*,*) 'A' else write(*,*) 'B' end if else write(*,*) 'C' end if else write(*,*) 'D' end if end
17
五、ELSE IF 语句
read(*,*) grade if(grade.ge.60.) then if(grade.ge.70.) then if(grade.ge.80.) then write(*,*) 'A' else write(*,*) 'B' end if else write(*,*) 'C' end if else write(*,*) 'D' end if end 为了避免过多的块IF嵌套,FORTRAN 还提供了 ELSE IF语句来处理“否则,如果…”的情况。
相关文档
最新文档