(一)教材分析
教育科学出版社《算法与程序设计》(选修)模块第二章第三节《程序的基本结构》一共三课,本课选用的是第一小节《顺序结构》。众所周知,无论多么复杂的程序都可以分解为顺序、选择、循环这三种基本结构,因此本节内容的学习效果将影响后续章节的程序编写效率。
(二)教学目标
1、知识与技能:理解程序设计的顺序结构基本思想;掌握顺序结构语句特点
2、过程与方法:学会用算法分析问题;能够使用顺序结构编写简单的程序解决具体问题
3、情感态度与价值观:体会用结构化方法解决数学问题的便捷性;明确结构化在程序设计中的重要作用;激励尝试使用多种方法解决问题;培养良好的编程习惯和态度。
教学重点:理解程序设计的顺序结构基本思想
教学难点
1、顺序结构实现语句的格式和功能
2、编写简单的程序的过程
3、变量的特点
二、教学方法
任务驱动法、直观演示法、师生互动法、比较教学法
三、学生分析
课程改革之后,各学校立足于学校实际选开的选修模块各有不同。在没有选修《算法与程序设计》(选修)模块的情况下,对于高一的学生只在必修模块接触过一些关于程序设计的知识,而对于高二学生只有在数学必修模块三中有对算法及程序的描述。因此学生对于程序设计的知识还是相对匮乏的。因此,在学习设计的过程中,应弱化对于某一编程语言的学习,应更注重学生编程思想的培养。
在让学生实践的环节,我安排了随堂笔记这一形式,让学生随着教学的不断深入,充分发挥自己的思维想象,让学生与教学的进度同步进行,最后能够较好的理解程序的基本结构这一思想,并能较为系统地了解算法分析的一般过程。
四、教学过程
一、导入
在上课前,我故意引入一般人对程序的看法,设置悬念,引起学生的好奇心,勾起学生探索新鲜事物欲望。为拉近程序与生活的距离,举例说明生活中程序与生活的关系。
二、以任务驱动展开教学
以学生感兴趣的游戏形式展开,一起体验程序设计的过程.。学生从游戏中分析算法,本课设置了三个算法思路让学生分析。
1、顺序结构的第一次亲密接触
依照人的正常逻辑,必有学生想到直接互抛法来交换两个球的方法。引导学生分析算法,引出程序。由于算法1不是满足要求的算法,因此我先引出程序,再分析程序设计的过程。算法1是一个铺垫。这其中也涉及到顺序结构程序的语句描述。
2、顺序结构的第二次亲密接触
这是本课学生必须掌握的程序,因此让学生分析算法的同时,能够模仿算法1编写出算法2的程序。
3、顺序结构的第三次亲密接触
算法3是本节课的扩展知识,重在培养学生了解解决问题的多种思维方式,理解程序运行过程中变量值的变化,培养学生具有算法分析创新意识。
具体流程如下表:
课题 |
程序与生活 ------ 顺序结构程序设计 |
||
教学目标 |
|||
知识与技能 |
• 理解程序设计的顺序结构基本思想 • 掌握顺序结构语句特点 |
||
过程与方法 |
• 培养用算法分析问题的能力 • 能够使用顺序结构编写简单的程序解决具体问题 |
||
情感态度与价值观 |
• 体会用结构化方法解决数学问题的便捷性 • 明确结构化在程序设计中的重要作用 • 激励尝试 使用多种方法解决问题 • 培养良好的编程习惯和态度 |
||
教学重点 |
理解程序设计的顺序结构基本思想 |
||
教学难点 |
1 、顺序结构实现语句的格式和功能 3 、变量的特点 2 、编写简单的程序的过程 |
||
教学方法 |
任务驱动法、直观演示法、师生互动法、比较教学法 |
||
教学过程 |
教师活动 |
学生活动 |
设计意图 |
导入 |
• 导入 [ 教师 ] :一直以来编写程序被认为是一项高深莫测的技术,精通这门技术常被冠以“软件工程师”的美名。难道程序设计真的就这么高不可攀吗?今天这节课我们一起走近程序的世界,揭开程序设计的神秘面纱。 [ 电子板书 ] : 程序总是围绕着人的生活需要而编写的。 举例说明 |
引起学生的好奇心,探索新鲜事物欲望 联系实际,拉近程序与生活的距离 |
|
展 望 新 课 |
• 新课 1 、 [ 教师 ] :今天同学们要设计的程序来源于一堂体育课的游戏。 [ 电子板书 ] : 有一次在上体育课的时候, a 同学想和 b 同学做一个换球的游戏,同学们能不能帮他们出出主意? ( 如 a 原来拿篮球, b 原来拿排球,交换后, a 拿排球, b 拿篮球 ) (图略) 游戏规则:要求每次交换只允许每人手中最多有一个球 2 、顺序结构的第一次亲密接触: ( 1 )依照人的正常逻辑,必有学生想到直接互抛法来交换两个球的方法。分析算法,引出程序 算法 1 直接互抛法 : Step1 : a( 或 b) 拿篮球 Step2 : b( 或 a) 拿排球 step3 : a 将篮球(或排球)给 b step4 : b 将排球(或篮球)给 a • step5 :结束 |
让两个学生先用简洁语言描述交换的过程,并演示 |
以游戏形式展开讨论,学生的兴趣被调动起来。 限定交换规则为下面的算法 2 和算法 3 做铺垫 |
教学过程 |
教师活动 |
学生活动 |
设计意图 |
算法1程序可描述为: Dim a as integer Dim b as integer a=1 b=2 a=b b=a [ 教师 ] :请同学们对比算法 1 与算法 1 程序,你能猜猜程序每一行语句的含义吗?(提示 1 代表篮球, 2 代表排球, integer 为整型的意思) ( 2 ) 分析程序设计的过程的一般步骤。(图略) A 、变量应该先声明后使用。 B 、 VB 的赋值语句 变量名 = 表达式 功能:计算右边的表达式的值赋给左边的变量,得出 a=1 b=2 a=b b=a ( 3 )运行程序无结果。比喻程序没有发言权,要给装上一个一个发言功能。引出 print 语句。 A 、算法 1 程序完善如下: …… a = 1 b = 2 Print “交换前 :a="; a, "b="; b a = b b = a Print " 交换后 :a="; a, "b="; b B 、 让学生理解记忆,并将程序写到第一次亲密接触中 (4)运行程序不正确,设下疑点 [提问]:程序运行结果为什么会和我们交换的结果不一致呢? [电子板书]: 变量的特点: 每个变量占用一个内存空间,有新的内容被送到这个变量中,旧的内容就被冲刷掉了。 结论: 程序运行结果不能满足要求,直接互抛法程序不成功。 • 顺序结构的第二次亲密接触: [教师]:编写程序贵在有创新,而创新的关键就是算法,一种新的算法不亚于建造一种新的机型。引导学生进行算法2探讨。 |
学生分析每一行程序对应的含义 学生操作运行程序,观察结果 做随堂笔记 学生立刻发现程序运行结果不正确 学生简洁说明交换过程,并模拟演示 |
让学生对程序的格式有一个初步的印象,增强学生对程序编写的信心 算法 1 是不符合游戏规则的算法,因此直接给出程序,类似于语文中倒叙的方式,然后再分析 引入自然,加深印象 学生可以在默写的过程,理清程序的结构 激励教学法,使学生对学习充满期望和信心 |
|
教学过程 |
教师活动 |
学生活动 |
设计意图 |
引 向 深 入 |
(1)算法2 “ 第三人 ” 交换法: Step1 : a( 或 b) 拿篮球, b( 或 a) 拿排球 step2 :输出交换前 a,b 的值 step3 :第三人 <- a( 或 b) step4 :第三人 <- a( 或 b) step5 : b( 或 a)<- 第三人 Step6 :输出交换后 a,b 的值 Step7 :程序结束
(2) [教师]:纵观整个算法,第三人扮演着什么角色? 小结: 第三人就像一个邮递员, 它是 a 和 b 换球的中转站 模仿第一次亲密接触的程序, 让学生将算法 2 程序写到第二次亲密接触中(教师随堂辅导) (3)算法 2 程序如下 ( 传递变量 c) : Dim a as integer Dim b as integer a = 1 b = 2 Print " 交换前 :a="; a, "b="; b c = a a = b b = c Print " 交换后 :a="; a, "b="; b 结论:小小“邮箱员”,交换真方便 |
学生思考,并回答 学生自己模仿算法 1 程序编写算法 2 程序 学生观看教师演示,并思考 |
了解中间变量作用,加深对程序的理解 |
知 识 扩 展 |
5、顺序结构的第三次亲密接触: 游戏规则 2 :允许某一瞬间有人可以同时拿着两个球 [教师]:有了前面两个程序编写的经验,同学们已经基本掌握了程序编写的过程。即分析问题,寻找算法,计算机识别模式转化,及程序语言编写程序的过程。同学们还能不能带给我们更多的惊喜呢? 算法较复杂,可引导学生从模拟的算法中,将提示的交换程序补充完整。 算法 3 近距离互换: …… a=1 b=2 Print “交换前 :a="; a, "b="; b a=a+b b=a-b a=a-b Print " 交换后 :a="; a, "b="; b [ 教师 ] :分析交换过程 a,b 的值 |
学生回答 |
既是复述程序设计的过程,让学生记忆一个程序设计的概念,又能扩大学生的思维方式 算法复杂,学生可能无法想到,可以让学生描述程序在交换过程中变量 a,b 的值 理解程序的运算过程 |
总结 |
[提问]:纵观上述三个程序,无论是算法1的程序,还是算法2和算法3的程序,从运行的结构上说都有一个共同的特点。从程序开始到程序结束,程序运行有没有出现某一行语句重复运行,或者某一行语句不执行的情况呢? 程序设计的顺序结构: 在程序执行过程中,语句按先后顺序一行一行执行,没有分支,没有重复,直到程序结束。 |
学生回答 |
通过三次体验顺序结构的程序设计,学生能够深刻理解顺序结构的基本思想 |
实践练习 |
实践练习: 通过 Internet 查找有关“两变量值互换”的其它算法,进一步体验顺序结构程序设计的思想。 |
培养学生对算法的探究精神 |