算法的概念教学设计案例(2)

时间:2021-08-31

三、简单算法举例

  为了理解如何设计算法,下面举几个算法的简单例子。

  [例1] 有两个杯子A和B,分别盛有果汁和酒,要求将这两个杯子进行互换。

  (请学生回答,并要求说清楚明确的步骤)

  学生所回答的步骤就是算法的描述:

  根据常识,必须增加一个空杯C作为过渡。

  其算法表示

  步骤1:先将A杯中的果汁倒在C杯中;

  步骤2:再讲B杯中的酒倒在A杯中;

  步骤3:最后将C杯中的果汁倒在B杯中。

  此问题可以抽象为数值运算中的交换两个变量的值,简化为:

  ①A → C

  ②B → A

  ③C → B

  [例2] 从十个数中挑选出最大的数。

  创设情景:这个问题的思路可以用“打描台”来比喻。第一个同学先上讲台,然后第二个同学上去比试,胜者(个子高的)留在讲台上,依次轮流,一直到第十个人比完为止()一共九次)最后留在讲台上的同学就是胜者(个子最高的同学)。

  算法描述:

  1.先任选一个数放在变量A中;

  2.将第二个数与变量A中的数进行比较,大者放在变量A中;

  3.再将第三个数与变量A中的数进行比较,大者放在变量A中;

  10.最后将第十个数与变量A中的数进行比较,大者放在变量A中。

  这样写算法虽然正确,但是太烦琐了,可以简化为如下:

  1.数X → A,计数器 0 → N;

  2.下一个数Y与A比较,大者→ A;

  3.N + 1 → N;(增加一次比较次数)

  4.若N ? 9,执行第2步,否则停止循环,此时A中的数最大。

  显然,用“循环”表示的算法比较简练。

  如果题目要求改为“从1000个数中挑选最大者”,只许需要将算法里面的第4步中的“9”改为“999”即可。

  [例3] 求两个正整数m和n的最大公约数。

  解题之前介绍“辗转相除法”求最大公约数的方法。“辗转”就字面意思来讲是翻来覆去的意思,因此“辗转相除法”的格式可以形象地表示为:

  将m和n赋具体值,m = 60,n = 14,板书具体求解方法。

  用m 作被除数, n 作除数,r 做余数。

  具体方法(算法)为:

  ①求m/n的余数r;

  ②若r = 0 ,则n为最大公约数,若r ≠ 0,执行第③步;

  ③将n → m,将r → n中;

  ④返回重新执行第①步。

  注意:如果事先不知道M,N两个数谁大谁小,应(可)在第一步之前增加一个步骤,比较一下两个数的大小,大数在m中,小数在n中。