Fortran程序设计基础.ppt

上传人:max****ui 文档编号:6345847 上传时间:2020-02-23 格式:PPT 页数:40 大小:410.31KB
返回 下载 相关 举报
Fortran程序设计基础.ppt_第1页
第1页 / 共40页
Fortran程序设计基础.ppt_第2页
第2页 / 共40页
Fortran程序设计基础.ppt_第3页
第3页 / 共40页
点击查看更多>>
资源描述
第二章Fortran程序设计基础 本章主要包括以下内容 1 程序书写2 字符集及标识符3 数据类型4 声明的有关事项5 算术表达式6 表控输入 输出语句 第一节程序书写 一 程序构造形式例2 1简单Fortran程序的构造形式PROGRAMMONEY CalculatesbalanceafterinterestcompoundedREALBALANCE INTEREST RATEBALANCE 1000RATE 0 09INTEREST RATE BALANCEBALANCE BALANCE INTERESTPRINT Newbalance BALANCEENDPROGRAMMONEY PROGRAM关键字标识Fortran主程序 后接程序名 这一行是可选的 第二行是注释 不参加编译 REAL是声明语句 将后边的变量声明为实型数 空行不参与编译 只是增加程序的可读性 这四行是非执行部分 之后的部分到END语句之前为执行部分 根据上述的程序书写 给出简单Fortran90程序的构造形式 PROGRAM程序名 声明语句 执行语句 END PROGRAM程序名 方括号内的部分是可选的 END语句是唯一必须的 表示程序编译到此结束 END语句中的程序名可以省略 但若出现程序名 必须同时出现PROGRAM关键字 对于可选部分 如果缺省 则按照约定 隐含 规则进行 二 语句语句是Fortran程序的基本单位 一条语句可包含0 132个字符 Fortran77规定 一条语句的不同部分应从特定的列开始 这样的书写格式称为固定格式 相应的程序文件扩展名为 f或 for Fortran90无此限制 自由格式 相应的文件扩展名为 f90 除赋值语句外 所有的语句都从一个关键字开始 例如 例2 1中出现的关键字 PROGRAM REAL PRINT和END 一般情况下 每行一条语句 若一行有多条语句 它们之间以分号间隔 可以将几条简单的赋值语句写在一行上 例如 A 1 B 1 C 1也可以只保证一行一条语句 例如 A 1B 1C 1这完全根据个人的书写习惯决定 假如一条语句一行写不完 允许出现续行 但要求被续行最后的非空白字符为 例如 A 174 6 T 1981 2 3续行从下一行的第一个非空白字符开始 若下一行的非空白字符为 则续行从该字符后的第一个字符开始 A 174 6 T 1981 2 3Fortran90允许出现多达39个续行 三 空白的作用 空白没有意义 不参加编译 适当地运用空白空间 可以增加程序的可读性 例如程序块中的代码缩进 DO1I 1 10DO2J 1 20 2CONTINUE1CONTINUE在代表有意义字符序列的记号 token 内 比如 标号 关键字 变量名 操作符等不允许出现空白 例如 INTEGER BALANCE 都是非法的 一般情况下 记号之间需留有空白 例如 30CONTINUE是非法的 因为标号30和关键字CONTINUE是两个独立的记号 有的记号间的空白是可选的 例如 ENDPROGRAM和ENDPROGRAM是合法的 四 注释Fortran90只提供了一种注释方式 以感叹号开始的语句作为注释 注意 字符串内的感叹号除外 如thisisa subroutine注释可以是一整行 也可以是空白行 注释在编译时被忽略 五 固定格式例2 2CFIXEDFORMATDEMOPROGRAMFixedPRINT Hello World PRINT1010FORMAT 1x Thisprogramiswritteninfixedformat END固定格式说明 一行共80列 4个区第1 5列 标号区 可以空白 也可以出现符号 第6列 续行标志区 可以空白 无续行 非0字符 续行 第7 72列 语句区 语句区的书写可以从任意一列开始 空白编译时被忽略 一行只能书写一个语句 第73 80列 注释区 信息提示 不参与编译 固定格式是为配合早期使用穿孔卡片输入程序所发明的格式 这里介绍固定格式 只是让大家对Fortran77程序有所了解 建议大家在编写程序时采用前述地自由格式 固定格式尽管有其过多的限制 但由于具有一定的规范性 方便程序的编写和检查 一 字符集Fortran90字符集由下列字符组成 1 26个英文字母 A Z和a z 2 数字0 9 3 下划线 4 特殊字符空格 等等 详见表2 1所示 第二节字符集和标识符 二 标识符标识符命名 变量 常量 例程等 时 须以字母 A Z a z 开头 后可接多达30个字母 A Z或a z 数字 0 9 或下划线 例如 MASS rate Npts I9J7 Time Rate 有下列几点值得注意 1 只能以字母开头 3M Right为无效标识符 2 不能含有空格字符 TimeRate为无效标识符 3 不区分字母大 小写 Vel VEL vel为同一标识符 4 长度限定为31个字符 Fortran77为6个字符 5 避免与关键字 标准例程重名 数据类型的两层含义 1数据可以取哪些值 2数据可以进行哪些运算 例如 整数取0 1 2等 可以进行算术运算 数据类型的两大类型 1数值型 包括整型 实型和复数型 2非数值型 包括字符型和逻辑型 或布尔型 共计5个固有 内建 数据类型 除了固有类型之外 用户可以定义自己的数据类型 自定义数据类型或派生类型 第三节数据类型 一 整数类型1整型变量声明整型变量的一般形式为 INTEGERIINTEGER KIND n In是种类参数 取值1 2 4 8 种类参数 KIND 是Fortran90新添加的特性 通过规定存储数据所用的内存字节数来控制数据的取值范围 1 2 4 8为整数在内存中的存储字节数 如果种类参数没有特别规定 则取缺省值 缺省值受编译器选项影响 若没有编译器选项规定 32位系统下缺省值为4 不同种类参数的整数取值范围详见表2 2 KIND函数的功能 在Fortran90中KIND函数用来获取缺省种类参数的值 HUGE函数的功能 在Fortran90中HUGE函数用来获得取值范围的上限 上限加1为取值范围的下限 程序代码段如下 INTEGER 8 I Big SmallBig HUGE I Small Big 1PRINT Largest BigPRINT Smallest Small根据表2 2 INTEGER 8 表示整数I的取值范围为 9223372036854775808 9223372036854775807根据HUGE函数的定义 则BIG 9223372036854775807SMALL 9223372036854775808 平台 处理器和编译器 不同 相同的种类参数可能有不同的取值范围 缺点 影响程序代码的可移植性 Fortran90提供SELECTED INT KIND函数 即 result SELECTED INT KIND r result代表整数n在范围 10r n 10r内的种类参数例如 Result SELECTED INT KIND 3 2Result SELECTED INT KIND 8 4Result SELECTED INT KIND 10 8Result SELECTED INT KIND 19 1返回 1表示没有可用的种类参数 例如 要在不同的平台下表示 1010内的整数I 可以采取如下的声明方式 INTEGER PARAMETER K10 SELECTED INT KIND 10 INTEGER K10 I先声明依赖于特定平台的种类常数 再以该常数为种类参数声明变量 表示在变量声明数据类型的同时 给变量赋初值 2整型常量整型常量的一般形式为 s n k 其中 s代表正负号 n为0 9的十进制 前导0被省略 k指种类参数 n和k之间为一下划线 文字整型变量 其种类参数取缺省值 也可显式声明种类参数 例如 7 2 二 实数类型1实型变量声明实型变量的一般形式为 REALAREAL KIND n ADOUBLEPRECISIONA实型变量的规定 种类参数n为4 8 缺省值为4 双精度实型数相当于REAL 8 不需要再为其规定种类参数 实数取值范围分别为 REAL 4 取值范围为 1 1754944E 38 3 4028235E 38REAL 8 取值范围为 2 225073858507201E 308 1 797693134862316E 308 跟整数类型提供的KIND HUGE函数相对应 Fortran90为实数类型变量提供了获得实数的取值范围下限函数TINY 精度函数PRECISION 指数范围函数RANGE 以及获取特定平台下种类参数的函数SELECTED REAL KIND 其形式为 result SELECTED REAL KIND p r 函数返回有效位数为p 精度 指数范围为10 r 10 r的实数种类参数 例如 在特定平台下规定有效位数 精度 为15 指数为307 其种类参数为SELECTED REAL KIND 15 307 若没有可用的种类参数 函数分别返回 1 2和 3 1 返回 1表示无法满足规定的有效位数 2 返回 2表示无法满足规定的指数范围 3 返回 3表示有效位数和指数范围都无法满足 2实型常量文字实型常量是数学上实数的近似表达 分为带指数型和不带指数型 不带指数的实型常量一般形式为 s n k 带指数实型常量一般形式为 s nE s m k 或 s nD s m其中 s代表正 负号 n m代表0 9的十进制数 n通常带有小数点 m为指数 k为种类参数 一般取4 8 若没有规定种类参数 种类参数取缺省值 例如 1 0E6 1 0D6表示1 0 106 单精度REAL 4 双精度REAL 8 以E和以D表示的实数的区别 三 复数类型1复数型变量声明复数类型变量的一般形式为 COMPLEXXCOMPLEX KIND n X复数类型变量的种类参数为4 8 种类参数缺省值为8 Fortran90支持复数类型及其算术运算 2复数型常量复数类型常量呈现下列形式 r m 其中 r代表复数常量的实部 m代表复数常量的虚部 四 逻辑类型1逻辑型变量声明逻辑型 或布尔型 变量L的一般形式为 LOGICALLLOGICAL KIND n L种类参数n为1 2 4 8 种类参数缺省值为4 2逻辑型常量逻辑型常量为 TRUE 逻辑真 和 FALSE 逻辑假 其种类参数取缺省值 显式规定逻辑型常量的种类参数 例如 TRUE 2 种类参数规定为2 五 字符类型1字符型变量声明字符型变量C的一般形式为 CHARACTERCCHARACTER LEN len C CHARACTER lenCCHARACTER LEN len KIND n CCHARACTER KIND n LEN len C字符型变量的规定 字符型有两个可选参数 长度参数 LEN 和种类参数 KIND 不管是否显式规定 字符型种类参数总是1 即一个字符占一个存储字节 假如两个可选参数都没有给出 长度和种类参数均取缺省值1 若只给出一个参数 代表长度 若给出两个参数 依次为长度和种类参数 种类参数只能取1 若采取关键字 KIND LEN 声明形式 参数顺序可以任意 例如 CHARACTER KIND 1 LEN 10 StrCHARACTER LEN 10 KIND 1 Str 2字符型常量Fortran中的字符串统一以单引号或双引号作为界定符 k ch k ch 其中 k为可选的种类参数 ch为字符 串 示例 WHATKINDTYPE TODAY SDATEIS Theaverageis 约定 若要表示和界定符相同的字符 须用两个联系的界定字符来表示 例如 字符型常量 Fortran s90 表示字符串Fortran s90 字符串长度为12 界定符必须统一 要么都用单引号 要么都用双引号 一 强制类型声明I N规则 除非特别声明 在程序中的变量名凡以I J K L M N这六个字母开头的都被认为是整型变量 以其他字母开头的表示实型变量 推荐使用 兼容Fortran90前版本的程序代码 不推荐使用 这种隐含约定往往会带来严重的程序错误 第四节声明的有关事项 例2 3PROGRAMMainInterest 0 08Count 0 08PRINT Interest Interest 0PRINT Count Cont 0 0ENDPROGRAMMainIMPLICITNONEREALInterest CountInterest 0 08Count 0 08PRINT Interest Interest 0 08PRINT Count Count 0 08END通过类型声明 消除隐含约定带来的错误 二 变量声明及初始化Fortran语言属于编译型语言 程序编译过程中编译器为引用变量开辟了内存空间 程序执行过程中不再申请内存 动态分配除外 变量声明一般形式为 数据类型 属性 变量列表约定 属性包括DIMENSION PARAMETER TARGET POINTER ALLOCATABLE INTENT等 并列冒号 是可选的 在声明的同时给变量赋初值 符号 不能省略 声明部分必须出现在执行部分之前 不能出现在执行部分 DATA也是声明的一部分 可以用来给变量赋初值 通常跟在赋值的变量声明之后 执行语句之前 值得注意的是 一般的赋值语句是执行语句 例2 4变量声明及初始化PROGRAMMainIMPLICITNONEINTEGERaREAL 8 b 2 0COMPLEX 8 c 1 0 2 0 CHARACTER 20 str Fortran90 a 6PRINT a a b b c c str strEND程序执行结果 a 6 b 2 0 c 1 0 2 0 str Fortran90在声明的同时给变量赋初值 符号 不能省略 省略时可采用如下形式 INTRGERaa 6 例2 5DATA语句的使用PROGRAMMainIMPLICITNONEINTEGERaREAL 8 bCOMPLEX 8 cCHARACTER 20 strDATAa b c str 1 2 0 1 0 2 0 FORTRAN77 PRINT a a b b c c str strEND Fortran77使用DATA语句来设置初值 DATA语句的格式是在DATA关键字后接上要设置初值的变量 然后再用两个斜杠包住要设置的变量值 三 常量声明 PARAMETER 在程序中固定不变的常数 如圆周率 重力加速度等 可以声明成变量 符号常量只能在声明时通过PARAMETER属性设置其值 而且只能设置一次 在程序中不能改变 例2 6常量声明PROGRAMMainIMPLICITNONEREAL PARAMETER PI 3 14159PRINT10 PI 6 010FORMAT PI 6 0 F4 2 END计算结果 3 14159 6 0 0 523598在格式要求中F4 2 即带小数点后两位共四位的实数 按照四舍五入的原则 得到结果 0 52 算术表达式由运算符 常量和变量组成 算术表达式获得的结果是标量 只是涉及到数值的大小 1 运算符及其优先级Fortran有5种算术运算符 分别是加 减 乘 除和乘幂 按优先级由低到高排列如下 加 减 乘 除 乘幂 两个星号之间不能有空格 括号其顺序是 乘除运算级高于加减运算 乘幂运算高于乘除运算 括号总是具有最高优先级 在运算级相同的情况下 按照 从左到右 的法则 在连续的乘幂运算中 按照 从右至左 的法则 例如 2 3 2 先计算3 2 再计算左边的乘幂 结果是512 而不是64 第五节算术表达式 2 整数除法编程实现除法运算时 如果是整数除法 那么结果也是整数 值得注意的是 如果不能整除 那么结果只取商的整数部分 小数部分被去掉 例如 INTEGERA B CA 1B 2C A B那么编程计算结果为C 0 而不是0 5因此对于变量C 可以直接采用1 0 2 0或者0 5 而不能直接采用1 2 对于整除情况 不会存在以上的问题 例如 INTEGERA B CA 6B 2C A B那么编程计算结果为C 3 3 算术表达式中的类型转换Fortran语言是非强类型语言 具有以下特点和规定 允许不同类型的数值型数据之间进行算术运算 不允许数值型数据与非数据型数据之间进行算术运算 不同类型之间的算术运算式一是显式地进行类型转换 例如A B分别为整型和实型 REAL A 就将整型A转换为实型 INT B 则将实型B转换为整型 一是系统自动转换规则 将低精度类型转换为高精度类型 例如在整型和实型之间进行算术运算时 整型将转换为实型 例如3 4 0 程序执行时先将3转换成3 0 然后执行3 0 4 0 得到实型结果7 0 数据类型转换是从左至右 当遇到不同类型时才开始转换 例如 9 4 3 0程序执行时 先进行9 4整数除法运算 得整型数2 然后整型数2被转换成实型数2 0 再除以实型数3 0 最后结果时0 6666667 而不是数学上的结果0 75 如果数值运算为9 4 0 3 0 最后结果是0 666666 根据数据格式写出结果 因此 要注意计算机程序执行结果与数学习惯的区别 4 赋值语句中的类型转换例2 7 赋值语句中的类型转换PROGRAMMainIMPLICITNONEINTEGER a 3 2INTEGER b 3 0 2REAL c 3 2REAL d 3 0 2PRINT a a b b c c d dEND程序运算结果 a 1 b 1 c 1 0000000 d 1 500000程序说明 不能缺少 变量与表达式的结果类型相同 直接进行赋值 变量与表达式的结果类型不同 先进行表达式的类型转换 再进行赋值 进行变量赋值时最好使用相同类型 表控输入 输出语句 READ 和PRINT 语句 READ和PRINT表示输入 输出 表示表控输入或输出 要求从系统隐含指定的输入 输出设备上输入或输出数据 1 表控输入语句表控输入 自由格式输入 READ 语句的一般形式为 READ 变量列表约定 表控输入 不必指定输入数据的格式 只需将数据依次输入 变量列表的变量用逗号分开 例如 A1 A2 A3当程序执行到READ 语句时 向设备发出输入数据的指令 通过键盘输入数据 第六节表控输入 输出语句 数据输入形式 一个数据 可直接输入 多个数据 数据之间要分隔 解决的办法有两个 1 使用多行输入数据 每个数据单独放一行 2 在一行输入多个数据 各个数据之间用分隔符分隔开 允许使用的分隔符有空格 逗号和斜杠 的作用是终止输入 例2 8表控输入PROGRAMMainIMPLICITNONEINTEGERaREALbCHARACTER 5 cLOGICALdCOMPLEXePRINT Inputa b c d e READ a b c d ePRINT a a b b c c d d e eEND 程序运行结果 显示 Inputa b c d e 读入 1 2 abc true 1 1 这里用的分隔符是 结果 a 1 b 2 0000000 c abc d T e 1 0000000 1 0000000 数据输入约定 1 如果输入数据个数多余变量个数 多余的数据不起作用 被忽略 如果输入数据个数少于变量个数 例如使用斜杠提前结束输入 Fortran不认为有错 而是把没有输入数据的数值型变量值设为0或者0 0 按照缺省值给定 字符型变量值的设定依赖于特定系统的字符串 2 输入数据的类型要与对应的变量类型一致 Fortran允许将一个整数输入给一个实数 也允许将一个实数输入给一个整数 一个整数或实数可以输出给一个字符型变量 一个含有前导字符是字母的字符串不能输给一个整数或实数 3 若字符不含空格 输入时可不加界定符 或 否则需加 4 Fortran规定 一个READ 语句必须从一个新的输入行开始 即要求输入数据的行数至少与READ 语句的个数相等 2 表控输出语句表控输出语句的一般形式为 PRINT 输出变量列表约定 1 输出变量列表可以是常量 变量 表达式或字符串 使用逗号分隔 2 PRINT 语句使用简单 可以跟踪计算过程中变量的变化情况 3 对多个PRINT 语句 Fortran规定 每个PRINT 语句都从一个新行开始输出 自动换行 若一个PRINT 语句无输出项 将在屏幕输出一空白行 4 PRINT 语句具有计算功能 可以直接进行表达式计算 例2 9表控输出PROGRAMMainIMPLICITNONEINTEGER a 1 b 5 c 8PRINT max a b c MAX a b c END程序运行结果 max a b c 8 在输出过程中执行了求最大值运算 程序由声明语句和执行语句构成 以END结尾 Fortran90自由格式 任一列开始 容纳132字符 可续行39个 记号内不允许出现空白 注释以感叹号标识字符集包括26个字母 数字 下划线及21个特殊字符 标识符名只能由字母 数字和下划线构成 并以字母开头 长度可达31个字符数据类型 整型 实型 复数型 逻辑型和字符型 并以种类参数KIND 存储字节数 控制数据取值范围和精度 字符型除种类可选参数 值为1 外 还有规定字符串长度的可选参数 小结 通过IMPLICITNONE强制类型说明 声明变量的通用形式 数据类型 属性 变量列表 当有属性存在 或声明变量的同时进行初始化 声明操作符 是必须的 声明常量使用PARAMETER属性 并在声明同时进行赋值算术运算规则及运算符号的优先级和数学上一致 整数除法若不能整除 结果取商的整数部分 小数点后部分被去掉 若表达式中操作类型不一致 且没有进行显式类型转换 系统自动从左到右 按运算符号优先级 将低精度类型转换为高精度类型进行运算当输入 输出简单数据时 可以适用READ PRINT 语句 按自由格式 分别从键盘键入数据 从屏幕显示输出数据
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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