《算法设计》中一道探究题的解析.docVIP

  • 1
  • 0
  • 约1.97千字
  • 约 4页
  • 2017-05-12 发布于河南
  • 举报
《算法设计》中一道探究题的解析

《算法设计》中一道探究题的解析 崇明中学 陈超 一、题目提出 一次听课时,授课教师用“小明有只密码锁的拉竿箱,忘记了密码,密码锁是四位数字,只记得这个四位数前三位为均为1。请问你能帮他解决这个问题吗?”作为枚举算法引入的实例,由于该实例来自于学生身边,在师生的共同分析研究下,学生较快地理解与掌握了枚举算法。 对该实例进行探究后,得到了以下多种算法。 二、算法递进 1、枚举法(当时授课教师提供,略作改变) 结构特点:循环结构嵌套分支结构。 算法分析:循环结构用于一一列举;分支结构用于逐一检验,并输出密码值。 VB代码如下: Dim key As Integer, i As Integer Randomize Key = Int(10 * Rnd()) i = 0 Do While i = 9 If i = Key Then Print 1110 + Key End If i = i + 1 Loop 2、改进版枚举法,消除冗余循环 结构特点:1、循环结构嵌套分支结构;2、循环结构中设置退出出口。 算法分析:密码值具有唯一性,所以找到密码后即可输出结果,并退出循环结构。 (1)、重置循环变量的值,使循环的条件不成立,从而实现退出循环结构。 VB代码如下: Dim key As Integer, i As Integer Randomize Key = Int(10 * Rnd()) i = 0 Do While i = 9 If i = Key Then Print 1110 + Key i = 9 End If i = i + 1 Loop (2)、强制退出循环结构。 VB代码如下: Dim key As Integer, i As Integer Randomize Key = Int(10 * Rnd()) i = 0 Do While i = 9 If i = Key Then Print 1110 + Key Exit Do End If i = i + 1 Loop 3、改变循环条件的设置 结构特点:单循环结构。 算法分析:循环体为计数器,循环条件设为查找密码的条件。 (1)、当循环结构 VB代码如下: Dim key As Integer, i As Integer Randomize Key = Int(10 * Rnd()) i = 0 Do While i Key i = i + 1 Loop Print 1110 + Key (2)、直到循环结构 VB代码如下: Dim key As Integer, i As Integer Randomize Key = Int(10 * Rnd()) i = -1 Do i = i + 1 Loop Until i = Key Print 1110 + key 上述三种算法设计思路从易到难,而算法结构由繁到简。通过算法的解析,培养学生的创新思维推进题目:“小明有只密码锁的拉竿箱,千位数与十位数数字均为1,请设计算法找到密码值”。 VB代码如下: Dim Key As Integer Dim x As Integer Dim i As Integer Key = 1010 + 100 * Int(10 * Rnd()) Key = Key + Int(10 * Rnd()) x = 0 i = 0 Do While x Key x = 1010 + i \ 10 * 100 + i Mod 10 i = i + 1 Loop Print x 思考: 教师要有创新观念和探究精神,不迷信教材与教参,引导学生努力探求算法的多样化,诱发学生的探究精神与创新思维。 教师要呵护学生的创新意识,学生的智慧和潜能是很大的。例如当我提示“密码值具有唯一性”后,就有学生给出了“重置循环变量的值”的方法,实现消除冗余循环。给学生提供自我表现的平台,让学生体验到成功的满足和喜悦,激发进一步追求创新的心向。 4

文档评论(0)

1亿VIP精品文档

相关文档