已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章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允许将一个整数输入给一个实数 也允许将一个实数输入给一个整数 一个整数或实数可以输出给一个字符型变量 一个含有前导字符是字母的字符串不能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高血压合并肥胖队列的随访体重管理方案
- 高温环境中药动学标准化操作
- 高温对医疗防护用品供应链的持续压力
- 幼儿园家长参与晨间接待对幼儿安全感影响-基于2024年接送时段行为观察数据
- 幼儿园绘本共读中幼儿复述能力发展-基于2023年语言活动录音与复述质量评分
- 骨髓抑制期抗菌药物合理使用指南
- 骨质疏松性肩关节骨折的治疗进展
- 甘肃省兰州市第四片区部分学校2025-2026学高二上学期12月月考地理试卷
- 初中英语语法专项训练及习题
- 员工职业发展规划设计方案
- 2026国家知识产权局专利局专利审查协作招聘1500名专利审查员信息重点基础提升(共500题)附带答案详解
- 2026年入党积极分子培训考试试题及答案
- 2026新教材语文 16.1《阿房宫赋》教学课件统编版高中语文必修下册
- 初中物理跨学科实践活动的设计与实施课题报告教学研究课题报告
- 2026春青岛版(五四制)三年级科学下册(全册)各单元知识点复习要点梳理
- 2026广东深圳市优才人力资源有限公司招聘编外聘用人员(派遣至深圳市龙岗区机关事务管理局)补充笔试备考试题及答案详解
- 2026年广东省高三语文二模作文题目解析及范文:“意外”的价值
- 2026年上海市虹口区八年级下学期期中语文试卷参考答案与评分标准
- 中核汇能广东能源有限公司笔试
- Unit 5 Nature's Temper 单元练习题 新教材人教版八年级英语下册
- 水库库区水质富营养化治理方法及管控措施
评论
0/150
提交评论