VisualFortran90第3章.ppt

上传人:sh****n 文档编号:6561362 上传时间:2020-02-29 格式:PPT 页数:105 大小:737.50KB
返回 下载 相关 举报
VisualFortran90第3章.ppt_第1页
第1页 / 共105页
VisualFortran90第3章.ppt_第2页
第2页 / 共105页
VisualFortran90第3章.ppt_第3页
第3页 / 共105页
点击查看更多>>
资源描述
第3章基本语句 3 1类型说明语句 3 2算术表达式和赋值语句 3 3输入与输出语句 3 4输入和输出编辑符 基本语句概述 前面已经介绍了Fortran90的语言组成元素及有关程序单元等概念 也了解了程序是由语句组成 Fortran90的程序具有强大的功能 语句很多 但支持程序的最基本的语句主要有四种 类型说明语句 赋值语句 输入语句 输出语句 运用这些基本的语句 就可以编写一些简单的程序 Fortran90中的变量通常要进行类型说明 然后才能使用 类型说明语句的形式是 类型说明 种别说明 属性说明1 属性说明2 属性说明n 变量名表例如 Integer kind 2 dimension 1 15 A说明变量A的类型是整型 种别是2 属性是Dimension 1 15 即A被说明为种别参数为2的一维整型数组 具有15个元素 这里的种别说明和属性说明不是必选的 有时也可以省略 3 1类型说明语句 例INTEGER A SUM TOTOLREALX Y 缺省双冒号 CHARACTER C Character类型的长度缺省为1 其余类型的说明语句请自己练习 类型 变量名表 注意 此处双冒号可以省略 但不提倡 省略了种别说明和属性说明后具有最基本形式 选择恰当的数据类型 运算速度 范围 精度 注意实数的误差 整型数据运算速度快 在机内存储没有误差 但能表达的值的范围较小 实型数据能表示小数 分数及不同的精度 表达的值的范围大 但数的外部表示和机器存储会有误差 例 10 2 在机内表示可能为10 999998 使用实数时 尽量避免作相等或不相等的比较例 A是实型变量 对其与10 2作相等与否比较 不能写成 IF A 10 2 PRINT A应改写为 IF ABS A 10 2 1 0E 6 PRINT A FORTRAN以前版本对未说明类型变量使用隐含规则 即I N规则 凡以I N开头的变量都为整型 其余为实型 FORTRAN90不提倡使用隐式说明 为抑制隐式说明发生作用 应在程序一开始就写出语句 IMPLICITNONE 淘汰隐式说明 程序中常需要为一些变量预先设置初值 FORTRAN90规定可在说明变量的同时使变量初始化 注意 双冒号不可省略 例 REAL score 89 5INTEGER x y 0 z 类型说明时 可进行变量的初始化 3 1 2种别说明 1 种别的说明方法 关键字KIND 后跟 及种别参数 写在类型关键字后面的括号内 例如 INTEGER KIND 2 X X是整型 种别为2或 INTEGER 2 X或 INTEGER 2 X种别说明可以缺省 若缺省则为标准种别 2 有关种别的函数 KIND X SELECTED INT KIND N SELECTED REAL KIND M N 测试标准种别 KIND 0 4 整型 KIND 0 0 4 实型 KIND FALSE 4 逻辑类型 KIND A 1 字符类型 各种基本类型种别可取值 INTEGER 1 2 4 8REAL 4 单精度 8 双精度 LOGICAL 1 2 4COMPLEX 4 单精度 8 双精度 CHARACTER 1 3 常数种别的表示 后缀法 INTEGER REAL LOGICAL COMPLEX 例 15 2 14 56 4 false 4复型常数的种别由两个实数成分的种别来标明 例 3 5 4 8 6 4 前缀法 字符型例 1 abc 3 1 3属性说明 属性是被说明对象的所属性质 使该对象具有某种附加功能 特殊的使用方式与适用范围 属性关键字写在说明语句种别说明符之后 双分隔符之前 各属性关键字之间用逗号分开 次序任意 属性关键字 P38 PARAMETERDIMENSIONPUBLICINTENTPRIVATEOPTIONALPOINTERSAVETARGETEXTERNALALLOCATABLEINTRINSIC 1 功能 用一个符号代表一个常量 称为符号常量 常数 2 写法 Real Parameter G 9 8 说明类型时赋值 3 位置 位于可执行语句之前 PARAMETER属性 程序中不得改变其值 与普通常量的区别 不作语句标号和FORMAT中重复系数 类型 一般采用I N规则 否则 需先定义其类型例 parameter n 5 4 使用规则 DIMENSION也称数组属性 定义一个数组必须在说明语句中附加数组属性关键字 DIMENDION 数组形状说明 例如 INTEGER DIMENSION 1 10 X DIMENSION属性 表达式 将常量 变量 函数用运算符连接起来的式子 FORTRAN90有四种表达式 算术表达式关系表达式逻辑表达式字符表达式 3 2算术表达式和赋值语句 以后章节再介绍 3 2 1算术表达式 1 5个算术运算符 乘方 乘 除 正 负 加 减 由算术运算符和括号将各运算元素 也称为操作数 如 常数 变量 函数 数组元素 连接起来的有意义的式子 2 运算符的优先级 3 内在函数 FORTRAN90配置的函数称为内在函数 内在函数分为三种 基本函数转换函数查询函数使用函数应注意的四个问题 1 函数名及函数的功能2 自变量的个数及类型3 函数值的个数及类型4 对函数的限制 注意 三角函数单位为弧度sinDcosDtanD可以为度 F90 2 某些函数参数只能为实型如 log 2 0 loG 2 错 3 自变量个数 次序例 MOD 5 3 2MOD 3 5 3 4 自变量可以是有值的常量 变量 表达式例 ABS B 2 SIN A B 2 转换函数 P41 3 查询函数 P41 KIND SELECTED INT KIND SELECTED REAL KIND PRECISION RANGE 4 算术表达式 用Fortran来编写数学表达式的规则和方法都很 直观化 和在纸上做四则运算只有一点点的差别 例 书写表达式注意事项 例 1 2 答案 1 2 0 SIN 3 14 4 3 02 Sin 4 0 cos 10 3 14 180 exp 2 5 Sqrt 2 0 abs a x log 3 0 5 5 表达式的计算 1 表达式中运算的优先次序是 括号 函数 或 或 同一层内运算符自左向右依次执行 多层括号中最内层括号优先级别最高 逐层向外 对于连续的乘方运算 采用先右后左的方式例 3 2 3 先计算2 3 8 再进行3 8 6561 2 表达式的类型与种别 运算对象类型相同时 运算结果的类型为同一类型注意 5 2 21 2 0 想一想 1 2 3 6 1 2的值 有何3 6 1 2 1 2的值 不同 运算对象类型不同时 系统一般先转换成相同类型后再运算转换规则是 较低级的类型转换为较高级的类型数据类型隐含的高低次序为 由低到高 整型 实型 双精度 复型例 8 5 2 0 5 2 6 0 逐步转化 两个不同种别参数的数据运算 结果取精度或允许范围较大的那个参数的种别 例 3 1 4 4 5 8得7 6 82 1 4 6 5 3 8 8 得 8 6 8 3 8 8 注意有效位数的限制引起的误差计算机存储数据的有效位数是有限的一般为十进制数的6至7位例 1 0 3 0的结果在内存中不是0 3333333333333 而是0 3333333注意溢出计算结果超出了存储单元所允许的数的范围程序中的表达式 要避免两个很大的数相乘 或一个很大的数除以一个很小的数 二 赋值语句 1 作用 将一个表达式的值赋给一个变量 或一个数组元素 2 写法V 表达式e例 A 3 14159 R 2注意读法B AC 3 3 赋值语句的功能 a 计算表达式e的值b 转化为V类型 种别c 赋值 例 I 6 2 2A 6 2C A B C复型 A B实型 例 m为整型 x为实型M 1 0 2 0 2 2X 1 5 2 0 2 0 1 0 3 5 A BB A 错例 x y 13 Asin x 0 5 2 赋值号左边只能是变量名 或数组元素名 数组名 不能是表达式 4 注意 正确 A A 1计数器 3 类型要求逻辑型 字符型的赋值语句要求 两边类型相同数值型赋值 不区别整型 实型和复型 允许两边的数值类型不同执行赋值语句后 把e的值转化为V的类型后再赋值给VV是整型 e是实型 把尾数丢掉化为整型后赋值4 种别方面字符型要求种别相同其余类型的e V种别允许不同执行赋值语句后 e的值的种别转化为V的种别后再赋值 A 10 B 20C AA BB C 例 使用赋值语句交换A B值 简单程序示例例 输入圆半径 求圆面积和周长 PROGRAMmainREAL r l sREAD rl 2 3 14159 rs 3 14159 r 2PRINT l sENDPROGRAMMAIN real parameter p 3 14159或parameter p 3 14159 3 3输入输出语句 用FORTRAN语言解决实际问题的过程 如下图所示 3 3 1输入 输出 I O 的概念 I O概念共有四个 一 I O的定义I O是相对于内存而言的 键盘属于输入设备 显示器属于输出设备 优盘 硬盘既是输入设备 又是输出设备 1 I O的对象 列在中2 I O的方向及语句READ U f WRITE其中 输入READ语句输出PRINT语句 只输出到显示器WRITE语句 适合任何输出设备 二 I O需确定的三个因素 格式 设备 部件 3 设备与格式U 部件 系统约定设备某个值 指定通道号 设备逻辑号 文件号 表控格式I O 系统约定的格式 f 格式 基本格式 自定格式 I O 按用户要求的格式组织I 0 带控制信息表的I O 三 的内容 READ中的输入表的内容可以是 变量名 数组名 数组片段名 结构成员名 隐循环表 隐DO表 不能是表达式WRITE中的输出表内容可以是 PRINT变量名 数组名 数组片段名 结构成员名 隐循环表 隐DO表 常数 函数和表达式 四 记录和文件 1 记录 以回车 ENTER 作为记录的分隔标记 每执行一个I O语句就启动一个新记录 I 碰到回车 ENTER 为一个记录 O 一行为一个记录 2 文件 文件为同类记录的集合 文件的读取单位为记录 3 3 2表控输入语句 一 含义输入 数据内存 变量 赋值语句 定值 少量 程序中变值输入语句 变动 待定 批量 执行时送值 二 写法简单的输入语句 Read 变量名表Read 变量名表 例 Read A D F 三 功能 执行时 暂停 等待用户从键盘输入数据 分别赋给各变量 赋值顺序自左向右 四 程序执行过程中按表控格式输入数据 各数据间有分隔符 或空格 类型匹配 整型 带小数点只取整数部分 实数 可以为整数 复数 实部 虚部 字符 一串字符 赋值时长度转化或一串字符即 可省略 逻辑 以T或F作为第一个字母的字符串 点号1个 空格多个在前忽略 例 read I输入 2 5取23 输入的数据必须是常数 不能是变量和表达式如输入2 1 则出错 出错信息 run timeerrorF6601 Read con InvalidInteger含义 输入了无效的整数4 输入数据个数 1 不得少于变量的个数 2 可分行输入 3 多余的数据不起作用 5 空格可以多个 表示输入数据结束 后面的数据被取消 没有输入数据的变量值为原值 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 7 多个Read语句每个Read必须从一个新的行输入数据例 read a b c dread e1 2 3数据不够 继续读取下一行4 55作为无效数据被放弃6 3 3 3表控输出语句 一 含义 数据显示二 写法 WRITE 输出表PRINT 输出表 表控格式 变量名 表达式 值常量 原样输出空 空行变量之间用逗号分隔 三 功能 按表控格式依次输出各数据的值 例 PRINT N N 固定的输出宽度 类型 复型 带 输出逻辑型 T F输出一个字符字符型 丢失 采用左对齐输出 表控输出的格式 3 一行显示不下 数据自动换行输出4 多个PRINT语句 每个开始输出一个新的记录 输入输出的三种不同的格式 1 表控格式的输入输出2 有格式的输入输出3 带控制信息表的输入输出要素 1 在什么外部设备上输入或输出2 用什么格式输入输出3 输入输出哪些数据 3 4输入与输出编辑符 READ READ WRITE PRINT 常用输入设备 键盘 卡片机 磁盘常用输出设备 显示器 打印机 磁盘如 READ 5 XWRITE X 输入与输出的一般形式 格式说明 格式字符表达式作用 精确地说明每一个数据应该怎样输入或输出 包括类型 小数点位置 有效位数 输出结果的形式 例 字符表达式或变量WRITE I5 3F5 4 A16 IOLIST或 CHARACTER 80 MYLISTMYLIST I5 3F5 4 A16 WRITE MYLIST IOLIST 1 I编辑符控制输出 功能 用于整型数据的输入输出格式 IwIw mrIww 输入输出数据字段总宽度m 至少m位数字r 为重复系数 一 整型编辑符 Iw m 例1 设J 10 K 12 L 123WRITE I3 I5 I7 J K L 10 12 123 注意 1 数字在指定的区域内右端对齐 不足w则左边补空格 2 负数的符号也包含在字段宽度内3 如果应输出的列数超过了规定的字段宽度 则不输出有效数据 以w个 填充 例2 在上例中 如果J 100 则结果为 12 123例3 如果将格式串改为 I3 I5 4 I7 5 则输出 10 0012 00123例4 如果L 123456 10 0012 123456 Iw m m 位数 则按照实际数输出 例1 设J 10 K 12 L 123WRITE I3 I5 I7 J K L 例5 如下表所示 数据格式输出结果 150I5 1501234I6 5 012344357I7 3 4357 2468I4 注意 利用I编辑符输出时 应注意选择的w的值不能太小 以免出现字段宽度不够现象 一般选择w稍大一些 则格式串 print 2I3 I4 I J K则输出结果为 10 12 123 例6 设J 10 K 12 L 123 2 I编辑符控制输入 r Iww 控制数据所占的列数 例7 READ I4 I5 I J输入数据如下 345 415输入数据后按回车键 则I 345 J 415 例8 程序如下 READ I3 I3 I3 I J K 注意格式串的使用或READ 3I3 I J K输入123456789如I 14 J 25 K 234 按格式 I2 I4 I4 输入则应为 14 25 234 例9 如下表所示 说明 BN BZ BlankinterpretationSpecifiesinterpretationofblanksinnumericfields 空格是否当0处理 仅用于输入格式语句 如read BN 2I3 I J 210 543 1 编辑符格式 r Fw d将数据按小数形式输出 r Ew d将数据按指数形式输出 r Gw d根据数据大小决定采用E或F格式r 重复系数w 字段宽度 总宽度 d 小数部分宽度 二 实型编辑符 F编辑符功能 用于实数编辑 小数形式的输出 浮点数 单精度实数 4个字节 7个有效数字 当实型数值小于0 0 负数 时 则w n d 2当实型数值大于或等于0 0时 则w n d 1用此来确定w的宽度 1 实数的输入 三种方式 READ F4 1 2F10 6 A B C输入 12 4567 83527 则a 1 2 b 45 67 c 8 3527 不带小数点输入不带小数点 则由编辑符指定位置自动加上小数点 按w截取数据 由d决定小数点的位置 按右对齐 空格当0 2 1 2 45 67 8 3527 READ F4 1 2F10 6 A B C 带小数点 输入的数据本身带小数点 如果编辑符中规定的小数点位置和数据本身的小数点位置有矛盾 按 自带小数点优先 原则 d不起作用 小数点记入w中 READ F4 1 2F10 6 A B C 3 1 2 45 67 8 3527 表控格式 用自由格式 逗号分隔 但每个数连同后随逗号必须 w 否则出错 注意 d可以为0 但不能省略 如下表所示 例 X 25 6Y 378 456Z 873 2PRINT F5 1 2F8 2 X Y Z 2 实数输出 结果 25 6 378 46 873 20 注意 1 w包括数符和小数点两位2 若数据小于w位 则左边补空格3 输出值时舍入 而不是截断4 如果是科学计数法则转换小数形式 例 REAL 4 G H E RG 12345 678 H 12345678 E 4 56E 1 R 365 WRITE F8 2 G H E RWRITE 4F10 1 G H E REND 结果 12345 68 舍入 取2位小数 所给描述符整数位不够 45 60 输出时转换为小数形式 365 00 输出时小数点占宽度 123456 712345678 0 45 6 365 0说明 优点 输入时准备数据方便 和数学中实数的写法相同 输出时 数据便于阅读 缺点 必须预先知道输出数据的范围 另容易产生 大数印错 小数印丢 大数印错 小数印丢 X 123567890 876543Y 0 000001245WRITE 1X F15 6 F15 2 X Y输出结果 0 0015列15列XY E编辑符Ew d Ee 格式 数符 0 小数点 小数部分 E 符号 指数部分2位3d4指数部分宽度固定4列 w d 3 4优点 不必事先估计数的大小 能容纳任意大小的数据 Ew dEee 指定指数的宽度 例 用E格式输出数据X 84 31Y 3 141592Z 0 0187WRITE E10 3 E13 6 E15 6 X Y Z结果 0 843E 02 0 314159E 01 0 187000E 01 规则 1 w d 7数据右对齐 左边用空格填满w位若wd四舍五入取d位尾数位数 d其后用0补齐注意 一般格式E16 77 7 2 2个空格 以便阅读 改写该格式为 X 84 31Y 3 141592Z 0 0187WRITE 200 X Y Z200FORMAT E10 3 E13 6 E15 6 或CHARACTER 30 MYLISTMYLIST E10 3 E13 6 E15 6 WRITE MYLIST X Y Z G编辑符功能 根据输出实数大小决定用F或E格式输出 较大或较小 自动按E格式Gw d条件 1 abs A 10d使用E格式输入输出条件 10d abs A 0 1使用F格式输入输出 A 758321 6G14 7ABS A 107用E格式 0 7583216E 08注意 采用F格式 d为全部数字的位数优先满足整数位 格式 Dw d数符 0 小数点 小数部分 D 符号 指数部分2位3d4方法同E格式 三 双精度数的输入输出 复型数据是用两个实型编辑符 例如 用2Fw d或 Fw d Fw d 或2Ew d Ee 来分别描述该复型的实数部分与虚数部分的 如 COMPLEX XX 2 8 4 6 PRINT 2F4 1 X输出结果为 2 8 4 6 四 复型编辑 格式 rLw功能 逻辑值的输入输出规则 输出一个字母 在字段最右端 前面补空格输入时按宽度读取 以第一个字母作为逻辑值 五 逻辑型数的输入输出 六 字符型编辑A A用来编辑字符型变量 它不关心该字符串的长短如何 例 CHARATER 5A B CREAD A A A A B CWRITE A 2X A 2X A A B CEND输入 ABC DBASICFORMAT 结果 ABC D BASIC FORMA 注意 对于字符型数据的输入 1 在表控格式输入的时候 输入的字符串可以加上撇号 也可省略 撇号不起作用2 在有格式输入的时候 输入的字符串的时候不需要加上撇号 如果输入带撇号 则撇号算入W宽度 1 X编辑描述符功能1 在输出时产生空格 它的一般形式为 nX例 K 123L 2001A 34 5WRITE I3 2X I4 3X F4 1 K L A 六 其他格式编辑符 结果 123 2001 34 5 功能2 输入时 表示跳过n个字符READ 2X F7 1 A输入 1234 51 A 34 51 12跳过 2 撇号编辑符 单或双 功能 撇号内的字符串原样输出 3 H编辑符 描述字符串nH注意 1 N必定等于字符串长度 否则编译出错2 字符串中空格有意义 X 45 7Y 289 7WRITE 100 X Y100FORMAT 2HX F5 1 4H Y F6 2 END 结果 X 45 7 Y 289 70也可FORMAT X F5 1 Y F6 2 4 斜杠编辑描述符作用 结束本记录的输出并开始下一个记录的输出WRITE 5HABCDE 5HBCDEF 1X 5HCDEFG 结果如下所示 ABCDEBCDEF CDEFG注意 1 如两个连续斜杠 在输完前面记录后 空一行再输出2 如在编辑符的最后出现一个斜杠在输出完记录后 再输出一个空行 作用 当输入表 输出表输完后 阻止后面的编辑符起作用 但若输入 输出表未结束之前 不起作用 5 冒号编辑符 INTEGER X Y ZX 1 Y 2 Z 3PRINT 1x I1 I1 I1 X Y ZEND 输出结果为 1 2 3 带控制信息表的输入输出 1 带控制信息表的读语句 P49 READ 说明符1 说明符2 说明符n 输入表关键字 指定参数这里的说明符是指一些附加的功能 例如 指示读入是否出错 出错如何处理等 这些功能每一个可写成一个控制说明符 彼此用逗号分开 全部控制说明符用一对括号括起 写在读关键字和输入表之间 称为控制信息表 例如 WRITE 说明符1 说明符2 说明符n 输出表WRITE UNIT 6 FMT 1X 2F8 2 IOSTAT M X Y各部分与输入语句中基本相同 带控制信息的输出语句 P51 例 programmainreal a binteger mread UNIT 5 FMT IOSTAT m a bprint A Bprint mend read IOSTAT m A B 1 一个记录的编辑格式由它所需的各种类型编辑符组合在一起 彼此用逗号分开 并用括号括起来 再在外面加上单撇号 或双撇号 做定界符 如 编辑符1 编辑符2 编辑符n 例 PRINT 1X F3 1 AND F3 1 X Y 3 4 2有关一个记录的编辑格式说明 3 记录编辑格式如有相连的几个相同的编辑符 则可简化为一个编辑符 但在前边需加上重复系数 例 PRINT 1X F6 1 F6 1 I7 I7 A B C D可写为 PRINT 1X 2F6 1 2I7 A B C D 2 编辑符的类型必须与输入 或输出 表中对应位置数据的类型一致 否则出错 4 相同的编辑符串连续出现时 可简化为一串 用括号括起 前置重复系数 例 PRINT 1X F6 1 2I4 F6 1 2I4 E10 3 A B C D E F G可写为 PRINT 1X 2 F6 1 2I4 E10 3 A B C D E F G 5 在读写语句中可没有变量名表 但不可没有记录格式说明 此时的写语句输出1空行 读语句执行时则读入1空行 即按一下回车键 例 WRITE 10 1X 3F5 1 IOSTAT L PRINT 1X 4I3 PRINT READ 6 编辑符个数和变量个数应相等 如编辑符个数多余变量个数 则多余编辑符不起作用 如编辑符个数少于变量个数 则重复使用格式说明 每重复一次产生一个新纪录 例 PRINT 1X I4 F5 1 E10 3 A B C D E F G H则按如下顺序打印各项数据 ABCDEFGH 例 READ 100 A B CFORMAT 10F8 3 多出7个F8 3不用 不影响语句的执行 例 WRITE 100 IFORMAT I 输出I 永不停止 原因是漏写了I4编辑符 三角形面积 其中 s 已知三角形3条边 a b和c 输入边长 计算面积 并输出 PROGRAMexam1REALa b c s areaREAD a b cs a b c 2area SQRT s s a s b s c PRINT area areaEND运行程序输入数据 2 53 54 5 输出结果数据 area 4 353070 PRINT 1x 3 A F6 3 A F8 3 A A B B C C AREA ARAE PROGRAMexam2IMPLICITNONEREALa b c max num min numREAD a b cMax num MAX abs a abs b abs c Min num MIN abs a abs b abs c PRINT max max num min min numEND运行程序输入数据 2 5 3 5 4 5 输出结果数据 max 4 500000min 2 500000 输入3个实数 求其中绝对值最大和最小的数 并输出 WRITE 1X 2 A F8 2 max max num min min num 1 类型说明语句2 算术表达式和赋值语句3 输入输出语句表控格式自定格式 编辑符的使用 I F E G A L X H等 带控制信息表 本章小结
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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