6Fortran的数据结构 FORTRAN语言程序设计 教学课件

上传人:油条 文档编号:49095105 上传时间:2018-07-23 格式:PPT 页数:27 大小:809.50KB
返回 下载 相关 举报
6Fortran的数据结构 FORTRAN语言程序设计 教学课件_第1页
第1页 / 共27页
6Fortran的数据结构 FORTRAN语言程序设计 教学课件_第2页
第2页 / 共27页
6Fortran的数据结构 FORTRAN语言程序设计 教学课件_第3页
第3页 / 共27页
6Fortran的数据结构 FORTRAN语言程序设计 教学课件_第4页
第4页 / 共27页
6Fortran的数据结构 FORTRAN语言程序设计 教学课件_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《6Fortran的数据结构 FORTRAN语言程序设计 教学课件》由会员分享,可在线阅读,更多相关《6Fortran的数据结构 FORTRAN语言程序设计 教学课件(27页珍藏版)》请在金锄头文库上搜索。

1、1第八章第八章 常用算法的程序设计举例常用算法的程序设计举例第一章第一章 算法算法第二章第二章 计算机和计算机程序计算机和计算机程序第四章第四章 逻辑运算和选择结构逻辑运算和选择结构第五章第五章 循环结构的实现循环结构的实现第六章第六章 FortranFortran的数据结构的数据结构第七章第七章 数据的输入、输出数据的输入、输出第三章第三章 FortranFortran语言程序设计初步语言程序设计初步2一、程序中的数据结构程序处理的对象是数据某班学生学生1学生2学生30职工记录职工名职工号家庭住址性别年龄3在计算机语言中,用数据类型来表示不同的数据结构 。高级语言一般有以下三类数据结构:基本

2、类型、构造类 型和指针类型。基本类型(简单类型):整型、实型、双精度型、复型、逻辑型、字符型等。构造类型:数组、记录、文件、集合等。指针类型:链表、队、栈、树、图等。FORTRAN77提供基本类型、构造类型。算法+数据结构=程序4二、双精度类型数据双精度数在计算机系统中以两倍于实型的字节数来 存储,它提供的有效数字比实型数据多一倍以上。双精度数也是近似的表示一个数,只是它的精度更 高。在同一个系统中,它与实型数据的表数范围相同。双精度常数要以指数形式表示,并以d代替e 。1.1e21.1d2 0.00.0d0 1.01.0d0双精度型数据,要先定义后使用。 double precision a

3、mount, income implicit double precision (r, x-z) real*8 imax, volt real(8) imax, volt real (kind=8) imax, volt !Fortan 90 添加5求: 前200项乘积。double precision i,ai,y y=1d0 i=1d0 10if(i.le.100d0) then ai=4.0*i*i/(4.0*i*i-1) y=y*ai i=i+1 goto 10 end if write(*,*) y=,y end6三、复型数据复型数据分实部虚部,使用8个字节来存放,必 须先定义后使用

4、。complex pose, flux implicit complex (r, x-z)complex *8 pose, flux !Fortran77 传统 complex (8) pose, flux !Fortran77 传统 complex (kind=8) pose, flux !Fortran90添加复数的实部和虚部两部分也是用实数来保存,所 以复数也可以分为单精度和双精度两种类型。7复型常数表示为 : 1+2.5i(1.0, 2.5) -5.4i(0.0, -5.4) 7.8(7.8, 0.0)如果实部或虚部是表达式,则需通过cmplx函数转 换成复型数。complex cor

5、dxy, trans trans=(3.0, 6.5) cordxy=cmplx(3.0*x, 6.5*y)cmplx(3.0)则 转成(3.0, 0.0)8complex x1,x2 read(*,*) a,b,c d=b*b-4.0*a*c part1=-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) end if write(*,*

6、) x1=,x1 write(*,*) x2=,x2 end 求一元二次方程Ax2+Bx+C=0的根9已知交流电路:U=220v, r0=10, L0=10-3 H, r1=100 ,C1=100F, r2=50 , L2=10-2 H, C2=200 F。 求:(1)等效电阻Z;(2)电流I, I1, I210implicit real(l) implicit complex(u,i,z) parameter (omega=314.1592) u=(220.0,0.0) write(*,*) enter r0,l0,r1,c1,r2,l2,c2 read(*,*) r0,l0,r1,c1,r

