已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 FORTRAN90数据类型 数据类型的概念整型数据实型数据复型数据字符型数据逻辑型数据 本章主要内容 5 1数据类型的概念 数据记录了现实世界中客观事物的属性 它包括两个方面 数据内容 值 和数据形式 型 数据内容就是数据的值 数据形式就是数据的存储形式和操作使用方式 也称为数据类型 整型实型复型逻辑型字符型 内部数据类型 数值型 非数值型 派生数据类型 数据类型的性质 1 类型的名称 2 允许值的集合 3 允许值 常量 的表示方法 4 操作这些值的运算的集合 5 2整型数据 在FORTRAN语言中 整型值的集合是数学上整数的一个子集 每种方法用类别类型参数来区分 整型常量的表示形式为一个数字串 并在数字串后有一个可任选的下划线后再跟类别类型参数 例如 373 1024 35792 0 32 2 1992110235764803 8 整型数据类型的字节数和取值范围 在FORTRAN90中 还可以使用二进制 八进制和十六进制整型常量 但它只能用于DATA语句中 二进制常量的形式是以字母B开头 后跟用一对撇号或双引号括起来的数字串 而且每个数字不是0就是1 例如B 10101101 B 1011101 八进制常量的形式是以字母O开头 后跟用一对撇号或双引号括起来的数字串 而且每个数字是0到7之间的一个数字 例如 O 453 O 376 十六进制常量的形式是以字母Z开头 后跟用一对撇号或双引号括起来的数字串 而且每个数字是0到9或字母A到F之间的一个 例如 Z FFA9 B 9B45 INTEGERi j kDATAi B 110010 DATAj O 62 DATAk Z 32 整型变量的说明 基本格式为 INTEGER KIND 类别参数值 属性列表 变量列表其中类别参数值取1 2 4例 INTEGERI TOTALINTEGER 2 K LIMITINTEGER KIND 4 MIN MAXINTEGER 2 K LIMITINTEGER 4 MIN MAX 变量的属性 属性是被说明对象的所属性质 一个对象被说明具有某一属性时 就使该对象具有某种附加功能 特殊的使用方式与适用范围 属性的种类有很多 这里介绍两种最常见属性的说明格式 INTEGER PARAMETER I 5 J 24INTERGER DIMENSION 1 10 A 例5 1求Fibonacci数列前30项之和 Fibonacci数列的递推公式是 F0 0F1 1Fi Fi 1 Fi 2 分析 设置两个变量来存放已求得的最后两项的值 F2保存已求得的最后一项 即Fi 1 F1保存前一项 即Fi 2 这样 下一待求项就是F1和F2之和 我们将它赋值给F 然后将原来的F2赋值给F1 原来的F赋值给F2 又可以由F1和F2推出一个新的F 如此可以一直推下去 本例中 Fibonacci数列前30项之和是一个很大的数 已经超过了类别参数为2的整数的取值范围 只能采用类别参数为4整数 如果数超过类别参数为4的整数取值范围 就只能采用实型数据来处理 5 3实型数据 FORTRAN用类别类型参数区分不同类型的实型数据 实型数据有单精度和双精度之分 单精度类别类型参数值为4 双精度数类别类型参数值为8 一般形式为 有效数E指数 类别参数 有效数D指数 实型变量的说明 REAL KIND 类别参数值 属性列表 变量列表单精度用REAL 4 定义 双精度用REAL 8 或DOUBLEPRECISION定义 缺省的类别值为4 即为单精度 REAL M12 AREA LENREAL 4 DX DYREAL 4 DX DYREAL 8 D PRE XREAL 8 D PRE XDOUBLEPRECISION D PRE X 例5 2利用双精度按下面近似公式求 直到最后一项的绝对值小于10 15为止 分析 首先找出累加项fn与fn 1的递推关系 不难推出f0 x 源程序如下 ImplicitnoneReal 8 x y fInteger nRead xY xF xDof f 2 n 1 2 n 2 n 1 2 n 1 x xif abs f LT 1d 15 exity y fn n 1EnddoPrint y y f fend 5 4 1复型常量将两个实数用逗号分隔 再用括号括起来就构成了一个FORTRAN复型常量 其中第一个实数称为复数的实部 第二个实数称为复数的虚部 例如 1 25 0 4 1E2 3 4 分别表示复数1 25 0 4i和100 0 3 4i 1 0 4 4 2 复型数据的类别类型参数是用于说明实部和虚部这两个实型数据的类别类型 5 4复型数据 5 4 2复型变量COMPLEX KIND 类别值 属性列表 变量列表COMPLEXZ1 Z2COMPLEX 4 COM VALCOMPLEX 8 CZ CQCZ 3 0 6 3 CQ 8 76E 5 67 8E 3 如果实部和虚部都不是常数 而是表达式 则应该用CMPLX函数将实部和虚部组成复型数据再赋给复型变量 例如C CMPLX 3 0 A 6 0 B 例5 5有一线段AB A的坐标为 1 1 B的坐标为 4 5 4 5 如图5 2所示 求AB的长度 以及黄金分隔点C的坐标 黄金分割点在线段的0 618处 分析 A B的坐标可用复数表示 即A为 1 0 1 0 B为 4 5 4 5 AB的长度就是 A B 的模 从图中可以明显地看到 AB的长度 可用ABS函数直接求出复数的模 黄金分隔点C的坐标为A 0 618 B A PROGRAMCOMP 3IMPLICITNONECOMPLEX A B CREAL LREAD A BC A 0 618 B A L ABS A B PRINT L LPRINT C CENDPROGRAMCOMP 3用READ语句读入复型数据时 以2个实数作为一个复型数据 第一个实数为复数的实部 第二个实数为虚部 用括号括起来 程序的输入可以如下 1 0 1 0 4 5 4 5 5 5字符型数据 5 5 1字符型常量字符型常量又叫字符串常量 它是用单撇号或双撇号括起来的字符序列 例如 ABCD CHINA 12345678 等都是FORTRAN字符型常量 字符型常量中的字符可以是计算机系统中允许使用的任何字符 在字符串内大小写字母均可使用 但它们是不同的字符 单撇号和双撇号只起定界作用 它们不是字符串的组成部分 字符串中含有单撇号或双引号的处理 当字符串中又含有单撇号时 例如要将I MASTUDENT作为一个字符串来处理 为了区分 是字符串中的字符还是定界符 可采用两种方式表示 I MASTUDENT I MASTUDENT 前者用双撇号作定界符 后者用单撇号作定界符 而将字符串的单撇号用两个单撇号表示 系统会自动将其处理为字符串的一个单撇号字符 字符串内字符的个数称为字符串的长度 字符串 和 的长度为0 在字符串内部的空格是有效字符 并占有一个字符的位置 例如 ABC 和 ABC 是两个不同的字符串 前者字符串的长度为3 后者为5 一个字符常数需要写成多行源程序时 有一条特殊的规则 不仅每一续行都不能尾随注释 而且每一续行必须以续行标识符 作为开头 任何尾随 号之后或者前导 号之前的空格都不是字符常数的组成部分 号本身不是常数的组成部分 其它的字符包括空格都是字符常数的有效组成部分 5 5 2字符型变量 CHARACTER LEN n1 KIND n2 属性说明 变量列表格式中的n1和n2是一个整数和整型表达式 n1代表被说明变量的长度 n2代表字符变量的类别参数 各项属性说明是字符型变量有关属性的说明 例如 CHARACTER LEN 25 KIND 2 A B CCHARACTER KIND 3 LEN 15 VAR CHCHARACTER LEN 8 DIMENSION 1 10 X Y ZCHARACTER LEN 10 PARAMETER NAME FORTRAN 90 CHARACTER LEN 15 ACHARACTER 15 ACHARACTER LEN 15 A B 8 C 5 在以下两种状态下均可以采用星号来说明长度 1 具有PARAMETER属性的字符常量 例如以下两个语句 CHARACTER LEN PARAMETER PARA FORTRAN 90 CHARACTER PARAMETER PARA FORTRAN 90 给出的字符串长度是确定的 因此字符符号常数PARA的长度是可知的 等于10 可用 说明 2 用字符变量作虚元时在子程序中 用字符型变量作虚元时可以不指明其具体长度 即用 定义长度 这时它可以与任意长度的字符型实元相结合 有利于提高子程序的通用性 5 5 3子字符串 字符变量名 m n 其中 m和n是整数和整型表达式 表示子字符串在字符串中的起止位置 该子字符串的长度为n m 1 n m 1 例如有说明语句如下 CHARACTER LEN 80 ROW则ROW 4 7 表示ROW字符串中从第4个字符到第7个字符组成的一个子串 其长度为4 ROW I I 表示该字符型变量的第I个字符 5 5 4字符表达式与字符赋值语句 字符表达式是指用字符运算符把字符常数 字符变量等字符型数据连接起来的有意义的式子 字符运算符只有一个 就是字符连接符 它是由两个斜杠组合而成的 其作用是将两个字符型数据连接起来 成为一个字符型数据 该运算符是一个双目运算符 在其两侧应各有一个字符型操作数 例如 HE LLO 的值为 HELLO FORTRAN 90 的值为 FORTRAN90 PROGRAMCHAR 1IMPLICITNONECHARACTER LEN 5 A B CCHARACTER LEN 11 DA CHINA B JAPAN C AD A BPRINT A B CENDPROGRAMCHAR 1 5 5 5字符关系表达式 字符比较的规则是 一般按其ASCII代码的值 见附录 进行比较 常用的字符顺序为 数字0小9大 数字比字母小 大写字母比小写字母小 字母A小Z大 a小z大 空格 字符最小 在进行关系运算时 遵循以下规律 1 两个单个字符比较 以它们的代码值决定大小 A 2 的值为真 2 两个字符串比较时 将两个字符串中的字符自左向右这个进行比较 若所有字符完全相同 则两表达式相等 否则 以第一次出现不同字符的比较结果为准 例如 SHANGHAI SHANKONG 的值为真因为第3个字符 E O 则前一表达式的值小于后者 3 若两个字符串中字符个数不等时 则将较短的字符串后面补足空格后再比较 例如 WHERE WHEREVER 的值为真因为先将 WHERE 后边补空格成为 WHERE 之后 再与 WHEREVER 比较 第6个字符空格小于字母 V 5 5 6用于字符处理的内部函数 1 求字符串长度函数 LEN和LEN TRIM LEN String 和LEN TRIM String 其中String为字符型常量 变量等字符串 函数LEN的结果值是String中字符个数 包括前置及尾随空格 函数LEN TRIM的值是把字符串去掉尾部空格后的长度 例如LEN TRIM ABCD 的值为5LEN ABCD 的值为5LEN TRIM ABC 的值为3LEN ABC 的值为5LEN TRIM 的值为0LEN 的值为5 2 除去字符串尾部空格函数 TRIM 其一般形式为 TRIM String 函数的结果值是去掉String中的尾部空格后剩余的字符串 例如TRIM ABC 的值为 ABC TRIM ABC 的值为 ABC 3 子串位置函数 INDEX 其一般形式为 INDEX String1 String2 其中String1 String2均为字符型 且类别参数应该一致 若String2是String1的一个子串 其函数的结果值是一个正整数 该数表示String2在String1中最左边的子串的起始位置 若String2不是String1的子串 则函数结果值为0 例如 INDEX FOLLOWME ME 的值为8 因为 ME 的第一个字符M出现在 FOLLOWME 的第8个字符位置上 INDEX FOLLOWME LO 的值为0 4 字符串比较函数 LGE LGT LLE和LLT 1 大于或等于函数LGE其一般形式为 LGE String1 String2 若String1 String2 其函数值为真 否则为假 例如 LGE ABC EFG 的值为假 2 大于函数LGT 3 小于或等于函数LLE 4 小于函数LLT 5 首 尾部空格调整函数 ADJUSTL和ADJUSTR 其一般形式为 ADJUSTL String 和ADJUSTR String 调左函数ADJUSTL的函数值是把String的首部空格调到尾部 调右函数ADJUSTR的函数值是把String的尾部空格调到首部 例如ADJUSTL ABC 的值为 ABC ADJUSTR ABC 的值为 ABC 6 字符与字符序号相互转化函数 1 字符向字符序号转化函数其一般形式为 ICHAR CH 和IACHAR CH 其中CH是长度为1的字符型常量和变量 其函数的结果值为字符在相应处理系统中的字符序号 例如IACHAR A 的值为65IACHAR Z 的值为90在FORTRAN90中 允许String所代表的字符长度超过1 此时只取第一个字符作为有效字符 例如 ICHAR ABC 的值为65 2 字符序号向字符转化函数其一般形式为 CHAR I 和ACHAR I 其中I可以是整型常量 变量或表达式 其函数的结果值为序号I所对应的字符 例如ACHAR 65 的值为 A IACHAR 90 的值为 Z 5 5 7字符处理应用举例 例5 7在读入的一批单词中 把以字母 B 开头的打印出来 直到输入 ZZZ 结束 PROGRAMCHAR 2IMPLICITNONECHARACTER 10 WORDDOREAD WORDIF WORD ZZZ EXITIF WORD 1 1 B PRINT WORDENDDOENDPROGRAMCHAR 2 也可以用INDEX函数 PROGRAMCHAR 2IMPLICITNONECHARACTER 10 WORDDOREAD WORDIF WORD ZZZ EXITIF INDEX WORD B 1 PRINT WORDENDDOENDPROGRAMCHAR 2 例5 9翻译密码 为了保密 常不采用明码电文 而用密码电文 按事先约定的规律将一个字符转换为另一个字符 收报人则按相反的规律转换得到原来的字符 例如 将字母 A F B G C H 即将一个字母变成其后第五个字母 例如 HEISINBEIJING 应转换为 MJNXNSGJNONSL 分析 可以这样实现 取该字母的ASCII代码 加上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东云浮市郁南县清源供水有限公司招聘员工排名笔试历年备考题库附带答案详解试卷3套
- 2025山西焦煤集团公司招聘毕业生7人笔试历年备考题库附带答案详解试卷3套
- 2025安徽固镇县国有资本投资运营(集团)有限公司招聘23人笔试历年典型考点题库附带答案详解试卷3套
- 棚户区危旧房改造工程技术方案
- 城市综合管廊建设及智能化提升改造项目技术方案
- 煤矿风井项目建设工程方案
- 2025年及未来5年市场数据中国金属加工设备行业发展监测及发展战略规划报告
- 鄂州乡镇公务员考试试题及答案
- 研学基地环境友好型建设方案
- 老旧小区改造及配套设施提升项目节能评估报告
- 《初级会计实务》(第五版) 第三章 流动资产
- 主变防火墙脚手架搭设施工安全技术交底
- 三减三健课件
- 山西省晋中市四校联考2024-2025学年八年级上学期期中考试物理试卷(无答案)
- 智算中心发展创新指南
- 《霸王别姬》电影赏析
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理体系 审核与认证机构要求》中文版(机翻)
- 预防医学练习题库(附答案)
- 研究生学术表达能力培养智慧树知到答案2024年西安建筑科技大学、清华大学、同济大学、山东大学、河北工程大学、《环境工程》英文版和《环境工程》编辑部
- 中国骨关节炎诊疗指南(2024版)解读
- 马铃薯淀粉产品营销计划书
评论
0/150
提交评论