1.1.2程序框图与算法的基本结构
教学目标:理解程序框图的概念,学会画程序框图的规则
教学重点:理解程序框图的概念,学会画程序框图的规则
教学过程:
复习回顾
算法的概念:算法是解决某个特定问题的一种方法或一个有限过程。
算法的描述
自然语言
形式语言
框图
程序框图的概念
1、通过例子:对任意三个实数a、b、c求出最大值。写出算法(两种方法)
2、程序框图也叫流程图,是人们将思考的过程和工作的顺序进行分析、整理,用规定的文字、符号、图形的组合加以直观描述的方法
3、程序框图的基本符号
起止框
输入输出框
处理框
判断框
连接点
循环框
用带有箭头的流程线连接图形符号
注释框
三、读图
例
1、读如下框图分析此算法的功能
四、画流程图的基本规则
1、使用标准的框图符号
2、从上倒下、从左到右
3、开始符号只有一个退出点,结束符号只有一个进入点,判断符号允许有多个退出点
4、判断可以是两分支结构,也可以是多分支结构
5、语言简练
6、循环框可以被替代
五、例子
输入3个实数按从大到小的次序排序
用二分法求方程的近似解
课堂练习:第10页,练习A,练习B
小结:本节介绍程序框图的概念,学习了画程序框图的规则
课后作业:第19页,习题1-1A第1、2题1.1.2程序框图与算法的基本结构
教学目标:
1.掌握两种循环语句的一般形式,进一步体会算法的基本思想.
2.能够熟练地运用两种循环语句.
一、课堂导航
猴子第一天摘下若干个桃子,当即吃了一半,觉得还不过瘾,又多吃了一个.第二天将剩下的桃子吃掉一半,又多吃了一个,以后每天都吃前一天剩下的一半加一个.到第十天想吃时只剩下一个桃子了.求第一天共摘了多少个桃子?
该过程可以交给计算机做,能否设计一个算法?试画出流程图.
二、复习旧知
在本课之前我们已经学习了流程图以及算法设计的三种结构.
三、介绍两种新的循环语句.
1.For循环语句
一般形式:
For
I
From“初值”To“终值”Step“步长”
…
End
For
其中“For”和“End
For”之间的步骤“…”称为循环体.若步长为1,“Step‘步长’”可以省略不写.
2.While循环语句
一般形式:While
A
…
End
While
其中A表示判断执行循环的条件.“While”和“End
While”之间的步骤“…”称为循环体.“While”循环语句的特点是前测试,即先判断,后执行.若初始条件不成立,则循环体的内容一次也不执行.
用这两种循环语句可以写出上述问题的伪代码:
四、例题运用
例1:试设计一个算法,计算1×3×5×7×…×99.
:例2:试设计一个算法,找出满足1×3×5×7×…×__>10000的最小整数.
说明:(1)从这两个例子中体会两种循环语句的区别:一般地,当循环次数已经确定时,可用“For”循环语句(从第一个例子中可以看出:在循环次数确定时,使用“For”循环语句书写更为简便);当循环次数不能确定时,可用“While”循环语句;
(2)在第二个例子中,循环语句结束后注意要将i的值减去2才是题中所要求的最小整数.
例3 抛掷一枚硬币时,既可能出现正面,也可能出现反面,预先作出确定的判断是不可能的,但是假如硬币质量均匀,那么当抛掷次数很多时,出现正面的频率应接近于50%.试设计一个循环语句模拟抛掷硬币的过程,并计算抛掷中出现正面的频率.
说明:随机函数“Rnd”可以产生0与1之间的随机数.该算法中用大于0.5的随机数表示出现正面,不大于0.5的随机数表示出现反面.若将伪代码中的“Rnd>0.5”改为“Rnd<0.5”,其效果是一样的.还要注意本题的循环体是一个“行If语句”,故不需要写“End
If”.
思考:能否用
“While”循环语句写出伪代码?
五、课堂检测
1.设计一个求1++++…+值的算法.
2.设计一个求小于1000的完全平方数的和的算法.
3.求12+22+32+…+n2<1000成立的n的最大整数值,用伪代码写出算法过程.
六、回顾小结
要实现循环结构就要用到循环语句.循环语句包括“For循环”和“While循环”.
1.For循环语句的一般形式:
For
I
From“初值”to“终值”step“步长”
…
End
For
其中“For”和“End
For”之间的步骤“…”称为循环体.若步长为1,“step‘步长’”可以省略不写.
2.While循环语句的一般形式:
While
A
…
End
While
其中A表示判断执行循环的条件.“While”和“End
While”之间的步骤“…”称为循环体.“While”循环语句的特点是前测试,即先判断,后执行.若初始条件不成立,则循环体的内容一次也不执行.
3.一般地,当循环次数已经确定时,可用“For”循环语句;当循环次数不能确定时,可用“While”循环语句.
七、家庭作业
课本23页2,3,4
开始
结束
s
←
1
i
←
1
i
←
i+1
s
←
2(s+1)
i≤9
Y
N
输出s
s
←
1
i
←
1
For
I
From
1
To
9
Step
1
s
←
2(s+1)
i
←
i+1
End
For
Print
s
s
←
1
i
←
1
While
i≤9
s
←
2(s+1)
i
←
i+1
End
While
Print
s1.1.2程序框图与算法的基本结构
●教学目标:理解程序框图的含义,能读懂程序框图;掌握程序框图的三种基本逻辑结构及其之间的联系;初步会画一些简单的程序框图.
●教学重点:程序框图的三种基本逻辑结构,画程序框图.
●教学难点:算法程序框图的三种结构的认识.
●教学流程:复习回顾引出探求算法表达方法的必要性――程序框图――算法的三种逻辑结构――顺序结构――条件结构――课堂练习――课堂小结
●教学过程:
一、课题导入:
1、复习算法的概念和它的基本思想与特征?
即知道了“什么是算法”这节课我们来学习算法的表达问题,即解决“怎样表达算法”问题。我们已知道用自然语言可以表示算法,但太烦琐,我们有必要探求直观、准确表示方法。
2、讨论:如何形象直观的表示算法?
→图形方法
通过类比函数的图象引出算法的程序框图。
函数图象比函数解析式能更直观地显示函数的性质(举例说明),算法的程序框图就是算法的“图象”,也能较为直观地反映算法的基本思想:函数图象
算法程序框图
举例说明自然语言有时候表示的含义不是太严格,如:“张先生对李先生说他的孩子考上了大学”,单凭这句话本身难以判断是谁的孩子考上了大学。因此算法的程序框图除了可用自然语言表述之外,还有必要介绍算法的程序框图表示。
二、讲授新课:
1.
程序框图的认识:
①什么是“程序框图”?程序框图的基本结构有哪些?请学生阅读课本P6的相关内容,明确程序框图的相关概念及基本程序框图符号。
②
定义程序框图:程序框图又称流程图,是一种用程序框规定的图形、指向线及文字说明来准确、直观地表示算法的图形.
③基本的程序框和它们表示的功能:
程序框
名称
功能
终端框(起止框)
表示一个算法的起始和结束
输入、输出框
表示一个算法输入和输出的信息
处理(执行)框
赋值、计算
判断框
判断一个条件是否成立
流程线
连接程序框
④
阅读教材P7“判断整数n
是否为质数”的程序框图初步认识一下算法程序框图的基本构成.
→
讨论:输入15后,框图的运行流程,讨论:输出的结果。
2.
程序框图的三种基本逻辑结构:
讨论:P7的程序框图,感觉上可以如何大致分块?流程再现出一些什么结构特征?
→
教师指出:顺序结构、条件结构、循环结构.
②
试用一般的框图表示三种逻辑结构.
(见下图)
③顺序结构:
例3、已知一个三角形的三边分别为4,5,6,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图.
(学生用自然语言表示算法→师生共写程序框图→讨论:结构特征)
教师:点明顺序结构的定义与特征及其对应的程序框图
顺序结构:若干个依次执行的处理步骤组成的结构。它是任何一个算法都离不开的一种基本算法结构。
④条件结构:
例4、任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在.画出这个算法的程序框图.
(学生分析算法→写出程序框图→试验结果→讨论结构)
思考:与顺序结构比较,上述框图的结构有怎样的规律?
教师:点明条件结构的定义与特征及其对应的程序框图
条件结构:在一个算法中,经常会遇到一些条件的判断,算法的流程根据条件是否成立有不同的流向.
条件结构就是处理这种过程的结构。常见的条件结构可以用程序框图表示为两种形式(见课本)
例5、你能画出求分段函数的值的程序框图吗?
分析:
多重条件结构的程序框图如何画
三、课堂练习:
1、设计一个求解一元二次方程的算法.并画出程序框图表示。
2、一个笼子里装有鸡和兔共m只,且鸡和兔共n只脚,设计一个计算鸡和兔各有多少只的算法,并画出程序框图表示.
四、课堂小结:
1、程序框图的基本知识;
2、三种基本逻辑结构;
3、顺序结构:是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。
4、条件结构:是根据条件是否成立有不同的流向.
条件结构就是处理这种过程的结构.
根据给定的条件P是否成立而选择执行步骤A或步骤B。无论P条件是否成立,只能执行步骤A或步骤B之一,不可能同时执行步骤A和步骤B,也不可能步骤A、步骤B都不执行。
5、画程序框图要注意:流程线的前头;判断框后边的流程线应根据情况标注“是”或“否”.
五、课后作业:
《创新设计》活页P71-721.1.2程序框图与算法的基本结构(一)
(
)教学要求:掌握程序框图的概念;会用通用的图形符号表示算法,掌握算法的三个基本逻辑结构.
掌握画程序框图的基本规则,能正确画出程序框图.
通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程;学会灵活、正确地画程序框图.
(
)教学重点:程序框图的基本概念、基本图形符号和3种基本逻辑结构.
(
)教学难点:综合运用框图知识正确地画出程序框图
(
)教学过程:
(
)一、复习准备:
(
)1.
写出算法:给定一个正整数n,判定n是否偶数.
(
)2.
用二分法设计一个求方程的近似根的算法.
(
)二、讲授新课:
(
)1.
教学程序框图的认识:
(
)①
讨论:如何形象直观的表示算法?
→图形方法.
(
)教师给出一个流程图(上面1题),学生说说理解的算法步骤.
(
)②
定义程序框图:程序框图又称流程图,是一种用规定的图形、指向线及文字说明来准确、直观地表示算法的图形.
(
)③基本的程序框和它们各自表示的功能:
程序框
名称
功能
终端框
(
)(起止框)
表示一个算法的起始和结束
输入、输出框
表示一个算法输入和输出的信息
处理(执行)框
赋值、计算
判断框
判断一个条件是否成立
流程线
连接程序框
④
阅读教材P5的程序框图.
→
讨论:输入35后,框图的运行流程,讨论:最大的I值.
(
)2.
教学算法的基本逻辑结构:
(
)讨论:P5的程序框图,感觉上可以如何大致分块?流程再现出一些什么结构特征?
(
)→
教师指出:顺序结构、条件结构、循环结构.
(
)②
试用一般的框图表示三种逻辑结构.
(见下图)
(
)
(
)③
出示例3:已知一个三角形的三边分别为4,5,6,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图.
(学生用自然语言表示算法→师生共写程序框图→讨论:结构特征)
(
)④
出示例4:任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在.画出这个算法的程序框图.
(学生分析算法→写出程序框图→试验结果→讨论结构)
(
)⑤
出示例5:设计一个计算1+2+3+…+1000的值的算法,并画出程序框图.
(
)
(学生分析算法→写出程序框图→给出另一种循环结构的框图→对比两种循环结构)
(
)3.
小结:程序框图的基本知识;三种基本逻辑结构;画程序框图要注意:流程线的前头;判断框后边的流程线应根据情况标注“是”或“否”;循环结构中要设计合理的计数或累加变量等.
(
)三、巩固练习:
1.练习:把复习准备题②的算法写成框图.
2.
作业:P12
A组
1、2题.
(
)1.1.2程序框图与算法的基本结构(二)
(
)教学要求:更进一步理解算法,掌握算法的三个基本逻辑结构.
掌握画程序框图的基本规则,能正确画出程序框图.学会灵活、正确地画程序框图.
(
)教学重点:灵活、正确地画程序框图.
教学难点:运用程序框图解决实际问题.
教学过程:
一、复习准备:
1.
说出下列程序框的名称和所实现功能.
2.
算法有哪三种逻辑结构?并写出相应框图
顺序结构
条件结构
循环结构
程序框图
结构说明
按照语句的先后顺序,从上而下依次执行这些语句.
不具备控制流程的作用.
是任何一个算法都离不开的基本结构
根据某种条件是否满足来选择程序的走向.
当条件满足时,运行“是”的分支,不满足时,运行“否”的分支.
从某处开始,按照一定的条件,反复执行某一处理步骤的情况.
用来处理一些反复进行操作的问题
二、讲授新课:
1.
教学程序框图
①
出示例1:任意给定3个正实数,判断其是否构成三角形,若构成三角形,则根据海伦公式计算其面积.
画出解答此问题算法的程序框图.
(学生试写
→
共同订正
→
对比教材P7
例3、4
→
试验结果)
②
设计一个计算2+4+6+…+100的值的算法,并画出程序框图.
(学生试写
→共同订正
→
对比教材P9
例5
→
另一种循环结构)
③
循环语句的两种类型:当型和直到型.
当型循环语句先对条件判断,根据结果决定是否执行循环体;
直到型循环语句先执行一次循环体,再对一些条件进行判断,决定是否继续执行循环体.
两种循环语句的语句结构及框图如右.
说明:“循环体”是由语句组成的程序段,能够完成一项工作.
注意两种循环语句的区别及循环内部改变循环的条件.
④
练习:用两种循环结构,写出求100所有正约数的算法程序框图.
2.
教学“鸡兔同笼”趣题:
“鸡兔同笼”,我国古代著名数学趣题之一,大约在1500年以前,《孙子算经》中记载了这个有趣的问题,书中描述为:今有雏兔同笼,上有三十五头,下有九十四足,问雏兔各几何?
②
学生分析其数学解法.
(“站立法”,命令所有的兔子都站起来;或用二元一次方程组解答.)
③
欣赏古代解法:“砍足法”,
假如砍去每只鸡、每只兔一半的脚,则
“独脚鸡”,
“双脚兔”.
则脚的总数47只;与总头数35的差,就是兔子的只数,即47-35=12(只).鸡35-12=23(只).
④
试用算法的程序框图解答此经典问题.
(算法:鸡的头数为x,则兔的头数为35-x,结合循环语句与条件语句,判断鸡兔脚数2x+4(35-x)是否等于94.)
三、巩固练习:1.
练习:100个和尚吃100个馒头,大和尚一人吃3个,小和尚3人吃一个,求大、小和尚各多少个?分析其算法,写出程序框图.
2.
作业:教材P12
A组1题.1.1.2
程序框图与算法的基本逻辑结构
整体设计
教学分析
用自然语言表示的算法步骤有明确的顺序性,但是对于在一定条件下才会被执行的步骤,以及在一定条件下会被重复执行的步骤,自然语言的表示就显得困难,而且不直观、不准确.因此,本节有必要探究使算法表达得更加直观、准确的方法.程序框图用图形的方式表达算法,使算法的结构更清楚、步骤更直观也更精确.为了更好地学好程序框图,我们需要掌握程序框的功能和作用,需要熟练掌握三种基本逻辑结构.
三维目标
1.熟悉各种程序框及流程线的功能和作用.
2.通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程.在具体问题的解决过程中,理解程序框图的三种基本逻辑结构:顺序结构、条件结构、循环结构.
3.通过比较体会程序框图的直观性、准确性.
重点难点
数学重点:程序框图的画法.
数学难点:程序框图的画法.
课时安排
4课时
教学过程
第1课时
程序框图及顺序结构
导入新课
思路1(情境导入)
我们都喜欢外出旅游,优美的风景美不胜收,如果迷了路就不好玩了,问路有时还听不明白,真是急死人,有的同学说买张旅游图不就好了吗,所以外出旅游先要准备好旅游图.旅游图看起来直观、准确,本节将探究使算法表达得更加直观、准确的方法.今天我们开始学习程序框图.
思路2(直接导入)
用自然语言表示的算法步骤有明确的顺序性,但是对于在一定条件下才会被执行的步骤,以及在一定条件下会被重复执行的步骤,自然语言的表示就显得困难,而且不直观、不准确.因此,本节有必要探究使算法表达得更加直观、准确的方法.今天开始学习程序框图.
推进新课
新知探究
提出问题
(1)什么是程序框图?
(2)说出终端框(起止框)的图形符号与功能.
(3)说出输入、输出框的图形符号与功能.
(4)说出处理框(执行框)的图形符号与功能.
(5)说出判断框的图形符号与功能.
(6)说出流程线的图形符号与功能.
(7)说出连接点的图形符号与功能.
(8)总结几个基本的程序框、流程线和它们表示的功能.
(9)什么是顺序结构?
讨论结果:
(1)程序框图又称流程图,是一种用程序框、流程线及文字说明来表示算法的图形.
在程序框图中,一个或几个程序框的组合表示算法中的一个步骤;带有方向箭头的流程线将程序框连接起来,表示算法步骤的执行顺序.
(2)椭圆形框:表示程序的开始和结束,称为终端框(起止框).表示开始时只有一个出口;表示结束时只有一个入口.
(3)平行四边形框:表示一个算法输入和输出的信息,又称为输入、输出框,它有一个入口和一个出口.
(4)矩形框:表示计算、赋值等处理操作,又称为处理框(执行框),它有一个入口和一个出口.
(5)菱形框:是用来判断给出的条件是否成立,根据判断结果来决定程序的流向,称为判断框,它有一个入口和两个出口.
(6)流程线:表示程序的流向.
(7)圆圈:连接点.表示相关两框的连接处,圆圈内的数字相同的含义表示相连接在一起.
(8)总结如下表.
图形符号
名称
功能
终端框(起止框)
表示一个算法的起始和结束
输入、输出框
表示一个算法输入和输出的信息
处理框(执行框)
赋值、计算
判断框
判断某一条件是否成立,成立时在出口处标明“是”或“Y”;不成立时标明“否”或“N”
流程线
连接程序框
连接点
连接程序框图的两部分
(9)很明显,顺序结构是由若干个依次执行的步骤组成的,这是任何一个算法都离不开的基本结构.
三种逻辑结构可以用如下程序框图表示:
顺序结构
条件结构
循环结构
应用示例
例1
请用程序框图表示前面讲过的“判断整数n(n>2)是否为质数”的算法.
解:程序框图如下:
点评:程序框图是用图形的方式表达算法,使算法的结构更清楚,步骤更直观也更精确.这里只是让同学们初步了解程序框图的特点,感受它的优点,暂不要求掌握它的画法.
变式训练
观察下面的程序框图,指出该算法解决的问题.
解:这是一个累加求和问题,共99项相加,该算法是求的值.
例2
已知一个三角形三条边的边长分别为a,b,c,利用海伦—秦九韶公式设计一个计算三角形面积的算法,并画出程序框图表示.(已知三角形三边边长分别为a,b,c,则三角形的面积为S=),其中p=.这个公式被称为海伦—秦九韶公式)
算法分析:这是一个简单的问题,只需先算出p的值,再将它代入分式,最后输出结果.因此只用顺序结构应能表达出算法.
算法步骤如下:
第一步,输入三角形三条边的边长a,b,c.
第二步,计算p=.
第三步,计算S=.
第四步,输出S.
程序框图如下:
点评:很明显,顺序结构是由若干个依次执行的步骤组成的,它是最简单的逻辑结构,它是任何一个算法都离不开的基本结构.
变式训练
下图所示的是一个算法的流程图,已知a1=3,输出的b=7,求a2的值.
解:根据题意=7,
∵a1=3,∴a2=11.即a2的值为11.
例3
写出通过尺轨作图确定线段AB的一个5等分点的程序框图.
解:利用我们学过的顺序结构得程序框图如下:
点评:这个算法步骤具有一般性,对于任意自然数n,都可以按照这个算法的思想,设计出确定线段的n等分点的步骤,解决问题,通过本题学习可以巩固顺序结构的应用.
知能训练
有关专家建议,在未来几年内,中国的通货膨胀率保持在3?%左右,这将对我国经济的稳定有利无害.所谓通货膨胀率为3%,指的是每年消费品的价格增长率为3%?.在这种情况下,某种品牌的钢琴2004年的价格是10
000元,请用流程图描述这种钢琴今后四年的价格变化情况,并输出四年后的价格.
解:用P表示钢琴的价格,不难看出如下算法步骤:
2005年P=10
000×(1+3%)=10
300;
2006年P=10
300×(1+3%)=10
609;
2007年P=10
609×(1+3%)=10
927.27;
2008年P=10
927.27×(1+3%)=11
255.09;
因此,价格的变化情况表为:
年份
2004
2005
2006
2007
2008
钢琴的价格
10
000
10
300
10
609
10
927.27
11
255.09
程序框图如下:
点评:顺序结构只需严格按照传统的解决数学问题的解题思路,将问题解决掉.最后将解题步骤
“细化”就可以.“细化”指的是写出算法步骤、画出程序框图.
拓展提升
如下给出的是计算的值的一个流程图,其中判断框内应填入的条件是______________.
答案:i>10.
课堂小结
(1)掌握程序框的画法和功能.
(2)了解什么是程序框图,知道学习程序框图的意义.
(3)掌握顺序结构的应用,并能解决与顺序结构有关的程序框图的画法.
作业
习题1.1A
1.
设计感想
首先,本节的引入新颖独特,旅游图的故事阐明了学习程序框图的意义.通过丰富有趣的事例让学生了解了什么是程序框图,进而激发学生学习程序框图的兴趣.本节设计题目难度适中,逐步把学生带入知识的殿堂,是一节好的课例.
第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=,x2=;
若Δ=0,则原方程有两个相等的实数根x1=x2=;
若Δ<0,则原方程没有实数根.也就是说,在求解方程之前,可以先判断判别式的符号,根据判断的结果执行不同的步骤,这个过程可以用条件结构实现.
又因为方程的两个根有相同的部分,为了避免重复计算,可以在计算x1和x2之前,先计算p=,q=.
解决这一问题的算法步骤如下:
第一步,输入3个系数a,b,c.
第二步,计算Δ=b2-4ac.
第三步,判断Δ≥0是否成立.若是,则计算p=,q=;否则,输出“方程没有实数根”,结束算法.
第四步,判断Δ=0是否成立.若是,则输出x1=x2=p;否则,计算x1=p+q,x2=p-q,并输出x1,x2.
程序框图如下:
例3
设计算法判断一元二次方程ax2+bx+c=0是否有实数根,并画出相应的程序框图.
解:算法步骤如下:
第一步,输入3个系数:a,b,c.
第二步,计算Δ=b2-4ac.
第三步,判断Δ≥0是否成立.若是,则输出“方程有实根”;否则,输出“方程无实根”.结束算法.
相应的程序框图如右:
点评:根据一元二次方程的意义,需要计算判别式Δ=b2-4ac的值.再分成两种情况处理:(1)当Δ≥0时,一元二次方程有实数根;
(2)当Δ<0时,一元二次方程无实数根.该问题实际上是一个分类讨论问题,根据一元二次方程系数的不同情况,最后结果就不同.因而当给出一个一元二次方程时,必须先确定判别式的值,然后再用判别式的值的取值情况确定方程是否有解.该例仅用顺序结构是办不到的,要对判别式的值进行判断,需要用到条件结构.
例4
(1)设计算法,求ax+b=0的解,并画出流程图.
解:对于方程ax+b=0来讲,应该分情况讨论方程的解.
我们要对一次项系数a和常数项b的取值情况进行分类,分类如下:
(1)当a≠0时,方程有唯一的实数解是;
(2)当a=0,b=0时,全体实数都是方程的解;
(3)当a=0,b≠0时,方程无解.
联想数学中的分类讨论的处理方式,可得如下算法步骤:
第一步,判断a≠0是否成立.若成立,输出结果“解为”.
第二步,判断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
“特快专递”是目前人们经常使用的异地邮寄信函或托运物品的一种快捷方式.某快递公司规定甲、乙两地之间物品的托运费用根据下列方法计算:
f=
其中f(单位:元)为托运费,ω为托运物品的重量(单位:千克).
试画出计算费用f的程序框图.
分析:这是一个实际问题,根据数学模型可知,求费用f的计算公式随物品重量ω的变化而有所不同,因此计算时先看物品的重量,在不同的条件下,执行不同的指令,这是条件结构的运用,是二分支条件结构.其中,物品的重量通过输入的方式给出.
解:算法程序框图如右图:
拓展提升
有一城市,市区为半径为15
km的圆形区域,近郊区为距中心15—25
km的范围内的环形地带,距中心25
km以外的为远郊区,如右图所示.市区地价每公顷100万元,近郊区地价每公顷60万元,远郊区地价为每公顷20万元,输入某一点的坐标为(x,y),求该点的地价.
分析:由该点坐标(x,y),求其与市中心的距离r=,确定是市区、近郊区,还是远郊区,进而确定地价p.由题意知,p=
解:程序框图如下:
课堂小结
(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,返回第二步.
程序框图如右:
上述程序框图用的是当型循环结构,如果用直到型循环结构表示,则程序框图如下:
点评:这是一个典型的用循环结构解决求和的问题,有典型的代表意义,可把它作为一个范例,仔细体会三种逻辑结构在程序框图中的作用,学会画程序框图.
变式训练
已知有一列数,设计框图实现求该列数前20项的和.
分析:该列数中每一项的分母是分子数加1,单独观察分子,恰好是1,2,3,4,…,n,因此可用循环结构实现,设计数器i,用i=i+1实现分子,设累加器S,用S=,可实现累加,注意i只能加到20.
解:程序框图如下:
方法一:
方法二:
点评:在数学计算中,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粒麦子,以后每个格子中的麦粒数都是它前一个格子中麦粒数的二倍,依此类推(国际象棋棋盘共有64个格子),请将这些麦子赏给我,我将感激不尽.国王想这还不容易,就让人扛了一袋小麦,但不到一会儿就没了,最后一算结果,全印度一年生产的粮食也不够.国王很奇怪,小小的“棋盘”,不足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元,则运费公式为:
y=
整理得y=
要计算托运的费用必须对行李质量分类讨论,因此要用条件语句来实现.
解:算法分析:
第一步,输入行李质量x.
第二步,当x≤50时,计算y=0.25x,否则,执行下一步.
第三步,当x≤100,计算y=0.35x-5,否则,计算y=0.45x-15.
第四步,输出y.
程序框图如下:
知能训练
设计一个用有理数数幂逼近无理指数幂的算法,画出算法的程序框图.
解:算法步骤:
第一步,给定精确度d,令i=1.
第二步,取出的到小数点后第i位的不足近似值,记为a;取出的到小数点后第i位的过剩近似值,记为b.
第三步,计算m=5b-5a.
第四步,若m第五步,得到的近似值为5a.
程序框图如下:
拓展提升
求,画出程序框图.
分析:如果采用逐步计算的方法,利用顺序结构来实现,则非常麻烦,由于前后的运算需重复多次相同的运算,所以应采用循环结构,可用循环结构来实现其中的规律.观察原式中的变化的部分及不变项,找出总体的规律是4+,要实现这个规律,需设初值x=4.
解:程序框图如下:
课堂小节
(1)进一步熟悉三种逻辑结构的应用,理解算法与程序框图的关系.
(2)根据算法步骤画出程序框图.
作业
习题1.1B组1、2.
设计感想
本节是前面内容的概括和总结,在回忆前面内容的基础上,选择经典的例题,进行了详尽的剖析,这样降低了学生学习的难度.另外,本节的练习难度适中,并且多为学生感兴趣的问题,这样为学生学好本节内容作好充分准备,希望大家喜欢这一节课.
备课资料
备用习题
如果执行下面的程序框图,那么输出的S等于(
)
A.2
450
B.2
500
C.2
550
D.2
652
解析:此程序框图表达的是求2+4+6+…+100的值的算法,因为S==2
550,所以输出S=2
550.
答案:C