海南省文昌中学 571300
摘要:python算法与程序设计是八年级上册的教学内容,这一部分的内容比较抽象,学生难于理解与掌握,但对于培养学生的逻辑思维、计算思维有着重要的作用。要明确计算思维特征,以培养学生的逻辑思维与计算思维能力为教学目标,恰当运用游戏法、任务驱动法与合作探究法教学方法,让学生经历程序设计解决问题的一般过程,提升学生解决问题的能力,实现培养计算思维目标落到实处。
关键词:初中python;算法与程序设计;计算思维;教学方法;培养。
过去旧教材,初中信息技术课程教学一般都是以“实践操作”为主,学生所收获的是“模仿”与“练习”,对培养学生的计算思维甚少,新教材八年级上册的“python算法与程序设计”课程教学内容则有助于培养学生的计算思维。
下面主要从几个方面来阐述初中《python 算法与程序设计》计算思维的培养。
一、初中新教材Python算法与程序设计课程起点和高度。
Python语言目前是一种比较流行的面向对象语言,从初中到大学都分不同深度,不同层次、不同阶段的学习。
初中python教材内容总体上要求学生掌握用自然语言、算法语言或流程图来描述算法的方法,能掌握三种程序设计结构,掌握简单的编程、调试和运行程序,解决日常生活问题,这些都是属于最基础的内容。所以初中python教学内容的定界是体验和简单应用,而不是系统开发,也不是培养IT行业的从业者。
由于课时有限,在教学过程中尽量使用简单的代码能解决的就力求不使用教材之外复杂的函数或第三方库的方式,这样就可以避免知识面过大,这样就更好培养学生计算思维。
二、明确Python算法与程序设计课程的教学目标定位
初中python语言教学的总体目标主要是通过学习“python算法与程序设计”来培养学生的逻辑思维与计算思维能力。
逻辑思维一般都是以数学推理和演译从而得出的结论,靠的是数学推理或成型的数学公式。比如:A>B,B>C,从而可以推出A>C。
计算思维的概念是2006年由美国卡内基.梅隆大学计算机系主任周以真教授提出的,她认为“计算思维”是运用计算机科学的基本概念进行问题求解,系统设计以及人类行为理解的思维活动[1]。简单来说“计算思维是利用计算机的相关技术选择最有效的方法解决问题的活动过程。
对于计算思维概念的理解不同学者也有不一样的理解,比如我国李国杰院士在26届全国青少年信息奥林匹克竞赛时指出“计算思维”是选择合适的方式去陈述一个问题,然后对该问题进行建模,最后用计算机科学的基础概念或最有效的方法实现问题求解[2]。
计算思维的特征是问题的分析、抽象、算法与程序、自动化。 程序设计解决问题的一般过程如下:
三、选择以培养计算思维为导向的python语言的教学方法
Python语言的教学方法有很多种,但以培养计算思维为导向的python 教学一般都采用游戏法、任务驱动法与合作探究法。
任务驱动法是指学生在教师的帮助下,紧围绕一个共同的任务,进行自主探索和探究协作的学习[3]。
合作探究法它不是学生独立自主学习,而是通过学生之间的合作学习,激发学习兴趣,使每个学生都积极主动探索,共同找到解决问题的步骤与方法,完成问题解决的创造性学习活动[4]。
游戏教学法指的是通过做游戏,了解完成游戏的步骤与方法。这样就可以打消学生的畏惧心理与激发学生的学习兴趣,提高学生的计算思维。
在学习python之前,先讲关于“农夫过河”的游戏中,农夫需要顺利的将狼、小羊和青菜三种物品带到河对面,但是由于河水比较深,水流湍急,每次只能带一种物品过河,那么农夫究竟该如何过河呢?
这个益智类游戏的启发性很强,有的学生在听完游戏规则之后,不知道该如何下手,因为每次不论是带狼还是小羊或者是青菜过河,必然有一样物品处在危险的境地中,为了解决该问题,有的学生建议先带青菜过河,然后将狼用绳子绑起来,还有的学生建议先带狼过河,然后将小羊用绳子绑起来等各种方案,假设现场没有绳子又该怎么办,正在学生们一筹莫展的时候,老师向学生展示一幅农夫过河的图示:
通过农夫带狼、羊、菜过河的步骤与方法,从而引入了算法概念,让学生们从算法的角度入手,通过富有趣味性的游戏,激发学生的学习兴趣,降低学生对“算法与程序设计”这一相对比较陌生的知识的恐惧感,提升课堂教学效果[5]。
四、经历解决问题过程,培养计算思维的教学实例
结合程序设计三种基本结构,设计问题情景,让学生经历问题解决过程,体验分析问题、建立模型,设计算法,编写程序,求解结果,获得成功体验,提升思维能力。
(一)顺序结构计算思维的培养
问题情境:已知等腰三角形的底边与高,求它的面积。
学生根据老师提供的任务,进行合作探究等,分析问题,从问题中找出已知的条件是等腰三角形的底边为a,高为h,而所要求的是三角形的面积s。
用自然语言描述解决该问题的算法,根据小学数学知识求等腰三角面积是底边乘以高除以2。建立数学模型S= ah,这也是一种逻辑思维,是根据数学的成型公式而计算出结果。
画流程图:
编写程序:
#输入数据
a=float(input(‘请输入底边边长:’))
h=float(input(‘请输入底边的高:’))
#运算数据
s=1/2*(a*h)
#输出数据
print(‘输出等腰三角形面积S=’,s)
上机运行调试,并输出结果,问题解决。
顺序结构觖决问题的过程用图表如下:
相关特征点 | 学生解决问题的过程 |
问题分析 | 从问题中,找出已知条件a, h,需要解决的是求三角形的面积s ,将问题分解成若干可以解决的小题:①底边的边长为a ②底边的高为h ③原有的认知公式S= ah ④用自然语言描述该问题的算法:底边乘高除以2⑤把该算法语言转换成python程序语言 |
抽象 | 找到问题的关键:使用顺序结构解决该问题的步骤:①输入数据②处理数据③输出数据 |
算法与程序 | 用自然语言描述该问题的算法,并将它转换成python程序语言。①用input()函数输入底边与高,②利用公式S= ah计算出面积③输出S的值。 #输入数据 a=float(input(‘请输入等腰三角形底边的边长:’)) h=float(input(‘请输入等腰三角形的高:’)) #处理数据 s=1/2*(a*h) #输出数据 print(‘输出等腰三角形面积S=’,s) |
自动化 | 将代码在IDLE中编程、运行调试,输出结果,问题解决。 |
(二)分支结构计算思维的培养
问题情境:周未同学买票乘车回家问题:如果身高120厘米以下就免购票,如果身高超过120至165厘米之间就购买半票,如果身高超过165厘米就购买全票。
同学根据老师提供的任务,合作探究等,先从提供的任务中找到已知的条件是身高,所要解决的是根据身高来判断是否购票乘车。
同学根据原有的认知去构建购票与乘车之间的思维导图:
用自然语言描述该问题的算法,输入自己的身高,然后根据身高的范围选择购票,最后验票乘车。
画流程图:
编写程序:
h=float(input(‘请输入身高:厘米’))
if h<=120 :
print(‘免费购票’)
elif h>120 and h<=165:
print(‘购买半票’)
else:
print(‘购买全票’)
上机运行,调试,输出结果,问题解决。
分支结构语句觖决问题的过程用图表如下:
相关特征点 | 学生解决问题的过程 |
问题分析 | 从问题中,找到已知条件是身高h,需要解决的是根据身高是否需要购票m乘车,将问题分解成若干个可以解决的小问题:①根据原有的认知去构建购票与乘车之间的思维导图②用自然语言描述该问题的算法③把描述该问题的算法语言转换成python程序语言。 |
抽象 | 找到问题解决的关键:是根据身高进行判断是否购票,使用分支结构。 |
算法与程序 | 用自然语言描述该问题的算法,并将它转换成python程序语言:①输入身高h的值②如果h≦120cm就免费购票③如果120cm﹤h≦165cm就购买半票④如果h﹥165cm就是购买全票 h=float(input(‘请输入身高:厘米’)) if h<=120 : print(‘免费购票’) elif h>120 and h<=165: print(‘购买半票’) else: print(‘购买全票’) |
自动化 | 将代码在IDLE中编程、运行调试,输出结果,问题解决。 |
(三)循环结构计算思维的培养
循环结构语句是三种结构语句中相对比较抽象、难于理解的,为了让同学更容易的理解与掌握,老师使用最熟悉的一道数学题进行教学。
问题情境:计算1+2+3+…+100之和。
同学根据老师提供的任务,合作探究等,从问题中找到的已知条件是1至100个数字,所要解决的是从1加到100之和。
很多同学自然会想到小学老师利用数学家“高斯”的成型公式进行快速的计算出结果,S= 。这是一种逻辑思维方式,只是关注问题求解的结果,并不是关注问题求解的过程。该问题如果使用循环结构套用成型数学公式是不能进行的。
而计算思维关注的是解决问题的过程,重点并非是结果,在求解1+2+3+…+100的过程中,要让同学理解1到100是怎么相加的。在教师的指导下,进行1加到100的演算过程。
1+2=?
1+2+3=?
1+2+3+4=?
1+2+3+4+5=?
…………
1+2+3+4+5+…+100=?
在演算相加过程中,重复执行某一个操作,从而引入使用循环结构来解决该问题,在循环中用两个变量,第一个变量是S用来累加求和的,另一个变量是i表示从1变化到100的。
用自然语言描述该问题的算法: S=0;第一次相加是s=s+1,即s=0+1=1,第二次相加是s=s+2 ,就是第一次相加的结果1再加2,即s=1+2=3;第三次相加就是第二次相加得到的结果再加上3,就是S=S+3,即s=3+3=6;第四次相加就是第三次相加得到的结果再加上4,就是S=S+4,即S=6+4=10;……以此类推S=S+i进行累加求和,注意“=”号两边的“S”的值是不一样的,右边的S表示上一次累加的结果,左边的S是表示本次累加所得到的结果。
编写程序:
S=0
for i in range(1,101):
s+=i
print(‘1+2+3+…100=’,s)
上机运行,调试,得出结果,解决问题。
循环结构语句觖决问题的过程用图表如下:
相关特征点 | 学生解决问题的过程 |
问题分析 | 从问题中找到已知条件是1到100个数字,所要解决的问题是1到100所累加的和,将问题分解成若干个可以解决的小问题:①如何用自然语言来描述该问题算法②该问题属于“计数循环for”求和③把该算法语言转换成python程序语言。 |
抽像 | 根据问题分析,找到解决问题的关键是使用计数循环for循环结构 |
算法与程序 | 用自然语言描述该问题算法,并将它转换成python程序语言:①初始化s=0,②利用循环结构计算S=1+2+3+…+100的值③输出S的值 S=0 for i in range(1,101): s+=i print(‘1+2+3+…100=’,s) |
自动化 | 将代码在IDLE中编程、运行调试,输出结果,问题解决。 |
总之,通过学习python算法与程序设计后,学生的“分析与解决问题”、“抽像”、“算法与程序”和“自动化”等能力都得到一定程度的提升,有利于培养学生的计算思维能力。
参考文献:
【1】wing J M.computational thinking[j].communications of the ACM.2006,49(3):33-35
【2】李国杰 信息科学技术的长期发展趋势和我国的战略取向[J] 中国科学:信息科学,2010,40(1):128-138
【3】郭绍青.务驱教学法的内涵[J].中国电化教育.2006:57-59
【4】余文森.自主、合作、探究学习[J].教育研究2004,6(11)”27-30
【5】陈文勤.指向学生计算思维的算法与程序设计教学微探[J].新课程。中学,2019,(7)“:139-141
8 / 8