开设高中程序设计常态课,促进学生计算思维培养

2016-09-10 07:22周玳珈
中国信息技术教育 2016年17期
关键词:程序设计编程工具

周玳珈

程序设计课程以编程语言来描述和解决问题,从而揭示计算机如何解决具体问题的方法,是非常适合培养学生计算思维的课程。目前,部分学校在高中阶段开设了信息学奥赛培训或国家课程标准选修课《算法与程序设计》,但前者为面向少部分学生的“精英教育”,后者则理论性较强。如何将程序设计课程设计成面向广大学生的常态课程,培养学生的计算思维能力,并提高其思考与决策水平,形成解决实际问题的能力,是一个值得解决的问题。笔者所在学校的信息技术教研组对此进行了实践探索,并通过对学习工具、课程结构及学习活动的合理选择或科学设计,实现了面向全体学生的程序设计常态课,取得了一定的效果。

● 基于图形化编程的学习工具选择

目前,各中学开设的程序设计课主要有信息学奥赛培训课与国家课程标准选修课《算法与程序设计》两种形式,它们采用的编程语言前者为C语言或PASCAL语言,后者为VB语言,因此,这两种形式均需要学习程序代码且面向数学解决问题。这样的形式不仅使学习活动缺乏生动性,而且在面对各类问题时,也不利于对学生进行识别、分析、抽象、建模并设计系统解决方案的计算思维的培养。

基于以上分析,笔者所在学校在高一年级开设了面向全体学生的程序设计常态课,采用图形化编程软件Scratch和图形化编程平台App Inventor作为学习工具。这两种工具均是采用鼠标拖动模块到程序编辑栏的搭积木式的工作方式,是带图形界面的可视化编程语言,其操作难度低,适合各能力层次的学生。利用Scratch可以创建故事、动画、游戏、音乐、视频,适合模拟各种现实生活场景,创设各种虚拟任务。App Inventor则是一个完全在线开发的Android编程环境,它可以用于设计安卓手机应用的外观及行为,设计完成的应用程序既可以在计算机模拟器中运行,也可以直接安装在手机上运行,它为学生探索并创新如何利用程序满足真实的学习、工作或生活需求提供了强有力的计算设计平台和更宽阔的思维发展空间。值得一提的是,Scratch的程序编写界面和App Inventor有相似之处,学生能够很方便地从Scratch这一较为简单的工具过渡到比较复杂的App Inventor,从而很好地从解决虚拟问题过渡到对真实问题的解决和现实应用的设计中来。

● 基于程序设计思想的课程结构设置

笔者观摩了不少程序设计选修课,教师为了便于开展教学、提高学习活动的可操作性,大多都以面向对象程序设计工具的应用为主线设计教学,如“制作一个计算器”“制作成绩排序软件”等,或花费许多精力在程序界面的设计上。在这些课堂中,虽有程序设计的知识,但工具的学习和应用的主线过于分明,其结果是学生对程序设计课的印象,就是在记忆一个个应用程序的名称。

培养学生的计算思维,关键在于使其形成面对问题时能分析如何利用计算机科学知识获得最佳策略的意识和能力,懂得如何合理组织数据,能够运用最优算法设计解决问题的方案等。因此,选择正确的程序结构、使用合理的数据结构、优化解决问题的算法等程序设计思想的学习和锻炼是培养计算思维最关键有效的方法。

笔者所在学校的程序设计常态课是以程序设计思想为线索进行课程结构规划的(如左上表),与课程中各个教学专题对应的则是以“大话西游”为创作大主题而设计的若干个课堂实践案例及课堂导学案,其中课堂导学案的内容组织便是以程序结构、数据结构和算法等知识目标为导向。例如,在教学专题“选择结构”时,笔者安排了一个设计捕捉游戏的任务,让学生依次经历“发现任务中的分支选择—认识计算机程序的选择结构及其表达方式—选择编程工具中的恰当指令实现选择结构—编程实现任务”这一思维过程(如图1)。在这个过程中,学生不是一开始就投入到工具的学习中,而是先学会分析问题可以用什么策略或步骤,再思考如何用计算机的方式进行表达,最后以合理、有效的方式解决问题。

