APP下载

Python程序教学中计算思维培养研究

2021-06-28孔庆锋

科学与信息化 2021年17期
关键词:密码程序算法

孔庆锋

广州市南沙潭山中学 广东 广州 511475

引言

程序设计是初中信息技术课的一个重点、难点内容,其在帮助学生深入了解计算机工作原理,掌握基础的编程方法,培养计算思维能力等方面起到重要作用。广州市初中信息技术教材选用了常用、简单、易学和使用广泛的Python语言作为程序设计教学内容,其设计目的是希望通过Python程序的学习,培养学生的计算思维、抽象理解能力和设计思维。与传统的Visual Basic相比,Python更加有好、灵活、有趣,扩展更多应用领域更广,适合于个人兴趣学习和自学深研。由于Python更灵活、扩展更多,在课堂教学中教师要更加注重教学的研究,充分发挥Python程序的优势,在培养学生计算思维上多下功夫。

1 计算思维的概念、特征

1.1 计算思维

计算思维是信息技术课程改革的重要目标,是信息技术学科核心素养的重要组成部分。它要求在学习过程中逐步形成运用计算机学科领域的思想方法解决实际问题的能力。《程序设计初步》是广州市初中信息技术科八年级的教学内容,教材从Python程序入手,以培养学生的计算思维为目的,让学生掌握Python程序的设计方法,形成用Python解决实际问题的能力,让学生效地思考与生活,促进终身发展。

1.2 计算思维的特征

计算思维有以下几个特征:①算法思维——即处理问题的流程方法。②分解——把复杂的问题分解成不同组成部分,逐一分析解决,最后达到解问题的目的。③抽象建模——从事物中抽取本质性特征的过程。④概括——把抽象出来的事物的共同的本质特征综合起来,以便推广到同类事物的过程。⑤评估——从整体上评估解决方案是否为最佳[1]。

2 计算思维在国内研究情况

在国内,培养学生计算思维的研究大多集中在教学模式的研究。渗透计算思维的探究式教学模式、任务驱动教学模式和活动教学模式的研究为我们培养学生计算思维的问题上找到了一些合适的教学模式:探究式教学模式是根据学生的知识能力水平,把教学内容设计成几个递进的小问题,引导学生开展探究活动。任务驱动教学模式要求学生利用计算思维,完成教师提出的学习任务。活动教学模式把教学内容设计成活动的形式,增强学生学习的主动性和积极性。

计算机思维的培养要在科学的教学模式下实现,与学生天生具备的能力不同,它是学生在解决不同问题时形成的心理素质和思维能力。前面所说的这些教学模式的共同特点都是建立在建构主义理论的基础上,把学生作为学习的主人而不是被动接受的人,主张鼓励学生用已有的知识主动建构新的知识。通过独立学习和小组学习的形式开展学习活动,把外部活动转化为内在意识,促进问题解决意识的形成。这些教学模式的研究,很好地回答了在教学过程中,如何组织教学活动培养学生计算思维的问题,但在具体的操作中,我们还是缺乏可借鉴的教学方法和实例。

3 基于计算思维的教学方法探讨

学生的主体作用发挥了,但教师的引导作用也很关键的。如何把培养学生计算思维的要求落到实处,关键还要看教师如何组织和引导,特别是具体操作。在教学方法方面我们研究得比较少,这是一个很有价值的研究方向。我认为,要培养学生的计算思维,需要教师转变观念,深刻理解和研究计算思维的内涵,以培养计算思维为目标导向,帮助学生树立计算思维意识,掌握计算思维方法,培养计算思维能力。根据计算思维的特征,我们在Python程序教学过程中实现计算思维的培养可以通过情境引导、分解思维、抽象建模、算法思维、评估和概括五个方面来落实。

3.1 情境引导,启发思考

