骆道松
(中央民族大学附属中学海南陵水分校,海南 陵水 572400)
项目教学是一项计划好的,有固定开始时间和结束时间的活动,原则上项目结束后应有一件较完整的作品。信息技术也称信息处理技术,信息技术自信心这里主要是指使用计算机技术处理问题的信心[1]。本文通过项目活动实践,让学生学会处理现实问题,体验解决问题的思维过程,得到满意的作品。今后在遇到问题时,有解决问题的方法,通过自信心与创造力完美解决并获得成功。
笔者在日常工作和生活中,同事和朋友都会有一些电脑问题,例如:wps文档设置不好打印格式、电子表格不会计算或查询、电脑联不上打印机、设置双面打印出现颠倒等等,其实这些问题都是基础实用型问题,不需要很多专业知识。解决这些问题,只要敢于钻研,有信心就能解决。自信心是靠平时的钻研和积累,多钻研就有解决问题的方法和思维。笔者联想到同事和朋友在学生时代也应学习了信息技术,但如今却没有了自信心和解决问题的方法。笔者认为增强信息技术自信心,要通过项目化的学习与实践,多做项目提高信息素养,才有信心找到解决办法。只要愿意探索,总有方法能解决问题[2]。有意愿挑战问题及其重要,这种意愿是自信和创造力的表现,遇到问题不敢动手尝试,是没有自信心和创造力的表现。因此希望学生们能增强信息技术自信心,在项目化实施的信息技术课堂中,为以后的工作和生活打下坚实的基础[3]。
交通信号灯,在日常生活中是指挥交通的重要工具,是运用计算机语言逻辑编写的,根据不同的交通路口设定时间。由单片机芯片控制灯亮的时间和灭的时间。具体就是当红灯该亮时,单片机控制信号灯红灯亮,并根据已编好的程序获得一定时间的延时,然后再由其控制绿灯亮,并获得一个延时;当信号灯为红灯时,监控设备将会自动拍摄越线的车辆并保存下来。如何用VB程序设计一个能指挥的交通信号灯?
这样一个现实问题,学生通过网络搜索,结合已学的VB程序设计知识,设计方案、物化流程并编辑代码调试。经过两节课的实践与小组合作,学生明白了交通信号灯的运行原理,并知道在VB程序设计中,可以使用shape形状控件绘制圆形,添加红、黄、绿三种颜色来代表信号灯。然后添加timer时钟控件来计时,再使用程序控制红、黄、绿三种形状的可见与不可见来表示信号灯。但学生程序设计控制时间、数值不太精确,需要老师多加指导。下图为VB设计信号灯界面,图形1填充红色,显示红灯;图形2填充黄色,显示黄灯;图形3填充绿色,显示绿灯。VB设计信号灯界面如题图1所示。
图1 VB设计信号灯界面
完成的项目部分程序代码:红灯先亮10 s显示倒计时,然后红黄灯同时亮3 s,再绿灯亮20 s显示倒计时,最后绿灯和黄灯同时亮3 s,循环运行,红灯亮10秒显示倒计时。
Shape1.Visible = True ′红灯对应的图形1可见
Shape2.Visible = False ′黄灯对应的图形2不可见
Shape3.Visible = False ′绿灯对应的图形3不可见
Timer1.Enabled = True ′计时器开启
Timer1.Interval = 1000 ′每1000毫秒自动更新
Private Sub Timer1_Timer()′′计时函数
i = i + 1
Select Casei
Case Is <= 10 ′计时小于等于10秒
Shape1.Visible = True ′红灯对应的图形1可见
Case Is <= 13 ′计时i值是11-13秒
Shape2.Visible = True ′黄灯对应的图形2可见
Case Is <= 33 ′计时i值是14-33秒
Shape1.Visible = False
Shape2.Visible = False
Shape3.Visible = True
Case Is <= 36 ′计时i值是34~36秒
Shape2.Visible = True ′黄灯对应的图形2可见
Case Else ′重新计时,红灯亮
i = 0
Shape1.Visible = True
Shape2.Visible = False
Shape3.Visible = False
End Select
End Select
Label1.Caption = "时间:"&-i + 11 ′标签显示倒计时数字
Label2.Caption = "时间:"&-i + 34
项目思考:交通信号灯是日常交通中常见的设备,能让复杂的交通控制顺畅。用VB程序设计交通信号灯这个项目,虽然学生不一定能完全成功,但可以通过学习实践,使用百度搜索引擎解决问题。在计算机中将对应颜色的图形模拟信号灯,虽然与实际不符,但工作原理类似,这些搜索到的方法就是解决问题的途径。将生活中的现实问题在VB中得到模拟实现,让学生体会到了创新设计、工程思维、物化能力,提高了学生学习VB的兴趣,有利于提升信息技术自信心。
本项目是笔者自身遇到的问题。学校初三年级毕业生有450人,高三年级毕业生有320人,完成毕业证打印,若运用传统方式文档制作好模板,一个个复制、粘贴学生信息,费时费力,770张毕业证两人轮流也要一周才能打印完成,最后发给学生核对还有很多错误。如果借助计算机程序来完成任务,会提高效率,而且还减少出错率。让程序来读取学生信息,打印在指定位置,其实算法思维并不难。因此设计了本项目,运用程序设计批量毕业证打印程序。
学生在一节课中,搜索到了VB读取电子表格数据与定位打印的方法,但要完整地设计整个程序难度较大,需要老师引导完成项目程序代码。运行结果如打印区域图2所示。
图2 程序运行打印区域
SetxlBook = xlapp.Workbooks.Open(App.Path &"xs.xls")′打开excel学生信息工作簿
Label2.Caption = j &""&zd(j + 1, 0) &""& zd(j + 1, 1) &""& zd(j + 1, 2) &""& zd(j + 1, 3) &""& zd(j + 1, 4) &""& zd(j + 1, 5) &""& zd(j + 1, 6) &""& zd(j + 1, 7) &""& zd(j + 1, 8) &""& zd(j + 1, 9) &""& zd(j + 1, 10)′打印之前,标签显示打印信息
Printer.Orientation=vbPRORLandscape ′横向打印
Printer.FontName= "黑体" ′字体黑体
Printer.FontSize=14 ′字号14
Printer.CurrentY=3800 ′y轴坐标3800毫米
Printer.CurrentX=8600 ′x轴坐标8600毫米
Printer.Print zd(j+1, 0) ′j+1循环打印下一条数据
项目思考:学生经过学习,得到了使用VB程序读取电子表格中的数据,电子表格数据容易将信息转化成理想的类型,例如:将出生年月日阿拉伯数字分列,年月日一列一项容易定位;毕业时间要用汉字,使用电子表格容易转化,然后打印在毕业证的相关位置。代码设计学生还是不能完成,但学生通过搜索、使用百度、使用中国专业IT社区CSDN(Chinese Software Developer Network,CSDN),这些方法比解决问题更重要的。只要敢于探索,就会得到好的方法,就能增强解决问题的信心。只要不断实验和思考,就有解决问题的方法。
在python语言的学习中,前期学习了海龟画图,那怎样画出学校的校徽logo呢?本节课项目学习python绘制校徽logo。
学生已经学习了画正方形、菱形、八个菱形的图案以及画曲线。学生搜索到了circle函数,可以绘制曲线和两个圆形。但画和平鸽和“S”比较难,还有弧形的文字和英文。通过完成的项目程序部分代码,其运行结果如python运行结果图3所示,校徽logo如校徽原图4所示。
图3 python运行结果
图4 校徽原图
import turtle as t
t.penup()
t.goto(5,-120)
t.pendown()
t.pensize(2)
t.pencolor(′blue′)
t.circle(130) #绘制内圈圆形
#绘画和平鸽
t.begin_fill()
t.penup()
t.goto((-80), 90)
t.pendown()
t.pensize(1)
t.pencolor(′pink′)
t.circle(-60,80)
t.circle(60,70)
t.circle(60,30)
t.circle(-100,-10)
t.circle(50,-20)
t.circle(80,-10)
t.circle(120,35)
t.circle(-100,-10)
t.circle(100,-20)
t.circle(80,-10)
t.circle(140,35)
t.circle(-100,-10)
t.circle(100,-20)
t.circle(80,-130)
t.circle(100,-20)
t.circle(10,60)
t.circle(100,-20)
t.fillcolor(′orange′)
t.end_fill()
#绘画第一个S
t.begin_fill()
t.penup()
t.goto(0,100)
t.pendown()
t.left(-60)
t.pensize(1)
t.pencolor(′blue′)
t.circle(-90,80)
t.circle(-50,-70)
t.circle(240,-10)
t.left(200)
t.circle(-100,65)
t.fillcolor(0, 0, 1)
t.end_fill()
t.circle(117,46)
t.circle(-90,80)
t.circle(-50,-70)
t.circle(240,-10)
t.left(200)
t.circle(-100,65)
t.fillcolor(′blue′)
t.end_fill()
#绘画第二个S,就是起点位置调整
t.goto(40,100)
#绘画第三个S,就是起点位置调整
t.goto(80,100)
#绘画2013
t.write(2013,move=False,align=′left′,font=(′arial′,18,′normal′)) #写出内圈中的2013
t.penup()
t.goto(100,-130)
t.pendown()
t.pensize(2)
t.pencolor(′blue′)
t.circle(170) #绘制外圈圆形
t.bgpic(′wenzii.png′) #加载背景图
项目思考:学生经过python学习,学习到了海龟画图中turtle库中运用circle函数来画弧,由于校徽logo有两个圆形,其中的和平鸽和“S”学生绘制不佳。学生自己搜索到的知识,比老师讲授的要理解深刻,这是最好的一种学习方式,也是项目化学习的优点。先自己搜索解决问题的方法,老师再讲授,学生就会理解深刻,最后调试运行、思考理解。若能学生自己绘制出来,更能激发信息技术自信心。
项目化的学习,是让学生自己先尝试解决问题,明确解决问题的方法。自己查找资料,例如:使用搜索引擎百度搜索,程序代码问题使用CSDN学习,都是很好的方法。敢于解决问题,一次次实验,总能找到解决问题的方法,这些都需要信心和毅力。学习和生活是由一个个的项目组成,总能从网络找到解决项目的方法。学生通过项目实践,运用程序设计解决这些专业问题,增强自信心,对遇到的问题敢于搜索、实验,从而积累经验,提高信息素养[4]。
项目化学习的最重要意义是“由极大的幸福感点燃的可持续的内驱的学习动机和不轻易放弃的坚毅品格”。学生多做项目,才会遇到各种未知问题,通过搜索解决这些问题积累经验,就能提高信息素养和增强自信心。对于学习和生活中不需要很多信息技术专业知识的问题,相信自己就能解决。