您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > Fortran程序总结
11.行的书写(行的长度、分行、续行)一行可以是0~132个字符,空格有意义,语句最长不超过2640个字符一行可以有多个语句,用“;”分隔一个语句可分行写,读行标记为&(放在尾部),但如为关键字,首尾均加&。最多可有511个续行。2.说明语句必须出现在可执行语句之前,格式说明语句(FORMAT语句)除外。3.注释标志符:自由格式:!固定格式:C*语句分隔符:分号;(仅自由格式可以使用)续行符:自由格式:&申明标号:1到5位无符号整数空格:关键字、变量、常量内部不能用空格,但相邻两者之间须用空格4.信息处理的分类:数值处理和信息处理现代计算机工作原理:程序存储和程序控制(冯·诺依曼)1、运算器——算术运算、逻辑运算2、控制器——根据指令控制计算机工作运算器、控制器和寄存器称为中央处理器CPU3、I/O设备——提供数据传输服务4、总线——数据传输的公共通道1.机器语言:二进制代码形式,可以被计算机直接执行,不可移植2.汇编语言:用助记符来代替机器指令,容易记忆,不可移植3.高级语言:接近自然语言(英语)的程序设计语言,又称算法语言,易学、易用、易维护,可移植性好例:FORTRAN、BASIC、PASCAL、C、LISP、PROLOG等5.FORTRAN90程序是一种分块结构,由若干个程序单元块组成:主程序、外部子程序、模块、块数据单元无论是主程序单元,还是子程序单元,都是独立的程序单位,应该独立编写,它们的形式相似。非语句行:注释语句:!后的所有字符都被编译器忽略。可独占一行,也可在其它语句之后,空行为注释行(固定格式用C和*)6.常量的定义:常量是程序执行过程中不能变化的量。基本数据类型有五种:整型、实型、复型、字符型和逻辑型前三种属于数值类型,后两种为非数值类型,主要用于文字处理和控制。FORTRAN90通过KIND值确定整数的存储开销、最大位数和取值范围,如表所示。缺省KIND值则取默认值4。KIND值字节数二进位数取值范围118-128~1272216-32768~327674432-2147483648~2147483647格式:SELECTEND_INT_KIND(N):功能:返回范围在-10N~10N的整数的kind-Value在FORTRAN90中,也可以表示二进制、八进制、十六进制形式的无符号整数。其形式如下:二进制数:B’101101’或B”101101”八进制数:O’76210’十六进制数:Z’1FA2’2实型常量指数形式⑴数字部分:小数形式实数或整数⑵指数部分:只能为整数错例:4E5.6⑶数字部分不能丢;例:10-4:E-4(错)1E-4(正确)⑷以标准化形式(规格化指数)输出(1或=1,此处分为两类)1。数字部分的值小于1,且小数点后的第一位数字非0例:0.743643E-12(正确)21.835E-12(错)2。数字部分有且仅有一位非零的整数。例:7.43643E-12(正确)0.21835E-12(错)一般实数范围:-1038~+1038,有效位7~8位也有的系统允许数的范围更大,可以超过10100。上溢:overflow下溢:当0处理为了能得到理想的范围和有效数字,要求说明种别类型参数值。(书上有误)例:INTEGER,PARAMETER::long=SELECTED_REAL_KIND(8,88)则符号常数long提供了至少8位精度,以及-1088~+1088的值的范围。以此说明的实型常量:1、PRECISION(4.37_long)精度至少为82、RANGE(4.37_long)范围至少88次冪常用实数一般分为两种:real(4)单精度(默认)real(8)双精度实数种别为8时常量的表示(双精度数)有效位:15位;数字部分D±指数例:1.2D2字符常量长度:字符串内字符的个数空格算一个,起止界不算,长度可为0。(空串’’或)用于标识一个程序成分,例如符号常量、变量、派生类型等。对于名字有下列要求:1.名字的长度不能超过31个字符2.名字的组成成分可以是字母、数字和下划线3.名字的第一个字符必须是字母4.在名字中不能出现空格提倡使用具有一定含义的名字,提高程序的清晰度和可读性。变量字母、数字、下划线组成字母开头长度1-31个Fortran90关于变量说明的新功能:1.在变量说明的同时,可以给变量赋初值。INTEGER::I=5,J=126REAL::X=7.2,Z,W=774.22.在说明变量的同时也可说明其种别REAL(KIND=4)::X,Y或REAL(4)::X,Y3.在说明变量的同时,还可说明变量的属性INTEGER,PARAMETER::I=5,J=1233REAL,DIMENSION(1:10)::A程序单元概念程序单元是FORTRAN语言的基本成分。程序单元可以是主程序、子程序、模块或块数据程序单元。子程序可以是函数子程序或子例行子程序。模块包含的说明是对其它的程序单元形成可访问性。块数据单元用来对有名公用区中的数据对象赋初值。(F90中不提倡使用)•主程序是不包含SUBROUTINE、FUNCTION、MODULE或BLOCKDATA语句作为其第一条语句的程序单元。主程序其他限制•主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。•程序名对可执行程序是全局的,而且不得于该可执行程序中的任何其它程序单元名、外部过程名或公用块名相同,也不得于主程序内的任何局部名相同。•在主程序的作用范围内的说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语句或它们的等价属性,在主程序内SAVE语句不起作用。•主程序内的任何内部过程的定义必须跟在CONTAINS语句之后。•子程序是可以完成某一独立算法或功能的程序单元,但它功能的具体体现要通过主程序(或子程序)的调用来实现。•按子程序与主程序的位置关系分为内部过程和外部过程。•内部过程可以出现在主程序、外部过程或模块内。•模块也是一种在程序单元之外独立编写的程序单元。它有独特的形式,即模块程序单元内没有可执行语句,除了说明语句外,最多包含内部过程。模块的主要作用是供其它程序单元引用。程序单元引用模块,实际是将模块内的全部语句复制到本程序单元。因此模块起共享及复制的作用。块数据程序单元对有名公用块内的数据对象提供初值。•支持程序的最基本的语句主要有四种:类型说明语句、赋值语句、输入语句、输出语句。•整型数据运算速度快,在机内存储没有误差,但能表达的值的范围较小;实型数据能表示小数、分数及不同的精度,表达的值的范围大,但数的外部表示和机器存储会有误差。例,10.2,在机内表示可能为10.999998。使用实数时,尽量避免作相等或不相等的比较例:A是实型变量,对其与10.2作相等与否比较,不能写成:IF(A==10.2)PRINT*,A应改写为:IF(ABS(A-10.2)1.0E-6)PRINT*,A•有关种别的函数•KIND(X)•SELECTED_INT_KIND(N)•SELECTED_REAL_KIND(N,M)•测试标准种别:•KIND(0)4(整型)•KIND(0.0)4(实型)•KIND(.FALSE.)4(逻辑类型)•KIND(‘A’)1(字符类型)••4•各种基本类型种别可取值•INTEGER:1,2,4(默认)•REAL:4(单精度,默认),8(双精度)•LOGICAL:1,2,4(默认)•COMPLEX:4(单精度,默认),8(双精度)•CHARACTER:1•PARAMETER属性•(1)功能:用一个符号代表一个常量,称为符号常量(常数)•(2)写法:Real,Parameter::G=9.8&&说明类型时赋值•(3)位置:位于可执行语句之前•使用规则•①程序中不得改变其值•②与普通常量的区别:不作语句标号和FORMAT中重复系数•③类型:一般采用I-N规则,否则,需先定义其类型•例:parameter(n=5)•***/+-(正,负,加,减)3.5+2*A/B+V**2④②③⑤①•FORTRAN90配置的函数称为内在函数。内在函数分为三种:•基本函数•转换函数•查询函数•⑴三角函数单位为弧度sinDcosDTAND可以为度(F90)•(2)某些函数参数只能为实型如:log(2.0)(loG(2)错)•(4)自变量可以是有值的常量、变量、表达式例:ABS(B**2+SIN(A+B))•INT(X,KIND):将X值转换为整型,以KIND的值作为种别参数•REAL(X,KIND):将X值转换为实型,以KIND的值作为种别参数•CMPLX(X,Y,KIND):将X,Y转换为复型,以KIND的值作为种别参数•对于连续的乘方运算,采用先右后左的方式•例:3**2**3,先计算2**3=8,再进行3**8=6561•运算对象类型相同时,运算结果的类型为同一类型注意有效位数的限制引起的误差注意:5/2=21/2=0!!•计算机存储数据的有效位数是有限的•一般为十进制数的6至7位•例:1.0/3.0的结果在内存中不是0.3333333333333…,而是0.3333333•注意溢出•计算结果超出了存储单元所允许的数的范围5•程序中的表达式,要避免两个很大的数相乘、或一个很大的数除以一个很小的数赋值号左边只能是变量名(或数组元素名、数组名),不能是表达式类型要求逻辑型、字符型的赋值语句要求“=”两边类型相同数值型赋值,不区别整型、实型和复型,允许两边的数值类型不同执行赋值语句后,把e的值转化为V的类型后再赋值给VV是整型、e是实型,把尾数丢掉化为整型后赋值4、种别方面字符型要求种别相同其余类型的e、V种别允许不同执行赋值语句后,e的值的种别转化为V的种别后再赋值READ中的输入表的内容可以是:变量名,数组名,数组片段名,结构成员名,隐循环表(隐DO表),不能是表达式变量名,数组名,数组片段名,结构成员名,隐循环表(隐DO表),常数,函数和表达式。输入的数据必须是常数,不能是变量和表达式如输入2+1,则出错。出错信息:run-timeerrorF6601:Read(con)-InvalidInteger含义:输入了无效的整数4.输入数据个数:1)不得少于变量的个数;2)可分行输入;3)多余的数据不起作用空格可以多个,/表示输入数据结束,后面的数据被取消,没有输入数据的变量值为原值;Read*,A,B,C输入:2,1/3结果:A=2B=1C=06、如果几个连续变量需要赋同一个值,可以使用重复因子r,即r*[c]:r为重复数4*0.5,2*3,2*’AB’,3*(1.0,-1.0)表控输出的格式类型:复型:带()输出逻辑型:T,F输出一个字符字符型:‘’丢失,采用左对齐输出一行显示不下,数据自动换行输出多个PRINT语句:每个开始输出一个新的记录riw输出1.数字在指定的区域内右端对齐,不足w则左边补空格。2.负数的符号也包含在字段宽度内3.如果应输出的列数超过了规定的字段宽度,则不输出有效数据,以w个*填充。Riw输入543□5430□21021062345623451)实数的输入(三种方式)READ(*,’(F4.1,2F10.6)’)A,B,C输入:□□12□□4567□□□□□□-83527□□则a=1.2;b=45.67;c=-8.3527!!不带小数点输入不带小数点,由则编辑符指定位置自动加上小数点。按w截取数据,由d决定小数点的位置,按右对齐,空格当0READ(*,’(F4.1,2F10.6)’)A,B,C□1.2□□□□□45.67□□□-8.3527!!带小数点。输入的数据本身带小数点,如果编辑符中规定的小数点位置和数据本身的小数点位置有矛盾,按“自带小数点优先”原则,d不起作用,小数点记入w中(3)READ(*,’(F4.1,2F10.6)’)A,B,C1.2,45.67,-8.3527(表控格式)用自由格式,逗号分隔,但每个数连同后随逗号必须=w,否则出错。d可以为零但不能省略X=25.6Y=-378.456Z=873.2PRINT’(F5.1,2F8.2)’,X,Y
本文标题:Fortran程序总结
链接地址:https://www.777doc.com/doc-2872400 .html