欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    Fortran程序设计初步.ppt

    • 资源ID:3098041       资源大小:5.87MB        全文页数:179页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Fortran程序设计初步.ppt

    1/133,第 三 章,FORTRAN语言程序设计初步,2/133,FORTRAN语言程序设计初步,任何一种程序设计语言都有自己的一套语法规则以及由基本符号按语法规则构成的各种语法成分:如常量、变量、表达式、语句、函数等. FORTRAN语言程序设计初步就是要求我们熟练地掌握这些语法成分。,3/133,本 章 主 要 内 容,3.1 FORTRAN语言发展概况 3.2 简单程序分析 3.3 FORTRAN书写格式 3.4 FORTRAN源程序输入方式 3.5 常量 3.6 变量 3.7 FORTRAN内部函数 3.8 FORTRAN算术表达式 3.9 赋值语句 3.10 简单的输出语句 3.11 简单的输入语句 3.12 参数语句 3.13 END 、 STOP 、 PAUSE 语句 3.14 程序举例,FORTRAN语言 程序设计基础,4/133,3.1 FORTRAN语言发展概况,FORTRAN-FORmula TRANslation (公式翻译) 是世界上第一个被正式推广使用的高级语言 (于1954年提出; 1956年正式使用) FORTRAN是数值计算领域里使用的主要语言; FORTRAN的发展历程,早期的版本不是结构化语言,没有直接实现三种基本结构的语句(使用goto实现特定操作)。F77才在F66作了大幅度的修改。,FORTRAN的特点链接,FORTRAN的发展历程链接,5/133,3.1 FORTRAN语言发展概况,FORTRAN 90的推出,是FORTRAN语言发展史上的一个里程碑,它挽救了FORTRAN语言面临淘汰的局面,使传统的FORTRAN语言焕发了青春,以其强大的功能和严谨的风格受到人们的欢迎和认可,并展现出良好的应用前景 FORTRAN95是FORTRAN90的修订版,增加了许多新功能,加强了多处理机并行计算能力。 发达国家已开始重新认识FORTRAN语言,对FORTRAN90/95语言的研究、开发和应用给予了高度重视,FORTRAN语言正在发挥越来越大的作用。 我国从90年代末开始引进FORTRA90/95有关资料和相关软件,并在许多高校开设FORTRAN90/95课程。,6/133,3.1 FORTRAN语言发展概况,Fortran90的程序结构图简介,主程序 A1 USE Module A Call B Call C Contains Subroutine C End Subroutine . End 主程序 A1,内部子程序,Subroutine B End Subroutine,Module A Contains . End Module A,模块子程序,7/133,3.1 FORTRAN语言发展概况,Fortran90的主要改进: 书写格式; 数据声明与赋初值; 添加二进制、八进制、十六进制运算; 新的DO循环; 数据的自定义类型; 多重选择(select case); 动态数组; 内部子程序和递归子程序的功能; 添加了许多新的内在子程序(内在函数) 指针; 模块; 接口,下一节:程序分析,8/133,3.2 简单程序分析,10 20 30 40 50 60 70 80 01234567890123456789012345678901234567890123456789012345678901234567890123456789 C CALCULATE THE AVERAGE OF THREE NUMBERS x=90.5 y=87.0 z=68.5 AVER=(x+y+z)/3.0 print * ,the three numbers are , x , y , z prnt * , average=, aver end,#include void main() float x,y,z,Aver; x=90.5; y=87.0; z=68.5; Aver=(x+y+z)/3; printf(“%f%f%fn”,x,y,z); printf(”%fn”,Aver); ,9/133,源程序的建立,10/133,C语言源程序及运行结果,11/133,语法着色: 绿色:注释文本; 蓝色:关键字; 黑色:代码。,注意源程序字符与单词颜色,12/133,3.2 简单程序分析,10 20 30 40 50 60 70 80 01234567890123456789012345678901234567890123456789012345678901234567890123456789 C MAIN PROGRAM PROGRAM EX2 print * ,R , 1.0,C=, C(1.0) print * ,R , 1.5,C=, C(1.5) print * ,R , 3.0,C=, C(3.0) print * ,R , 12.5,C=, C(12.5) end 01234567890123456789012345678901234567890123456789012345678901234567890123456789 C SUBPROGRAM FUNCTION C(R) pi=3.1415926 C=2 * pi * R return end,例如:将此文件保存为: li3.for,如保存此文件:li3_1.for 分别将两个文件编译 再build li3.EXE 即可运行,13/133,#include void main() float x,y,z,w; float c(float); x=c(1.0); y=c(1.5); z=c(3.0); w=c(12.5); printf(“%15f%15f%15f%15fn“,x,y,z,w); float c(float r) float pi=3.14159,cc; cc=pi*r*r; return cc; ,对比C语言分析该程序,14/133,从上例可以看出计算机程序的组成:,单位定义部分(主、子程序) 说明部分 输入部分 计算或处理部分 输出部分 END结束,15/133,从上例可以看出计算机程序的组成:,程序单位:具有以上各部分组成(或部分)的程序称为一个程序单位,可以单独编译,也可以一起编译。 (主程序、子程序、数据块子程序、模块) (我们已经知道,在C语言中,程序的组成是由若干个函数组成的。),16/133,FORTRAN的程序单位,(1),(2),(3),(4),17/133,使用Compaq Visual Fortran 6(或 Microsoft Fortran Powerstation4.0)建立程序与执行过程如下(八步):,1)首先在工作盘中建立文件夹,如:For_test 2)启动Fortran集成开发环境(Developer Studio); 3)“文件” “新建”“项目”确定位置,填写项目名 4)“文件” “新建” “FILE” 选择程序格式:“Fortran Fixed Format Source File” 在Location: For_test OK 5)进入编辑状态输入源文件保存该文件 6)需要时需重复步骤4建立新的文件; 7)分别打开源文件编译; 8)Build *.Exe 文件运行!,Fixed Free,18/133,对于编译连接后的*.EXE文件,还可以单独运行:,1)运行CMDD: 2)可以删除原文件以及目标文件等; 3)直接键入文件名,运行*.EXE程序.,19/133,FORTRAN 语言的基本特点,1)一个程序由一个或若干个程序单位组成; 2)每一个程序单位都是以“END”语句作为结束; 3)一个程序单位包括若干行: (1)语句行 执行语句(使计算机在运行时产生某些操作) 非执行语句(如类型说明语句、数据语句) (2)非语句行(如注释行) 尽管不执行,但在打印清单时被打印出来; 4)FORTRAN语句可以没有标号,也可以有标号; 5)一个程序单位中各类语句位置是有一定规定的; 6)FORTRAN源程序必须按一定的格式书写。,!,20/133,FORTRAN编译系统,目前使用的编译系统: Microsoft Fortran Powerstation 4.0 (微软卖给了Digital, Digital继续开发) Digital Visual Fortran 5.0 ( Digital 被Compaq并购 ) Compaq Visual Fortran 6.0 6.5 (Compaq与Intel合并) Intel Visual Fortran 9.0 11.0,21/133,FORTRAN编译系统的安装,22/133,FORTRAN编译系统的安装,运行安装程序,23/133,FORTRAN编译系统的安装,选择安装,24/133,FORTRAN编译系统的安装,建议在安装本系统之前关闭其它应用程序,25/133,FORTRAN编译系统的安装,33206 050 0010743 00007,26/133,FORTRAN编译系统的安装,建议改为自己定义的盘符和文件夹,27/133,FORTRAN编译系统的安装,28/133,FORTRAN编译系统的安装,29/133,FORTRAN编译系统的安装,建议选择更新环境,30/133,FORTRAN编译系统的安装,31/133,FORTRAN编译系统的安装,32/133,FORTRAN编译系统开始运行,33/133,FORTRAN编译系统开始运行,Compaq Virsual Fortran6.5,34/133,FORTRAN编译系统开始运行 文件新建项目Fortran Console App,自动创建文件夹,35/133,FORTRAN编译系统开始运行,在6.5版本中,Workspace里可以包含多个Projects,但每一个Projects里只能包含一个主文件(EXE)。而在PS4.0中,只有项目空间Projects Workspace,所以在此只有一个主文件,该文件名就是项目空间名。,工作空间、项目、 文件之关系 Go,36/133,FORTRAN编译系统开始运行 文件新建File选择格式填写文件名,Compaq Virsual Fortran6.5,37/133,POWER STATION4.0,38/133,POWER STATION4.0,39/133,FORTRAN编译系统开始运行,Compaq Virsual Fortran6.5,40/133,FORTRAN编译系统建立源文件,Compaq Virsual Fortran6.5,41/133,FORTRAN编译系统保存源文件,42/133,FORTRAN编译系统开始编译,43/133,FORTRAN编译系统编译,44/133,FORTRAN编译系统连接装配,45/133,FORTRAN编译系统连接装配,46/133,FORTRAN编译系统开始运行,47/133,FORTRAN编译系统显示结果,48/133,总结上机步骤:,建立一个新的Project(File/New,选择Project卡,选择Fortran console program格式,给出Project名), Project会自动保存 *.dsw 文件 生成一个新的程序文件(File/New,选择File卡,选择两种格式之一,并给出文件名),或者是插入一个已有的文件(Project/add to project/Files)。单击File/Save Workspace,就保存Project所包含的程序文件。 在Builds菜单上直接选择Execute就会自动完成编译到执行全过程,也可以选择Build只做编译。 要编写新的程序就要另建一个Project,也可更换Project中的文件。注意不要把两个独立的程序文件放在同一个Project里(否则编译时出错)。 下次要修改程序时,直接File/Workspace打开*.dsw中的Project工程文件。,49/133,Fortran PowerStation 4.0,其它编译环境:,GO CVF6.5 DOS 环境,GO PS4.0 环境,50/133,FORTRAN程序举例,Exa3_1.for (P46) Exa3_2main.for(P47) Exa3_2sub.for(P47) (实例演示),51/133,关于Debug格式与Release格式,debug格式:在开发过程中便于程序调试的环境; Release格式:经过优化后的环境,执行效率高(高于debug很多倍)。,可在这两项中设置: 1)Configuration 2)Set Active Configuration,52/133,3.3 FORTRAN书写格式,FORTRAN程序代码的编写格式有两种: Fixed Format(固定格式)本教材采用 扩展名:.F或.FOR Free Format(自由格式4.0版本以上) 扩展名:.F90,53/133,3.3 FORTRAN77书写格式(固定),Fortran一行80列,分为四个区域: 1)标号区(15列):15位无符号的整数,中间空格不起作用(100、 100、1 0 0是相同的)没有大小顺序。标号区第一列必须是空格、数字、C、*、!【F90:数字之间不能有空格;以!作为行注释】; 2)续行标志区(第6列) 非空格或非0的字符:作为上一行的继续行的标志。,看图示,54/133,3.3 FORTRAN77书写格式(固定),Fortran一行80列,分为四个区域: 3)语句区(第772列) 通常一行只写一条语句。当多条语句写在一行时,中间用分号隔开。 空格是被忽略的,如s in ( x) 是有效的。 4)注释区(第7380列):不是语句的部分,除打印清单外,编译系统不予处理(输入的内容为红色)。,55/133,3.3 FORTRAN书写格式 Fixed Format(固定格式),56/133,3.3 FORTRAN书写格式(For FORTRAN90),Free Format(自由格式PASCAL 、C使用的格式) 基本上允许非常自由的编写格式,它没有规定每一行的第几个字符有什么作用,但要注意: 1.!感叹号后面的文本都是注释(行内也一样)。 2.每行可以编写132个字符。 3.行号放在每行语句的最前面。 4.某一行程序代码的最后是符号如果某一行程序代码的开头是&,则它会和上一行连接(表明是拆分关键字,在CVF6可以不用)。 5.程序命令之间的空格是无意义的。,57/133,3.3 Fortran书写格式(For FORTRAN90),!Free Format program main write(*,*)”Hello” !这也是注释 write(*,*)& ”Hello” wri& &te(*,*)”Hello” !CVF6中可以不要这个& end,58/133,!Free Format program main write(*,*)”Hello” write(*,*)& ”Hello” wri& &te(*,*)”Hello” end,59/133,FORTRAN77字符集:,编写Fortran77程序时,所能使用的所有字符及符号就是F77的字符集: AZ(az)程序中不区分大小写 26个 09 10个 空格 = + - * / ( ) ,:. $ 22个 _(下划线)、!、”、%、&、;、? 注意: 1、在FOR源程序中,只能使用以上字符 2、字符型数据内可以出现任意字符(包括汉字),next,60/133,3.4 FORTRAN源程序输入方式,早期卡片输入或数据盘(早已淘汰) 键盘输入: 1)各种编辑环境 2)在编译系统提供的编辑器输入 其它媒体输入 操作过程: 1)输入源程序 2)编译 3)连接 4)运行,61/133,源程序 *.FOR*.F90,编译,连接,运行,目标程序 *.OBJ,可执行的 目标程序 *.exe,以Fortran.for为例解释,Next-常量,62/133,3.5 常 量,在程序运行中,其值始终不变的量。,常量,整型常量,实型常量,双精度常量,复型常量,逻辑型常量,字符型常量,前4种属于算术型常量-常数,后两种为非数值型常量。,C语言中的常量: 1:普通常量; 2:符号常量; 3:枚举常量。,63/133,先看看C语言的数据类型,基本型: 整型(长、基本、短以及是否带符号,有8种之多) 字符型(字符、字符串) 实数型单精度、双精度 枚举型enum(erate):一个变量只有几种可能的值 构造型: 数组型 结构体型 联合体型union: (类似Common语句) 指针型: 空类型:,C语言中的数据类型比FORTRAN77要多,但FORTRAN90基本上都有和C对应的数据类型.,64/133,3.5.1 整型常量,整型常量(也称整型常数、整数)-Integer:它 为一个正的或负的或零的数。在程序中的常数的各数字之间的空格不起作用:132 和1 3 2等价,也不能将12000写成: 12,000; 在早期微机中,一般使用两个字节(16BIT)存储一个整型数(子集);而现在高版本的编译系统,则为:(-231231-1),0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,符号位 0-正 1-负,数值,215 1=32767(正整数) -215 =-32768(负整数),存储整型数由计算机的字长而定,在固定格式可以,自由格式则出错(此处链接见例),65/133,附:在FORTRAN90中的定义种别:,整型数据:微机支持3种kind_Value:1,2,4 1 范围: -128127 2 范围: -3276832767 4 -21474836482147483647(-231231-1) Integer 默认kind_Value的值为4,注: 在Fortran 77中整型数只是十进制的.而在C中,整型数除了十进制外,还分为8进制和16进制: 01238进制数 0x12316进制数,而且还有: (F90中与C相似) 基本整型、短整型、长整型之分。,66/133,在FORTRAN90中的定义种别:,Integer(kind=2) a, b, c, d, e !或Integer(2):a,b,c,d,e !而F77是:Integer*2 a,b,c,d,e Read(*,*) a, b, c, d, e Print *,a, b, c, d, e End,程序中将变量a-e定义为16位整型量,则输入的范围在-3276832767以内.,67/133,整型量溢出,溢出: 上溢-出错处理; 下溢-按0处理,68/133,3.5.2 实型常量,实型常量也称实数(Real):有两种表示形式 1) 小数形式:+1.8, -1.8, 0.0, 10., .36, .0 均为合法 2) 指数形式:用E来表示10为底的指数: 13.7×108 13.7E8 0.91×10-30 0.91E-30 不合法:3E5.6 8.6E-3.7 E12 3) 指数形式在计算机中的表示方法:一般是 使用4个字节来表示一个实数的。 实数在 计算机内存中一律以指数形式存放。,69/133,3.5.2 实型常量,实数的表示中要注意点: 可以无整数部分,但不能全无(整数和小数); 可以无小数部分或指数部分,但不能全无; 如:123450.0 (无指数部分) 0.(无小数部分) 12345E+01 (无小数点) 3. (无小数部分) .12345E+6 (无整数部分) .5 (无整数部分) 12345. E+1 (无小数部分) 非法:-E+1 (无整数部分也无小数部分) 0.1E-0.5 (阶码不是整数) 0.1E+K (阶码应该是常量),70/133,3.5.2 实型常量,理解实型常量在内存中的存放形式:,指 数,数符,数 字 部 分(小数部分),表示一个数:0.1357821E-05,- 0 5,+,1 3 5 7 8 2 1,隐含小数点,71/133,3.5.2 实型常量,具体对于4字节存放(0.111)2×25第一字节表示数的符号位、指数的符号位、指数;后面的三个字节表示该数的数字部分;,+ 0 0 0 0 1 0 1,1 1 1 000000000000000000000,第一个字节,后三个字节,我们可以通过Bitview查看,72/133,3.5.2 实型常量,实数在计算机中可以有多种形式表示: 1234.512345 × 10-1 1234.5123450 × 10-2 在数据输入(或变量赋值)时系统认为都是有效的. 但在计算机输出时,通常采用以下两种输出形式: (称之为“格式化”、“规格化”后输出) (1) 数字部分的值小于1。小数点后第一位是非 零的数字; (2) 数字部分的值大于1(小于等于9)。小数点 前是一位非零的数字;,73/133,Next变 量,在PS4中,实数的范围: 1.18*10-38至3.40*10+38,74/133,3.6 变 量,3.6.1 概念 变量是指在程序运行期间其值是可以变化的量。 X=123.4 X=456.7 3.6.2 变量名 每一个变量需要一个名字来标识。 *命名规则(对于F77): 1)第一个字符是字母;(F90添加了$) 2)在一个字母后面可以跟15位数字或字母 3)有效变量名长度为6个字符(在现在的系统 中是不超过31个字符 F90),程序运行的每个瞬间,一个 变量只能有一个确定的值。在同一个程序单位里不能用同一个变量名来表示两个不同的变量 。,75/133,3.6 变 量,合法的变量: A X1 ABCD CHINA RATE TOTAL S123 MYNAME $AB $_12 etc. 不合法的变量: 3X X+Y ZHU-SY -6T U.S.A Doc.Li 由于变量的有效长度为6个字符,则: SHANGHAI=6.5 SHANGHONG=8.8 实际上是一个变量:SHANGH,在PS之后的版本就没有这个限制,使用下划线是可以的,76/133,*使用变量名的注意事项: 1)变量名字母不区分大、小写; 2)在变量名中有否空格是等效的(只对固定格式); 3)取名时要便于理解和记忆; 4)FORTRAN函数名和语句定义符均可以作为变量名.但在同一程序单位里的变量名、函数名、语句定义符不能为同名(下面是错误的): 如: sin=3.5 sum=sin * sin(2.0) print * , print,Next,注:在C中,变量名如果不定义就不能算是变量。而且还有大、小写之分。 (Go),这样是可以: SIN=3.5 SUM=SIN*SIN PRINT *,SUM END,77/133,3.6 变 量,3.6.3 变量类型 变量和常量一样,也有类型之分(变量就是用来存放数据的)。,变量,整型变量,实型变量,双精度变量,复型变量,逻辑型变量,字符型变量,在程序中应当说明变量的类型,便于程序确定所占字节数和数据存储形式 (为准备存储空间)。,78/133,3.6 变 量,3.6.3 变量类型 在程序中规定变量类型的方法有以下三种:,隐含 约定,类型说 明语句,IMPLICIT 指定,79/133,3.6 变 量,3.6.3 变量类型 在程序中的变量名,凡是以字母I、J、K、L、M、N开头的,就认为该变量是整型变量: I、J、IMAX、NUMBER、LINE、JOB、K1都是整型变量。同时也表明,除了上面I-N之外就都是实型的类型(尚未用类型说明语句时).,隐含约定,I-N规则,80/133,3.6 变 量,3.6.3 变量类型 为了改变I-N规则的约束,可以使用类型说明语句: Integer a, sum, total 本来按I-N规则a, sum, total是实型变量,经过Integer后就变成了整型变量。同样使用: Real IMAX, NUM, JOB 就变成了实型变量。 Fortran 中的六个类型说明语句(基本):,类型说明语句,Double precision,Real,Integer,Character,Logical,Complex,81/133,3.6 变 量,3.6.3 变量类型 使用隐含指定语句可以将某一个字母开头的全部变量指定为所需的类型(类似归类法)。如: Implicit integer (A, C, T-V) Implicit Real (I, J) 还可以: Implicit Integer (a, b), Real (I, K), Integer (X-Z),IMPLICIT指定,82/133,3.6 变 量,3.6.3 变量类型 五点说明(很重要!必须掌握): 1)三种方法的优先级: 如:Implicit Real (I, J) Integer Imax 在程序中的结果是,Imax是整型(尽管语句1指明I开头的变量名为实型,但级别没有语句2高),类型说明,Implicit,I-N规则,高,中,低,!,83/133,3.6 变 量,2)类型说明和Implicit语句都是非执行语 句,作用是通知编译系统按规定的类型分 配内存单元和数据的存放方式; 3)类型说明只在本程序单位内有效(同名的 变量名在主程序和子程序中是两个变量) 4)Implicit语句和类型说明语句应在本程序 单位中所有执行语句之前, Implicit语 句又应在类型说明语句的前面(在Implicit 归类后,使用类型说明选出一部分). 5)如果使用了Implicit None 则取消I-N规则, 但所有变量都必须用类型说明语句说明。,Implicit None Real Max,Good Integer Imin, Work,84/133,由于使用: implicit none 而没有指明数据类型,所以出错,为什么编译出错?,85/133,IMPLICIT 应在类型说 明语句之前!,86/133,特别说明:I-N规则尽管是FORTRAN独有的特点,但一个良好编程习惯的人,应该养成对任何变量都进行类型说明,以免造成数据类型混乱而产生不正确的计算结果。,87/133,对FORTRAN90中变量的说明:,1.在变量说明的同时,可以给变量赋初值; INTEGER:I=5,J=126 REAL:X=7.2,Z,W=774.2 2.在说明变量的同时也可说明其种别; Integer(kind=2) a, b, c !如果同时赋初值则应: Integer(2): a=1, b=2, c 3.在说明变量的同时,还可说明变量的属性 INTEGER,PARAMETER:I=5,J=123 REAL,DIMENSION(1:10):A,函数,注意:类型说明后不要用括号,如:real(max1,max2) 在编译时会出错!,88/133,3.7 FORTRAN函数(内在函数),由FORTRAN77 系统为用户提供的、为解决某一特定计算任务的程序段或特殊的子程序。(35个) 这些函数都存放在磁盘上,编译时将这些函数的二进制指令代码插入到目标程序中; 用户只要按该函数的调用要求填写函数表达式就能获得计算结果; 函数具有一个或多个自变量,当要求多个自变量时,变量位置的顺序不能随便改变; 函数的自变量是有类型的,函数值也是有类型的.,89/133,3.7 FORTRAN函数(内在函数),自变量可以是常数、变量、表达式: SQRT(4.0) SQRT(A) SQRT(3.0+3.0) 注意函数的自变量类型,如:SQRT(I)不合法,因为SQRT() 函数的自变量不能为整型变量 三角函数中的度数指的是“弧度” INT函数就是简单地截除小数部分 SIGN函数:SIGN(A, B) 就是将B的符号传送给A,通常用于检查A与B是不是相同的符号:如果如下的等式SIGN(A, B)=A成立,则A与B是同符号 在FORTRAN中,函数名分为“通用名”和“专用名” (见函数表).一般我们在编程时多数用通用名。,GO,不是四舍五入,角度=弧度*180/,90/133,FORTRAN内在函数的分类:,基本算式函数; 类型查询函数; 基本字符操函数; 其它字符操作函数; 位操作函数; 向量和矩阵操作函数; 数组运算、查询函数; 数组构造与处理函数。,91/133,MOD():函数值整型 它的专用名有: AMOD():函数值实型 DMOD():函数值双精度型,A=5.5 B=5.12 N=5.0 I=6.6 C1=Amod(A,B) C2=Mod(I,N) NC1=Mod(I,N) Print *,C1,C2,NC1 End,92/133,自然对数,常用对数,CMPLX(a) CMPLX(a1,a2),常用数学内在函数,93/133,3.7 FORTRAN函数(内在函数),比较说明: 对于I=Mod(m,n),余数送I中; 而在C语言中,I=M%N,其中M和N不能为实数,也就是说实数不能求余运算. 在FORTRAN中没有这个限制: 如:A=10.29 B=15.55 C=Mod(A,B) = 10.29 如:A=10.29 B=5.54 C=Mod(A,B) = 4.75,94/133,关于Fortran90位操作函数举例,integer(1):A,B,C ! (必须定义为整型数) A=b'10101100' B=b'11101101' write(*,“(1x,B8)”) Iand(A,B) !按位“与” write(*,“(1x,B8)”) IOR(A,B) !按位“或” write(*,“(1x,B8)”) IEOR(A,B) !按位“异或” write(*,“(1x,B8)”) Not(A) !按位“非” write(*,*) Bit_size(A),Bit_size(Not(A) !A的位数 write(*,*) Btest(A,4) !判断A的第四位是否为1 write(*,“(1x,B8)”) IBCLR(A,2) !将A的第二位置零 write(*,“(1x,B8)”) IBSET(A,0) !将A的最低位置1 write(*,“(1x,B8)”) Ishft(A,1),Ishft(A,-1)!A左移、A右移 write(*,“(1x,B8)”) IshftC(A,1,4),IshftC(A,-1,4)!A的第四位 End !左移,A的第四位右移,95/133,算术表达式,96/133,3.8 算术表达式,3.8.1算术运算符和运算优先级 可以使用五种算术运算符号: 加(+)、减(-)、乘(*)、除(/)、乘方(*) 注意:A*-B 是不合法的,应该写成(A*(-B)); 两个运算符不能相邻(但在CVF6中作了修改)。 优先级次序:,高 *乘方,中 * / 乘除,低 + - 加减,当幂为小数时也可以用于求平方根。 *0.5=sqrt(4.0),97/133,3.8 算术表达式,3.8.2 算术表达式的含义和表示方法 表达式是运算符和运算元素(常量、变量、函数、数组)连接起来的具有数值的式子。 基本特征: 1)运算元素都是算术量; 2)运算符是算术运算符; 3)表达式的值是一个算术量(数值) (A-B)/C * * 2+SIN (X+Y),98/133,3.8 算术表达式,算术表达式书写时的注意事项: 1) 一般除号( / )前后运算元素用括号括起来; 2)乘号(*)不能省略; 3)无大中小括号之分,一律用小括号; 4)对多次乘方需按“先右后左”的原则处理; 5)注意单目运算符(-5,+10,-A)。-A就相当于0-A 如:-A *2相当于0-A*2 ,也就是-(A*2) 而不是(-A)*2, 不要混淆。 6)算术表达式求值运算的优先次序 高 低,1)括号; 2)函数; 3)*; 4)* / ; 5)+ -,链 接,99/133,3.8 算术表达式,3.8.3 表达式运算中的类型问题 FORTRAN 允许不同类型的算术量之间的算术运算(整型、实型、双精度、复型)。如 2*3.5 FORTRAN 规定如下: 1)同类型的算术量之间运算的结果仍然保持原类 型。特别规定:两个整数相除的商也是整数。 (1/2的值是0) 2)如果参加运算的两个算术量为不同类型,则编译 系统会自动将它们转换成同一类型然后再进行运 算。规则是: 将低级类型转换成高级类型,100/133,3.8 算术表达式,3.8.3 表达式运算中的类型问题 四则运算规律(或乘方运算规律),整型,实型,整型,整型,实型,实型,实型,实型,运算量2 (基数类型),运算量1 (指数类型),运算结果 (乘方运算结果),101/133,3.8 算术表达式,3.8.3 表达式运算中的类型问题 类型的转换是从左而右进行的。在遇到不同类型的算术量时才进行转换。如下例: 5*6.5 是先将5转换为5.0(此时就遇到不同类型的算术量),再乘以6.5等于32.5。 但注意: 1/4*20.0时,由于1/4两个是同类型的算术量,结果等于0,再0*20.0,结果为0,如:A=5/2 2.000000 B=5/2.0 2.500000 C=5.0/2 2.500000 D=5.0/2.0 2.500000 I=5.0/2 2 J=5.0/2.0 2,102/133,3.8 算术表达式,3.8.3 表达式运算中的类型问题,1)在FORTRAN中没有像C中有强制类型转换: (char)(x+i) 将表达式x+i的类型转换为char类型 2)在FORTRAN中也不能数字与字符混合运算: 1+3.14159+“ A” 这在c中都是可以的 其结果是:69.141586,103/133,3.8 算术表达式,3.8.4 运算的误差问题 1)整型量的运算是准确的,没有任何误差; 2)实型量的运算会出现误差(实数有效位数 的限制)。因此,在书写表达式时,应尽 量使每一次运算结果都在有效位数范围之 内,也就是尽量不要使两个相差很大的数 值直接相加或相减运算。 同样:理论上是相等的数,在实数中不能直接 判断是否相等。而是使用绝对值之差 |A-B|作为判断条件。,(sqrt(4.1234567)*2.0-4.1234567不为,GO,104/133,I=1/3+1/3+1/3 I=0 A=1/3+1/3+1/3

    注意事项

    本文(Fortran程序设计初步.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开