《算法与程序设计》教材分析.docx
《《算法与程序设计》教材分析.docx》由会员分享,可在线阅读,更多相关《《算法与程序设计》教材分析.docx(18页珍藏版)》请在冰点文库上搜索。
《算法与程序设计》教材分析
《算法与程序设计》教材分析
常州一中林厚从
一、本模块开设目的
1、进一步体验算法思想,了解算法和程序设计在计算机解决问题过程中的地位和作用;
2、能从简单问题出发,设计和描述解决问题的算法;
3、能初步使用一种程序设计语言编制程序实现算法(解决问题);
二、几点想法
1、本模块开设的必要性:
因为新课改关注的是技术能力与人文素养的双重建构,既是信息素养培养的继续,又是支持个性发展的平台。
对于《算法与程序设计》选修课程,我个人认为是非常重要的选修课程。
印度软件产业成功的秘密就在于印度的IT职业教育培养了大批高质量软件人才。
振兴中国软件产业需要培养大量的IT人才,程序设计教学就是为培养这样的人才打下良好的基础,也是学生创新能力培养的重要途径之一。
2、本模块的重点
新课改给出了信息素养的深刻内涵:
体现知识与技能、过程与方法、情感态度与价值观三个层面的学习目标。
在新的课程标准中学生的信息素养描述为:
对信息的获取、加工、管理、表达与交流的能力,对信息及信息活动的过程、方法、结果进行评价的能力,发表观点、交流思想、开展合作与解决学习和生活中实际问题的能力,遵守相关的伦理道德与纪律法规,形成与信息社会相适应的价值观和责任感。
3、本模块的优势
对机器和软硬件的要求不高,知识体系比较系统成熟,教学和考核目标比较明确;
4、本模块的劣势
对学生信息素养和信息技术的基础知识的要求较高,对学生的数学素养和逻辑思维能力要求也教高,对老师的要求也相应教高。
在教学中要注意持续保持学生的学习兴趣和积极性,教学设计和举例都尽可能结合学生学习和生活中遇到的和熟悉的问题,也可以多联系一些数学和其它学科方面的知识,培养学生理论结合实践的能力和综合应用能力。
5、重要提示
《算法与程序设计》≠某一编程工具(语言)的教学
6、关于算法
算法是凌驾于程序设计语言之上的,不一定要用程序去实现,可以适当在教室中教学;
还要注意与《数学》学科中的“算法”部分相衔接。
7、关于编程工具
编程工具并不统一,但一般选择面向对象的平台,而以VB为佳,因为它简单易学,基本能反映当今最流行的程序设计的思想和方法。
8、关于教学把握
在高中阶段学习程序设计毕竟不同于专业训练,并且程序设计语言的变化也非常快,因此我们只要掌握程序设计的基本知识与一般规律。
当然,我们更要注意发现和培养对程序设计有特殊才能的学生,给他们提供充分的发展空间。
9、如何学好
爱因斯坦说过:
“兴趣是最好的教师。
”
程序设计学起来虽然有一定的困难,但也非常有意思,学好了我们就可以“指挥”计算机,只要保持浓厚的兴趣,多练多想多交流,就一定能学好。
三、学生学习的几个阶段(本模块的知识结构)
第一阶段:
激发学习的兴趣,明确学习的内容,理解计算机解决问题的过程
●通过本模块的学习,我们不仅能知道计算机是怎么工作的(工作原理),从计算机语言的层面上了解计算机能做什么,还要知道软件是怎么设计出来的以及软件设计的背后过程,甚至还能设计一些简单的小程序,同时更重要的是,对提高我们分析问题、解决问题的能力也会有很大的帮助。
●通过几个有趣的例子展开
例1:
韩信点兵(中国剩余定理)——古代数学问题,讨论算法
例2:
画面上随机产生一些色彩绚丽的同心圆——几何问题,程序的样子
例3:
个人所得税的计算——生活中的问题,算法的描述
●教学目标
1、深刻体会计算机的工作原理;
2、理解计算机解决问题的过程(问题分析——确定算法——编程求解),与人解决问题的过程比较;
3、明白什么是程序;
4、明白程序设计是什么回事;
5、明白计算机语言和程序设计语言;
6、初步了解算法的知识;
第二阶段:
体会算法的含义,明确算法对于计算机解题的重要性,掌握算法的基本知识
●几个例子
例1:
求出所有的水仙花数——穷举法
例2:
判断一个数是不是质数——穷举及优化
例3:
高斯的方法(求1+2+3+…..+N)——算法的多样性及评价
例4:
最大公约数问题——辗转相除法(经典问题)
●教学目标
7、掌握什么是算法;
8、体会算法的重要性,程序=算法+数据结构;
9、理解对于同一问题可能有多种不同的算法(算法多样性);
10、了解算法的评价及优化;
11、掌握算法的特征:
有穷性、确定性、一定有输出、不一定有输入、可行性;
12、会用多种方法描述算法(自然语言、伪代码、流程图);
13、了解程序的3种基本结构(结构化程序设计的基本知识,顺序结构、分支结构、循环结构)
第三阶段:
初步掌握一种程序设计语言,明白程序中的一些基本概念,学会编写简单程序
●量:
常量、变量(三要素:
变量名、类型、值,命名规则)
●数据类型:
含义及存储
●系统标准函数:
作用、函数名、形参和实参
●运算符:
算术运算符(+,-,*,/,\,mod,^),关系运算符,逻辑运算符,优先级
●表达式:
括号、值
●字符串运算符(+或&)及字符串处理,ASCII码知识
●语句:
输入、输出、计算、交互和赋值、分支、循环
●结构化程序设计的知识
●程序的模块化:
用户自定义函数
●数组的知识
●程序的编辑、保存、打开、调试、编译、运行、连接、打包
●面向对象的程序设计基本知识:
对象、属性、事件及事件驱动
●程序设计语言的历史、发展、趋势
例1:
顺序结构:
已知半径,求圆的面积;
例2:
顺序结构:
给定初速度和加速度,求一段时间后的车速度;
例3:
选择结构:
个人所得税的计算;
例4:
选择结构:
包裹邮寄的收费程序(又重量和体积算邮资);
例5:
选择结构:
超市打折;
例6:
选择结构:
一元二次方程的解;
例7:
选择结构:
二元一次方程组的解;
例8:
循环结构:
最大公约数和最小公倍数;
例9:
循环结构:
质数的判断;
例10:
循环结构:
加密和解密问题;
例11:
求N个数中的最大者、最小者、平均值(数组)
例12:
画同心圆(面向对象的知识)
例13:
滚动字幕(面向对象的知识)
第四阶段:
掌握几种重要算法,能综合应用所学知识,编制一些小程序,解决一些实际问题
●解析法:
公式法
例1:
计算任意两个日期之间的天数;
例2:
画一些简单图形;
例3:
鸡兔同龙问题;
●穷举法:
逐个判断
例1:
求出所有的水仙花数;
例2:
判断某年某月的天数;
例3:
输出N范围内的所有质数;
例4:
判断两个数是否互质;
例5:
韩信点兵;
例6:
百钱买百鸡问题;
●递推法:
由已知到未知
例1:
求菲波那挈数列的前N项;
例2:
棋盘放米问题;
●递归法:
由大化小
例1:
求菲波那挈数列的第N项;
例2:
求最大公约数问题;
例3:
汉诺塔问题;
●查找:
顺序查找与二分查找
例1:
从一万个人名中找一个名字,分析平均查找的次数,比较两种查找方法的效率
●排序:
冒泡排序
例1:
运动会团体总分排名;
例2:
奥运奖牌榜;
第五阶段:
个性发展与提高
1、面向对象的程序设计深入
语言深入学习
理解更加深入
2、软件开发的基本知识
●任务分析:
问题定义——可行性分析——需求分析——形成设计文档
●系统设计:
模块化
●代码编写与调试:
设计界面——编写代码——调试与跟踪——生成可执行文件
●软件测试与维护:
《顺序结构的程序设计》教学设计
课题
程序与生活------顺序结构程序设计
教学目标
知识与技能
• 理解程序设计的顺序结构基本思想
• 掌握顺序结构语句特点
过程与方法
• 培养用算法分析问题的能力
• 能够使用顺序结构编写简单的程序解决具体问题
情感态度与价值观
• 体会用结构化方法解决数学问题的便捷性
• 明确结构化在程序设计中的重要作用
• 激励尝试使用多种方法解决问题
• 培养良好的编程习惯和态度
教学重点
理解程序设计的顺序结构基本思想
教学难点
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程序可描述为:
Dimaasinteger
Dimbasinteger
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):
Dimaasinteger
Dimbasinteger
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查找有关“两变量值互换”的其它算法,进一步体验顺序结构程序设计的思想。
培养学生对算法的探究精神
《顺序结构的程序设计》说课稿
各位专家领导,各位同行,大家好。
今天我说课的题目是《顺序结构的程序设计》,说课的内容分四部分:
一说教材,二说教法,三说学法,四说教学过程。
一、说教材
(一)教材分析
教育科学出版社《算法与程序设计》(选修)模块第二章第三节《程序的基本结构》一共三课,本课选用的是第一小节《顺序结构》。
众所周知,无论多么复杂的程序都可以分解为顺序、选择、循环这三种基本结构,因此本节内容的学习效果将影响后续章节的程序编写效率。
(二)教学目标
1、知识与技能:
理解程序设计的顺序结构基本思想;掌握顺序结构语句特点
2、过程与方法:
学会用算法分析问题;能够使用顺序结构编写简单的程序解决具体问题
3、情感态度与价值观:
体会用结构化方法解决数学问题的便捷性;明确结构化在程序设计中的重要作用;激励尝试使用多种方法解决问题;培养良好的编程习惯和态度。
教学重点:
理解程序设计的顺序结构基本思想
教学难点1、顺序结构实现语句的格式和功能
2、编写简单的程序的过程
3、变量的特点
二、说教法
任务驱动法、直观演示法、师生互动法、比较教学法
三、说学生
课程改革之后,各学校立足于学校实际选开的选修模块各有不同。
在没有选修《算法与程序设计》(选修)模块的情况下,对于高一的学生只在必修模块接触过一些关于程序设计的知识,而对于高二学生只有在数学必修模块三中有对算法及程序的描述。
因此学生对于程序设计的知识还是相对匮乏的。
因此,在学习设计的过程中,应弱化对于某一编程语言的学习,应更注重学生编程思想的培养。
在让学生实践的环节,我安排了随堂笔记这一形式,让学生随着教学的不断深入,充分发挥自己的思维想象,让学生与教学的进度同步进行,最后能够较好的理解程序的基本结构这一思想,并能较为系统地了解算法分析的一般过程。
四、说教学过程
一、导入
在上课前,我故意引入一般人对程序的看法,设置悬念,引起学生的好奇心,勾起学生探索新鲜事物欲望。
为拉近程序与生活的距离,举例说明生活中程序与生活的关系。
二、以任务驱动展开教学
以学生感兴趣的游戏形式展开,一起体验程序设计的过程.。
学生从游戏中分析算法,本课设置了三个算法思路让学生分析。
1、顺序结构的第一次亲密接触
依照人的正常逻辑,必有学生想到直接互抛法来交换两个球的方法。
引导学生分析算法,引出程序。
由于算法1不是满足要求的算法,因此我先引出程序,再分析程序设计的过程。
算法1是一个铺垫。
这其中也涉及到顺序结构程序的语句描述。
2、顺序结构的第二次亲密接触
这是本课学生必须掌握的程序,因此让学生分析算法的同时,能够模仿算法1编写出算法2的程序。
3、顺序结构的第三次亲密接触
算法3是本节课的扩展知识,重在培养学生了解解决问题的多种思维方式,理解程序运行过程中变量值的变化,培养学生具有算法分析创新意识。
三、总结
从编写程序的过程中,领悟出程序设计的顺序结构思想。
程序设计的顺序结构:
在程序执行过程中,语句按先后顺序一行一行执行,没有分支,没有重复,直到程序结束。
四、实践练习
实践练习:
通过Internet查找有关“两变量值互换”的其它算法,进一步体验顺序结构程序设计的思想。
评委点评:
教师素质非常好,教学基本功非常扎实,语言流畅、准确、精炼,教态自然大方,感染力强。
尤其是其语言“精炼”,在课堂上,李老师没有过多的重复的语言,非常有条理性,给评委留下了深刻的印象。
从教师自身素质而言,李老师是大网络教室里所有上课老师中最好的。
从课堂教学本身而言,李老师的教学设计非常严谨,教学方法选择适当,体现了新课程所提倡的启发式、讨论式和探究式学习的特点。
最明显的就是相同的事例——两个同学互换小球——的多次运用,使用不同的游戏规则促使学生从不同的角度与层面对其进行思考分析。
从课堂教学中可以看到,绝大部分学生的思维都是跟随老师的引导进行自主性的思考,但同时又没有偏离教学内容,学生的参与程度非常高。
这一节课非常明显地体现了新课程要求的对学生发现问题、思考问题、解决问题能力的培养的目标。
比较明显问题是在各个教学环节的时间安排上,李老师花费了过多的时间用于启发学生对三种情况下的算法的分析,导致了没有足够的时间留给学生进行操作、编程验证,使得“发现问题——分析问题——提出解决方案——验证解决方案”这一完整的环节变得残缺,同时造成在知识技能层面的教学目标没有得到非常有效的落实,再者,李老师对于本节课的教学目标即让学生理解程序设计的顺序结构这一概念没有在过程的恰当之处进行强调、解释,在快结束的时候给学生点出了其概念。
总体而言,这节课优点非常突出,缺陷也同时并存。