“大问题”串起“小知识”——“数据的表示与处理”教学设计
江苏省苏州中学校 吴育含
【摘 要】《数据的表示与处理》在教材中是承前启后的一节,内容上集中了数据类型、常量、变量、运算符、表达式、常用语句、函数等大量VB语言基本概念和基础知识。依据以问题解决为目标导向的教学设计理念,以及“大问题”串起“小知识”的教学策略来设计教学方案,可以帮助教师通过范例教学,理清教学内容,激发学生学习兴趣,帮助他们在实践中逐步理解和掌握概念和知识,并逐步建立起合理的算法与程序设计的认知结构,理解程序设计的思想和方法,初步掌握使用程序设计解决问题的能力。
【关键字】算法 程序设计 问题解决 教学设计
长期以来,信息技术教育受到批判较多的一点,就是其教学过程中的基于“工具论”“技能论”的简单训练。新课程改革后,信息技术课程标准重视技术方法和技术思想的挖掘,更多的运用以问题解决为目标导向的教学设计,成为了一种比较有效的手段。
程序设计是解决问题的一种方式,高中《算法与程序设计》选修课程的教学,不是要让学生陷入枯燥的语言学习和机械训练中,而是要让学生通过使用程序设计来解决一些简单问题,“沿循提出问题、分析问题、解决问题的线索学习程序设计知识(这里的问题应是具体的、现实的)。通过这个过程,促进学生对问题解决方法和思想的理解与掌握,从而提升学生的问题解决能力。” 在学习过程中,学生“学到的不仅仅是新知识,更重要的是学会了解决问题的方法,知道了在什么时候、在什么地方去应用所学的知识。”同时,问题可以“帮助学生进入情境,进入思维,让学生的学习具有连续性、广泛性、普遍性。”在教学中恰当的创设问题情境,还“可以使学生在问题情境中体会算法思想,培养学生的学习兴趣。”
在教育科学出版社出版的教材《算法与程序设计》中,第二章《程序设计ABC》主要是针对课程标准中的“程序设计语言初步”这个主题而编制。其中,第二节《数据的表示与处理》包含的内容看似多为简单的识记性知识,但由于知识点众多且零碎,学生初识这些基础概念、基本知识时往往会觉得枯燥乏味,学习兴趣不大,并容易遗忘,从而影响后续内容的学习。在实际教学过程中,常常会遇到这样的情况,学生在学习 “程序基本结构”甚至于更深层次的“算法实现”时,经常会因为对这些基础概念与知识认识不清或掌握不牢固,而影响学习进度和学习效果。因此,对于本节内容的教学绝不能轻视,这些内容的教学实际也是相当富有挑战性的,它考验着教师对课程标准的理解能力,对教材的把握能力,以及对学生学习过程和状态的了解程度等。
一、教学目标与教材内容呈现方式之间的矛盾
根据课程标准提出的课程目标,并参照教材配套的教师教学用书,本节的教学目标是:要求学生知道VB中数据类型、变量、常量的含义,掌握常量及变量的定义方式。掌握运算符、函数、表达式的表示方式,会将数学表达式转换为程序接受的表达式。明确用VB表示处理数据的思想方法,感受高级程序设计语言的文化魅力。教学重点是要让学生明确数据在计算机中是如何表示和处理的,明确它和数学中数据的表示与处理的异同。在这里,更多的是强调一种能力的培养,要让学生学习到那些具有广泛迁移意义的知识和方法,而不是简单的死记硬背。
显然,要实现这样的教学目标,仅仅依靠对概念和知识单纯的详细描述是不够的,必须通过一系列程序范例的讲解和实践练习。虽然在提倡“以问题为主线”的主旨下,教材处处都注重以“问题解决”的方式来呈现教学内容,但本节内容却仍旧主要以单纯描述和集中呈现的方式来编制,没有直接提供给教师一些范例程序,只在实践部分给出了一些编程题,显得较为传统。尽管上一节中的“打字测试程序”涉及到了本节大部分知识点,但也只是蜻蜓点水,使用其中的语句来对本节内容进行说明,也只能属于抛砖引玉,不足以使学生对学习内容形成完整的认识和全面把握。这从教材结构(见图1)上也可看出部分端倪。

图1 《数据的表示处理》教材结构
二、“大问题”串起“小知识”的教学策略
新课程改革在教学内容处理上给予了教师很大的自由支配权,实际教学中,教师完全可以结合教材,根据实际情况对教学内容进行重构。教师在对整章内容有了全面的理解和把握后,可以不限于教材呈现的先后顺序,灵活安排教学内容。
《数据的表示与处理》包含了大量学生初次接触的VB语言基础知识,而教材却以集中一节的形式介绍这些知识,特别容易使学生感觉枯燥和抽象。因此在实际教学中,教师可以重构这部分内容,使之更加符合学生的认知规律。
例如,可以通过分散知识点到多个范例和实践题中的方式,使学生能结合实例获得对概念和知识的感性认识,加深对它们的理解与把握。教材中设置的多个小型实践题,教师可以适当采用,或用于讲解或用于学生练习。
然而,如果教师能设计一些能够引起学生足够兴趣,并具有内容延伸性质的系列问题或“大问题”,再通过范例教学 ,将那些零碎的概念和知识串起来,就会使得整个教学过程显得更为流畅。
教师可以通过对“大问题”层层递进的分析,逐步将新旧知识点渗透进来,帮助学生渐渐消除对学习内容的恐惧感和枯燥感,使他们在快乐的程序设计体验过程中激发学习动机和建立学习信心。同时,学生也可以通过不断的实际操作与尝试,逐步理解那些基本概念和基础知识,甚至于对后续内容产生跃跃欲试的学习心态。在逐层完成整个问题的过程中,学生可以获得不同程度的成就感。学生的学习活动将从对“个别”问题的分析,逐步发展为对“类”问题的探讨,继而理解“类”背后隐藏的规律,最终获得具有广泛迁移意义的知识和方法。最终,学生不仅能基本掌握本节内容,更能逐步建立起合理的算法与程序设计的认知结构,理解程序设计的思想和方法,初步掌握使用程序设计解决问题的能力。当然,在解决“大问题”的同时,也可以穿插进行一些“小问题”、小练习等。
三、教学方案设计案例
(一) 教学内容分析
《数据的表示与处理》包含了数据类型、常量、变量、运算符、表达式、常用语句、函数等内容。综合看这些内容,算术运算符、算术表达式、关系运算符、关系表达式、数学函数与学生的数学学习有相当大的联系,最容易被他们接受;赋值语句形式简单,也容易掌握;数据类型、常量、变量是新概念可以通过已有的体验程序阐述清楚;其余知识点,如字符串运算符与字符串表达式、转换函数、交互函数等则对学生来说比较陌生。
(二) 学生分析
在上一节的学习中,通过完成教材中的两个范例程序,学生已经认识了VB编程环境,了解了编程的一般步骤,并初步掌握了窗体和控件对象的使用,包括控件添加方法、属性设置等。此外,通过完成一个不完善的“求圆周长和面积”(没有常量定义、变量声明)的程序,学生体验到了整个“问题解决”的过程。同时,学生对程序代码部分已经产生了一定的兴趣,可以进入语言学习阶段了。
(三) 设计思路
本节教学内容具有承前启后的作用,学生不仅需要学习新知识,也需要通过更多范例与实践题进一步巩固和加深已学知识、技能,同时,还要为后续“程序基本结构”的学习打好良好的基础。因此,可以首先通过一些小型范例和实践题,进行导入与连接,再设计系列问题或“大问题”串起各种新旧知识点,同时还可以为后续内容设置伏笔。
从本节教学内容的特点来看,除了必要的概念和简单的语句以外,涉及最多的是与数学知识相关的运算符、表达式以及函数。而本节的教学目标,最终就是让学生学会如何将数学中的数据处理方式转换成程序代码。在教学实践中发现,被大家熟悉的“计算器”的功能实现可以包含本节的大部分内容,在程序代码中,也自然会带有相关概念、语句的使用。因此,这个教学方案的具体设计思路如下:
阶段一:导入与连接
在此阶段,通过体验程序进行导入,主要解决对新概念的认识,包括数据类型、变量、常量等。并让学生完成一些小练习加以巩固,例如书面练习、完善程序等。
阶段二:用相似“小问题”来引入
在这个阶段,用一个相似的“小问题”引入,使学生初步掌握一些最容易接受的新知识,例如算术运算符和算术表达式、赋值语句等,这个“小问题”可以是“四则运算器”程序(见图2)的实现。
阶段三:核心“大问题”的解决过程
首先,由“四则运算器”引出功能更为强大的“计算器”的应用程序编写问题,给出演示程序(见图3)激发学生的学习兴趣,要求他们做一个与之相似的“计算器”。
然后,用简单的“计算器”范例程序(见图4)来讲解,以实现各种功能为目标进行逐层讲解。一方面对已有知识和技能进行巩固与加深,例如控件对象的格式设置,多个事件过程的程序设计等,另一方面进行针对性的新知识补充。与之同时进行的,则是要求逐层上升的学生实践活动。要求学生不仅能实现范例程序的功能,还要逐步增加可以由新知识来解决的功能,最终达到或超过演示程序的水平。

图2 “四则运算器” 图3 “计算器”演示程序 图4 “计算器”范例程序
从简单的范例程序,发展到复杂的“计算器”,不仅包括了知识和技能的积累,更是学生逐步解决较复杂问题的过程。在这个过程中,学生可以建立清晰的“问题解决”模式,在不知不觉中建立起一个较为复杂的应用程序,并有可能设计出各具特色的“计算器”。学生将为此获得较大的成就感,体验程序设计的魅力所在。实践过程中,学生在一定程度上的自我探究更能帮助学生建立起主动学习、自主学习的良好习惯,学生编程能力也将从模仿水平逐步提高到独立操作水平。
(四) 教学目标
知识目标
1.掌握数据类型、变量、常量的含义,及符号常量的定义方式变量的命名规则和声明方法。
2.掌握算术运算符与算术表达式、字符串运算符与字符串表达式、关系运算符与关系表达式、逻辑运算符与逻辑表达式的书写方式,了解日期运算符与日期表达式。
3.掌握常用数学函数、字符串函数、转换函数、交互函数Msgbox()的使用方法,了解日期函数。
4.掌握赋值语句、注释语句、结束语句的使用。
技能目标
1.学会将数学表达式转换为程序接受的表达式。
2.学会用程序设计解决问题的方法和步骤。
情感目标
1. 消除对学习程序设计的恐惧感,增强学习程序设计的学习兴趣和学习动力。
2.感受高级程序设计语言的文化魅力。
(五) 重点难点
1.变量的声明方法。
2.用算术运算符、数学函数等将数学表达式转换为VB表达式。
3.字符串函数与字符串表达式的使用方法。
4.转换函数Val()和Str()的使用方法。
5.赋值语句的使用
(六) 教学资源
1.教材:《算法与程序设计》(教育科学出版社,2005)。
2.不完善的“求圆周长和面积”程序。
3.“四则运算器”范例程序。
4.“计算器”演示程序、“计算器”范例程序。
(七) 课时安排
阶段一、阶段二合计2课时,阶段三按实际情况安排4~6课时,总计6~8课时。
(八) 预设教学流程
|
教学流程 |
教师活动 |
学生活动 |
设计意图 |
|
导入 |
通过“打字测试程序”及其它体验程序进行课程导入,提示学生进入VB语言基础的学习。 | 提高的学生学习兴趣,并体现良好的教学延续性。 | |
|
新课讲解 |
【讲解】 1.数据类型的概念,数据类型的选择。 2.常理概念、符号常量的定义方式。 3.变量的概念、命名规则与声明方法。 【布置练习】 1.相关概念的书面练习。 2.为“求圆周长和面积”体验程序添加常量定义和变量声明。 |
【实践】 1.完成相关关概念的书面练习。 2.完善“求圆周长和面积”程序。 |
讲解新知识,并通过及时小练习与小型实践题,加深对新知识的理解。 |
| 【讲解】 1.算术运算符与算术表达式的书写。 2.赋值语句,包括对变量的赋值和对控件对象属性的赋值。 3.转换函数Val()和Str()的使用。 【布置任务】 “四则运算器”程序。 分析问题,并演示给出部分程序代码(实现加法运算)作为范例程序。 |
【理解与掌握】 1.VB算术运算符与算术表达式的书写。 2.赋值语句的正确使用方法。 3.函数 Val()和Str()的使用。 |
讲解新知识,并通过小型实践题进行巩固和提高编程能力,为下一阶段的学习做好准备。 学生编程能力进入模仿阶段。 | |
| 【演示】 “计算器”演示程序。 【讲解+演示】 提供“计算器”范例程序,逐步演示讲解以下内容: 1.对象的格式设置。 2. 约定对象名的命名方法。 【布置任务】 “计算器”界面设计。 (1) 必须包含十个数字按钮,加、减乘、除、等于和清空按钮。 (2) 建议加上“小数点”按钮,部分函数按钮。 (3) 可以加上“+/-”按钮、退格按钮。 (4) 加上其它想要的按钮。 (5) 使用约定对象名的命名方法。 |
【理解和掌握】 1.对象的格式设置。 2.约定对象名的命名方法。 【实践】 完成计算器的界面设计,包括各对象的命名。 |
1.从简单程序入手,通过对问题的分解和分步骤分析,引领学生进入“问题解决”。 2.引入与任务相关的新知识进行讲解,使学生在实践中针对问题有目的性的学习,不仅能引起学生兴趣,也能够使学生边学习边练习巩固,加深对这些知识点的理解和掌握。 3.采用分层作业,适应各层次学生的需求。 4.对行IF语句的使用,可以激发学生学习后续内容的兴趣。使学生逐渐养成主动学习,自主学习的习惯。 5.在实践过程中,注重培养学生的主动创新能力和主动学习能力。 6.通过“计算器”程序的最终完成,提升学生的成就感,进一步激发他们的学习动力。 |
|
| 【讲解】 字符串运算符与字符串表达式。 【演示】 在范例程序中实现数字按钮功能的程序代码。 【布置实践内容】 完成数字按钮的功能,思考小数点功能的实现。 |
【理解】 字符串表达式的书写。 【实践】 完成数字按钮和小数点按钮的功能。 |
||
| 【讲解+演示】 实现部分运算功能的代码编写: 1.实现加法运算的算法与代码。 2.变量的作用域问题。 3.同时实现减法运算的代码。 4.行IF语句的简单使用。 5.关系运算符和关系表达式、逻辑运算和逻辑表达式的书写。 7.各类运算符的执行顺序。 【布置任务】 完成小数点、加、减、乘、除、等于、清空按钮的功能。 |
【实践】 1.完成四则运算的功能。 2.最简行If语句的使用。 3.使用关系表达式和逻辑表达式表示条件。 |
||
| 【讲解】 为实现更多计算器功能,并提高程序的可读性,讲解以下新知识: 1.数学函数、字符串函数、日期函数。 2.交互函数MsgBox()。 3.结束语句、注释语句。 【布置小练习】 有关VB表达式书写的书面小练习。 【布置任务】 1.继续之前的计算器程序,尽量完成更多的具有函数或其他特定计算功能的按钮。 2.完善小数点按钮的功能,完成“+/-”按钮、退格按钮功能。 3.可以添加自己的特色按钮或者思考如何实现其它标准计算器上的按钮。 |
【实践】 1.完成有关VB表达式书写的书面小练习。 2.用程序代码基本实现自己设计的计算器所有功能。 |
(九) 反思与小结
首先,使用“大问题”需要有课时量的保证。教师必须给予学生充足的时间进行思考与尝试,才能做到循循善诱,步步为营,而不是简单模仿,囫囵吞枣。
其次,对教材内容的重构必须小心,需要建立在对整章内容甚至于整个课程内容的全面把握上,不能有缺漏。设计一个能包括教材中所有知识点的“大问题”是非常困难的,也不必强求,但使用“大问题”来进行教学时,要注意“补漏”。例如在本设计方案中,教材中出现的Print语句、InputBox()函数并没有涉及,部分函数诸如Rnd函数、日期函数也只是简单介绍,这些内容都需要在后续教学中进行补充和扩展。
再次,采用“大问题”进行范例教学,并不代表要抛弃“小问题”,相反,有时需要各类“小问题”进行引入,才能使学生更好的理解“大问题”,做到渐入佳境。
最后,“大问题”的设计,可以考虑更多的教学延续性。例如,“计算器”程序在本节内容结束后,仍具有可扩展性。其中行IF语句的使用可以成为学习“选择结构”的导入范例。与此同时,后续教学内容也可以帮助完善程序,例如使用循环结构来完善“小数点”按钮的功能,用控件数组来重新设计数字按钮,使用函数调用简化程序代码等。这样一个“大问题”不仅可以串起本节内容和已学内容,也可以串起更多后续内容,当然,这需要教师在不断的探索与实践去摸索与创新。
参考文献
[1] 顾建军、李艺、董玉琦.普通高中技术课程标准(实验)解读 [M].武汉:湖北教育出版社,2004
[2] 季新文.高中“算法与程序设计模块”教学初探[J].课程教材教学研究(教育研究版),2008(44),50页
[3] 李艺主编.信息技术课程与教学[M].北京:高等教育出版社,2005,127-131
[4] 黄建雄.Visual Basic程序设计语言教学探索[J].中小学信息技术教育,2007,10 22-23
[5] 何昭青.案例教学在程序设计语言类课程教学中的应用与探索[J].当代教育论坛,2008,(10) 113-114





