中职VB程序设计教学过程中的几点尝试
2009-11-19黄英竣
黄英竣
笔者所在的学校,连续几年尝试开设计算机软件课程。积极探索中职计算机软件课程的组织方法。对于计算机专业的学生来说。只有在具有一定的理论,又具有较强的实际动手能力基础上。才能建立完整的计算机知识体系,在将来的人才市场中其有竞争的优势。笔者在几年的教学中发现,中职学校的学生学习操作课程的时候接受能力较强,但对于程序设计、面向对象方法和可视化的编程技术却很难很好地掌握和应用;有些学生甚至在离校的时候在程序设计上都留有遗憾。
因此,如何理解面向对象的编程技术也就成为教学中的重点和难点。是有效地引导学生学会如何学习。如何在有效的教学时间内发挥自身优势,克服畏难心理,较好地掌握面向对象的程序设计是一个突出问题。笔者在有关VB程序设计方面的课堂教学中做了以下几点尝试。
一、熟知学生基础,遵循认识规律,“五段式”教学法组织教学
VIUAL SUASIC6.0是基于BASIC的可视化的程序设计语言;与其他编程语言相比较,它既继承了BASIC所具有的程序设计语言简单易用的特点,同时其编程系统又采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把windows编程的复杂性封装起来,提供了一种可视界面的设计方法、使用窗体和控件设计应用程序界面。
但其教材与大多数教授程序设计深本的程式一样,一开始介绍比较抽象难懂的相关概念,然后介绍程序的建立和运行;最后介绍VB语言基础、分支结构,循环结构和数组。从知识的逻辑结构体系考察,这样安排无可非议,但从学生的认知规律考虑,笔者认为把一些难懂的、抽象的东西放在开始来学习有两点弊端:(1)学生在毫无知识背景的前提下,要完全理解这些概念比较困难。(2)容易伤害学生们学习编程的积极性。
考虑到教学的效果,笔者先不讲基本概念,而是要学生和笔者一起做一些小程序,在做的过程中由学生自己在直观上先去体悟这些概念,然后在时机成熟时再和学生一起归纳总结。所以在组织本章课堂教学时,笔者采用了自然过渡、类比等方法,首先和学生一起探讨了VB软件的打开、程序的建立和保存、软件界面等方面的知识,由学生自己探索着找出VB操作和以前所学软件的异同点。由于学生已经学过word应用软件,对这些相似的操作已非常熟悉,所以操作起来得心应手。然后;笔者给出一个加法器的实例,让学生和笔者一起做。在操作的过程当中,教师不用讲解每件事的含义。学生通过完成任务很自然地就会体会出什么是对象,什么是对象的属性和方法,如何在界面内添加对象、设置事件等。在此基础上,教师适当地引导学生归纳总结一下,一切都迎刃而解。
按照学生的认知规律组织教学和重视学生的知识结构体系的建立并不是相互对立的,相反,最终学生能否在头脑中建立完整的学科体系对于其本身能否对所学的内容有比较深刻的理解起着极为关键的作用,问题的关键在于这种学科结构体系的建立是通过外部手段强加给他们的,还是在学生学习的过程中自然形成的。通过观看、模仿、理解、总结、提高五个不同阶段的教学,既符合学生的认知规律,也符合计算机编程的学习规律,易于培养学生的兴趣和课堂组织。
二、激发学生兴趣,改进教学方法,“任务驱动”促进学生自主学习
有一些概念之间的差别和程序的设计步骤如果只通过教师讲述,学生在字面上可以接受,但在理解深度上往往难以达到令人满意的效果,如果能设计出一系列问题,让其在实践和解决问题的过程中自己去体验,情况将完全是另一个样子。
比如,为了让学生切身感受整型变量、单精度变量、双精度变量所能保存数据范围的不同,笔者为学生设计了如下的一个实验过程:首先,模仿求1到50之间所有自然数的方法,在窗体的Click事件中编写一段程序,求51,通过实验,学生很快编写好了程序。并按F5键运行,得出51的正确结果。然后,笔者让学生把程序做少许修改,求101。此时,很多学生如法炮制,依然按F5键运行,结果发现屏幕上并没有如预期想象的那样给出正确结果。而是显示出一个错误对话框,含义为“数据溢出”,此时,他们百思不得其解。这时教师提示其将程序做一点修改。把变量x定义为单精度,试试看运行情况如何。结果是计算机给出正确结果,不过结果的表达方式发生了变化。这时,教师要求学生再对程序做少许修改,求1001。学生按F5键运行,结果发现计算机又显示“数据溢出”。这时大家都猜测到问题可能又是出在变量所定义的数据类型上,纷纷要求教师给出办法。教师要求学生对程序再做一点修改,把x定义为双精度变量,再按F5键运行,计算机给出正确结果,问题解决。到此为止,教师的教学目标已基本达到。但为了进一步使学生认识到计算机所能处理数据的范围和理论上所能处理数据范围的区别,可以要求学生试着用计算机求100001。此时大家发现PC计算机已无计可施。在本例中程序整体变化不大,占用时间也不多,但通过如此一个操作过程,学生对整型数据、单精度实型数据和双精度实型数据之间的区别一目了然。另外,由于一切都要求学生们自己动手、动脑设计。他们在操作过程中探究和解决问题的积极性、学习的主观能动性得到了调动。
三、举一反三,触类旁通,变通实例综合提高
例如,学生在学习FOR……NEXT循环时,书本内给出了一段求前100项自然数和的程序。这段程序在学生们弄懂FOR……NEXT循环之后,理解起来是并不困难的。为了提高学生的编程能力,笔者要求他们对原程序做如下几种变化:
(1)求1到100之间所有偶数的和,要求跳数为2。
(2)求1到100之间所有偶数的和,要求跳数为1。
(3)在程序运行过程中任意输入一个自然数n,求1到n之间所有偶数的和。
这里第一小题和书本原程序相比难度不大,只要将循环的跳数改为2即可,在模仿的前提下学生自己就可以完成。第二题增加了难度,在编程过程中,需要做两点变化:一要将循环变量的变化范围变为从1到50;二要修改循环语句中的通项,将循环语句变为S-S+2*I。要做到这些变化,需要学生对FOR……NEXT有比较深刻的理解。第三小题在第二小题的基础上又增加了要求,一是循环变量的终止值需用变量n来表示;二需要在程序的前面增加一条定义变量n的语句;三需要使用InputBox语句在程序运行的过程中将终止值输入给变量n。这三点要求学生能够把以前所学的知识综合起来运用,对刚刚学习编程的学生来说这还是有一定难度的,但通过练习学生的综合编程能力可以得到训练提高。
四、多侧面、多层次设问,引导学生独立思考,激发学生创造思维
教师要引导学生在学习编程的过程中养成运用动态思维判断程序是否正确的习惯。这种习惯的养成,对培养学生的逻辑思维能力和抽象思维能力有着非常重要的作用。为了达到这个目的,在程序设计教学中可以有意识地
在以下几个方面给予比较多的关注:(1)对于一些比较简单的程序要求学生们直接写出结果。(21对于有循环或判断结构的程序,要求学生根据条件一步步向前走,把循环过程写下来。(3)故意给出一些错误的程序,给学生设计一些陷阱。让他们自己去发现。(4)让学生把书本中程序编写错了的地方改正过来。
五、学生为主体,教师为主导,凸显学生创造力
教师的教学设计不应只是单纯设计自己的教案,而应既设计自己的“教”,又要考虑到学生参与的“学”。而且“教”与“学”的根本目的不再是单纯灌输知识,而应该能促进学生的知识、能力与人格的全面发展。边教学边总结,边总结边改进自己的教学思路和方法,计算机操作课的教学还需教师进一步摸索。
在计算机操作课“教”、“学”过程中,教师要注意学生创造力的培养。当然,创造力的培养,并不是一两节课就能解决的问题,而是教师长远的任务,是贯穿于每节课、每个教学设计之中的。就一个知识点而言,主要有以下过程:
教师的“教”:基本讲解——引导学习——启发思考——归纳问题——讲解要点——设计练习。
学生的“学”;笔记心记——自己摸索——大胆质疑——展开讨论——总结评议——自生创造。
六、综合考评,突出能力为本位
计算机只是一个工具,故检验学生学习的好坏完全不能凭一次书面或上机考试来判定。在平时的教学过程中,通过一定的上机练习,让动手能力和解决实际问题的能力能同时得到训练。把学生课上做的练习题和上机做的程序作为平时成绩的考查。而期末考试则由两部分组成:一部分是笔试部分,主要是对基本概念和基本编程思路的掌握;第二部分是上机部分,通过综合实验或大作业的方式做一些太的程序,如图书管理系统、工资管理系统、学生学籍管理系统或人事档案管理等系统,让学生充分发挥自主创造的能力用心完成系统设计,使之能更好地全面掌握面向对象程序设计的方法。
教学有法,教无定法。只要教学得法,学生就一定能够了解面向对象可视化程序设计理论中的面向对象编程和结构化程序设计等基本思想,培养面向对象程序设计过程中所需要的一些基本能力,让学生能够最大限度地达到其潜能所能达到的高度,从而能够独立面对和解决在今后学习特别是工作中出现的各种复杂问题,从而在未来的人才市场中占有一席之地。