教学分析
用自然语言表示的算法步骤有明确的顺序性,但是对于在一定条件下才会被执行的步骤,以及在一定条件下会被重复执行的步骤,自然语言的表示就显得困难,而且不直观、不准确.因此,本节有必要探究使算法表达得更加直观、准确的方法.程序框图用图形的方式表达算法,使算法的结构更清楚、步骤更直观也更精确.为了更好地学好程序框图,我们需要掌握程序框的功能和作用,需要熟练掌握三种基本逻辑结构.
第2课时 条件结构
导入新课
思路1(情境导入)
我们以前听过这样一个故事,野兽与鸟发生了一场战争,蝙蝠来了,野兽们喊道:你有牙齿是我们一伙的,鸟们喊道:你有翅膀是我们一伙的,蝙蝠一时没了主意.过了一会儿蝙蝠有了一个好办法,如果野兽赢了,就加入野兽这一伙,否则加入另一伙,事实上蝙蝠用了分类讨论思想,在算法和程序框图中也经常用到这一思想方法,今天我们开始学习新的逻辑结构——条件结构. 思路2(直接导入)
前面我们学习了顺序结构,顺序结构像是一条没有分支的河流,奔流到海不复回,事实上多数河流是有分支的,今天我们开始学习有分支的逻辑结构——条件结构. 推进新课 新知探究 提出问题
(1)举例说明什么是分类讨论思想? (2)什么是条件结构?
(3)试用程序框图表示条件结构.
(4)指出条件结构的两种形式的区别. 讨论结果: (1)例如解不等式ax>8(a≠0),不等式两边需要同除a,需要明确知道a的符号,但条件没有给出,因此需要进行分类讨论,这就是分类讨论思想.
(2)在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流向.条件结构就是处理这种过程的结构. (3)用程序框图表示条件结构如下.
条件结构:先根据条件作出判断,再决定执行哪一种操作的结构就称为条件结构(或分支结构),如图1所示.执行过程如下:条件成立,则执行A框;不成立,则执行B框.
图1 图2
注:无论条件是否成立,只能执行A、B之一,不可能两个框都执行.A、B两个框中,可以有一个是空的,即不执行任何操作,如图2.
(4)一种是在两个“分支”中均包含算法的步骤,符合条件就执行“步骤A”,否则执行“步骤B”;另一种是在一个“分支”中均包含算法的步骤A,而在另一个“分支”上不包含算法的任何步骤,符合条件就执行“步骤A”,否则执行这个条件结构后的步骤. 应用示例
例1 任意给定3个正实数,设计一个算法,判断以这3个正实数为三边边长的三角形是否存在,并画出这个算法的程序框图.
算法分析:判断以3个任意给定的正实数为三条边边长的三角形是否存在,只需验证这3个数中任意两个数的和是否大于第3个数.这个验证需要用到条件结构. 算法步骤如下:
第一步,输入3个正实数a,b,c.
第二步,判断a+b>c,b+c>a,c+a>b是否同时成立.若是,则存在这样的三角形;否则,不存在这样的三角形. 程序框图如右图:
点评:根据构成三角形的条件,判断是否满足任意两边之和大于第三边,如果满足则存在这样的三角形,如果不满足则不存在这样的三角形.这种分类讨论思想是高中的重点,在画程序框图时,常常遇到需要讨论的问题,这时要用到条件结构.
例2 设计一个求解一元二次方程ax2+bx+c=0的算法,并画出程序框图表示. 算法分析:我们知道,若判别式Δ=b2-4ac>0,则原方程有两个不相等的实数根 x1=
bb,x2=;
2a2ab; 2a若Δ<0,则原方程没有实数根.也就是说,在求解方程之前,可以先判断判别式的符号,根据判断的结果执行不同的步骤,这个过程可以用条件结构实现.
又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算x1和x2之
若Δ=0,则原方程有两个相等的实数根x1=x2=前,先计算p=b,q=. 2a2a解决这一问题的算法步骤如下: 第一步,输入3个系数a,b,c. 第二步,计算Δ=b2-4ac.
第三步,判断Δ≥0是否成立.若是,则计算p=b,q=;否则,输出“方程2a2a没有实数根”,结束算法.
第四步,判断Δ=0是否成立.若是,则输出x1=x2=p;否则,计算x1=p+q,x2=p-q,并输出x1,x2. 程序框图如下:
例3 设计算法判断一元二次方程ax+bx+c=0是否有实数根,并画出相应的程序框图.
解:算法步骤如下:
第一步,输入3个系数:a,b,c. 第二步,计算Δ=b2-4ac.
第三步,判断Δ≥0是否成立.若是,则输出“方程有实根”;否则,输出“方程无实根”.结束算法.
相应的程序框图如右:
2
点评:根据一元二次方程的意义,需要计算判别式Δ=b2-4ac的值.再分成两种情况处理:(1)当Δ≥0时,一元二次方程有实数根;
(2)当Δ<0时,一元二次方程无实数根.该问题实际上是一个分类讨论问题,根据一元二次方程系数的不同情况,最后结果就不同.因而当给出一个一元二次方程时,必须先确定判别式的值,然后再用判别式的值的取值情况确定方程是否有解.该例仅用顺序结构是办不到的,要对判别式的值进行判断,需要用到条件结构.
例4 (1)设计算法,求ax+b=0的解,并画出流程图. 解:对于方程ax+b=0来讲,应该分情况讨论方程的解.
我们要对一次项系数a和常数项b的取值情况进行分类,分类如下:
b(1)当a≠0时,方程有唯一的实数解是;
a(2)当a=0,b=0时,全体实数都是方程的解; (3)当a=0,b≠0时,方程无解.
联想数学中的分类讨论的处理方式,可得如下算法步骤:
b第一步,判断a≠0是否成立.若成立,输出结果“解为”.
a第二步,判断a=0,b=0是否同时成立.若成立,输出结果“解集为R”.
第三步,判断a=0,b≠0是否同时成立.若成立,输出结果“方程无解”,结束算法. 程序框图如下:
点评:这是条件结构叠加问题,条件结构叠加,程序执行时需依次对“条件1”“条件2”“条件3”……都进行判断,只有遇到能满足的条件才执行该条件对应的操作. 知能训练
设计算法,找出输入的三个不相等实数a、b、c中的最大值,并画出流程图. 解:算法步骤:
第一步,输入a,b,c的值.
第二步,判断a>b是否成立,若成立,则执行第三步;否则执行第四步.
第三步,判断a>c是否成立,若成立,则输出a,并结束;否则输出c,并结束. 第四步,判断b>c是否成立,若成立,则输出b,并结束;否则输出c,并结束. 程序框图如下:
点评:条件结构嵌套与条件结构叠加的区别:
(1)条件结构叠加,程序执行时需依次对“条件1”“条件2”“条件3”……都进行判断,只有遇到能满足的条件才执行该条件对应的操作.
(2)条件结构的嵌套中,“条件2”是“条件1”的一个分支,“条件3”是“条件2”的一个分支……依此类推,这些条件中很多在算法执行过程中根据所处的分支位置不同可能不被执行.
(3)条件结构嵌套所涉及的“条件2”“条件3”……是在前面的所有条件依次一个一个的满足“分支条件成立”的情况下才能执行的此操作,是多个条件同时成立的叠加和复合.
例5 “特快专递”是目前人们经常使用的异地邮寄信函或托运物品的一种快捷方式.某快递公司规定甲、乙两地之间物品的托运费用根据下列方法计算:
0.53,(50),f= 500.53(50)0.85,(50).其中f(单位:元)为托运费,ω为托运物品的重量(单位:千克). 试画出计算费用f的程序框图.
分析:这是一个实际问题,根据数学模型可知,求费用f的计算公式随物品重量ω的变化而有所不同,因此计算时先看物品的重量,在不同的条件下,执行不同的指令,这是条件结构的运用,是二分支条件结构.其中,物品的重量通过输入的方式给出.
解:算法程序框图如右图: 拓展提升
有一城市,市区为半径为15 km的圆形区域,近郊区为距中心15—25 km的范围内的环形地带,距中心25 km以外的为远郊区,如右图所示.市区地价每公顷100万元,近郊区地价每公顷60万元,远郊区地价为每公顷20万元,输入某一点的坐标为(x,y),求该点的地价.
分析:由该点坐标(x,y),求其与市中心的距离r=x2y2,确定是市区、近郊
100,0r15,区,还是远郊区,进而确定地价p.由题意知,p=60,15r25,
20,r25.解:程序框图如下:
课堂小结
(1)理解两种条件结构的特点和区别.
(2)能用学过的两种条件结构解决常见的算法问题. 作业
习题1.1A组3.
设计感想
本节采用引人入胜的方法引入正课,选用的例题难度适中,有的经典实用,有的新颖独特,每个例题都是很好的素材.条件结构是逻辑结构的核心,是培养学生逻辑推理的好素材,本节设计符合新课标精神,难度设计略高于教材.
第3课时 循环结构
导入新课
思路1(情境导入)
我们都想生活在一个优美的环境中,希望看到的是碧水蓝天,大家知道工厂的污水是怎样处理的吗?污水进入处理装置后进行第一次处理,如果达不到排放标准,则需要再进入处理装置进行处理,直到达到排放标准.污水处理装置是一个循环系统,对于处理需要反复操作的事情有很大的优势.我们数学中有很多问题需要反复操作,今天我们学习能够反复操作的逻辑结构——循环结构. 思路2(直接导入)
前面我们学习了顺序结构,顺序结构像一条没有分支的河流,奔流到海不复回;上一节我们学习了条件结构,条件结构像有分支的河流最后归入大海;事实上很多水系是循环往复的,今天我们开始学习循环往复的逻辑结构——循环结构.
推进新课 新知探究 提出问题
(1)请大家举出一些常见的需要反复计算的例子. (2)什么是循环结构、循环体? (3)试用程序框图表示循环结构.
(4)指出两种循环结构的相同点和不同点. 讨论结果:
(1)例如用二分法求方程的近似解、数列求和等.
(2)在一些算法中,经常会出现从某处开始,按照一定的条件反复执行某些步骤的情况,这就是循环结构.反复执行的步骤称为循环体.
(3)在一些算法中要求重复执行同一操作的结构称为循环结构.即从算法某处开始,按照一定条件重复执行某一处理的过程.重复执行的处理步骤称为循环体. 循环结构有两种形式:当型循环结构和直到型循环结构.
1°当型循环结构,如图(1)所示,它的功能是当给定的条件P成立时,执行A框,A框执行完毕后,返回来再判断条件P是否成立,如果仍然成立,返回来再执行A框,如此反复执行A框,直到某一次返回来判断条件P不成立时为止,此时不再执行A框,离开循环结构.继续执行下面的框图.
2°直到型循环结构,如图(2)所示,它的功能是先执行重复执行的A框,然后判断给定的条件P是否成立,如果P仍然不成立,则返回来继续执行A框,再判断条件P是否成立.继续重复操作,直到某一次给定的判断条件P时成立为止,此时不再返回来执行A框,离开循环结构.继续执行下面的框图. 见示意图:
当型循环结构 直到型循环结构
(4)两种循环结构的不同点:直到型循环结构是程序先进入循环体,然后对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环. 当型循环结构是在每次执行循环体前,先对条件进行判断,当条件满足时,
执行循环体,否则终止循环.
两种循环结构的相同点: 两种不同形式的循环结构可以看出,循环结构中一定包含条件结构,用于确定何时终止执行循环体. 应用示例
思路1
例1 设计一个计算1+2+……+100的值的算法,并画出程序框图. 算法分析:通常,我们按照下列过程计算1+2+……+100的值.
第1步,0+1=1. 第2步,1+2=3. 第3步,3+3=6. 第4步,6+4=10. …… 第100步,4 950+100=5 050. 显然,这个过程中包含重复操作的步骤,可以用循环结构表示.分析上述计算过程,可以发现每一步都可以表示为第(i-1)步的结果+i=第i步的结果. 为了方便、有效地表示上述过程,我们用一个累加变量S来表示第一步的计算结果,即把S+i的结果仍记为S,从而把第i步表示为S=S+i,
其中S的初始值为0,i依次取1,2,…,100,由于i同时记录了循环的次数,所以也称为计数变量. 解决这一问题的算法是: 第一步,令i=1,S=0.
第二步,若i≤100成立,则执行第三步;否则,输出S,结束算法. 第三步,S=S+i.
第四步,i=i+1,返回第二步. 程序框图如右:
上述程序框图用的是当型循环结构,如果用直到型循环结构表示,则程序框图如下:
点评:这是一个典型的用循环结构解决求和的问题,有典型的代表意义,可把它作为一个范例,仔细体会三种逻辑结构在程序框图中的作用,学会画程序框图. 变式训练
123n 已知有一列数,,,,,设计框图实现求该列数前20项的和.
234n1分析:该列数中每一项的分母是分子数加1,单独观察分子,恰好是1,2,3,4,…,n,因此可用循环结构实现,设计数器i,用i=i+1实现分子,设累加器S,用
iS=S,可实现累加,注意i只能加到20.
i1解:程序框图如下:
方法一: 方法二:
点评:在数学计算中,i=i+1不成立,S=S+i只有在i=0时才能成立.在计算机程序中,它们被赋予了其他的功能,不再是数学中的“相等”关系,而是赋值关系.变量i用来作计数器,i=i+1的含义是:将变量i的值加1,然后把计算结果再存贮到变量i中,即计数器i在原值的基础上又增加了1.
变量S作为累加器,来计算所求数据之和.如累加器的初值为0,当第一个
数据送到变量i中时,累加的动作为S=S+i,即把S的值与变量i的值相加,结果再送到累加器S中,如此循环,则可实现数的累加求和.
例2 某厂2005年的年生产总值为200万元,技术革新后预计以后每年的年生产总值都比上一年增长5%,设计一个程序框图,输出预计年生产总值超过300万元的最早年份.
算法分析:先写出解决本例的算法步骤: 第一步,输入2005年的年生产总值. 第二步,计算下一年的年生产总值.
第三步,判断所得的结果是否大于300,若是,则输出该年的年份,算法结束;否则,返回第二步.
由于“第二步”是重复操作的步骤,所以本例可以用循环结构来实现.我们按照“确定循环体”“初始化变量”“设定循环控制条件”的顺序来构造循环结构.
(1)确定循环体:设a为某年的年生产总值,t为年生产总值的年增长量,n为年份,则循环体为t=0.05a,a=a+t,n=n+1.
(2)初始化变量:若将2005年的年生产总值看成计算的起始点,则n的初始值为2005,a的初始值为200.
(3)设定循环控制条件:当“年生产总值超过300万元”时终止循环,所以可通过判断“a>300”是否成立来控制循环. 程序框图如下:
思路2
例1 设计框图实现1+3+5+7+…+131的算法.
分析:由于需加的数较多,所以要引入循环结构来实现累加.观察所加的数是一组有规律的数(每相临两数相差2),那么可考虑在循环过程中,设一个变量i,用i=i+2来实现这些有规律的数,设一个累加器sum,用来实现数的累加,在执行时,每循环一次,就产生一个需加的数,然后加到累加器sum中. 解:算法如下:
第一步,赋初值i=1,sum=0. 第二步,sum=sum+i,i=i+2.
第三步,如果i≤131,则反复执第二步;否则,执行下一步. 第四步,输出sum. 第五步,结束. 程序框图如右图.
点评:(1)设计流程图要分步进行,把一个大的流程图分割成几个小的部分,按照三个基本结构即顺序、条件、循环结构来局部安排,然后把流程图进行整合. (2)框图画完后,要进行验证,按设计的流程分析是否能实现所求的数的累加,分析条件是否加到131就结束循环,所以我们要注意初始值的设置、循环条件的确定以及循环体内语句的先后顺序,三者要有机地结合起来.最关键的是循环条件,它决定循环次数,可以想一想,为什么条件不是“i<131”或“i=131”,如果是“i<131”,那么会少执行一次循环,131就加不上了.
例2 高中某班一共有40名学生,设计算法流程图,统计班级数学成绩良好(分数>80)和优秀(分数>90)的人数.
分析:用循环结构实现40个成绩的输入,每循环一次就输入一个成绩s,然后对s的值进行判断.设两个计数器m,n,如果s>90,则m=m+1,如果80知能训练
由相应的程序框图如右图,补充完整一个计算1+2+3+…+100的值的算法.(用循环结构)
第一步,设i的值为_____________. 第二步,设sum的值为_____________.
第三步,如果i≤100执行第_____________步,否则,转去执行第_____________步.
第四步,计算sum+i并将结果代替_____________. 第五步,计算_____________并将结果代替i. 第六步,转去执行第三步.
第七步,输出sum的值并结束算法.
分析:流程图各图框的内容(语言和符号)要与算法步骤相对应,在流程图中算法执行的顺序应按箭头方向进行. 解:第一步,设i的值为1. 第二步,设sum的值为0.
第三步,如果i≤100,执行第四步,否则,转去执行第七步. 第四步,计算sum+i并将结果代替sum. 第五步,计算i+1并将结果代替i. 第六步,转去执行第三步.
第七步,输出sum的值并结束算法. 拓展提升
设计一个算法,求1+2+4+…+249的值,并画出程序框图. 解:算法步骤: 第一步,sum=0. 第二步,i=0.
第三步,sum=sum+2i. 第四步,i=i+1.
第五步,判断i是否大于49,若成立,则输出sum,结束.否则,返回第三步重新执行.
程序框图如右图:
点评:(1)如果算法问题里涉及的运算进行了许多次重复的操作,且先后参与运算的数之间有相同的规律,就可引入变量循环参与运算(我们称之为循环变量),应用于循环结构.在循环结构中,要注意根据条件设计合理的计数变量、累加和累乘变量及其个数等,特别要求条件的表述要恰当、精确.
(2)累加变量的初始值一般取0,而累乘变量的初始值一般取1. 课堂小结
(1)熟练掌握两种循环结构的特点及功能.
(2)能用两种循环结构画出求和等实际问题的程序框图,进一步理解学习算法的意义. 作业
习题1.1A组2.
设计感想
本节的引入抓住了本节的特点,利用计算机进行循环往复运算,解决累加、累乘等问题.循环结构是逻辑结构中的难点,它一定包含一个条件结构,它能解决很多有趣的问题.本节选用了大量精彩的例题,对我们系统掌握程序框图有很大的帮助.
第4课时 程序框图的画法
导入新课
思路1(情境导入)
一条河流有时像顺序结构,奔流到海不复回;有时像条件结构分分合合向前进;有时像循环结构,虽有反复但最后流入大海.一个程序框图就像一条河流包含三种逻辑结构,今天我们系统学习程序框图的画法. 思路2(直接导入)
前面我们学习了顺序结构、条件结构、循环结构,今天我们系统学习程序框图的画法. 推进新课 新知探究 提出问题
(1)请大家回忆顺序结构,并用程序框图表示. (2)请大家回忆条件结构,并用程序框图表示. (3)请大家回忆循环结构,并用程序框图表示. (4)总结画程序框图的基本步骤.
讨论结果:
(1)顺序结构是由若干个依次执行的步骤组成的,这是任何一个算法都离不开的基本结构.框图略.
(2)在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流向.条件结构就是处理这种过程的结构.框图略.
(3)在一些算法中要求重复执行同一操作的结构称为循环结构.即从算法某处开始,按照一定条件重复执行某一处理过程.重复执行的处理步骤称为循环体. 循环结构有两种形式:当型循环结构和直到型循环结构.框图略.
(4)从前面的学习可以看出,设计一个算法的程序框图通常要经过以下步骤: 第一步,用自然语言表达算法步骤.
第二步,确定每一个算法步骤所包含的逻辑结构,并用相应的程序框表示,得到该步骤的程序框图.
第三步,将所有步骤的程序框图用流程线连接起来,并加上终端框,得到表示整个算法的程序框图. 应用示例
例1 结合前面学过的算法步骤,利用三种基本逻辑结构画出程序框图,表示用“二分法”求方程x2-2=0(x>0)的近似解的算法. 算法分析:(1)算法步骤中的“第一步”“第二步”和“第三步”可以用顺序结构来表示(如下图):
(2)算法步骤中的“第四步”可以用条件结构来表示(如下图).在这个条件结构中,“否”分支用“a=m”表示含零点的区间为[m,b],并把这个区间仍记成[a,b];“是”分支用“b=m ”表示含零点的区间为[a,m],同样把这个区间仍记成[a,b].
(3)算法步骤中的“第五步”包含一个条件结构,这个条件结构与“第三步”“第四步”构成一个循环结构,循环体由“第三步”和“第四步”组成,终止循环的条件是“|a-b|<d或f(m)=0”.在“第五步”中,还包含由循环结构与“输出m”组成的顺序结构(如下图).
(4)将各步骤的程序框图连接起来,并画出“开始”与“结束”两个终端框,就得到了表示整个算法的程序框图(如下图).
点评:在用自然语言表述一个算法后,可以画出程序框图,用顺序结构、条件结构和循环结构来表示这个算法,这样表示的算法清楚、简练,便于阅读和交流. 例2 相传古代的印度国王要奖赏国际象棋的发明者,问他需要什么.发明者说:陛下,在国际象棋的第一个格子里面放1粒麦子,在第二个格子里面放2粒麦子,第三个格子放4粒麦子,以后每个格子中的麦粒数都是它前一个格子中麦粒数的二倍,依此类推(国际象棋棋盘共有个格子),请将这些麦子赏给我,我将感激不尽.国王想这还不容易,就让人扛了一袋小麦,但不到一会儿就没了,最后一算结果,全印度一年生产的粮食也不够.国王很奇怪,小小的“棋盘”,不足100个格子,如此计算怎么能放这么多麦子?试用程序框图表示此算法过程. 解:将实际问题转化为数学模型,该问题就是要求1+2+4+……+263的和. 程序框图如下:
点评:对于开放式探究问题,我们可以建立数学模型(上面的题目可以与等比数列的定义、性质和公式联系起来)和过程模型来分析算法,通过设计算法以及语言的描述选择一些成熟的办法进行处理.
例3 乘坐火车时,可以托运货物.从甲地到乙地,规定每张火车客票托运费计算方法是:行李质量不超过50 kg时按0.25元/kg;超过50 kg而不超过100 kg时,其超过部分按0.35元/kg;超过100 kg时,其超过部分按0.45元/kg.编写程序,输入行李质量,计算出托运的费用.
分析:本题主要考查条件语句及其应用.先解决数学问题,列出托运的费用关于行李质量的函数关系式.设行李质量为x kg,应付运费为y元,则运费公式为:
0.25x,0x50,y=0.25500.35(x50),50x100, 0.25500.35500.45(x100),x100,0.25x,0x50,整理得y=0.35x5,50x100,
0.45x15,x100.要计算托运的费用必须对行李质量分类讨论,因此要用条件语句来实现. 解:算法分析:
第一步,输入行李质量x.
第二步,当x≤50时,计算y=0.25x,否则,执行下一步.
第三步,当x≤100,计算y=0.35x-5,否则,计算y=0.45x-15. 第四步,输出y. 程序框图如下:
知能训练
设计一个用有理数数幂逼近无理指数幂52的算法,画出算法的程序框图. 解:算法步骤:
第一步,给定精确度d,令i=1.
第二步,取出2的到小数点后第i位的不足近似值,记为a;取出2的到小数点后第i位的过剩近似值,记为b. 第三步,计算m=5b-5a.
第四步,若m 求4411,画出程序框图. 144(共10个4)分析:如果采用逐步计算的方法,利用顺序结构来实现,则非常麻烦,由于前后 的运算需重复多次相同的运算,所以应采用循环结构,可用循环结构来实现其中 1的规律.观察原式中的变化的部分及不变项,找出总体的规律是4+,要实现 x这个规律,需设初值x=4. 解:程序框图如下: 课堂小节 (1)进一步熟悉三种逻辑结构的应用,理解算法与程序框图的关系. (2)根据算法步骤画出程序框图. 作业 习题1.1B组1、2. 教学反思 本节是前面内容的概括和总结,在回忆前面内容的基础上,选择经典的例题,进行了详尽的剖析,这样降低了学生学习的难度.另外,本节的练习难度适中,并且多为学生感兴趣的问题,这样为学生学好本节内容作好充分准备,希望大家喜欢这一节课.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务