程序框图的循环结构
算法初步是高中新课程中的一项新增内容,而且作为高中数学必修内容的一部分。《新课程标准》里指出:算法是数学的重要组成部分,是计算理论、计算机理论和技术的基础。可见算法的重要地位和作用。在数学中,算法通常是按照一定规则解决某一类问题的明确和有限的步骤。通俗地说,算法就是用计算机求解某一问题的方法,解决问题的过程就是实现算法的过程。问题的不同求解过程就是不同的算法。算法是程序设计的“灵魂”,但算法又独立于任何具体的程序设计语言,一个算法可以用各种程序设计语言来实现,比如:可以用BASIC语言,也可以用C语言等来实现。由于BASIC语言具有简单、易学等特点,数学课本《必修3》介绍算法语句时就使用QBASIC(BASIC的一种)的语句形式和语法规则。下面就结合我的教学实践并参考计算机教程《算法与程序设计》来谈谈一些认识。
一.程序框图的由来和含义
自然语言、程序框图及程序是算法的不同表示形式。用自然语言描述算法的优点是通俗易懂,但容易造成理解歧义,描述算法太长,不够精练。当算法中存在循环或分支较多时,不易清晰表示出来。与自然语言描述相比,用程序框图描述的算法形象、直观,更容易理解。而且对于
一个复杂的算法,如果直接编写程序语言很难保证程序的正确性,此时人们往往先用程序框图来描述算法,然后根据程序框图就可以方便地写出程序语言了。所以程序框图的学习与掌握还是有必要的。
程序框图是一种用程序框、流程线及文字说明来表示算法的图形。它是文科选修教材1-2第四章《框图》中介绍的流程图的一种,它不同于日常生活和工作中常见的诊病流程图、工序流程图等等。程序框图是算法步骤的直观图示,它有一定的规范和标准,要求能编成计算机程序,并能在计算机上进行运行,而日常生活中用到的流程图则相对自由一些,它只要能较直观,明确地表示动态过程从开始到结束的全部步骤即可。
二.程序框图的基本逻辑结构
算法的结构包括顺序结构,条件结构,循环结构等三种基本逻辑结构。任何一个算法都可以由这三种基本逻辑结构构成。
下面就“循环结构”谈谈我的一些看法:
循环结构是算法结构中最复杂的一种,设计循环结构,关键是要理解循环的形成与控制。从
循环的形成与控制不同来划分,循环结构可分为直到型循环结构和当型循环结构。
数学书本给出了直到型循环结构和当型循环结构的定义:在执行了一次循环体后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环,这种循环结构称为直到型循环结构,而在每次执行循环体前,对条件进行判断,当条件满足时,执行循环体,否则终止循环,像这样的循环结构称为当型循环结构。
用程序框图表示为
因此很多教师就从这两个定义中归纳出直到型循环结构与当型循环结构的异同点。见下表:
当型循环结构 | 直到型循环结构 | |
相同点 | 循环体被重复执行:包含条件结构,用于确定何时终止执行循环体 | |
不同点 | :先判断条件再执行循环体; | :先执行循环体再判断条件; |
:条件满足时执行循环体,直到条件不满足时为止 | :条件不满足时执行循环体,直到条件满足时为止 | |
从定义确可以看出有两个方面的不同。当出现某一种循环结构它符合,也符合时或者符合同时也符合时,用框图表示就是如下两种形式:
它们都不属于二种循环结构中的任何一种,所以有的老师只好认为这是错误的程序框图。某一中学老师发表在《中学数学教学参考》的“算法初步教学的若干认识”一文中也阐述了这个观点,她认为右图所示的程序框图是错误的。我个人认为这种观点是不对的,只要能正确地表示算法,都属于正确的程序框图。允许出现同时符合的程序框图和同时符合的程序框图。
以下结合《必修3》书本例子进行阐述。
例:设计一个计算1+2+……100的值的算法,并画出程序框图。
书本给出了下面两种程序框图:框图(1)和框图(2),以及对应的两种程序:程序(1)和程序(2)。
就程序框图本身而言,我认为还可以有其他形式出现,如框图(3),(4)所示。它们同样解决“计算1+2+…+100的值”的问题,因而它们都是正确的程序框图.只是在数学《必修3》书本中未提到而已。
事实上,在计算机教程QBASIC语言中,循环结构有三种: FOR-NEXT循环、WHILE-WEND循环和DO循环结构。其中
FOR-NEXT循环的一般格式为:
FOR <变量>=<初值> TO <终值> STEP <增量>
循环体
NEXT <变量>
由此发现FOR-NEXT循环只适合于知道重复次数的循环,而WHILE循环和DO循环结构除了适合于知道重复次数的循环,它们还适合于事先难以确定重复次数的情况。因此,凡是能用FOR-NEXT循环描述的问题一定可以通过WHILE-WEND循环和DO循环结构来解决。所以教材就只提到WHILE-WEND循环和DO循环结构,这有一定的合理性。WHILE-WEND
循环就是书本所说的当型循环,对应的语句就是 WHILE-WEND语句。因此当型框图(1)对应的程序(1)就是应用WHILE-WEND循环格式。
而DO循环结构有以下四种不同的格式:
格式(2)
DO
循环体
循环体
while语句怎么用自然语言LOOP WHILE <条件>
格式(1)
DO WHILE <条件>
循环体
循环体
LOOP
四种不同的格式的比较
先判断条件再执行循环体 | 先执行循环体再判断条件 | ||
所列条件满足时 执行循环 | 所列条件满足时 退出循环 | 所列条件满足时 执行循环 | 所列条件满足时 退出循环 |
格式 (1) | 格式(3) | 格式(2) | 格式(4) |
其中(1) 和(2)都是带WHILE 子句的DO循环,(3) 和(4)都是带UNTILE子句的DO循环。使用WHILE和UNTILE的区别在于将其中的“条件”改成“反条件”。只有弄清楚它们之间的联系和区别,才便于我们对它们进行改写。我们发现框图(3)对应于格式(2),框图(4)对应于格式(3),而直到型框图(2)相对应的程序(2)就是应用这里的格式(4)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论