高中信息技术新课程探讨 算法与程序设计教学实践与探讨 江苏省新海高级中学 张丽
信息技术教材序列 必修模块教材: 选修模块教材: 《信息技术基础》 《算法与程序设计》、《网络技术应用》 《数据管理技术》、《多媒体技术应用》 《人工智能初步》
信息技术教材版本 教育科学出版社(李艺主编) 广东教育出版社(徐福荫、李文郁主编)华南师大 中国地图出版社(祝智庭主编)华东师大 浙江教育出版社(陶增乐主编)华东师大 上海科技教育出版社(应吉康主编)华东师大
《算法与程序设计》教材内容 教科版(六章): 过程:人与计算机的类比 如何用计算机解决问题? 算法:自然语言/流程图/伪代码 体验:试编程与语言介绍 程序设计ABC VB:界面与开发步骤 数据:类型/常量变量/运算符与表达式/常用语句及函数 结构:顺序/选择/循环
算法的程序实现 解析法:分析/程序实现 穷举法:分析/程序实现 数据查找:数组/顺序法/二分法 数据排序:冒泡法/插入排序法 递归法:含义/自定义函数/实现 程序设计 思想和方法 结构化:由来/思想方法 面向对象:设计思想/概念(对象/属性/方法/事件/类)/基本特征(封装/继承/多态)
软件是如何开发的? 任务分析与系统设计 代码编写与调试(含界面设计) 软件测试与维护 综合实践 数据库软件:Data控件/数据库设计 网络应用软件:Winsock控件/程序设计 多媒体软件:MediaPlayer控件/程序设计
一、《算法与程序设计》学习目的 课程标准指出: 1. 使学生在原有基础上进一步体验算法思想, 了解算法和程序设计在解决问题过程中的地 1. 使学生在原有基础上进一步体验算法思想, 了解算法和程序设计在解决问题过程中的地 位和作用; 2. 能从简单问题出发,设计解决问题的算法; 3. 能初步使用一种程序设计语言编制程序实现 算法解决问题。
二、本模块开设的意义: 新课改关注的是技术能力与人文素养的双重建构,该模块既是信息素养培养的继续,又是支持个性发展的平台。 新课改关注的是技术能力与人文素养的双重建构,该模块既是信息素养培养的继续,又是支持个性发展的平台。 《算法与程序设计》是重要的选修课程 算法是其他选修课程的基础 算法培养学生的逻辑思维能力,也是学生创新能力培养的重要途径之一 振兴中国软件产业需要大量的IT人才,而程序设计教学为培养这样的人才打下良好的基础
三、本模块开设的优势与劣势: 优势: 劣势: 对机器和软硬件的要求不高,知识体系比较系统成熟,教学和考核目标比较明确。 劣势: 对学生信息素养和信息技术的基础知识的要求较高,对学生的数学素养和逻辑思维能力要求也较高,对老师的要求也相应较高。
四、本模块的教学把握: 在教学中要注意持续保持学生的学习兴趣和积极性,教学设计和举例都尽可能结合学生学习和生活中遇到的和熟悉的问题,也可以多联系一些数学和其它学科方面的知识,培养学生理论结合实践的能力和综合应用能力。
五、本模块的知识结构及教学过程: (一)如何用计算机解决问题 (范例) 1. 掌握什么是算法 2. 体会算法的重要性,程序=算法+数据结构 (一)如何用计算机解决问题 (范例) 1. 掌握什么是算法 2. 体会算法的重要性,程序=算法+数据结构 3. 理解对于同一问题可能有多种不同算法(算法多样性) 4. 了解算法的评价及优化 5. 掌握算法的特征: 有穷性、确定性、输出、输入、可行性 6. 会用多种方法描述算法(自然语言、伪代码、流程图) 7. 了解程序的3种基本结构 (顺序结构、分支结构、循环结构)
(二)程序设计ABC 1. 理解并掌握一种程序设计语言的基本知识,包括语句、数据类型、变量、常量、表达式、函数。会使用程序设计语言实现顺序、选择、循环三种控制结构。 2. 理解模块化程序设计的基本思想,初步掌握其基本方法。 3. 初步掌握调试、运行程序的方法。 4. 在使用某种面向对象程序设计语言解决问题的过程中,掌握面向对象程序设计语言的基本思想与方法,熟悉对象、属性、事件、事件驱动等概念并学会运用。 5. 能够说出程序设计语言产生、发展的历史与过程。
实例教学: 在每个例子中适时、适量渗透一些相关的概念和知识,让学生在做中学,在学中做,使学生在完成任务的过程中,逐渐地、很自然地去体会控件、对象、事件的概念。教学中要安排足够的课时把控件的用法及变量、常量、函数的概念渗透到一个个程序实例中,由浅入深逐渐介绍,让学生在编写程序的过程中掌握知识。程序与程序之间不能是孤立的、要有联系,完成程序所需的知识应该是循序渐进的。 归纳思维 例:代数式转换成VB表达式 课堂采取一些激励措施 例:函数
顺序结构: (1)已知半径,求圆的面积 (2)给定初速度和加速度,求一段时间后的车速度 (3)统计一个用户的水费、电费 (4)算算离2008奥运会开幕还有多少天或算算你已出生了多少天?
选择结构: (案例) (1)个人所得税的计算; (2)设计一个邮包计费程序,凡不超过20千克的邮包按每千克0.85元收取费用;如果超过20千克,超过部分按每千克1元计算; (3)判断这个数是奇数还是偶数; (4)一元二次方程的解; (5)出租车收费问题。二公里之内5元钱,二公里外每公里1.7元。 (6)QQ密码登录问题。 (7)输入一个三位的正整数,判断水仙花数。 (8)输入一个公元年号,输出是否是闰年
循环结构:(案例) (1)编程计算S=1+2+3……100 (2)编程计算S=2+4+6 ……100 (3)编程计算S=11+21+31 ……111 (4)编程计算S=1×2×3×4……20 (5)编程实现:输出100-999之内的水仙花数 (6)编程实现:输出1—100之内的素数 (7)编程实现:输出两个整数的最大公约数、最小公倍数 (8)编程实现:利用循环嵌套输出不同的图形变换。 (9)编程实现:求1!+2+3!……+10!
主题活动 综合实践活动(主题活动)让学生以协作方式和探究式学习方式,将所学习的算法知识、数据结构知识以及程序设计知识运用于学科学习和日常生活之中,培养学生综合应用的能力。
顺序结构:制作图片浏览器 图2-1-11教学图片浏览器
选择结构: 1.单击“登录程序”命令按钮,出现对话框。在用户名文本框中输入“张山”,在密码文本框中输入密码后即可进入程序的各功能模块。 2.完成牛顿第二定律实验 图2-2-1登录程序界面
循环结构 图2-3-12模拟横波 与数学或物理学科相联系,画出数学中各种函数的波形或物理中纵波与横波。
(三)算法的程序实现 1. 解析法 (1)了解解析法的基本概念及用解析法设计算法的基本过程。 掌握几种重要算法,能综合应用所学知识,编制一些小程序,解决一些实际问题 1. 解析法 (1)了解解析法的基本概念及用解析法设计算法的基本过程。 (2)能够用解析法分析简单问题,设计算法,编写程序求解问题。 相关的程序有: (1) 使用一根长度为L厘米的铁丝,制作一个面积为S的矩形框,要求计算出满足这种条件的矩形的高h和宽w。(本例问题可以归结成求一元二次方程的根) (2) 计算从y1年m1月d1日起,到y2年m2月d2日之间的天数 (3)鸡兔同笼问题 (4)已知三角形三边长,求三角形面积。
2. 穷举法 (案例) (1)了解穷举法的基本概念及用穷举法设计算法的基本过程。 (2)能够根据具体问题的要求,使用穷举法设计算法,编写程序求解问题。 相关的程序有: (1)求出所有的水仙花数; (2)判断某年某月的天数; (3)韩信点兵; (4)百钱买百鸡问题 (5)鸡兔同笼问题
3. 在数组中查找数据 (1)了解数组的概念,掌握使用数组存储批量数据的基本方法。 3. 在数组中查找数据 (1)了解数组的概念,掌握使用数组存储批量数据的基本方法。 (2)通过实例,掌握使用数据查找算法设计程序解决问题的方法。 (3)比较顺序查找与二分查找的效率。 相关程序有: (1)“演讲大赛”计分问题:去掉一个最高分,去掉一个最低分,其他几位评委的平均分是该选手的最后得分。 (2)使用顺序查找算法和对分查找算法查找校运动会上某个班级或者某个运动员的比赛成绩。
课时安排: 第1课时 数组 一、 下标变量 二、 数组 三、 批量数据的输入、输出处理 四、 数据的插入与删除 第2课时 顺序查找 第3课时 二分查找 第4课时 数组的综合运用
(1)通过实例,掌握使用排序算法设计程序解决问题的方法。 例 设计一个程序,按照冒泡法,把学校运动会比赛成绩(无序)按降序排序后存储。 4.排序 (1)通过实例,掌握使用排序算法设计程序解决问题的方法。 例 设计一个程序,按照冒泡法,把学校运动会比赛成绩(无序)按降序排序后存储。 课时安排: 第1课时: 一、 排序 二、 冒泡法排序 第2课时: 三、选择排序或插入排序 四、比较两种排序的效率
列表比较两种排序算法的效率 算 法 10 100 1000 10000 选择排序 插入排序
5. 递归法 (1)了解使用递归法设计算法的基本过程。 (2)能够根据具体问题的要求,使用递归法设计算法、编写递归函数、编写程序、求解问题。 相关程序有: (1)用递归算法求n! 。 (2)求菲波那挈数列的第N项; (3)求最大公约数问题; (4)汉诺塔问题
课时安排: 第1课时 :函数 第2课时:过程 第3课时 :递归程序设计 局部变量、全局变量、值参、变参,参数传递
例:汉诺塔(tower of Hanoi)问题。有n个大小不等的中空圆盘,按照从小到大的顺序迭套在立柱A上,另有两根立柱B和C。现要求把全部圆盘从A柱(源柱)移到C柱(目标柱),移动过程中可借助B柱(中间柱)。移动时有如下的要求: ①一次只移动一个盘; ②不允许把大盘放在小盘上边; ③可使用任意一根立柱暂存圆盘。
先以三个盘的移动为例,看一下移动过程。
运行结果: Enter the number of disks in Hanoi tower:3 A→C A→B C→B B→A B→C 分析:首先将A柱上方的n-1个盘子从A柱移到B柱,此过程中C柱为中间柱;接着将A柱剩下的一个盘子移到C柱;最后再将B柱上的n-1个盘子移到C柱,此过程中A柱为中间柱,这就变成了移动n-1个盘子的问题了。定义过程move,实现这一递归算法: 若n=1,则A→C 若n>=2,则 move(n-1,A,C,B) A→C move(n-1,B,A,C)
Dim total As Integer REM command1代码如下: Private Sub Command1_Click() total = InputBox("请输入要移动的盘子的个数", "输入") Call hnt(total, "A", "B", "C") End Sub REM hnt 过程代码如下:(工具菜单,添加过程) Private Sub hnt(n As Integer, z1 As String, z2 As String, z3 As String) If n = 1 Then Print z1; "→"; z3 Else Call hnt(n - 1, z1, z3, z2) Call hnt(n - 1, z2, z1, z3) End If