APP下载

聚焦计算思维:高中“算法与程序实现”的教学研究

2024-07-25张瑜

中国信息技术教育 2024年13期

摘要:计算思维是信息技术学科的核心素养之一。本研究以发展计算思维为目标,通过创设项目情境、创建数字活动、创新测评方式,探讨如何将计算思维渗透到高中信息技术学科“算法与程序实现”的教学中,提高学生运用信息技术解决问题的能力,发展学生的核心素养。

关键词:计算思维;程序实现;算法设计;信息技术

中图分类号:G434 文献标识码:A 论文编号:1674-2117(2024)13-0034-04

《普通高中信息技术课程标准(2017年版2020年修订)》(以下简称“课标”)将计算思维纳入信息技术学科的核心素养,并指出计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。《高中信息技术课程 必修1数据与计算》(华东师范大学出版社出版)第二单元“算法与程序实现”的内容,包括“算法与算法描述”“程序设计语言基础知识”“常用算法及其程序实现”三部分。从单元内容可以看出,它将计算思维渗透到课程教学中,围绕简单算法的学习,提高学生利用信息技术解决问题的能力,引导学生理解当今数字化世界的运转方式,促使学生成为合格的数字公民。因此,通过“算法与程序实现”的教学培养高中学生计算思维显得尤为重要。

创设项目情境,渗透计算思维

课标倡导通过项目学习的方式,即依据信息技术学科理论性、工具性和实践性并重的特点,设计活动情境,引导学生在解决问题的过程中感受信息技术对日常生活的影响,提高利用信息技术解决问题的能力。因此,教师应紧密联系学生的现实生活和学习实践,适度设置基于真实情境的学习任务、典型案例或研究性项目活动,以引导学生在问题解决的过程中,将“学技术”与“用技术”有机融合,主动理解知识、掌握技能、发展能力。

1.创设问题情境,激活学生思维

教师要善于创设不同的问题情境,鼓励学生依据解决问题的需要,设计和表示简单算法,运用计算思维形成解决问题的方案。例如,在讲解算法概念时,可引入经典过河问题:农夫要带一匹狼、一只羊和一篮蔬菜过河,但小船每次只能载其中的一件,而且农夫不在场时,狼会吃羊,羊会吃蔬菜,那么农夫如何安全地带它们过河?然后,通过对这一问题的分析(如下页表),引导学生形成解决问题的方案,以此引出算法的概念。同时,引导学生在解决过河问题的过程中感受算法,从而认识到计算机使用算法对问题解决的重要意义。

2.创设生活情境,启发学生思维

创设程序实现的生活情境,有助于启发学生的思维。教师应选择与学生日常生活相关的主题,设计项目情境,引导学生运用恰当的描述方法和控制结构,表示简单算法。例如,生活中的智能跑步项目,教师可设计“计算BMI指数”“解密BMI指数”“平均BMI指数”等活动情境,组织学生在解决BMI健康管理问题的过程中探究顺序结构、分支结构和循环结构的特征。在此,顺序结构强调按先后顺序依次执行算法中的各个步骤;分支结构要求根据给定的条件进行判断,再依据判断结果的不同来执行不同的操作;循环结构则根据条件重复执行某一部分的操作,其中重复执行的部分称为循环体。学生通过智能跑步项目的实施,能分析生活中的BMI健康管理问题,并采用计算机可以处理的方式抽象特征,设计解决生活问题的算法(如图1)。

3.创设游戏情境,激发创新思维

对于游戏情境中创设的趣味性任务,学生通常会主动挑战,积极探索解决问题的方案。例如,对生活中最常见的“石头、剪刀、布”游戏,教师可将其转化为程序游戏,使游戏过程从学生自己与同学猜拳,转变为和电脑猜拳,以增强学生的探究欲望,激发学生的主观能动性。学生通过活动体验,能提取猜拳问题的基本特征,进行抽象处理(如图2),从而运用合理的算法形成解决猜拳问题的方案。

创建数字活动,培育计算思维

课标指出,计算思维作为一种思维方式,需要在解决问题的过程中不断经历分析思考、实践求证、反馈调适而逐步形成。当面对特定的问题时,往往需要根据设计的算法编写特定的程序来解决问题。因此,教师要引导学生采用计算机科学领域的思想方法界定问题、抽象建模、设计算法、编程调试,逐渐形成解决问题的方案,并迁移到与之相关的其他问题的解决中。

1.设计算法,开拓思维

课标指出,对问题的抽象或形式化描述是算法的基础,算法的每一步都是一个准确表达的步骤或指令,其目的在于用一系列这样的步骤在有限的时间内解决实际问题。因此,在设计算法时,教师应引导学生分析问题,将解决问题的方法归纳为一系列清晰准确的步骤。学生在活动体验中,可以理解利用算法进行问题求解的基本思想和方法,明确算法的有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出这五个特征,知道解决同一个问题可以有不同的算法。

以“智能跑步”项目为例,基于BMI指数参考标准设计算法,输入身高(单位m)和体重(单位kg),计算出BMI指数,并判断身体的健康情况。学生经过分析,发现解决BMI指数健康问题存在多种不同的算法,可以使用双分支结构,也可以使用多分支结构。该问题的自然语言描述,需要五个有限步骤:①输入身高;②输入体重;③根据公式,计算BMI指数;④判断BMI指数健康情况;⑤输出健康状况。而结合BMI指数参考标准,在判断BMI指数健康情况时,可以分“正常”“需注意”两种情况,也可以分“正常”“偏胖”“偏瘦”三种情况,甚至更多(如图3)。

2.编写程序,增强思维