在Python程序教学过程中要注意做好教学情境的创设。建构主义理论认为:良好的学习活动应该与一定的教学情境相联系。好的情境创设既可以为知识和技能的传授提供支撑,又能调动学习兴趣,促进学生主动探究问题、思考问题。教学情景的创设,还可以让教师观察学生的反应与解决问题的能力,为后继续的教学方法的实施提供依据,提高教学方法的针对性和有效性。

创设教学情境时,教师要对学习内容进行特征分析,尽量运用生活化的、生动的和有教育意义的例子。很多时候学习起源于思考,而思考又起源于疑问。问题情景的创设可以引导学生产生疑问与思考,从而促进学习的开展。情景创设还要考虑学生已有知识经验与实际问题之间的联系,以便学生运用已有的知识与经验去思考问题,促进新知识与新技能的建构。

3.2 引导学生分析问题,培养分解思维

准确分析问题是解决问题的前提条件,培养学生分析问题的能力很重要。教师作为引导者,要沿着学生思维方面适时进行启发和引导。通过预设的问题,把学生从现有的发展水平引入新发展区,培养学生分析解决问题的能力,帮助学生在学习活动中实现计算思维的建构。

当学生遇到问题时,教师要懂得如何引导学生分析问题,教会他们把大问题分解成多个可以解决的小问题的方法,通过小问题的解决最终达到解决大问题的目的,促进学生分解思维的形成。

例如:在100米的高度上有一个球体自由落下,第1次落地后反跳的高度为50米,第2次落地后反跳的高度为25米,如此类推……求这球体在第10次落地后反跳的高度?

这时,可以引导学生把问题拆分为以下个小问题:

师:球体不断的自由落下、反跳,自由落下、反跳……这种情况我们该用什么程序结构?

生:应该用循环结构。

师:题目要求计算这个球体重复反跳多少次后的高度,该用什么循环?

生:求重复反跳10次后的高度,是可知次数的重复运动,应该用for循环。

师:如何表达循环10次?

生:用Python语言表达: for i in range(10):

师:这个球每次反跳的高度和反跳前的高度有什么关系,如何表达?

生:反跳高度是原来的1/2,可用h=h/2表示。

随着4个小问题的解决,整个问题就自然解决了(代码如下):

3.3 引导学生把问题抽象建模,培养抽象思维

有人说:程序的灵魂是算法。好的算法能降低程序的开发成本,提高程序的运行效率。要有好的算法,离不开一个好的模型。抽象建模,就是从事物中抽取本质性特征并建立模型的过程。它是一种思考方式,是用数学符号、式子和图像等模拟的现实问题的模型。建模是连接现实问题与抽象的编程世界的一座桥梁。

例如:在日常的生活中过马路要看红绿灯。

教师提问:同学们是怎样过马路的?

学生回答:要看交通灯,红灯停,绿灯行。

师:这个过程是中是由什么因素决定的?

生:灯的信号。

师:可见,过马路与否是有条件的。还有,过与不过这两种状态会同时存在吗?

生:不会同时存在。根据灯选择相应的停与行。

师:我们可以用数学的什么图形表示出来?

生:可以用树状图来示。

师:程序执行的时候有时也像这个图一样,有条件地选择不同的语句来执行的,我们称它为什么结构?

生:分支结构。

分枝结构的概念隐藏在具体问题情境中,师学生通过思考讨论,找出事件的本质特征,把实际问题抽象为图形,透过图形表达从而理解选择结构的概念,这就是一次建模的过程。

3.4 引导学生设计算法,培养算法思维

在程序设计的过程中,把解决问题的步骤详细地描述出来叫作算法。算法思维即处理问题的流程方法,它具有非常鲜明的计算机科学特征。在引导学生设计算法的时候,首先要让学生了解计算机解决问题的方法与日常生活习惯有什么不同。

例如:要计算两个数的和,计算机执行的步骤是:

Step1: 声明变量a,b,n

Step2: 输入第一个数 a

Step3: 输入第二个数 b

Step4: 求出两数的和 n=a+b

Step5: 把结果n的值在屏幕上显示 print(“结果是:”,str(n))

