史丙军
算法与程序设计是高中信息技术课程开展中的重要一环,主要提高学生利用信息技术解决问题的能力,理解数字化世界的运转方式,培养计算思维意识,提高学生数字化创新和学习能力,对学生信息素养的培养和形成至关重要。
该模块的教学直接提升学生应用计算机编程解决实际问题的能力,促进该模块教学效果的提升,使学生能够揭开计算机硬件和软件的神秘面纱,初步理解信息社会的数字化原理,不仅能促进学生探索科技进步的兴趣,更能激发他们用计算思维学习其它学科的动力。
鑒于现有教材项目和知识框架的实际,单个知识模块采用相应的项目教学,总觉得不够完善,如果再对应整个章节启动一个大项目贯穿始终,既能温习旧知,还能够激发学生学习新知识的渴望,我想对整个学科教学会有更大的益处。所以在吸收现有项目的优点基础上,比如自动洗衣机工作流程,导出算法思想。再从学生身边着手,引入单元大项目,当然,这个过程需要循序渐进,随着知识点的深入逐步完善。下面举例说明:
鸡兔同笼,是中国古代著名典型趣题之一,也是学生小学就接触到的趣味题,编程解决这个问题是同学们乐于实现的,它表示有若干只鸡和兔在同一个笼子里,已知鸡和兔头和脚的总数,求笼中鸡和兔的数量。想要用 Python 解决鸡兔同笼问题,可以使用抬脚法来解决。算法描述使用流程图,重点介绍python基本语法和顺序结构,用2节课时完成。程序段如下所示:
t=int(input("请输入头数:"))
j=int(input("请输入脚数:"))
ttou=(j-t*2)/2
jtou=t-ttou
print("兔子的头数:",ttou,"鸡的头数:",jtou)
随着课程的推进,引导同学们分析上述程序段的不足之处,对于程序使用者输入数据的合法合理性进行检查,引出分支判断结构,同时介绍条件表达式的知识,用1个课时完成,代码逐步完善如下:
t=int(input("请输入头数:"))
j=int(input("请输入脚数:"))
ttou=(j-t*2)/2
jtou=t-ttou
if ttou<0:
print("请输入合理的数据Q1!")
elif jtou<0:
print("请输入合理的数据Q2!")
elif (ttou//1+jtou//1)!=t:
print("请输入合理的数据Q3!")
else:
print("兔子的头数:",ttou,"鸡的头数:",jtou)
为了项目开发的完整性,站在使用者的角度将项目游戏化,根据使用者的意愿停止或者重新开始游戏,引入循环控制结构,用1个课时完成,这一步大大激发同学们的学习热情,并提高学生学习的获得感和成就感。
i="y"
while i=="y":
t=int(input("请输入头数:"))
j=int(input("请输入脚数:"))
ttou=(j-t*2)/2
jtou=t-ttou
if ttou<0:
print("请输入合理的数据Q1!")
elif jtou<0:
print("请输入合理的数据Q2!")
elif (ttou//1+jtou//1)!=t:
print("请输入合理的数据Q3!")
else:
print("兔子的头数:",ttou,"鸡的头数:",jtou)
i=input("是否继续游戏?继续:y,结束:n: ")
print("---------------------------------------")
print("*********欢迎再次来到游戏**************")
print("---------------------------------------")
最后还可以以模块的方式定义函数,完整的项目贯穿下来,同学们不仅学到了程序设计语言的基本语法,而且也能够以大项目的角度去解决问题。项目式教学能够紧紧围绕信息技术学科核心素养展开教学,能够较好的完成既定教学任务。而且单元大项目教学以解决实际问题为导向,无论学生在学习中发现的问题,还是社会生活中存在的实际问题,都可以激发学生的信息意识和计算思维,进一步激发数字化创新和学习的能力,提高学生服务信息社会的责任和意识。
单元大项目和教材内微项目相辅相成,彼此互为补充和升华,协调好二者的关系一定会提高本章节的教学效率,并促进学生学习信息技术的兴趣和动力。同时随着教研的深入,大项目教学的优势会更加突显。