课标要求学生掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法;通过解决实际问题,体验程序设计的基本流程。因此,教师可从实际问题入手,结合Python语言的学习,引导学生根据算法设计,用Python语言编程解决实际问题。在解决问题的过程中,教师应注重思路和方法的引导,培养学生计算思维。

以“查找水仙花数”项目为例,可通过让学生编写程序,实现输出所有的“水仙花数”,从而用枚举算法解决经典数学问题“水仙花数”。“水仙花数”是一个三位数,其每个位上的数字的立方和等于该数本身,如153,有153=13+53+33。学生在用Python语言实现枚举算法时,需要明确“水仙花数”的枚举范围是100~999之间的整数,且步长为1;其验证条件为“百位数3+十位数3+个位数3==数本身”。教师可以结合学生学情,着眼于最近发展区,分层设计不同难度系数的数字活动。例如,“水仙花数入门挑战”的活动难度系数最低,教师提供大部分代码,要求学生填写枚举范围“range(100,1000)”和验证条件“i**3+j**3+k**3==n”。又如,“水仙花数探秘之旅”的活动难度系数为中,教师提供部分代码,不仅要求学生填写枚举范围和验证条件,还要求学生设计个位数、十位数和百位数的程序代码。

3.调试运行,优化思维

调试运行是指通过对编写的程序进行测试,修正其中可能有的语法错误或逻辑错误的过程。调试、优化是保证程序更加正确合理的必不可少的步骤。学生通过不断调试程序,理解程序执行的逻辑过程,提高用信息技术解决问题的能力。在编写程序时,学生可能会出现五花八门的错误,常见的错误有数据类型错误、语法错误、逻辑错误等,教师要善于捕捉这些动态生成的资源,引导学生在“尝试→验证→修正”的试错过程中,反复经历计算思维的全过程,逐渐形成解决问题的方案。

(1)数据类型错误

数据类型错误是指在程序中对不同类型的数据进行不正确的操作,如字符串型与整型相加。在计算BMI指数时,学生可能会出现数据类型错误,编写的错误代码为:weight=input(“请输入体重(kg):”)。该赋值语句返回的体重的数据类型为字符串型,导致后续BMI公式计算时程序错误或异常。为了解决这个问题,学生对代码进行了优化,修改为:weight=float(input(“请输入体重(kg):”))。这段代码将输入的体重作为字符串接收,并使用float()函数将其转换为浮点型,从而确保了数据类型的一致性,使得后续操作能正确进行。这种优化方式有效地解决了数据类型的错误问题,确保了程序的稳定运行。

(2)语法错误

语法错误是指在程序中违反编程语言的语法规则,如拼写错误、缺少分号或冒号、括号不匹配等。语法错误是学生编程过程中最常见的一种错误类型,通常是程序无法编译或解释的主要原因之一。学生在使用Python编程时,通常会在编写分支结构的代码时犯一些常见的错误,如忘记在if语句后面添加冒号,在编写输入、输出的代码时往往出现括号、引号不匹配等现象。这些简单的语法错误可能会导致程序无法正常运行,因此教师需着重指导学生通过观察Python程序运行的及时反馈,从标点符号、拼写错误等语法角度重新审视程序,并不断进行调试、优化,从而使程序能够正常运行。

(3)逻辑错误

逻辑错误是指在程序代码中的错误,这种错误可能会导致程序能够执行,但无法产生预期的结果。逻辑错误通常是由学生对问题的理解不正确,或者算法实现有误引起的。与语法错误不同,逻辑错误不一定会阻止程序的编译或运行,但会导致程序结果异常或错误。例如,当面对枚举算法的验证条件为“是否能被57或67整除”时,学生可能对逻辑运算符and和or的理解存在偏差,编写了错误的判断条件i%57==0andi%67==0,从而导致程序能够运行,但是结果出错。为了解决这个问题,需要重新审视代码,分析错误产生的可能原因,以此引导学生根据测试Python程序时所发现的问题,做进一步诊断,找出原因,想出办法,逐步提升问题解决的效率和质量。

创新测评方式,发展计算思维

评价应依据课程标准,聚焦学科核心素养,将编程解决问题的四个步骤——抽象建模、设计算法、编写程序、调试运行,融入测评活动,让学生在合作、探究、反思中,运用计算机科学领域的思想方法分析、解决问题,形成这一类问题的解决方案,发展计算思维。

1.表现性评价,点亮个体思维

评价方式可以多样化,但应注重鼓励性、发展性,如示意全班同学一起鼓掌,或自己点头表示肯定并伴以一两个赞赏性词语等。在高中“算法与程序实现”单元实施测评时,教师应尊重学生的编程水平的个体差异,不能仅依赖于传统的分数或等级来评估学生的表现,或仅依赖于是否完成编程作品来评估学生的表现,而要适时采用表现性评价语言,激发学生内在的学习动机。

2.过程性评价,强化过程思维

过程性评价要求记录学生的学习状况,客观评估学生的学习过程。因此,在高中“算法与程序实现”单元实施测评时,教师还应采用过程性评价,从计算思维出发,记录学生使用Python语言编程解决问题的形式化、模型化、自动化的发展过程,强化过程中的计算思维运用。

3.总结性评价,发展综合思维

总结性评价着眼于学生在一段时间内的学习成果和综合能力的发展,重点关注学科核心素养,全面评估项目活动的最终效果。在高中“算法与程序实现”单元实施测评时,教师可以通过编程项目活动进行综合测评,具体从算法与算法描述、程序设计语言基础知识、常用算法及其程序实现三方面评估学生是否已达到相应的学习目标和学科核心素养的发展,进而帮助学生发展学科核心素养,促使学生培养信息社会的责任意识,从而更好地适应现代社会的需求。

参考文献:

中华人民共和国教育部.普通高中信息技术课程标准(2017年版2020年修订)[S].北京:人民教育出版社,2020.