欢迎来到天天文库
浏览记录
ID:52564861
大小:103.09 KB
页数:10页
时间:2020-03-28
《Fortran95第10章--基本计算(二)选择控制结构.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第10章 基本计算(二)选择控制结构在上章我们可以看到,赋值语句之所以能够驱动计算过程的运行,除了赋值语句本身构成完整的运算求值指令之外,计算机本身所具有的串行机制保证了,只要把执行语句与说明语句串列下来,然后保证数据对象流的畅通,计算机就能够按照语句序列的次序依次执行下来,从而完成相应的计算任务。不过分析一下我们的实际计算任务,就会发现真正完全可以只需要按照一个固有计算序列算下来,就可以完成计算的问题只是少数简单的问题而已,稍微复杂点的问题往往都需要在计算过程当中出现某种判别问题,使得计算途径可以分支,对不同的情形,会有不同的计算途径与不同的计
2、算结果;还会出现反复进行同一种运算,然后再在适当的条件下跳出循环的情形,如果只是使用串行序列来描述此时的运算过程,会使得程序的写作充满重沓的语句。显然这些类型的计算任务,或者是语句串行序列无法描述的,或者是描述发生令人难以忍受的。所以一种描述计算过程的语言,除了可以构成串行的计算序列之外,还必须能够控制这个序列有可能出现的选择分支与循环的情形,这就是所谓语言的控制结构。本章和下章,我们将分别讨论FORTRAN所提供的两种类型的控制结构以及相应的控制语句:● 选择控制结构;● 循环控制结构。把程序序列当中的控制结构清晰地加以强调出来,实际上
3、既有助于程序的阅读,也是符合人的思维的清晰性原则的,因此控制结构的规范化正是编程语言追求结构化的一个主要着力点,但是在早期FORTRAN版本里面,并没有完全意识到结构化编程风格的重要性,因此引入了一些常常破坏结构的转移控制语句,而FORTRAN语言的现代版本还没有完全放弃它们,但不提倡使用,这些转移控制语句我们在下章也将简略地讨论到。10.1 执行顺序一个完整的FORTRAN程序,或程序单位,就给出了一个由可执行语句引导的语句执行序列,这个序列就是语句在程序里面出现的序列,称为正常运行序列。但是某些可执行结构或可执行语句,能够控制实际的语句运行不
4、止是按照语句书写的序列进行,这样的可执行结构或语句包括控制结构和分支语句。控制语句执行序列有两种基本风格:● 使用可执行结构,使得程序能够选择性地运行程序序列里某个特定位置的语句块或结构。● 使用能够分支到程序其他任意位置的语句的可执行语句。一般说来,上面的第一种方式具有更好的可阅读性和可维护性,因此我们将详细讨论第一种方式的实现,而第二种方式则放在下章末尾简略说明一下。10.2 块与可执行结构所谓控制结构由一个或多个语句块和结构构成,其中必定显式地或隐式地包含控制逻辑语句。根据相应的逻辑控制条件,就可以选择性地运行某个特定的语句块与结构
5、。一个块就是一个由0个或多个语句与结构构成的序列,句法形式(R801)为: [execution-part-construct]…构成块的语句与结构的序列构成一个程序单位,是一个某种意义上的整体,即或者整个块被执行,或者整个块都不被执行,不能够出现块的某个部分被执行的情形。不过也可能出现在整个块被执行的情况下,块内的某些语句没有被执行的情况,例如在块内的比较靠前的分支语句,常常能够制止它后面的语句得到执行,但是从语法意义上来看,整个块的功能得到了完整的实现,因此这种情形也被认为是块的完全执行。所谓结构就是由一个或多个语句块或者结构,加上作用于
6、这些块的控制语句构成。● 结构通常在块前具有一个初始语句,而在块后具有一个终止语句;● 当结构包含不止一个块时,结构必定包含了用来选择执行哪个块的条件语句,而一个块是否被执行,正是由结构的作为条件语句的控制逻辑语句当中的表达式决定的;● 结构也有可能在块之间放置特定的语句,用来决定相应的块是否被执行;● DO结构专门用来决定一个块可以被连续地执行的次数。【例10-1】下面给出的可执行结构控制了一个块: IF(K<=1)THEN !IF结构的初始语句 X=K**2 !块的第一个语句
7、 Y=SIN(X) !块的第二个语句 ENDIF !IF结构的终止语句FORTRAN提供了三种能够控制块的可执行结构:● IF结构● CASE结构● DO结构块的一般规则如下:●首先执行块内的第一个语句或结构,随后的执行顺序就是语句的排列顺序,除非中间包含控制结构或语句改变这个顺序。●一个块作为一个整体,必须是完整地被包含在一个结构当中;一个块也可以是空块,即不包含任何语句与结构。●在块内允许出现分支结构或控制结构,使得运行序列能够转移到该块内的特定语句或结构。●在块内的任意
8、位置,都可以强制运行的退出。●从块的外部通过分支到达块的内部,哪怕是块内的第一个可执行语句,都是禁止的。●块内可以引用过程。●结构可以具
此文档下载收益归作者所有