因为计算思维是运用计算机科学相关思想方法形成问题解决方案的过程中产生的一系列思维活动,因此“问题”是培养计算思维的基本立足点。基于问题,才能引发关于问题的界定、问题特征的抽象、为解决问题而建立数据模型等一系列计算思维活动;基于问题,也才能发挥计算思维的最大效益,即培养学生分析和解决现实问题的能力。

笔者所在学校以“大话西游”作为整个程序设计课程的创作大主题,并根据该主题设计了许多生动有趣的学习活动及任务,如制作一个孙悟空变脸的动画剧场,制作悟空抓妖怪的追捕游戏,开发一个关于中国名著《西游记》知识测验的手机APP等。在课堂导学案中,每一个学习活动首先都由若干个问题引起,即称之为“前置问题”;每个学习活动后期也都会有问题引发学习延伸,则称之为“拓展问题”。

例如,在教学专题“循环结构”中,学生要完成一个制作迷宫游戏的学习任务(如上页图2)。为了完成该任务,学生需要学习“循环结构”的相关知识,也需要运用已学过的“选择结构”的相关知识。在学习活动的开始环节,教师提出前置问题:打开走迷宫的示例程序,尝试用键盘控制对象从起点走到终点,并思考以下几个问题。

①这个程序和你玩过的哪类游戏相似,它们具备什么功能(或特征)?②要使对象受键盘控制,并在碰到迷宫的黑线时做出反应,需要做哪些判断或选择?实现这些判断或选择可以使用哪种程序结构和Scratch指令?③要让对象一直受键盘的控制,需要怎么做?④要让对象一直受键盘的控制,直到遇到某个条件,就结束键盘控制,需要怎么做?

前置问题的设计重在帮助学生抽象出解决问题的数据模型。问题①在于引导学生找出迷宫游戏的典型特征,完成问题的界定及问题特征的提取;问题②引导学生发现可以利用所学习过的程序设计知识“选择结构”来实现判断和选择功能;问题③~④启发学生寻找实现持续执行或持续执行直到实现某条件的办法,进而学习程序设计新知识“循环结构”。对问题②~④的思考,有助于学生建立解决问题的结构模型。

又如,在教学专题“应用系统的程序设计”的第一个学习活动“悟空学艺——72变”中,要求学生在App Inventor中综合应用前面学习的程序设计基本知识,设计一个带画板功能的手机App程序,其中有一个功能是设置画笔为粗线条或细线条(画笔宽度固定)。课堂导学案中提供现成的程序参考,教师在学习活动后期提出拓展问题:根据人对应用工具的操作习惯,画板应该可提供画笔的逐步调节粗细的功能(而不是固定粗细),请你利用学过的程序设计知识,结合App Inventor中相关的组件及其属性,实现这一功能。

拓展问题的设计在于引导学生实现课内知识到现实应用的迁移,以上问题将引导学生思考并发现可以通过定义全局变量,并利用变量的数值递增或递减进而赋值给画笔的宽度属性来实现所需功能(如图3)。

再如,在教学专题“应用系统的程序设计”的另一个学习活动“西游回忆录”中,笔者通过让学生制作一个关于中国名著《西游记》的知识学习与测试手机App程序,学习应用“列表”这一静态存储结构。在学习活动后期,笔者同样提出拓展问题:思考可能出现的用户需求,并尝试改良答题程序,提高其使用价值。

为此,有学习小组利用“列表”在原来答题程序上增加提示功能,这一来可以提高用户的答题率,二来还可以让用户学习更多拓展知识(如P41图4)。

● 结束语

回顾过去一学年开展的程序设计课,笔者通过合理选择学习工具、科学设置课程结构以及精心设计学习活动,大大提高了程序设计课程的教学可实施性和学习可操作性,从而实现了课程常态化并使全体学生都有机会接触程序设计。而且图形化的编程工具、渗透程序设计思想方法的课程架构以及强调问题解决的学习活动等,更好地培养了学生利用计算机科学知识界定、分析和有效解决问题的意识和能力,最终促进了对学生计算思维这一核心素养的培养。

猜你喜欢
程序设计编程工具
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
波比的工具
波比的工具
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
编程屋完成数百元万天使轮融资
准备工具:步骤: