Access VBA程序设计教学中计算思维能力的培养
2015-09-11李志辉石黎曾宇容
李志辉++石黎++曾宇容
摘要:由于计算思维最终需要程序设计去实现,因此VBA编程是以计算思维能力培养为教学目标的Access数据库课程的重点教学内容。根据VBA的教学内容和学生的实际情况,引入了更适合于计算思维培养的启发式教学模式,并分别从语法教学和问题求解教学两个方面阐述了具体的教学举措,实践证明这些举措对培养学生的计算思维能力是行之有效的。
关键词:计算思维;程序设计教学;VBA;Access
中图分类号:G642.0 文献标识码:A 文章编号:1009-3044(2015)17-0116-03
Cultivation of Computational Thinking Ability in Teaching of VBA Programming in Access
LI Zhi-hui, SHI Li, ZENG Yu-rong
(School of Information Engineering, Hubei University of Economics, Wuhan 430205, China)
Abstract: Because computational thinking finally needs to be achieved by computer programming, VBA programming is a key content in the teaching of Access database course based on the cultivation of computational thinking ability. According to the teaching content of VBA and the actual situation of students, this paper introduces a heuristic teaching model which is more suitable for the cultivation of computational thinking ability, and expounds the specific teaching measures from two aspects: grammar teaching and problem solving. The teaching practice has proved that these measures are effective to develop the students' computational thinking ability.
Key words: Computational Thinking; Programming Teaching; VBA; Access
2006年3月,美国卡内基·梅隆大学的周以真教授提出了计算思维的概念:计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,它包括了涵盖计算机科学之广度的一系列思维活动[1],并对其进行了更为细致的描述:计算思维是通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释为如何求解它的思维方法,是一种递归思维,是一种采用抽象和分解来解决庞杂任务的方法,是一种按照预防、保护及通过冗余、容错、纠错的方式保证系统安全的思维方法,是一种利用启发式推理来求解的思维方法,是一种在时间和空间之间、处理能力和存储容量之间进行折中的思维方法[1]。
计算思维的概念经周教授明确提出后,专家学者经过梳理发现当前几乎所有领域的重大成就无不与之密切相关。计算思维所表现出的强大创新能力,使其迅速归位为与理论思维、实验思维并列的人类三大科学思维之一,计算思维能力也已成为创新性人才应具有的基本素质和要求之一。有鉴于此,在我国教育部的主导下,对作为大学通识教育的计算机基础课程教育确立了以培养学生计算思维能力作为核心任务的教学改革目标。计算思维能力的培养,要抓住计算思维的本质——抽象和自动化,计算思维在不同层面进行抽象,以及将这些抽象机器化。由于计算思维的机器化最终需要程序设计去实现(尽管计算思维不仅仅是程序设计),且程序设计的内容也最能够体现计算思维语言级的问题求解方法,因此计算机基础教育中的程序设计类课程应是开展计算思维教学的重点。
《数据库及其应用》课程是计算机基础教学“数据管理与信息处理”知识领域的核心课程之一,是面向文科专业学生开设的计算机通识必修课。Access是很多高校为《数据库及其应用》课程选择的数据库教学平台,VBA作为其内置的编程语言,理应是在该课程中对学生进行计算思维能力培养的重点教学内容。
1 启发式教学应是VBA中进行计算思维培养的主要教学模式
要在VBA程序设计中培养学生的计算思维,教学的关注点不能再仅仅是VBA程序设计的知识和技能,更重要的是高于知识和技能的学生学习过程中的思维方式,这是一种思维教育。传统的灌输式教育模式,是一种知识的灌输,整个课堂的教学时间主要被教师的宣讲所占据,学生一味忙于倾听和记录,缺乏思考问题的时间和空间,显然这种教学模式难以发展学生的思维[2]。学生思维的发展离不开教师的启发与诱导,引入启发式教学模式是开展计算思维教育的必然选择。
所谓启发式教学,主要是指在教师的启发与诱导下,通过师生互动的形式,引发学生主动思考、主动探索、共同参与教学的一种教学模式[3],它秉承了“以学生为主体,教师为主导”的现代教学理念。在这种教学模式下,教师以学生为中心来组织教学活动,注重调动学生学习的积极性和主动性,引导学生独立自主地开展思维活动;教师的教学内容不再局限于知识本身,而是以知识为载体传授解决问题的思路、展示思维的过程、教会学生思考的方法;教师以启发性问题为中心,创设教学情境,并在情境中引发学生的质疑和思考,同时为学生表达思想营造良好的课堂氛围,这就要求教师设计的这些启发性问题应集趣味性、价值性、思维性于一体,贴近学生的生活实际,以激发学生探究的欲望;教师要把握好启发的时机,适时采用正问启发、反问启发、悬疑式启发、类比式启发等方式,在学生思考发生困难的关键点上,给出适当的点拨,引起学生的联想。
正如西安交通大学冯博琴教授所言,启发式就是计算思维。计算思维不是内容的改变,不是工具的改变,而只是教学方法、方式的改变。启发式最能体现这种改变:引导学生思考,使之看到问题之外的问题、方法之外的方法、没有联系的联系,这就是计算思维了[4]。
2 通过VBA语言的基本语法让学生感悟其蕴含的计算思维
抽象是计算思维的本质之一,计算思维的抽象体现在完全使用符号系统甚至形式化语言来表述问题。VBA程序设计语言实际上就是一个符号系统,要利用VBA编程解决实际问题,就必须利用其提供的符号系统对求解问题进行精确而严格的描述,因此VBA程序的符号系统就是对客观世界的一种抽象、一种表达,更是对计算思维的一种很好的诠释,换个角度说就是VBA程序设计语言在设计之时就早已蕴含了计算思维。因此,教师在进行语法教学时,不应只是简单地将VBA的基本概念及语法“空降”给学生,让学生产生语法知识就是需要死记硬背的基础知识这种印象,而应通过类比的方法向学生揭示出语法背后所蕴含的计算思维,让看似机械、死板、枯燥的语法知识灵动起来,这样不仅可以让学生在理解的基础上更容易记住语法,而且使学生的计算思维能力得到训练。
例如,VBA中与面向对象相关的概念“对象、类、属性、方法、事件、事件过程”及其相关语法都蕴含了典型的计算思维特征。对象将反映事物的特征和行为封装在一起,是对现实世界客观事物的一种抽象;类是对同种对象的抽象描述,是创建对象的模版;属性和方法用来描述对象本身的信息,属性用来描述对象的特征,通过语法“对象名.属性名=设置值”来改变对象的外观特征;方法用来描述对象的动作和行为,通过语法“对象名.方法名 [参数名表]”来指使对象产生某个动作;事件和事件过程用来描述对象和外界环境之间的关系,事件用来描述外界环境给对象施加的影响,事件过程用来描述对象接收到某个事件后所做出的反应,通过语法“Private Sub 对象名_事件名([参数列表]) 事件过程的内容 End Sub”来表征对象和外界环境的交互过程。
3 将计算思维培养贯穿在用VBA编程求解问题的整个过程中
教师在进行VBA程序设计教学时,应对传统的经典教学案例进行重组,将问题求解提升到计算思维的高度。计算思维中问题求解的一般步骤为:(1)问题抽象化的描述,问题表示,即如何建立模型;(2)寻找解决方案,问题求解,即如何设计算法;(3)计算机实现过程、效率,即如何有效地求解、编码;(4)现实问题的延伸[5]。教师在这四个实施步骤中应做到有的放矢,对学生进行针对性的计算思维训练。
3.1 加强学生建模能力的训练
传统的VBA程序设计教学以语法为中心,教学案例基于方便学生掌握语法知识之目的而设计,加之学时的限制,教师往往直接将程序代码抛给学生,然后比照代码讲授涉及到的具体语法知识点,而忽略了对代码实现的首要前导环节——问题建模过程的讲解,或者设计的案例已足够的简单,就是一些简单的数值计算问题,所谓的建模问题已自不必说。学生缺乏建模能力的训练,不知道如何将一个现实问题描述成计算机可以处理的问题,是学生不具备编写程序解决实际问题能力的根本原因所在。
计算思维的本质是抽象和自动化。计算思维的抽象说到底就是一个问题表示问题,而自动化就是将这种抽象通过程序设计来实现。因此,运用计算思维求解问题时,首要解决的就是如何表示问题,即怎样将问题转换成一个合适的模型来表示,这样就可能发现问题的本质及其能否求解,甚至找出求解该问题的方法和算法。这样的一个建模过程,更是涵盖了编码/解码、约简、递归、归化、仿真、推理等多种思维过程和转换模式,它是计算思维的一个重要组成部分。可以说,建模能力的强弱,直接影响了计算思维能力的高低[6],因而在VBA程序设计教学中对学生进行建模能力的强化训练,帮助学生掌握一些基本的建模方法,是进行计算思维能力培养的根本要求。
3.2 倡导学生开展算法多样化的探讨与交流
程序设计中的许多问题可以采用不同的算法来解决。教师可以采用一题多解或一题多问的方式引导学生从不同角度和不同层次思考,对同一问题去探求不同的解决途径,并提供机会让学生在课堂上进行不同算法的交流,引导他们从时间和空间复杂性两方面比较各自算法的优劣,相互启迪思维,共同学习提高。倡导算法的多样化,尊重了学生不同的认知方式,发挥了学生的主体作用,有利于学生之间的合作交流,训练了学生思维的灵活性和发散性,培养了学生的创新意识、探索精神和问题求解能力。
由于VBA程序设计授课对象是文科专业大一的新生,他们对程序设计知识基本上是一无所知,因此教师在授课时,虽然不能引入算法较为复杂的问题让学生进行探究,但针对一些较为简单的问题,同样可以引导学生追求算法的多样化。例如,对于交换两个变量的值这样的问题,除了通过引入中间变量完成交换的常规算法外,教师还可以引导学生探讨不借助中间变量能否完成两个变量值的交换;对于求一个任意两位正整数十位和个位上数字这样的问题,教师可以引导学生分别使用数值分离法(使用算术运算符或数值函数进行数值运算)或字符分离法(借助字符串函数)来进行解决。
3.3 引导学生进行算法的优化
计算思维是一种在时间和空间之间、处理能力和存储容量之间进行权衡、折中处理的思维,是算法设计时普遍使用的思维方式。算法在编写成可执行程序后,要进行时间复杂度和空间复杂度的分析,在时间和空间效率之间寻找折中点,力求使用更小的代价来解决实际问题。
教师在讲授VBA程序设计时可以引导学生对编写好的程序进行简化和优化,看能否通过减少算法中的运算次数,或减少算法在运行中的存储开销,即通过减少算法的时间和空间复杂度来对算法进行优化,从而提高程序的运行效率[7]。例如,要求学生编程求解100~200之间的全部素数,这个问题需要使用双层循环来解决。外层For循环用来提供需要判断的数据范围,学生一般会写成“For i = 100 To 200 Step 1”的形式,由于在100~200之间偶数不可能是素数,因此可以引导学生对外层循环进行优化,改写成“For i = 101 To 199 Step 2”的形式,从而减少了外层循环的次数;内层For循环用来具体判断某个数是否是素数,学生一般会写成“For j = 2 To i - 1 Step 1”的形式,实际上判断某个数m是否是素数只需要看其能否被2~[m](取其整数)之间的数整除即可,因此可以引导学生对内层循环进行优化,改写成“For j = 2 To Int(Sqr(i)) Step 1”的形式,从而减少了内层循环的次数。通过前面的处理,就提高了该算法的时间效率。
3.4 培养学生模块化程序设计的习惯
计算思维强调采用抽象和分解来控制庞杂的任务或进行较大复杂系统的设计,这和模块化程序设计的基本思想是一致的。模块化程序设计采用自顶向下、逐步细化的方法对复杂系统按功能分解成相对简单、功能独立的多个层次的多个子模块来实现,下层模块为上层模块提供服务或完成某些功能,各层模块之间隐藏实现细节、通过定义好的接口进行交互,这种做法降低了程序的复杂性,使程序设计、调试和维护等操作易于实现且简单化,同时也提高了模块的复用性[7]。
要让学生养成模块化程序设计的习惯,教师可以调整VBA程序教学内容的顺序,遵循先入为主的思想,让学生在刚开始编写程序时就接受模块化程序设计思想的熏陶,形成模块化程序设计的思维习惯,这比等到学生已经习惯将程序的所有功能写到一个VBA过程(事件过程、函数过程、Sub子过程)中再行引入效果要好得多。针对VBA学习对象的特点,教师可以选择一些相对简单的教学案例让学生体会模块化程序设计的思想及其好处。例如,让学生编程求解“5!+10!”,学生会发现求5!和10!的语句基本都是一样的,唯一不同的就是For循环的终值不同,完全没有必要把这些相同的语句重复写多次,如果将求阶乘的语句编写在一个Function过程中,然后再调用它两次分别求5!和10!,就可以使程序变得简练且易于维护,并且通过调用这个Function过程还可以求解任意一个正整数的阶乘,提高了代码的复用性。再如,要求学生为班级编写一个成绩管理的应用程序,程序具有输入成绩、计算平均分、找出最高分、找出最低分、输出成绩等功能,教师可引导学生将应用程序分解为不同的模块,包括输入模块、平均分模块、最高分模块、最低分模块、输出模块,然后在VBA中通过编写不同的Function过程或Sub子过程实现每个模块的功能,在编程过程中对每个模块分别调试最后总调,能够让学生切身体验到模块化程序设计所带来的好处。
4 结束语
实践证明,在进行以培养学生计算思维能力为目标的Access VBA程序设计教学中,采用上述举措是切实有效的,取得了良好的教学效果。与采用传统教学方式学习VBA程序设计的往届学生相比,采用新的教学方式学习的学生学习兴趣更高,学习的积极性和参与教学的主动性更强,在课堂教学中思维更为活跃,问题求解的思路更为宽泛,不但很好地掌握了VBA程序设计的语法知识,而且运用计算思维进行问题求解的能力也得到了很大的提高。
参考文献:
[1] 周以真. 计算思维[J]. 中国计算机学会通讯,2007,3(11):77-79.
[2] 王荣良. 计算思维教育[M]. 上海:上海科技教育出版社, 2014.
[3] 王文旭. 启发式教学在《VB程序设计》课程中的应用[J]. 信息与电脑, 2013(4):225-226.
[4] 冯博琴. 对于计算思维能力培养“落地”问题的探讨[J]. 中国大学教学, 2012(9): 6-9.
[5] 龚沛曾,杨志强. 大学计算机基础教学中的计算思维培养[J]. 中国大学教学, 2012(5):51-54.
[6] 刘远军,黄同成,谢兵,牛莉. 程序设计课程教学中计算思维能力的培养[J]. 计算机教育, 2014(3):75-78.
[7] 张会,罗南超. 计算思维在程序设计教学中的培养[J]. 阿坝师范高等专科学校学报, 2013,30(3):97-99.