高中数学新课标必修教材
算法初步
(试验稿)
合肥北大附属试验学校高中数学新课标教改课题组
编写者 查建敏 张益福
康永久 王亚东
2004.11.10
算法初步 (约12课时)
1 算法的含义、程序框图 1.1 算法的意义 1课时 1.2 程序框图 3课时
2 基本算法语句
2.1 输入语句、输出语句、赋值语句 2课时 2.2 条件语句、循环语句 2课时 综合算法语句应用 1课时
3 阅读材料:中国古代算法案例 2课时
1 算法的含义、程序框图
1.1 算法的意义
在初中我们学过解一元一次方程,它的解法一般步骤是:去分母、去括号、移项、合并同类项、方程两边同除以未知数的系数。
我们还学过解二元一次方程组,如解方程组: (Ⅰ)
2xy6 ① 3xy4 ②
回顾用代入消元的解法。
方程①化为; y=2x-6 ③ 将③式代入② 消出y得 3x+(2x-6)=4 解得 x=2 将x=2代入③得 y=-2 所以 x=2., y= -2 是此方程组的解。 一般地,用消元法解二元一次方程:
(Ⅱ) a1xb1yc1 ① a2xb2yc2 ②
的解法是;
第一步 由方程①化出 一个未知数用另一个未知数表示地式子③; 第二步 将式③代入方程②消去一个未知数,解出另一个未知数的值; 第三步 将所解出的值代入③,求出第二个未知数的值; 第四步 写出方程的解。 上述解法也可以用框图表示;
或用下面的框图表示:
上面解一元一次方程、二元一次方程组的解法都是按步骤的解决问题的方法,也可以叫做解一元一次
方程、二元一次方程组的算法。一般地,人们把进行某一工作的方法和步骤称为算法。
生活中,电器说明书是使用该电器的算法,歌谱是唱一首歌曲的算法,课程表是上课的算法,„等等。在本章中,我们主要研究数学中的一些问题的算法,特别是讨论计算机能实现的算法。
你能说出加减消元法解二元一次方程组(Ⅰ)的算法吗?并且试用框图表示它。 练习
1. 举出一些生活中算法的例子,与同伴交流一下。 2 说出解不等式 3x-7>5 的算法。 3. 写出解方程组
3x4y11 ① x3y5 ②
的一种算法。 习题1
1、 写出解不等式组:
2x+3>7 ①
3x-5<10 ②
的算法。
2、写出画函数y=2x-6的图象的算法。
3、写出解一元二次方程ax2bxc0的算法。
4、写出加减消元法解二元一次方程组(Ⅱ)的算法,并用框图表示它。
1.2程序框图
通过前面的学习我们已经知道了可用框图来表示二元一次方程组的解法。这种框图称为程序框图。程序框图又称流程图,是一种用规定的图形、指向线及文字说明来表示算法的图形。这些图形符号的意义见下表:
图形符号 名称
输入、输出框 数据的输入或结果的输出
处理框(执行框) 赋值、计算、结果的传送 起、止框 流程图的开始或结束
判断框 根据给定条件判断
流程线 流程进行的方向
起、止框是任何流程不可缺少的,它表明程序开始和结束,输入和输出可用在算法中任何需要输入、输出的位置。算法中间要处理数据或计算,可分别写在不同的处理框内。当算法中需要对两个不同的结果进行判断时,此时的判断条件要写在判断框内。一种判断框是“是”与“不是”两分支的判断,而且有且仅有两个结果;另一种则有多个分支判断,有几种不同的结果。
程序框图用来直观地描述解决问题的算法过程,将算法步骤清晰地表达出来,因而能帮助我们编写解决问题的程序。 下面我们分别学习程序框图的三种基本逻辑结构:顺序结构、选择结构、循环结构。 1.2.1 顺序结构
顺序结构算法的操作顺序是按照书写顺序执行的,这是任何一个算法必有的基本结构,是最简单的算法结构。 例1 写出求方程ax+b=c(a≠0,a、b、c为常数)的解的算法及程序框图。 解: 它的算法是:
第一步:输入a,b,c
第二步:将常数b移到方程右边 第三步:计算c-b
第四步:方程两边同除以a,得x=(c-b)/a 第五步:输出x的值。 其算法的程序框图为:
像这样的算法就是一个顺序结构的算法,只要按照书写顺序完成以上五个步骤,就能得出方程解的值x。
例2.已知三角形面积公式为s=
p(pa)(pb)(pc),其中a,b,c为三角形三边。P=(a+b+c)/2,用顺序结构
的算法求当a=2,b=3,c=4时的面积。 解:它的算法是:
第一步:输入a:=2,b:=3,c:=4 第二步:计算p=(a+b+c)/2 第三步:计算三角形的面积s=
p(pa)(pb)(pc)
第四步:输出s的值。 其算法的程序框图为:
练习:
1. 已知一长方体的长、宽、高分别为a,b,h,试编写出求长方体的体积的算法的顺序结构。并画出程序框图。 2. 画出由梯形两底a、b和高h,求梯形面积的程序框图。
3. 请同学们自己设计一个问题,并写出解决问题算法的顺序结构。
2 选择结构
我们已经学习了一元一次不等式ax>b(a≠0)的解法。如何写出解这个不等式的算法呢?因为在a>0与a<0时的解法不同,在写出顺序结构时,就要选择其中的一种进行运算,在计算机执行运算时,常先判定a的符号,如是否a>0?当输入
的a为正数时,则选择程序中“是”的路径运行,当输入a的值为负数时,则选择“否”的路径运行,其框图为:
该
注:此选择结构的框图可概括为:
上面虚线框中的结构即为选择结构。
选择结构的算法是根据指定条件进行判断,由判断的结果决定选取执行两条分支路径中的一条,然后继续执行后面的操作。
例2.对于任意给定的三个整数x,y,z,设计求出其最大值的算法。
分析:首先在三个数中任意选定两个数,如x与y比较大小。当x.>y时,则再由x与y比较大小:当x≤y 时,则再由y与z比较大小。在x与y大小两种关系中,就要选择一种路径执行。
解:算法为:
1 输入变量:x,y,z; 2 b:=x
3 比较b与y:如果b 否 是 否 是 注:在这个问题的算法中两次运用了选择结构。 练习: 1 写出求实系数一元二次方程ax2+bx+c=0(a≠0,a,b,c为常数)的根的算法。 2x+3 x≤c 2 编写出求函数y= (a,b,c为常数去)的值的算法中的选择结构。 x2+1 x>c 3 循环结构 前面我们学习了算法中的顺序结构,下面我们研究求s=1+2+3+……+100的算法。 分析:如果按照逐个相加方法计算,需要运算99次和,这样既不方便书写,也不便于阅读,能否找到一种简捷的算法呢?我们可以给定一个初始值i=1与s=s+i,随i的值每次按1递增,s的值也逐渐增大。在条件i≤100时,可采取循环方式增加s的值,直到i>100时,终止求和运算,输出s的值,这样只要用一个循环方式就可表示出求和过程。 其算法如下: 否 是 注:循环结构的框图可概括为: 否 是 上述框图中的虚线所示的结构即为循环结构。 例1.求100个数中的最大数的算法。 解:记这100个不同的数分别为a1,a2,a3……a100。其算法步骤为: 1. 比较a1与a2,将较大的数记作b; 2. 将b与a3进行比较,将较大的数记作b; 3. 将b与a4进行比较,将较大的数记作b; …… 99.将b 与a100进行比较,将较大的数记作b; 100.输出b(b的值即为所求的最大数)。 这里的第2步至第99步是重复进行的可以用循环的方式表示,此算法的程序框图是: 你能指出其中的循环结构吗? 在许多程序设计中需要用到循环控制,例如,要输入某个班级所有同学成绩;求若干个数之和等等。循环结构是算法的三种基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本结构单元。因此,认识和掌握循环结构是 进行程序设计的最基本的需要。循环结构的算法是根据是否满足所需的条件以决定是否继续执行循环体中的操作。 练习: 1.下面是求方程f(x)=0的近似解的算法框图。请指出其中的循环结构。 是 否 是 否 否 是 注:其中ε的表示预先约定的精确度为ε=0.01,它可以根据实际问题的需要而设定。 2.当x值由1开始,每次增加0.1,直到2。试编写求y=ax2+bx+c的值的程序框图。 习题1.2 1. 已知三角形的一边a和这条边上的高h,写出求其面积算法的顺序结构,并画出框图。 2. 写出作一次函数y=2x+1的图象算法的顺序结构及程序框图。 3. 按照历法的规定,如果某一年为闰年,那么或者这一年的年数能被4 整除,但不能被100整除,或者能被400整除。 试写出判断某一年份是否为闰年的程序框图,并指出其中的选择结构。 x2 , x∈(0,+∞) 4. 画出求函数f(x)= 1/2 , x=0 -x+1, x∈(-∞,0) 的值的程序框图。 5. 已知s=1+1/2+1/3+„„+1/n+„„试编写出用循环结构求前n项s刚好大于100的项数的程序框图。 6.一球从100米的高度自由落下,每次落地后又反跳到原来高度的一半,在落下,求它在第10次落地时,共经过多少米?第10次反弹多高?试编写求解过程中的循环结构。 2 算法基本语句 在前面的学习中,解决问题的算法和程序框图来体现算法的基本过程,而这些过程是有许多语句组成,归纳起来有输入、输出语句;赋值语句,条件语句和循环语句。这些语句就是设计算法让计算机可执行操作的基本语句。当然,也是程序框图中的基本语句。 2.1 输入、输出语句和赋值语句 不论多么简单的算法,都有开始和结束。开始时首先就要有给入一些初始的信息,这就是输入语句。它可以输入一些字母、n个方程或不等式,„等等。总之,它是计算机开始工作首先执行的语句(命令)。 如解方程ax+b=0中;首先输入:方程系数a、b。又如比较实数x,y,z的大小,首先输入变量x,y,z。 一般地,算法语言开始后首先要输入的一些数据,变量、等信息的语句叫做输入语句。 另外在程序结束前也要有一个输出结果的语句(如打印语句),表示计算机工作将要结束,它也是和输入语句前后呼应的。一般在程序框图中用 来表示输入、输出语句。 在计算机开始工作后,首先完成了输入语句,它只能代表计算机将要执行哪一种程序而无法去完成这一程序,而要完成它。首先还要对输入语句中的参变量赋值,或者让计算机按要求进行计算、建立某种函数等语句叫赋值语句。它可以赋一些常量、变量、算术表达式、函数„。一般框图中用 表示赋值语句。 如比较三个实数的大小,开始赋值:x,y,z的值就必须是常量。而程序执行过程后又赋值,max=x(或max=y),则是给变量赋值。又如:解方程ax+b=0开始对参量变量a,b赋值应是常量赋值(解方程2x+1=0,就赋值a=2,b=1)而赋值:x=-b/a(a≠0)这一赋值语句就称为算术表达式赋值。 例1 指出下面解一元二次方程ax2+bx+c=0(a≠0)的程序框图的输入、输出语句,赋值语句: 是 否 是 否 解:输入语句:输入a,b,c 输出语句:输出:x 赋值语句:(1)△ =b2-4ac (2)x:无实根 (3)x= -b/2a (4)x=(-b±√△)/2a 。 2.2 条件语句 在计算中经常会对某个数量、变量、关系式等作出判断而选择不同的结果执行后续操作时就需要用到条件算法语句。如在解方程ax+b=0中,输入a,b后,要对“a=0?”进行判断,而当a=0时,还要对“b=0?”进行判断。像这种是否符合某个条件的判断语句叫条件语句。条件语句用在框图中常用 表示。 例如解方程ax+b=0的算法程序框图是: 否 是 否 是 可以看出条件语句是在出现判断讨论时即分类讨论时才使用。但是注意判断的结果只有是,否两种。当然在一个程序框图中可能会出现多个条件语句。 例2:写出判断某年是不是闰年的算法的程序框图,并写出其中的条件语句。 分析(1)开始后输入某年:x; (2)对x进行判断,若x不是4的倍数,则x年不是闰年,即可输出:x不是闰年。 (3)若x是4的倍数,还要对x继续判断,若x不是100的倍数,则x是闰年。输出:x是闰年。 (4)若x是100的倍数,还要对x进行判断,x是不是400的倍数,若是:则x是闰年,输出x是闰年,若不是则x不是闰年,输出:x不是闰年。 (5) 结束。 解:其算法的程序框图如下: 否 是 是 否 否 是 在程序语句中三次出现条件语句,分别是: (1) 判断4整除x? (2) 100整除x? (3) 400整除x? 练习: 1. 编写某正数是不是5的约数的算法的程序框图,并指出条件语句。 2. 编写判断ABC是不是锐角三角形算法的程序框图,并指出其中的那些是条件语句。 3. 自己编写一个算法的程序框图,并说明其中使用没使用条件语句。若使用了,把它指出来。 2.3循环语句 在日常生活中,我们经常需要重复做某些事情,在我们算法语句中,对经常需要重复执行某些程序段,这就要用到循环语句了。如求输入若干个数(例如5个数)的和的过程框图。 从这个例子可以看出: 1、循环是使指定的程序段重复执行,被重复的程序段称为循环体。 2、循环一般是有条件的,即在满足一定条件下,才能执行循环体,或在满足一定条件下,不再执行循环体。 3、在一个程序中,会出现多重循环,即一个循环内含有另一个循环,我们把这种循环称为循环嵌套。 循环是程序中常用技术,技巧性很强,其关键在于对所计算的问题进行分析,概括出带规律性的东西。 例1 求100以内的奇数和。 分析:此程序是求若干个数的和,因此需要使用累加器。但由于相加的数是有规律的(100以内的奇数),不要逐一输入,由循环语句产生即可。 解: 练习: 1、求出105的所有约数。 2、鸡免同笼,笼中共有28个头,80只脚。问鸡免各几只? 3、用一角、二角、五角组成一元,有多少种组成方法? 因篇幅问题不能全部显示,请点此查看更多更全内容