350 likes | 531 Views
第 3 章 FORTRAN90 基础知识. 1. 字符集 2. 名称 3. 关键字 4. 程序单元 5. 语句 6. 书写格式 7. 数据类型. 《 程序设计语言 (FORTRAN)》 课多媒体课件. 3.1 字符集. 概述 字符集 说明. FORTRAN 90 源程序是一个符合 FORTRAN 90 词法、语法和语义规定的特殊文本 , 它由 FORTRAN 90 字符集规定的字符按照词法、语法和语义规定进行描述。. 第三章 FORTRAN 90 基础知识. 3.1 字符集 / 字符集. 3.1 字符集.
E N D
第3章 FORTRAN90基础知识 1. 字符集 2. 名称 3. 关键字 4. 程序单元 5. 语句 6. 书写格式 7. 数据类型 《程序设计语言(FORTRAN)》课多媒体课件
3.1 字符集 • 概述 • 字符集 • 说明 • FORTRAN 90源程序是一个符合FORTRAN 90词法、语法和语义规定的特殊文本,它由FORTRAN 90字符集规定的字符按照词法、语法和语义规定进行描述。 第三章 FORTRAN 90基础知识
3.1 字符集/字符集 3.1 字符集 • FORTRAN 90字符集由下面四部分字符组成: 1.英文字母 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h I j k l m n o p q r s t u v w x y z 2.阿拉伯数字:0 1 2 3 4 5 6 7 8 9。 3.下划线:“_”。 4.特殊字符 空格 <Tab> + - * / ( ) , . ' : ! " % & ; < > ? $。 • Visual FORTRAN字符集增加了一些可打印字符,包括十六进制ASCII码为09h(Tab符)、20h至7Eh之间的字符和某些特殊字符集(如:IBM字符集)中字符。 • 概述 • 字符集 • 说明 第三章 FORTRAN 90基础知识
3.1 字符集/说明 3.1 字符集 • 概述 • 字符集 • 说明 ①除字符型常量外,源程序中词法和语法描述不区分字母的大小写,如语句“INTEGER I”和语句“integer i”是等价的。 ②FORTRAN 90字符集以外的可打印字符,只能出现在注释、字符常量、字符串编辑符和输入输出记录中。 ③字符:_ ! " % & ; > < ?为FORTRAN 90新增字符。 第三章 FORTRAN 90基础知识
3.2 名称 3.2 名称 • 名称在其它语言中称“标识符”。 • 名称在程序中用来标识有关实体(如:变量、命名常量、函数、过程、程序单元、公用块、名称表组和哑元等)。 • 概述 • 语法描述 • 作用域 • 示例 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.2 名称/语法描述 3.2 名称 • 概述 • 语法描述 • 作用域 • 示例 <名称>→<英文字母>{<英文字母>∣<数字>∣“_”∣“$”} 说明: ① 名称只能由英文字母、数字、下划线符“_”和美元符号“$”组成。 ② 名称第一个字符必须是英文字母。 ③ 名称不能超过31个字符。 注:某个参数如果在子程序或函数中没有用到,那就被称为哑元,用到了的称为实元。 第三章 FORTRAN 90基础知识
3.2 名称/作用域 3.2 名称 • 概述 • 语法描述 • 作用域 • 示例 • 作用域指使用范围,每个名称都规定了作用域。名称的作用域为该名称声明所在的程序单元、函数或过程。 • 作用域为整个程序的名称称为全局名称,否则称为局部名称。 • 程序单元名、外部过程名、命令块名和模块名为全局名称,且在整个程序中必须唯一。 第三章 FORTRAN 90基础知识
3.2 名称/示例 3.2 名称 [例3.1]判定下列名称,哪些是合法名称?哪些是非法名称?解释非法名称错误原因。 Number, Max, X-Y-Z, PrOgRaM, FIND_IT, read, x, 8q, a.5, _wrong, a3b7, U.S.A., DR.WANG, china, total, x$y$z, $abcd,r a t e。 解:合法名称有:Number,Max, PrOgRaM, FIND_IT, read, x, a3b7, china, total, x$y$z。 非法名称有:X-Y-Z, 8q, a.5, _wrong,U.S.A., DR.WANG,$abcd,r a t e。 表3-1给出非法名称错误原因。 下面是几个使用合法名称的语句例子。 INTEGER total !total命名了一个整型变量 SUBROUTINE example !example命名了一个过程 PROGRAM area !area命名了一个程序单元 Lable:DO I=1,N !Lable命名了一个DO循环 • 概述 • 语法描述 • 作用域 • 示例 第三章 FORTRAN 90基础知识
非法名称 错误原因 非法名称 错误原因 X-Y-Z 名称中含减号“-” U.S.A. 名称中含小数 点“.” 8q “8”作为第一字符 DR.WANG 名称中含小数点“.” a.5 名称中含小数点“.” $abcd “$”作为第一字符 _wrong “_”作为第一字符 r a t e 名称中含空格 名称示例表3-1 第三章 FORTRAN 90基础知识
3.3 关键字 3.3 关键字 • 关键字是FORTRAN 90中用于描述语句语法成分或命名哑元名称的特定字符串。FORTRAN 90关键字分为语句关键字和变元关键字。 • 概述 • 分类 • 说明 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.3 关键字/分类 3.3 关键字 FORTRAN 90关键字分为语句关键字和变元关键字。 • 语句关键字是用于描述语句语法成分的固定的合法单词。 如语句“IF (A<B) THEN”中的“IF”和“THEN”是语句关键字,类似的关键字有:PROGRAM、INTEGER、REAL、READ、PRINT、WRITE、DO、END、SUBROUTINE、FUNCTION等。 • 变元关键字是命名特定哑元名称的合法单词。 变元关键字是FORTRAN 90特有的性质,FORTRAN 90对所有的内部函数和过程都规定了变元关键字,它们在有关接口块中做出了具体规定,允许在调用时使用变元关键字。 使用变元关键字可提高程序的可读性,如内部函数CMPLX ( X [ , Y] [ , KIND] ) 的X、Y和KIND为变元关键字,可使用下面语句调用CMPLX函数: CMPLX (10, 20, 4) ! 按序指定参数。 CMPLX (y=20, kind=4, x=10) ! 按变元关键字指定参数。 CMPLX (10, kind =4) !跳过Y参数。 • 概述 • 分类 • 说明 第三章 FORTRAN 90基础知识
3.3 关键字/说明 3.3 关键字 • 关键字都有特定的含义,在描述中有具体的位置要求,不能改变或移位,否则将产生语法错误。如语句“PROGRAM main”中的关键字“PROGRAM”的含义是说明源程序是一个主程序单元,位于语句首部,如果写成“PROGRAMMING main”或“main PROGRAM”将产生语法错误。 • FORTRAN 90对关键字不予保留,即允许其关键字作为其它实体的名称(变量名、数组名、函数名、程序名等),可将PROGRAM、INTEGER、REAL、READ、PRINT、WRITE、DO、END、SUBROUTINE、FUNCTION等作为变量名、数组名、函数名或程序名。编译程序根据上下文来识别一个字符串是关键字,还是实体名称。如语句“PROGRAM PROGRAM”中第一个“PROGRAM”将被编译程序识别为关键字,第二个“PROGRAM”将被识别为实体名称(主程序单元名)。 • 程序中应避免使用关键字作为实体名称,因为使用关键字作为实体名称会导致程序难以理解和阅读,降低程序的可读性。 • 概述 • 分类 • 说明 第三章 FORTRAN 90基础知识
3.4 程序单元 3.4 程序单元 • 一个F90程序可由多个程序单元组成(至少一个主程序单元)。 • 程序单元由数据声明和相关操作(语句)构成,用END语句结束。 • 概述 • 分类 • 描述 • 示例 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.4 程序单元/分类 3.4 程序单元 • FORTRAN 90规定有四种程序单元:主程序单元、外部子程序单元、模块单元和块数据单元。每个程序单元可分别编译,一起构建(连编)产生可执行程序。 • 主程序单元:程序中被首次执行的程序单元,程序运行的入口点,其它程序单元执行的启动器。由PROGRAM语句开始,可缺省。 • 外部子程序单元:不包含在主程序单元、模块单元和其它外部子程序单元中的函数或例行子程序所构成的程序单元,其中外部函数和外部例行子程序能被FORTRAN 90程序中其它程序单元调用执行。由FUNCTION或SUBROUTINE语句开始。 • 模块单元:能被其它程序单元访问的一组定义(数据类型定义、过程定义、过程接口定义)所构成的程序单元,其中模块子程序允许本模块或其它程序单元调用执行。由MODULE语句开始。 • 块数据单元:为命名公用块中变量指定初始值的程序单元。由BLOCK DATA语句开始。 • 主程序单元、外部子程序单元和模块单元可以包含内部子程序,包含内部子程序的程序单元称为宿主(Host),内部子程序能被其宿主或宿主内的其它子程序调用执行。 • 概述 • 分类 • 描述 • 示例 第三章 FORTRAN 90基础知识
启示录:有一句话说的好:经常议论别人的缺点,你就是一个道德水准低下者;经常议论人类的缺点,你就是一个思想家。启示录:有一句话说的好:经常议论别人的缺点,你就是一个道德水准低下者;经常议论人类的缺点,你就是一个思想家。 • 结论:不能光看小的,要看大处 。
3.4 程序单元/描述 3.4 程序单元 <程序>→<主程序单元>{<外部子程序单元>∣<模块单元>∣<块数据单元>} <主程序单元>→[ <PROGRAM语句> ] [ <说明部分> ] [ <操作部分> ] [ <内部子程序部分> ] <END语句> <PROGRAM语句>→PROGRAM <程序名称> <END语句>→END [ PROGRAM [ 程序名称 ] ] <说明部分>→{<内部数据类型说明语句>∣ <派生数据类型说明语句>∣ <数组类型说明语句>∣ <指针类型说明语句>} <操作部分>→{<非说明语句>} <内部子程序部分>→CONTAINS {<内部子程序>} • 概述 • 分类 • 描述 • 示例 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.4 程序单元/示例 3.4 程序单元 [例3.2]编写一个包含下列语句的主程序单元,给出所有可能的主程序单元结构。 INTEGER a,b,c a=10;b=20 c=a+b PRINT *,' a+b=',c 解:有5种程序单元结构。 • 概述 • 分类 • 描述 • 示例 第三章 FORTRAN 90基础知识
程序单元程序示例 INTEGER a,b,c a=10;b=20 c=a+b PRINT *,'a+b=',c END INTEGER a,b,c a=10;b=20 c=a+b PRINT *,'a+b=',c END PROGRAM PROGRAM add INTEGER a,b,c a=10;b=20 c=a+b PRINT *,'a+b=',c END PROGRAM add INTEGER a,b,c a=10;b=20 c=a+b PRINT *,'a+b=',c END PROGRAM PROGRAM add INTEGER a,b,c a=10;b=20 c=a+b PRINT *,'a+b=',c END PROGRAM add 第三章 FORTRAN 90基础知识
3.5 语句 3.5 语句 FORTRAN 90语句分为两类: • 可执行语句:表示程序要完成某个操作。 • 非执行语句:描述程序的某种属性。 • 概述 • 排列次序 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.5 语句/排列次序 3.5 语句 • 程序中语句要求按规定次序排列,即语句位置不能随意放置,否则将产生语法错误,如INTEGER语句和PRINT语句的先后顺序就不能颠倒。 • 语句排列次序规定如表3-2所示(课本61页),表中给出了全部语句的排列次序要求。语句的排列次序与执行次序不完全相同。 • 概述 • 排列次序 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.6 书写格式 3.6 书写格式 • 每种程序设计语言对书写格式都有特定要求。 • 传统FORTRAN语言,采用固定格式。 • FORTRAN 90采用固定格式和自由格式。推荐自由格式。 • 概述 • 标志符 • 语句标号 • 自由格式 PROGRAM main !flgjfdkjl INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.6 书写格式/标志符 3.6 书写格式 书写格式都定义若干标志符,指出文本的意义。 F9ORTRAN90定义3个通用标志符: • 注释标志符“!” 可出现在程序单元任何位置,表示其后至行末为注释文本。注释行只起解释和说明作用,对程序单元的编译没有影响。一行均为空格也是一个注释行。 • 语句分隔标志符“;” 可出现在两条语句之间,表示左右为两条独立的语句。允许一行书写多条语句,用符号“;” 分隔语句。 • 续行标志符“&” 可出现在一条语句内部,表示前后文本属于一条语句。一条长语句可分多行书写,中间需用“&”连接, 出现在前一续行的末尾。在Digital Visual FORTRAN 5.0中,续行可达511行。 • 概述 • 标志符 • 语句标号 • 自由格式 第三章 FORTRAN 90基础知识
3.6 书写格式/语句标号 3.6 书写格式 • 语句前面可设置语句标号(即语句编号)。 • 语句标号作用是可改善和提高程序可读性;便于其他语句访问该语句,获取信息或转移控制。语句标号可放在任何完整语句前面,但不属于后面的语句。 • 语句标号是长度不超过5位十进制正整数,不允许全0。空语句不能加语句标号。语句标号的声明具有唯一性,在同一程序单元中不能声明相同的语句标号。 • 概述 • 标志符 • 语句标号 • 自由格式 1PROGRAM main 2 INTEGER length,width,area,price 3 READ*,length,width 4 area=length*width 5 price=4000*area 6 PRINT*,’总地价:’,price,’元’ 7 END 第三章 FORTRAN 90基础知识
3.6 书写格式/自由格式 3.6 书写格式 • 概述 • 标志符 • 语句标号 • 自由格式 • 在自由格式中,语句在一行中的位置不受限制。语句长度可达132个字符。 • 在自由格式中,注释标志符“!”可出现在一行的任意位置。若出现在第1列,则表示该行为注释文本。若出现在中间位置,则其后至行末为注释文本。 • 在自由格式中,一行允许写多个语句,语句之间用分号“;”分隔,最后语句之后不能有分号“;”。一个语句最长不能超过2640个字符。 • 空格除允许出现在字符串文本中外,它不能出现在任何合法单词内。如“INTEGER”。 • 在相邻两个关键字、名称、常量、标号之间必须插入一个或多个空格。有些关键字之间可没有空格,课本64页表3-5。 第三章 FORTRAN 90基础知识
3.6 书写格式/自由格式 3.6 书写格式 • 概述 • 标志符 • 语句标号 • 自由格式 • 在自由格式中,续行标志符“&”出现在待续行语句末尾处,若出现在注释文本、字符常量或Hollerith常量中,则失去续行功能。符号“&”后的第一个非注释行为续行,FORTRAN 90允许有39个续行,Visual FORTRAN 5.0允许511个续行。 • 在语句中单词符号外续行,要求待续行语句部分末尾必须有续行标识符“&”,在接续行语句部分首字符可以写,也可以不写续行标识符“&”。 • total=100*(i+j)*& • count • total=100*(i+j)*& • &count • 在语句中单词符号内续行,要求待续行语句部分末尾和接续行语句部分首字符必须有续行标识符“&”。 • total=100*(i+j)*co& • &unt 第三章 FORTRAN 90基础知识
3.7 数据类型 3.7 数据类型 • 计算机系统的处理对象是数据(信息),离开了数据,计算机就失去了应有的价值。数据、数据表示及数据类型在计算机科学应用(特别是程序设计语言和程序设计)中占有重要位置。 • 概述 • 数据 • 数据表示 • 数据类型 PROGRAM main INTEGER length,width,area,price READ*,length,width area=length*width price=4000*area PRINT*,’总地价:’,price,’元’ END 第三章 FORTRAN 90基础知识
3.7 数据类型/数据 3.7 数据类型 • 概述 • 数据 • 数据表示 • 数据类型 • 数据是自然界中客观事物的符号表示。在计算机科学中,一切能够被计算机接受和处理的对象(信息)均看成是数据。如:面积、周长、体积、距离、速度等都是计算机处理的数据。随着计算机技术的发展,数据的内涵也在不断扩展。数据由早期的整数、实数、复数等简单数据,发展到现在字符串、文本、图形、图像、声音等复杂数据。 • 数据分数值数据和非数值数据。 • 数值数据是能直接进行算术运算(科学计算)的数据。如:整数、实数、复数等。 • 非数值计算是不能直接进行算术运算,一般进行查询、检索、分类和处理等操作的数据。如:字符串、文本、表格、图形、图像、声音等。 第三章 FORTRAN 90基础知识
3.7 数据类型/数据表示 3.7 数据类型 数据在计算机中进行运算或处理必须采用某种合适的表示形式。同一数据如表示形式不同,则处理方式也有所差异。选择合适数据表示形式,对于程序设计来说至关重要。 • 数据的定点表示。 小数点位置固定不变的表示方式。整数采用定点表示。定点表示数据精确,没有误差,但表示数据范围小。 • 数据的浮点表示。 小数点位置浮动变化的表示方式。实数采用浮点表示。浮点表示数据有误差,数很小时,认定为0,表示范围大. • 数据的ASCII码表示。 数据的一种编码形式。字符采用ASCII表示。ASCII码为美国标准信息交换码,采用7位编码,即每一个字符由7位码表示,ASCII码共128个编码,表示128个字符。 • 数据的编码表示。 图形、图像和声音等非数值数据采用更为复杂的编码方法编码表示。 • 概述 • 数据 • 数据表示 • 数据类型 第三章 FORTRAN 90基础知识
定点整数范围 符号位,0表示+,1表示- 数据位
实数(浮点数)的表示 • 实数(浮点数)的表示 任何一个十进制实数都可以有以下不同的表示形式: -34.62 = -3462×10-2 = -0.3462×102 = -3.462×101 同样,二进制实数也可以用上述方法表示,例如: -10.01 = -1001 ×2-10 = -0.1001×210 = -1.001×21 (注意:此式中的指数是二进制),上述表示法称作记阶表示法。记阶表示法如图所示。在记阶表示法中,数由五部分组成:尾符、尾数、阶符、阶数、基数。 N= 数符尾数2阶符阶数 尾数的位数决定数的精度 阶数的位数决定数的范围
浮点数 在上图中,基数2是固定不变的,当我们已经确定一个实数是二进制实数时,就可以省去该基数。所以,在计算机内部表示二进制实数时,可由尾符、尾数、阶符、阶数四部分组成。二进制数-0.1001×210在计算机可表示为: -0.1001×210 = -0.01001×211 = -0.001001×2100 = … 规格化的形式:尾数的绝对值大于等于0.1并且小于1,从而惟一地规定了小数点的位置。
3.7 数据类型/数据类型 3.7 数据类型 • 不同类型数据有不同的特性,其处理方式不同,取值范围不同。在处理数据前,必须说明数据的特性。数据类型是说明数据特性的常用形式,在语言中被广泛采用。 • 数据类型是数据取值范围和在其上定义的一组操作的总称。数据类型规定了一种数据取值范围和一组操作。 • 数据类型有四个性质: • 每个数据类型有一个唯一的名称。内部数据类型名称由Fortran语言预先定义。派生类型名称根据类型定义语句定义。 • 每个数据类型规定了一个取值范围(值的集合)。如:8位整型数据类型的取值范围是-128至127。 • 每个数据类型规定了其常量数据的表示方法,如:实数常量12.5。 • 每个数据类型规定了一组操作。如整型规定的操作有:加+、减-、乘*和除/操作。 • FORTRAN 90具有丰富的数据类型,有内部数据类型、派生数据类型、数组和指针类型等。利用丰富的数据类型可设计和编写出功能强大的FORTRAN 90程序。 • 概述 • 数据 • 数据表示 • 数据类型 第三章 FORTRAN 90基础知识
3.7 数据类型/数据类型/示例 整数类型 数组类型 实数类型 派生类型(记录类型) 复数类型 FORTRAN 90 数据类型 内部数据类型 字符类型 指针类型 逻辑类型 公用区类型类型 3.7 数据类型 不同类型数据有不同的特性,其处理方式不同,取值范围不同。在处理数据前,必须说明数据的特性。数据类型是说明数据特性的常用形式,在语言中被广泛采用。 数据类型是数据取值范围和在其上定义的一组操作的总称。数据类型规定了一种数据取值范围和一组操作。 数据类型有四个性质: • 每个数据类型有一个唯一的名称。内部数据类型名称由F语言预先定义。派生类型名称根据类型定义语句定义。 • 每个数据类型规定了一个取值范围(值的集合)。如:8位整型数据类型的取值范围是-128至127。 • 每个数据类型规定了其常量数据的表示方法,如:12.5。 • 每个数据类型规定了一组操作。如整型规定的操作有:加+、减-、乘*和除/操作。 FORTRAN 90具有丰富的数据类型,有内部数据类型、派生数据类型、数组和指针类型等。利用丰富的数据类型可设计和编写出功能强大的FORTRAN 90程序。 • 概述 • 数据 • 数据表示 • 数据类型 第三章 FORTRAN 90基础知识