1 / 14

第 7 章 运算符及表达式

第 7 章 运算符及表达式. 在 Fortran 中提供了极为丰富的运算符,囊括了算术运算、逻辑运算、字符运算等方面。特别是在算术运算方面,作为这种高级计算机语言的专长, Fortran 提供了一些其他高级语言需要使用函数才能进行的计算能力。例如乘方运算。本章开始讲述有关 Fortran 运算符和表达式的相关内容。. 7.1 算术运算. 算术运算是 Fortran 语言中功能最为强大的部分,也是 Fortran 直到今天仍然活跃在计算机舞台上的重要原因。本节主要介绍 Fortran 语言中的算术运算及其相关概念。. 7.1.1 算术运算符及其优先级.

eliora
Download Presentation

第 7 章 运算符及表达式

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 运算符及表达式 • 在Fortran中提供了极为丰富的运算符,囊括了算术运算、逻辑运算、字符运算等方面。特别是在算术运算方面,作为这种高级计算机语言的专长,Fortran提供了一些其他高级语言需要使用函数才能进行的计算能力。例如乘方运算。本章开始讲述有关Fortran运算符和表达式的相关内容。

  2. 7.1 算术运算 • 算术运算是Fortran语言中功能最为强大的部分,也是Fortran直到今天仍然活跃在计算机舞台上的重要原因。本节主要介绍Fortran语言中的算术运算及其相关概念。

  3. 7.1.1 算术运算符及其优先级 • 在Fortran语言中编写算术表达式是相当方便的。除了部分算术运算符在外观上有所不同之外,程序中的算术表达式与教科书中的算术表达式几乎没什么区别。Fortran语言中定义了五种基本的算术运算。这五种基本的算术运算和运算符罗列如下: • 算术加法,运算符为加号“+”,表示数学中的加号; • 算术减法,运算符为减号“-”,表示数学中的减号; • 算术乘法,运算符为星号“*”,表示数学中的乘号; • 算术除法,运算符为撇号“/”,表示数学中的除号; • 乘方运算,运算符为两个连续的星号“**”,表示数学中的乘方。

  4. 7.1.2 算术表达式 • Fortran语言中允许使用四种类型的表达式,即:算术表达式,关系表达式,逻辑表达式和字符表达式。本节介绍其中的算术表达式,其他类型的表达式将在后面的小节中进行介绍。 • 所谓算术表达式是指由一个或多个算术运算符组成的,能够完成特定计算任务的式子。在Fortran程序中,算术表达式是由Fortran语言规定的算术运算符和括号将各种算术运算量(包括常量、变量、函数、数组及数组元素)连结起来的一个有值表达式。例如下面就是一个Fortran算术表达式的实例: • A + B – C*TAN(D)/(ABS(E) + F)

  5. 7.1.3 算术表达式中的类型转换 • 在本章的一开始,就已经介绍了Fortran中的常量和变量是分类型的,那么不同类型的数据之间在算术表达式中是否能够进行运算?如果可以,那么又该遵循什么规则呢? • Fortran语言允许不同类型的算术运算量(如整型、实型、双精度和复型)之间进行算术运算,但不允许在算术运算量和非算术运算量(如逻辑型、字符型)之间进行算术运算。例如“2*10.0”是允许的,但“2*TRUE”是不允许的。 • 那么不同类型的算术运算量之间的运算结果应该是什么类型呢?例如“2*10.0”的结果应该是“20”还是“20.0”呢?

  6. 7.1.4 算术运算的误差 • 由于计算机在保存整型数据时是准确无误的,只存在保存值的范围问题;而在保存实型数据时,不仅仅存在保存的值有一个范围,而且在存储数据的精度上也是受存储空间限制的。例如想要保存圆周率的精确值,这几乎是不可能。在本书配套光盘/Tools/PI目录下有一个小软件Super可用于计算圆周率,从这个软件可以看到想要精确存储圆周率将要花费的存储空间是不可想像的。 • 正因为存储精度上的问题,计算机在进行整型数据之间的运算时是准确无误的,结果不存在任何误差(只要结果在整型数据的保存范围内)。而实型数据之间的运算就会由于存储精度方面的问题而出现一些误差。来看两个实例。

  7. 7.2 关系运算 • 在实际的数学或工程问题中,经常会遇到比较两个数据谁大谁小的问题。这就是一个关系比较的问题。在Fortran中,提供了进行这类操作的运算符和表达式规则。本节就开始对此进行介绍。

  8. 7.2.1 关系运算符 • 关系运算符也可以称作关系比较符,它是一个双目运算符。Fortran中定义了六个基本的关系运算符,这六个基本关系运算符在不同的Fortran标准中有各自的表示方式。 Fortran 77中的关系运算符

  9. 7.2.2 关系表达式 • 介绍了关系运算符之后,现在来介绍关系表达式。关系表达式是最简单的一种逻辑表达式,它的一般形式为: • <关系运算量> <关系运算符> <关系运算量> • 关系元算量可以是算术量,也可以是字符量。这里只介绍算术量的关系表达式,字符量的关系表达式将在字符表达式的小节中进行介绍。算术量可以是数值型常量、数值型变量、数值函数,还可以是算术表达式。下面是一些关系表达式的实例。 • A+B>3.5 等价于 A+B.GT.3.5 • 40>=40 等价于 40.GE.40 • 40<C 等价于 40.LT.C • COS(B)<=0.5 等价于 COS(B).LE.0.5 • (M+N)*X==0.0 等价于 (M+N)*X.EQ.0.0 • X-Z.NE.(Y+X) X-Z.NE.(Y+X)

  10. 7.3 逻辑运算 • 前面一节介绍了最简单的逻辑表达式,也就是关系表达式。关系表达式只能用于表示关系运算量是否满足某一种关系。如果问题复杂一点,关系表达式就无能为力了。例如关系表达式无法表示变量A既要大于B,同时还要小于D的情况,即数学表达式B<A<D。这时就需要用到另一种表达式——逻辑表达式。本节介绍有关逻辑运算符和逻辑表达式的相关知识。

  11. 7.3.1 逻辑运算符 • Fortran语言中提供了5种逻辑运算符供程序员在编程时使用。新旧Fortran标准中的逻辑运算符没有任何区别,每个运算符的左右两侧都有一点“.”,书写时不可以省略。逻辑运算符中有的是双目运算符,有的是单目运算符,使用中需要注意。表7.3给出了这几个逻辑运算符的定义和表达的意义。 Fortran中的逻辑运算符

  12. 7.3.2 逻辑表达式 • 介绍了逻辑运算符之后,现在来介绍逻辑表达式。逻辑表达式的一般形式为: • <逻辑运算量><逻辑运算符><逻辑运算量>[<逻辑运算符><逻辑运算量>…] • 同关系表达式不同,一个逻辑表达式中可以包括多个逻辑运算符,例如逻辑表达式“A.GE.10.0.AND.A+C.GT.B+D.OR..NOT..TRUE.”中包含了.AND.、.OR.、.NOT.三个逻辑运算符。在逻辑表达式中除了有逻辑运算符外,还可以有关系运算符和算术运算符。 • 下面是一些逻辑表达式的例子: • (A.GT.B).AND.(A.NE.C) 等价于(A>B).AND.(A/=C) • (X.LT.-1.0).OR.(X.GT.1.0) 等价于(X<-1.0).OR.(X>1.0) • .NOT.((A+C)*D.LE.0.0) 等价于.NOT.((A+C)*D<=0.0) • (A.GT.B).EQV.(C.LE.D) 等价于(A>B).EQV.(C<=D) • L1.NEQV.L2

  13. 7.3.3 逻辑表达式的运算秩序 • 在上面的一系列例子中,有的逻辑表达式中既有逻辑运算符,又有关系运算符和算术运算符。对于这种混合了多种运算符的表达式,Fortran语言规定了不同运算符的运算顺序: • 首先计算算术表达式的值(例如前面一个范例中的A+C和B+D)。 • 接下来再求关系表达式的值(例如前面一个范例中的A.LE.10.0和A+C.GT.B+D)。 • 最后进行逻辑运算,各个逻辑运算符的先后顺序是:.NOT.>.AND.>.OR.>.EQV.=.NEQV.。 • 如果逻辑表达式中有括号,则先进行括号内的运算。

  14. 7.4 字符运算 • 除了为数值运算提供了丰富的运算操作外,Fortran语言中字符型数据之间也可以进行运算。相应的字符运算符只有一个,称为字符连接符。字符连接符为两个相连的撇号“//”,撇号中间不允许插入空格。 • 字符运算符功能就是把符号前后的两个字符运算量连接在一起。字符运算量可以是字符型变量、字符型常量、子字符串、字符函数、字符数组元素等等。 • 在Fortran程序中,字符表达式是由Fortran语言规定的可进行字符操作的运算符将各种字符运算量连结起来的一个有值表达式。例如字符表达式’Vitamin’//’C’的值为’VitaminC’;字符表达式A//’Include:’//A(2:6)//’ And ’//B(1:4)//’don’’t include ’//D将字符型变量、字符型常量、子字符串等连在了一起。

More Related