《算法和算法的描述》教学设计
教学目标
1、知识与技能
认识算法的概念和特征,体验算法描述的各种方法。
掌握分析问题、设计算法的技能和方法。
关注算法设计的意义,体验不同算法解决问题的效率。
2、过程与方法
能分清各种算法描述方法的优劣,能判定哪种场合适用哪种算法描述方法。
锻炼学生分析问题、用直观的方法描述问题的能力。
3、情感态度与价值观
从计算机解决问题的过程引入算法描述的意义,让学生认同学习“算法与算法描述”的重要性。
运用“任务驱动”的教学理念,培养学生自主探索的学习能力。
以分组讨论的形式,锻炼学生的团体协作能力。
教学重难点
教学重点:
让学生体验用自然语言、流程图或伪代码等方法描述算法的过程,让学生认同在用计算机程序解决问题的过程中算法设计的重要性。
教学难点:
用流程图来描述算法。
教学手段
采用“任务驱动”的教学方法,边讲边练,学生自主探究,教师辅助讲解引导。
教材分析
在本教材(《算法与程序设计》< 选修1 >)的第一章第1节里面,学习了计算机解决问题的过程,粗略讲述了算法的描述方法,在必修版本《信息技术基础》第四章第1节里面,也利用几个具有趣味性的实际例子,让学生体验到了设计算法在计算机程序设计中的重要地位。本节通过“求两个整数的最大公约数的欧几里得算法——辗转相除法”的例子,介绍算法的概念、算法的特征、算法的地位和作用以及算法描述的方法,如自然语言、流程图和伪代码等方法。
学生分析
《算法与程序设计》选修1面向的对象是高中二年级学生,首先,学生在高中一年级学习了《数学选修3》模块,里面的第一章就已经讲述了算法和程序流程图的描述以及算法的基本语句;其次,在必修版《信息技术基础》第四章里面,他们也初步接触到了计算机程序开发的基本过程。由此可知,学生对算法已经不陌生,但是还没有了解算法的明确地位和作用,也仍未具备用不同算法描述语言对算法进行描述的能力。
教学过程(40分钟)
教学环节
教师活动
学生活动
设计意图
回顾上节课知识
(2分钟)
『提问』:我们在上节课通过“韩信点兵”的例子探讨了计算机解决问题的过程,还记得计算机解决问题的步骤吗?
我们这节课将详细探讨设计算法这一重要的环节。
学生回忆、讨论
『回答』:具体问题->分析问题->设计算法->编写程序->调试程序->得到答案
巩固上节课学习知识,引出本节课要学习的新内容。
情景引入
(5分钟)
从欧几里德的故事入手,让学生重温辗转相除法。
『投影』:辗转相除法的步骤,让学生使用辗转相除法求解两个正整数m=12和n=8的最大公约数。
学生思考辗转相除法解决问题的过程。
『讨论』:学生结合辗转相除法的算法描述,跟踪辗转相除法解决求最大公约数的步骤。
让学生对算法描述方法有个初步的了解,为讲述算法的概念和特征作好铺垫。
任务驱动
(2分钟)
『任务驱动』:在公元前3000多年就有了“算法”这个名词,那么什么是算法?
怎样对算法进行描述呢?
学生带着疑问去探讨算法和算法描述的奥秘。
激发学生学习的自主性,促进学生之间的交流。
算法的概念特征
(7分钟)
『讲授』:算法的概念和特征。
算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。
『提问』:一个算法一定要有输入吗?
『反例』:算法可能有0个输入。
Private sub command1_click()
a=3,b=4
Print a*b
End sub
『实例』:利用语文学习中碰到的歧异句,对比说明程序语言的严谨性。
1、“这个人好说话。”
2、三角形的内角和是180?。
得出结论:程序语言不能有二义性
『演示程序』:1、说明算法的有穷性。(程序出现死循环的严重后果)
2、用how to do? what to do?说明算法有穷性的意义。
算法的输出:算法有一个或多个输出。
算法的可行性。
『回答』:一个算法肯定有一个或多个输入。
从实例中认识到算法可能存在0个输入的情况,认识到算法的确定性、有穷性。
算法必须有一个或者多个输出。
算法一定要可以执行。
大量使用实例直观地呈现算法的各种特征,让学生对算法的概念和特征有更深刻的理解。
算法的描述
(2分钟)
『提问』:
1、表示算法的描述语言主要包括哪几种?
2、你们对哪个算法描述语言最陌生?
『回答』:自然语言、流程图、伪代码。
最陌生的算法描述语言:伪代码
击破难点
用自然语言描述算法
(6分钟)
『提问』:用自然语言描述算法有什么优势?
『课堂练习』:展示思考题,讨论如何用自然语言描述算法过程,求200-500范围内能被5整除的正整数。
(用自然语言描述各个步骤)。
结合实例,讲述自然语言描述算法的缺点(二义性、累赘、跳转复杂)。
『回答』:使用这些语言不用专门训练,所描述的算法通俗易懂。
学生讨论,探讨如何用自然语言描述算法。并回答问题。
学生结合实例思考用自然语言描述算法的优缺点和适用的场合。
认识自然语言描述算法的优缺点,便于和流程图、伪代码等描述方法作横向比较。
用流程图描述算法
(5分钟)
『投影』:流程图的基本图形及其功能。演示幻灯片与提问相结合。
『提问』:如何用流程图描述求200—500范围内被5整除的正整数问题。
画出示例流程图,让学生参考。
『提问』:用流程图描述算法,有什么优点?
学生重温流程图的基本图形,如何用流程图描述算法。
学生探讨思考解决问题方法,动手画流程图。
『回答』:清晰简洁,容易表达选择结构。有利于不同环境的程序设计。
重温《数学选修3》中学习的程序框图,深入了解流程图的优缺点。
用伪代码描述算法
(2分钟)
『提出疑问』:
1、什么是伪代码?
2、相对自然语言和流程图来说,伪代码有什么优缺点?
引导学生初步认识伪代码,展示辗转相除法求最大公约数的伪代码。
学生在书本查找伪代码概念。
交流探讨伪代码的优缺点。
让学生初步了解伪代码。
算法在实际问题中的应用
(5分钟)
课堂练习:
分别用自然语言和流程图描述:
1、所有水仙花数的问题。水仙花数是指一个三位数,它的各位数的立方和正好等于该数本身。如153=13+53+33。
2、设计算法:找出乘积为840的两个相邻偶数
学生谈论交流,描述算法。
学生代表板演解题过程。
加深学生对自然语言描述和流程图描述的印象,巩固知识。
算法设计的重要性
(4分钟)
『演示程序』:用辗转相除法和穷举法求9147485和5147480的最大公约数,对两个程序进行比较。
用函数测试穷举法求解的循环次数和运行程序时间(提出算法设计中程序效率的重要性,简单讲解算法的时间复杂度和空间复杂度)。
『提问』:算法设计在解决问题过程中的重要作用体现在哪里?
比较两个程序的效率,完成第13页的表格1-6
学生在观看程序演示过程中,体会到不同算法的不同工作效率。
『回答』:算法的好坏,影响问题解决的效率。
让学生体会到算法设计的必要性和重要性,
教学评价
“1.2算法和算法的描述”这节课程,理论性比较强,学生在接受理论知识的时候会感觉比较乏味,因此,在教学中引入了趣味游戏和大量的案例,由学生自主思考分析实例。教学中还加入了分组协作活动,让学生参与课堂,锻炼了他们的动手操作能力,在活动最后环节让学生进行互相评价和自我评价,有助于他们认识自我并提高自我。在讲述算法的有穷性的时候,重温了第一章第1节所学习的内容:确定程序的“What to do?和How to do?”。在讲述算法设计的重要性的时候,对同一问题的两种不同算法进行对比,分析程序的时间复杂度,让学生意识到算法设计在计算机解决问题中的重要性。
在这一课时的教学中,全程体现的是以学生为主体,教师引导学生探讨新知识的教学理念,采用任务驱动的教学手段让学习紧密结合实际,课程的节奏轻松有序,教师与学生、学生与学生之间有良好的互动。
教学反思
学生的算法与程序设计基础比较差,所以在理解算法特征的时候,要花点心思去旁敲侧击。尽管算法的描述对大部分学生来说不难理解,但是很少学生懂得灵活运用各种算法描述手法,这个需要在后面的章节中加以练习巩固。课程设置在多媒体课室进行,是考虑到这节课的理论知识比较多,需要学生上机操作的内容比较少,是为后面深入学习程序设计打好坚实的基础,用讲授引导、学生自主探讨的教学方式,能更好地让学生全面了解算法设计方法,也能让学生意识到算法设计在计算机解决问题过程中的重要性。利用多媒体教室演示程序能让学生更好地去分析问题、设计算法,也能提高学生学习算法设计的兴趣。