- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ex0502 program ex0502 implicit none real(kind=4) :: height ! 记录身高 real(kind=4) :: weight ! 记录体重 write(*,*) height: read(*,*) height ! 读入身高 write(*,*) weight: read(*,*) weight ! 读入体重 if ( weight height-100 ) then ! 如果体重大于身高减去100, 会执行下面的程序 write(*,*) Too fat! else ! 如果体重不大于身高减去100, 会执行下面的程序 write(*,*) Under control. end if stop end Fortran程序的调试 编写包含分支和循环结构的程序比编写简单的顺序结构程序更容易犯错误。 如果只是发现输出值有错误,如何定位排错? 最好方法:符号调试器,但是需要查看系统手册以便如何使用。 一般方法:在程序中插入write语句,在一些关键位置点输出变量的值,以观察程序中间结果与预期结果的差异。 如果是IF块的问题:重点检查逻辑表达式。 另外一个常见错误:实数型变量的等值测试。 * 作业 P98 1、2、3、4 * 5、一束光线从折射率为n1的区域穿透到折射率为n2的另一个区域,光线被折射,折射的角度由斯涅尔定律给出。编写Fortran程序,给定区域1中的入射角?1和折射率n1、n2,计算光束在区域2中的出射角度?2。计算时以空气和水为例,并大致估计一下发生全反射的入射角度。可以根据n1=1.0,n2=1.7测试不同的角度,并适当变化n2值的大小,看看全反射角的变化。 * * * 流程控制可以在程序执行中,视情况来选择是否要执行某一段程序代码。 第四章所介绍的实例程序,它们的执行流程都是经过直线,一行接着一行来执行,这样的东西很难做出一个具备复杂功能的程序。较具备功能的程序,都免不了会出现一些“流程判断”命令。 * 程序执行后会要求输入现在车速,如果车速太快会输出“Slow down.” ,没有超速的话则不会出现任何警告。 * * 这个写法还可以省略掉THEN和END IF,不过只能在程序模块中只有一个程序命令时才能使用 * * * * * 一个逻辑表达式可以不只是单纯的两个数字间互相比较大小。它还可以是由两个,甚至多个小逻辑表达式组合成的。 * * * * * 通常在IF中的逻辑判断非常复杂,只有需要使用到重复的逻辑运算时,才会配合逻辑变量来使用,以增加程序代码的可读性。某些情况下使用逻辑变量可以增加执行效率。 * * * 其中最多只有一个条件成立,最多只有其中的一个程序模块会被执行。 省略ELSE这个模块时,如果每个条件都不成立,则不会有任何一个模块的程序被执行,程序会继续从END IF后面执行下去。 * 判断成绩等级的实例程序 * * 比较EX0505和EX0506这两个程序,以程序的可读性来说EX0505更好一些,但以执行效率来说EX0506比较好。因为EX0506的每一个IF判断式只有1个表达式,EX0505中则都有2个表达式,自然是EX0506所需要的运算量会比较少。 * * 执行结果和ex0505和ex0506相同,但是这种写法是最没有效率的。因为每个IF都是相互独立的,所以6个IF里的逻辑表达式一定都会去执行。 * * * * * * * 只有当第1层的IF成立时,才有可能执行到第2层IF的程序代码。这种1层接着1层的结构被称为嵌套结构。 * EX0508.F90先把坐标系分成左、右两边来看。左边就是X0的部分,在这个部分中,如果Y0时,坐标就在第2象限;如果Y0时,坐标就在第3象限。右边是指X0的部分,如果Y0时,坐标就在第1象限;如果Y0时,坐标就在第4象限。X=0或Y=0时,都是坐标点落在轴上面的情况。 * * * * 得到a不等于0的原因是有效位数的问题。SQRT(3.0)是无穷小数,然而在存储时只能用有限的位数来记录这个结果。所以SQRT(3.0)从一开始就有误差,在把这个有误差的数值拿来做乘幂,得到的只能是接近3的数值。 * * SQRT(4.0)是一个可以被正确记录的数值,所以就会得到a等于0的结果。 * * ABS()这个函数是去绝对值。 * * * * * 通常在SELECT-CASE语句中的一个判断式,不会完全用来判断变量时都落在一个数值范围中,而是用来判断变量是否等于某个数值。case default 不一定要出现。 * * * * * GOTO所要跳跃的目的地,可以是程序代码中任何一个设置有“行代码”的地方,这个位置可
文档评论(0)