其次,学生设计算法时必须以扎实的Python编程知识为基础,能熟练掌握和运用Python编程语言才能准确表达算法,提高算法设计的效率。因此,教师必须重视Python编程基础知识的教学,把基础知识的教学落到实处,为学生打下坚实的知识基础。

最后,开展小组合作学习是提高学生算法思维的有效途径。小组学习可以为学生提供轻松自主的学习环境,在如何设计算法的问题上,小组内可以各抒己见,促进思维的碰撞;在不同小组之间可以互评、借鉴,提升算法思维水平。

3.5 引导学生进行评估和概括,实现融会贯通

3.5.1 评估。评估就是从整体上评估解决方案是否为最佳。引导学生对解决方案进行评价,结合自评和互评,在算法是否足够简化和优化,运行是否高效等方面进行讨论,既可提高学生参与学习的广度和深度,又可以广开思路促进计算思维的养成。例如:编写密码程序时,要实现功能:提示用户输入密码,当输入密码正确时,打印“密码正确”,跳出循环显示“成功登录”。否则打印“密码错误”,要求重新输入密码,直到密码正确为止。

同学们完成程序的编写后,大致出现了两类解决方案。

这时,教师可以组织学生针对两种不同的解决方案,从运行效果、程序设计思路以及程序的最优化等方面进行讨论,评估哪个解决方案是最佳的。

在教师的引导下,学生通过积极的小组讨论,热烈的组间辩论,达成了共识:方案2为最佳。原因有三点:

第一,从运行效果来看,方案2更简约,表达更清晰。(如图下)

第二,从设计思路来看,方案1把所有的“输入密码”的操作都放到循环里进行。方案2则把第一次“输入密码”放在循环前,以后的“输入密码”均方在循环之中。

第三,从程序的最优化来看,方案2比方案1更简便、更高效。首先,方案2运用了二选一(if…else)条件语句,代替了方案1中两次单选(if)条件语句,语法更简单、合理。其次,方案2中只用一句password=int(input(“密码错误,请再次输入密码:”)),一次性地把方案1中的print(“密码错误”)、print(“请再次尝试输入密码”)和 password=int(input(“请输入密码:”))代替了,表达更优化,运行更高效。

3.5.2 概括。概括是把抽象出来的本质特征综合起来,推广到同类事物上的一种思维过程。在处理同类问题的时候,教师在分析教学内容的基础上,可以用问题引领作为开展教学的切入点,以问题来激活和调动学生的思维,学会解决同类问题的解决方法,促进知识与能力的迁移与提升。

例如:学生完成1+2+3+4+……+n累加求和程序的研究后,对解决这类问题的方法有了一定的了解。这时,我们可以引入数学中阶乘的概念,要求同学们编写一段程序,计算一个大于0的整数的阶乘。建议同学们参考累加求和程序解决方案。

面对问题,学生可能一时联系不上,这时可以问:

师:计算1+2+3+3..+n的累加式子是怎样的,计算n!的式子又是怎样的?两者的差别大吗?

生:差距不大,只是“加号”换成“乘号”,其余一样。

这时,学生很快就找到联系、解决问题了。

4 结束语

培养学生计算思维的本意是对学生进行思维教育。开展思维教育,要立足于学生现有的思维水平和认知水平,符合学生思维形成规律。学生计算思维的培养,要求教师进行教学改革,紧紧围绕定位、定向、瘦身、科学的教学思路,突出学生在教学全过程中的主人地位、主体作用、主动精神,突出教学是师生互动、合作交流、自主探究、动态生成的过程。结合计算思维的特点,透过科学整合教材,优化教学设计,突出计算思维与学科课堂教学的实质性结合。

猜你喜欢

密码程序算法
密码里的爱
哪种算法简便
给Windows添加程序快速切换栏
Travellng thg World Full—time for Rree
试论我国未决羁押程序的立法完善
密码抗倭立奇功
进位加法的两种算法
根据问题 确定算法
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序