教
学
过
程
一、情景引入
1、 要把大象装入冰箱分几步?
第一步 把冰箱打开。
第二步 把大象放进冰箱。
第三步 把冰箱门关上。
2、 指出在家中烧开水的过程分几步?
略
3、 如何求一元二次方程的解?
略
注意:以上三例的求解过程中,老师紧扣算法的定义,带领学生总结。反复强调,使学生体会到以下几点:
(1) 强调步骤的顺序性,逻辑性,打乱顺序,就不能完成任务。
(2) 强调步骤的完整性,不可分割。
(3) 强调步骤的有限性。
(4) 强调每步的结果的确切性(明确的结果)。
(5) 强调步骤的通用性,任何人只要按照该步骤执行即可完成任 务。
二、新课讲解:
例1一群小兔一群鸡,两群合到一群里,要数腿共48,要数脑袋整17,多少只小兔多少只鸡?
算法1:
解 : S1 首先计算没有小兔时,小鸡的数为:17只,腿的总数为34条。
S2 再确定每多一只小兔、减少一只小鸡增加的腿数2条。
S3 再根据缺的腿的条数确定小兔的数量: (48-34)/2=7只
S4 最后确定小鸡的数量:17-7=10只.
算法2:
S1 首先设x只小鸡,y只小兔。
S2 再列方程组
S3 解方程组
S4 指出小鸡10只,小兔7只
例2写出一个求有限整数序列中的最大值的算法。
分析: 你可能觉得,求一个整数序列的最大值是一个很简单的事。的确从10个、8个整数中找出最大值,你一眼就可以看得出来。可是要从一百万个年龄序列表中找出年龄最大的一个,要是没有算法,可就是一件很困难的事了。可计算机利用软件瞬间就可以找出最大值,计算机要靠软件(程序)支持,编写程序要依赖算法,因此我们要编写出合理的、高效的算法就非常必要了。
请大家思考:如何写出这个问题的一个算法呢?
算法1:
S1 先假定序列中的第一个数为"最大值"。
S2 将序列的第二个整数值与"最大值"比较,如果第二个整数大于"最 大值",这时就假定这个数为"最大值"。
S3 将序列的第三个整数值与"最大值"比较,如果第三个整数大于"最 大值",这时就假定这个数为"最大值"。
S4 将序列的第四个整数值与"最大值"比较,如果第四个整数大于"最 大值",这时就假定这个数为"最大值" 依此类推
Sn 将序列的第n个整数值与"最大值"比较,如果第n个整数大于"最 大值",这时就假定这这个数为"最大值"。
Sn+1 直到序列中没有可比的数为止,"最大值"就是序列的最大值。
算法2
S1 先假定序列中的第一个数为"最大值"。
S2 将序列中的下一个整数值与"最大值"比较,如果 大于"最大值",这时就假定这个数为"最大值"。
S3 如果序列中还有其它整数,重复S2。
S4 直到序列中没有可比的数为止,这时假定的"最 大值"就是序列的最大值。
例3举例:写出一个求整数a、b、c最大值的算法
解:S1 max=a。
S2 如果b>max,则max=b。
S3 如果c>max,则max=c。
S4 max就是a、b、c的最大值。
三、知识小结:
1、算法的定义:
算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
2、算法的五大特征:
⑴逻辑性:算法应具有正确性和顺序性。算法从初始步骤开始,分为若干明确的步骤,前一步是后一步的基础,只有执行完前一步才能进行下一步,并且每一步都有确切的含义,组成了具有很强的逻辑性的序列。
⑵概括性:算法必须能解决一类问题,并且能重复使用。
⑶有限性:一个算法必须保证执行有限步后结束
⑷非唯一性:求解某个问题的算法不一定是唯一的,对于一个问题可以有不同的算法。
⑸普遍性:
许多的问题可以设计合理的算法去解决。如:如用二分法求方程的近似零点,求几何体的体积等等。
3、算法的表述形式:
⑴用日常语言和数学语言或借助于形式语言(算法语言)各处精确的说明。
⑵程序框图(简称框图).
⑶程序语言。