华东师大课标版《算法与程序设计》(选修)(2008年7月第1版)
第1章
计算机和算法
1.1 使用计算机解决问题的一般过程
教者:于兆鑫
一、教学目标 1、知识与技能
(1)让学生了解算法、穷举法、程序设计语言、编写程序和调试程序等概念。
(2)让学生知道对现实问题的自然语言的描述,特别是类似程序设计语言的自然语言描述。
(3)让学生理解分析问题、设计算法、编写程序、调试程序这一用计算机解决问题的基本步骤,认识其在算法与程序设计中的作用。
2方法与过程
(1)培养学生发现旧知识的规律、方法和步骤,并把它运用到新知识中去的能力。
(2)培养学生调试程序的能力。
(3)培养学生合作、讨论、观摩、交流和自主学习的能力。
3、情感态度和价值观
通过“韩信点兵”这个富有生动情节的实例和探究、讲授、观摩、交流等环节,让学生体验用计算机解决问题的基本过程。
二、重点难点
本节的重点用计算解决问题的过程中的分析问题、设计算法、和上机调试程序等步骤。用计算机解决问题的过程中的分析问题、设计算法也是本节的难点。
三、教学环境
1、教材处理
教学内容选用中华人民共和国教育部制订的华东师大课标版《算法与程序设计》(选修)中信息技术部分的
“算法与程序设计”第一章的第一课“使用计算机解决问题的一般过程”。高中一年级下学期或高中二年级开设。
1
根据2003年4月版《普通高中技术课程标准》的阐述,“算法与程序设计”是普通高中信息技术的选修模块之1,它的前导课程是信息技术的必修模块“信息技术基础”。学生在“信息技术基础”模块里已经学习了计算机的基本操作,掌握了启动程序、窗口操作和文字编辑等基础知识。学生可以利用上述的基础知识,用于本节课的启动Visual Basic程序设计环境,输入程序代码,运行程序等操作。本节课“计算机解决问题的过程”是“算法与程序设计”模块的第一节课,上好这节课是使学生能否学好“算法与程序设计”这一模块的关键。本节课的教学目的是让学生理解分析问题、设计算法、编写程序和调试程序等用计算机解决问题的基本过程,认识其在算法与程序设计中的地位和作用,它也是后续课程如模块化程序设计、各种算法设计等课程的基础。
让学生在人工解题中发现分析问题、设计算法等步骤,并把它应用到用计算机解决问题中去,这是构建主义中知识迁移的方法。本节课还采用了探究、讲授、观摩、交流、阅读材料等多种教学活动的有机结合的方法。
2、预备知识
本节课相联系的旧知识是计算机的基本操作中鼠标、键盘操作,启动、关闭程序,窗口、菜单操作和文字编辑等基础知识,还有解决数学问题的步骤等知识。
3、硬件要求
可以进行屏幕广播的多媒体电脑室。教师自行设计制作的课件。准备《计算机解决问题的过程》教学活动表。
4、所需软件
学生机要安装VB6.0或以上版本。
5、所需课时
1课时(45分钟)
四、教学过程
(一)引入
教师:“在科技发达的今天,我们到处都可以看到计算机的踪影,感受到计算机给学习、生活带来的方便。然而,在惊叹计算机的神奇和享受的欢乐的时候,你是否了解计算解决问题的基本过程?有没有思考过其中的奥妙呢?下面我们先看一个过河的问题:”
2
一个人带一只羊、一只狼和一篮草过河,只有一只小船,一次只能带一个物品。如果羊和狼在一起,狼吃羊;如果羊和草在一起,羊吃草。怎样才能安全渡河?
(二)问题
教师:“怎样才能安全渡河?”
展示题目解答推理:
1.农夫带羊到右岸,独自返回左岸;
2.农夫带狼到右岸,返回时白羊带回左岸;
3.农夫把菜带到右岸,独自返回左岸;
4.农夫把羊带到右岸,完成过河。
(三)探究
把全班分成16个学习小组,每个小组的同学一起探究、讨论问题。利用已学过的数学知识找出题目已知什么求什么、明确已知和未知之间的关系和写出求解问题的解题步骤。并填写《计算机解决问题的过程》教学活动表中的“探究问题记录表”。如下:
探究问题记录表
分析问题(找出已知和未知、列出已知和未知之间的关系)
写出解题步骤
结果
给5分钟学生讨论,教师在这过程中到各学习小组中,引导个别学习小组分析问题、写出解题步骤。教师提问2~3个同学,从中逐渐引导出类似如下的分析问题和解题步骤,并给出算法的概念。
分析问题(找出已知和未知、列出已知和未知之间的关系)
教师解释第3步“另X为X+1”并指出它与数学中的区别,并从上面的解题步骤中总结出穷举的算法。
教师:“刚才有些同学把题目解出来了,下面我们来解决一个数据量稍大的问题。”
3
写出解题步骤
展示题目:
我国古代数学名著《孙子算经》
今有物不知其数,三三数之剩2,五五数之剩3,七七数之剩2,问物几何?
6、给2分钟学生分析上述问题并写出算法,不用计算。学生有了第1题的经验,很快会写出和第一题类似的算法。如下:
筛选法. 首先写出“用3除余2”的数:
2,5,8,11,14,17,20,23,26,29,…
其中,“用5除余3”的数:8,23,…
其中,“用7除余2”的数:23,…
由此得到,23是最小的一个解。
至于下一个解是什么,要把“…”写出来才知道;
实践以后发现,是要费一点儿功夫的。
分析问题 ( 找出已知条件和未知条件、列出已知条件和未知条件之间的关系 ) 写出解题步骤 1. 令 X 为1。 2. 如果 X 整除3余2, X 整除5余3, X 整设所求的数为 X,则 X 应满足: 除7余2,这就是题目要求的数,则记下这个
X 整除3余2 X 。 X 整除5余3 3. 令 X 为 X+1 (为下一次计算作准备)。 X 整除7余2 4. 如果算出,则结束;否则跳转2。 5. 写出答案。
教师:“上面的结果超过1万,人工计算要很长时间,在科技发达的今天,你想到什么?”(用计算机解题)
(四)用计算机解决问题
4
教师:“计算机怎么样解决问题?用计算机解决问题,同样要经过分析问题、设计算法两步骤。”在讲授过程中展示人工解题中分析问题和设计算法这两个步骤。
算法:
解决问题的方法与步骤
程序:
算法+数据结构
计算机程序( Computer Program)就是指示计算机如何去解决问题或完成任务的一组可执行的指令。
程序设计(Program Design)就是寻求解决问题的方法,并将其实现步骤编写成计算机可以执行的程序的过程。
程序设计语言( Program Language)泛指一切用于书写计算机程序的语言。
注意:程序设计语言和计算机语言(Computer Language)是两个不同的概念,程序设计语言是一种重要的计算机语言。
算法的特征
1. 有穷性 执行有限步之后结束,且每一步都执行时间都是有限的。
2. 确定性
算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。
3. 输入输出
有零个或多个输入;至少产生一个输出。
4. 可行性 原则上能精确运行,用纸和笔做有限运算后可以完成。
算法描述的方法
用自然语言描述算法
用流程图描述算法
5
用伪代码描述算法
(五)练习
请用三种不同的方法描述水仙花数问题!
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。
三位的水仙花数共有4个:153,370,371,407; 四位的四叶玫瑰数共有3个:1634,8208,9474; 五位的五角星数共有3个:54748,92727,93084; 六位的六合数只有1个:548834; 七位的北斗七星数共有4个:1741725,4210818,9800817,9926315; 八位的八仙花数共有3个:24678050,24678051,88593477 (六)交流
教师:“前面我们学习了用计算机解决问题的过程,它和人工解有什么关系呢?同一学习小组的同学一起探讨人工求解问题和用计算机求解问题的异同,并把讨论结果记录在《计算机解决问题的过程》教学活动表的“讨论记录”表中。如下:
关于求解问题的方式讨论记录
求解问题的方式
人工求解问题
用计算机求解问题
相同点
不同点
教师提问2~3个小组的讨论结果,并引导出大致如下的形式结果:
求解问题的方式
人工求解问题
相同点
分析问题、设计算法、得出结果、验算结果用计算机求解问题
等
6
不同点
对题目进行解答、运算速度慢、不需要计算机等
编写程序、调试程序、运算速度快等
学生活动记录:第
小组
渡河问题探究记录表
分析问题(找出已知和未知、列出已知和未知之间的关系)
写出解题步骤
结果
古代数学名著《孙子算经》算法分析记录表
分析问题 ( 找出已知条件和未知条件、列出已知条件和未知条件之间的关系)
写出解题步骤
关于求解问题的方式讨论记录
求解问题的方式
人工求解问题
相同点
不同点
用计算机求解问题
7
水仙花数VB实现的两种方法:
Private Sub Command5_Click() Dim i%, j%, k%, n%
For i = 1 To 9
For j = 0 To 9
For k = 0 To 9
n = i * 100 + j * 10 + k
If i ^ 3 + j ^ 3 + k ^ 3 = n Then Print n
Next k
Next j
Next i
End Sub
或
Private Sub Command6_Click()
Dim i%, j%, k%, n%
'百i=n/100.....水仙3位数
For n = 100 To 999
i = n \ 100
j = n \ 10 - i * 10
k = n Mod 10
If i ^ 3 + j ^ 3 + k ^ 3 = n Then Print n
Next n
8