7、2,l2,c2 z0=cmplx(r0,omega*l0) z1=cmplx(r1,-1.0/(omega*c1) z2=cmplx(r2,omega*l2-1.0/(omega*c2) z12=(z1*z2)/(z1+z2) z=z0+z12 i=u/z i1=i*z12/z1 i2=i*z12/z2 write(*,*) z=,z write(*,*) i=,i write(*,*) i1=,i1 write(*,*) i2=,i2 end11线段AB:A(1, 1),B(4.5, 4.5); 求:AB长度及黄金分割点C坐标 。complex a,b,c real l read(*,*)

8、a,b c=a+0.618*(b-a) l=abs(a-b) write(*,*) l=,l write(*,*) c=,c end12复型数据之间可以进行加、减、乘、除运算 。设A=(a1,a2),B=(b1,b2):A+B=( a1+b1,a2+b2) A-B= ( a1-b1,a2-b2) A*B= ( a1*b1-a2*b2, a1*b2+a2*b1 ) A/B= (a1*b1+a2*b2)/ (b1*b1+b2*b2) ,(a2*b1-a1*b2 )/ (b1*b1+b2*b2)13不同数值类型数据间运算遵循由低级向高级转化原 则:(低)整型实型双精度型复型(高)。14三、字符型数据

9、1. 字符型常量是用单引号括起来的若干个字符 。Fortran77语句字符集: (1)英文26个字母的大小写; (2)09的10个数字; (3)、$、(、)、+、-、*、/、,、=、.、:13个专用字符。而字符串中的字符规定要宽得多,能够从键盘等输入 的都可以作为引号中的字符。 Lao Li, Thats it, How are you?, *#% lge(Clinton,Bush) T llt(Japan,PRChina) T ; lle(man,nature) T21(3)检查子串位置: index(fortran,tran) 4;index(fortran,trans) 0(4)ASCI

10、I代码与字符间的转换: char(99) c;char (71) G; char (35) # ichar(k) 107;ichar(H) 72; ichar(!) 336. 程序举例*找a打头字串 character*10 word read(*,*) n do 10 i=1,nread(*,*) wordif(word(1:1).eq.a) $ write(*,*) word 10continue end*找a打头字串 character*10 word read(*,*) n do 10 i=1,nread(*,*) wordif(index(word,a).eq.1) $ write(

11、*,*) word 10continue end22C 翻译密码:每字母变成其后第5个字母 C AF,BG,.,VA,WB,.循环 character*80 line1,line2 character l1,l2 read(*,*) n,line1 do 10 k=1,nl1=line1(k:k)if(lge(l1,A).and.lle(l1,Z).or.$ (lge(l1,a).and.lle(l1,z) theni=ichar(l1)j=i+5if(j.gt.ichar(z).or.$ (j.gt.ichar(Z).and.j.lt.ichar(e)$ j=j-26l2=char(j)li

12、ne2(k:k)=l2elseline2(k:k)=l1end if 10continue write(*,*) line2 end23C 从文章中找某个单词的个数 character line*80,word*5 parameter (word=China) open(5,file=mydata.dat) n=0 read(5,*) k do 10 i=1,kread(5,*) linej=1 20 l=index(line(j:80), word)if(l.eq.0) thenj=81elsen=n+1j=l+5end ifif(j.le.76) goto 20 10continue wr

13、ite(*,*) The number of “China“ is, n end24*打印图案 character*9 line line= do 10 i=1,5do 20 j=6-i,4+iline(j:j)=* 20 continuewrite(*,*) line 10continue do 30 i=4,1,-1line= do 40 j=6-i,4+iline(j:j)=*40 continuewrite(*,*) line 30continue end*打印图案 character*9 line line= do 10 i=1,5do 20 j=6-i,4+iline(j:j)=*

14、 20 continuewrite(*,*) line 10continue do 30 i=1,4line= do 40 j=i+1,9-iline(j:j)=*40 continuewrite(*,*) line 30continue end习题九25上机目的 :1. 掌握双精度型、复型、字符型数据的描述方法及运算;2. 掌握四种数值型数据之间的转换和运算规则。上机内容 :1. 调试课本中的所有程序;2. 习题第4、8题。26Fortran 90 的自定义数据类型TYPE! 开始创造一个叫做person的数据类型 type : person character(len=30) : name

15、 ! 记录人名integer : age ! 记录年龄integer : height ! 记录身高integer : weight ! 记录体重character(len=80) : address ! 记录地址 end type person ! 自定义数据类型结束27Fortran 90 TYPE 功能类似 C 语言struct 功能 。Read (*, *) a% name这表示要使用变量a中name这个元素。变量和 元素之间要以%来区隔。Visual Fortran 还可以用点 号 . 来区隔,这是类似C语言的做法。也可以用下面的方法来设置所有的元素。a= person( “peter”, 20, 178, 60, “Xuzhou, China”)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号