首页 > 范文大全 > 正文

算法与程序框图的基本结构

开篇:润墨网以专业的文秘视角,为您筛选了一篇算法与程序框图的基本结构范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

算法程序框图的三种基本结构的共同点:(1)只有一个入口;(2)只有一个出口,请注意一个判断框有两个出口,而一个条件结构只有一个出口,不要将判断框的出口和条件结构的出口混为一谈;(3)结构内的每一部分都有机会被执行到,也就是说每一个框都应该有从入口到出口的路径通过它;(4)结构内的循环都不存在死循环. 上述共同点是检查一个程序框图或算法是否正确、合理的基本方法.

1.经典算法类

例1 一个人带着三只狼和三只羚羊过河,只有一条船,同船可容纳一个人和两只动物,没有人在的时候,如果狼的数量不少于羚羊的数量就会吃羚羊.该人如何将动物转移过河?请设计算法.

解析 任何动物同船不用考虑动物的争斗但需考虑承载的数量,还应考虑到两岸的动物都得保证狼的数量要小于羚羊的数量,故在算法的构造过程中尽可能保证船里面有狼,这样才能使得两岸的羚羊数量占到优势,具体算法如下:

第一步,人带两只狼过河,自己返回.

第二步,人带一只狼过河,自己返回.

第三步,人带两只羚羊过河,并带两只狼返回.

第四步,人带一只羊过河,自己返回.

第五步,人带两只狼过河.

点拨 算法是解决某一类问题的精确描述,有些问题使用形式化、程序化的刻画是最恰当的.这就要求我们在写算法时应精练、清晰地表达,要善于分析任何可能出现的情况,体现出思维的严密性和完整性.

2.顺序结构类

例2 画出从5个不同的数中找出最大数的算法的程序框图.

解析 记这五个数是[a1,a2,a3,a4,a5,]框图如下.

点拨 (1)各步中的[b]可能在每一步中都不变,也可能在每一步中都变,但最后输出的[b]是这5个不同的数中最大的数.(2)设计算法的目的是将它作为指令交给计算机去完成,当解决一类问题的算法一旦确定,那么它的执行顺序也就确定了.因而,各步只能一步接一步地执行,不能跳跃,也不能交换.

3.条件结构类

例3 设计算法判断一元二次方程[ax2+bx+][c=0]是否有实数根,并画出相应的程序框图.

解析 算法步骤:

第一步,输入一元二次方程的系数:[a,b,c].

第二步,计算[=b2-4ac]的值.

第三步,判断≥0是否成立. 若成立,输出“方程有实根”;否则输出“方程无实根”.

结束算法.

程序框图:

点拨 根据一元二次方程的意义,需要计算判别式[=b2-4ac]的值.再分成两种情况处理:(1)当≥0时,一元二次方程有实数根;(2)当

例4 设计算法,求[ax+b=0]的解,并画出程序框图.

解析 对于方程[ax+b=0],应该分情况讨论方程的解. 对一次项系数[a]和常数项[b]的取值情况进行分类,分类如下:

(1)当[a≠0]时,方程有惟一的实数解[-ba];

(2)当[a=0,b=0]时,方程的解为全体实数;

(3)当[a=0,b≠0]时,方程无解.

联想数学中的分类讨论的处理方式,可得如下算法步骤:

第一步,判断[a]是否不为零.若成立,输出结果“解为[-ba]”.

第二步,判断[a=0,b=0]是否同时成立.若成立,输出结果“解集为R”.

第三步,判断[a=0,b≠0]是否同时成立.若成立,输出结果“方程无解”.

点拨 条件结构嵌套与条件结构叠加的区别是:(1)条件结构叠加,程序执行时需依次对“条件1”“条件2”“条件3”……进行判断,只有遇到能满足的条件才执行该条件对应的操作.(2)条件结构嵌套所涉及的“条件2”“条件3”……是在前面所有条件依次一个一个的满足“分支条件成立”的情况下才能执行此操作,是多个条件同时成立的叠加和复合.

4.循环结构类

例5 设计一个算法,求1+2+4+…+249的值,并画出程序框图.

解析 算法步骤:

第一步,[sum=0].

第二步,[i=0].

第三步,[sum=sum+2i].

第四步,[i=i+1].

第五步:判断[i]是否大于49,若成立,则输出[sum],结束;否则返回第三步重新执行.

程序框图:

点拨 如果算法涉及的运算进行了多次重复的操作,且先后参与运算的数之间有相同的规律,就可引入变量循环参与运算(我们称之为循环变量),应用于循环结构.在循环结构中,要注意根据条件设计合理的计数变量、累加和累乘变量及其个数等,特别要求条件的表述要恰当、精确.累加变量的初始值一般取0,而累乘变量的初始值一般取1.

1.在画程序框图时,如果一个框图要分开画,要在断开处画上( )

A.流程线 B.注释框

C.判断框 D.连接点

2.下图给出的是计算[12+14+16+???+1100]的值的一个程序框图,其中判断框内应填入的条件是( )

A.[i]>100 B.[i]

C.[i]>50 D.[i]

3.设[y]为年份,按照历法的规定,如果[y]为闰年,那么或者[y]能被4整除不能被100整除,或者[y]能被400整除. 对于给定的年份[y],要确定索是否为闰年,如何设计算法,画出其流程图.

4.若有A、B、C三个不同大小的数字,你能设计一个算法,找出其中的最大值吗?试给出解决问题的一种算法,并画出流程图.

4.应该先两两比较,算法和流程图如下:

[S1]输入[A,B,C];

[S2]如果[A>B],那么转[S3],否则转[S4];

[S3]如果[A>C],那么输出[A],转[S5],否则输出[C],转[S5];

[S4]如果[B>C],那么输出[B],转[S5],否则输出[C];

[S5]结束.