资源描述:
《fortran程序设计.第6章ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、FORTRAN语言--FORTRAN77结构化程序设计第六章FORTRAN的数据结构6.1程序中的数据结构程序处理的对象是数据。前几章用到的数据类型是最简单的,称为基本类型数据。有时所处理的数据对象比较复杂,数据之间存在某种内在联系,例如一个职工的人事数据包括:职工名、职工号、性别、年龄、住址、职务等。这些数据都属于同一个职工的数据。在编写程序时不仅需要考虑程序本身的结构,即操作语句间的结构关系,还要考虑数据的结构,要清楚数据的特性及数据间的联系,设计出适当的数据结构,然后考虑用什么样的算法。例如学生记录那样的数据结构可以用数组来实现。对
2、于同一个问题的求解,可以采用不同的数据结构和不同的算法。对不同的数据结构有不同的算法,它们的复杂程度不同。选择合适的数据结构,可以降低算法的复杂程度,因此,在程序设计中应重视数据结构的设计。在计算机高级语言中提供实现各种数据结构的功能,用数据类型表示不同的数据结构。每种高级语言都规定它可以使用的数据类型。三类数据结构:1)基本类型:最基本的数据项,是不可再分的。基本类型包括整型、实型、双精度型、复型、逻辑型等类型2)构造类型:由已知类型,按一定规则构造而成的复合类型数据,包括数组、记录、文件和集合等3)指针类型:用于构造各种形态的动态数据
3、结构,如链表、队、栈、树、图等在FORTRAN77中基本类型有以下六种:整型实型双精度型复型逻辑型字符型6.2双精度类型数据实型提供7位有效数字,双精度型提供15~17位有效数字。双精度常数要用指数形式表示,将实数中表示指数的字母E改成字母D即可。例如:1.23456789表示为1.23456789D+00.123表示为1.23D-01[例6.1]分数序列2/1,3/2,5/3,8/5,13/8,21/13…,求出这个序列的前20项之和。Fibonacci数列:1、1、2、3、5、8、13、21...。DOUBLEPRECISIONA,B
4、,C,SS=0.0D0A=1.0D0B=1.0D0C=A+BDO10,I=1,20,1S=S+C/BA=BB=CC=A+B10CONTINUEPRINT*,‘S=’,SEND6.3复型类型数据FORTRAN提供复型数据结构,用复型变量存放复数的实部和虚部,并且直接进行复数运算。在程序中要对复型变量作出说明。但只在本程序单位中有效。说明语句可用COMPLEX语句或IMPLICIT语句。例如:COMPLEXC,DIMPLICITCOMPLEX(X-Z)复型常数是用两个实数表示,第一个实数表示实部,第二个实数表示虚部。例如:以(1.0,2.5)
5、表示复数1+2.5i,以(0.0,-5.4)表示复数-5.4i。已定义为复型变量后可以用赋值语句将复型常数赋给复型变量。C=(3.0,6.3)D=(8.76E+5,-67.8E-3)如果实部和虚部都不是常数,而是表达式,则应用CMPLX函数将实部和虚部组成复型数据再赋给复型变量,例如:C=CMPLX(3.0*A,6.0+B)如果CMPLX函数只有一个自变量,则它代表实部,如CMPLX(3.0)的作用是将实数3.0转成复数(3.0,0.0)。[例6.2]求一元二次方程Ax2+Bx+C=0的根COMPLEXX1,X2READ(*,*)A,B,
6、CD=B*B-4.0*A*CPART1=-B/(2.0*A)PART2=SQRT(ABS(D))/(2.0*A)IF(D.GE.0.0)THENX1=CMPLX(PART1+PART2,0.0)X2=CMPLX(PART1-PART2,0.0)ELSEX1=CMPLX(PART1,PART2)X2=CMPLX(PART1,-PART2)ENDIFWRITE(*,*)‘X1=’,X1WRITE(*,*)‘X2=’,X2END6.4四种数值型数据之间的转换和运算6.4.1不同类型数据之间运算的规则表6.1给出不同类型数据之间进行加减乘除运算的
7、规则(C=A+B或C=A*B)C的类型整型实型双精度型复型整型整实双复实型实实双复双精度型双双双复复型复复复复其中表示FORTRAN77标准是不允许的。但有的FORTRAN编译系统作了放宽,允许双精度型数据和复型数据之间运算,结果为复型6.4.2不同类型数据的赋值规则表6.2不同类型数据的赋值规则(v=e)ve整型实型双精度型复型整型直接赋值取整,舍去小数再赋值取整,舍去小数再赋值实部取整实型化成实型,赋值直接赋值舍掉多余的有效数字,变成实型,赋值实部赋值双精度型先化成双精度型,赋值先化成双精度型,赋值直接赋值实部化成双精度型,赋值
8、复型化成实数,加上虚部0,变成复数,赋值实部赋值,虚部赋零化成实数,虚部赋零直接赋值6.4.3类型转换函数FORTRAN77提供一些函数,使不同类型的数据能相互转换,见表6.3。整型实型双精度