基于问题解决为核心的计算思维培养策略

2020-05-11 05:52华骥良
考试周刊 2020年28期
关键词:计算思维核心素养

摘 要:高中信息技术新课标将培养学生的信息技术学科核心素养作为了课程目标。计算思维是信息技术学科核心素养中非常重要的一个维度,本文以查找算法為例,初步探讨了基于问题解决为核心的计算思维培养。

关键词:高中信息技术新课标;核心素养;计算思维;基于问题

浙江省在2014年颁布了新的高考方案,将信息技术和通用技术合二为一,组成了技术学科作为高考七选三中的一门学科,成绩计入高考总分。信息技术的考试方式也由上机考试转变成纸笔考试,而信息技术学科中的重要学科内容《算法与程序设计》也成为考查的重点,同时也是学生学习的难点。

一、 《算法与程序设计》模块学习中学生的常见难点问题

(一)开关变量的设置与使用

例1 【2015年10月选考真题】n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List 1中显示排序前数据,单击“排序”按钮Command 1,在列表框List 2中显示这些数据按升序排序后的结果,在标签Label 3中显示排序过程的加工遍数。

实现上述功能的VB代码如下,但加框处代码有错,请改正。

定义变量及初始化略

Private Sub Command1_Click()

Dim flag As Boolean flag值为True表示一遍加工中发生过交换

i=1

flag=True

Do While i<=n-1 or flag=True

flag=False

For j=n To i+1 Step-1

If a(j)

k=a(j):a(j)=a(j-1):a(j-1)=k

Flag=True

End If

Next j

i=i+1

Loop

Label3.Caption=”排序过程的加工遍数为”+str(i)

输出略

End Sub

分析:题目通过对教学大纲要求掌握的冒泡排序算法做了一定的改进,引入逻辑型变量作为开关变量使用来考查学生。由于外层循环从原来的For循环变化为Do while循环,并且使用了由逻辑运算符连接的关系表达式(方便使用开关变量),造成许多学生对算法的理解及知识的迁移出问题。这也体现出学生利用计算机解决问题的过程中缺乏对逻辑型变量的深入理解及算法迁移的能力。

(二)合理数据数据结构的抽象

例2 编写解决如下问题的程序。一共十名士兵围坐一圈。每人有一个编号分别为1,2……10。以数值n进行循环报数(该数值由排长决定),报到n的士兵出列,出列后下一个士兵以1开始继续报数,循环往复直到全部士兵出列,求出列士兵的编号顺序?

分析:该问题是一个典型的约瑟夫环问题。题目要让士兵围坐一圈,如何抽象士兵并使其围坐一圈,是将实际问题抽象特征、建立结构模型、合理组织数据,并将实际问题处理成计算机能处理问题的重要环节。最直观的可以使用链表数据结构存放士兵编号来抽象实际问题,但高中信息技术教学中一般不涉及链表。因此抽象并形成首尾相接的数据结构成为一个难点。这类问题也是学生遇到的常见问题之一。

(三)嵌套逻辑程序模块的正确理解与应用

例3 【2019年6月杭州市统测信息试题】小强设计一个“文本编辑”程序,实现对字符串s进行插入和删除操作,操作信息由操作符(“+”表示插入,“-”表示删除)和操作字符串构成,以“#”结束。插入操作由插入位置和插入字符串(只包含英文字母)构成,删除操作由删除开始位置和删除长度构成。例如:“+11abc”表示在字符串s第11个位置插入“abc”,“-4:3”表示删除字符串s中第4个位置开始的连续3个字符。

小强编写的“文本编辑”VB程序运行界面如图所示,文本框Text 1中的内容是初始字符串,文本框Text 2中的内容是操作信息,单击“操作”按钮Cmd 1后,在标签Label 4中显示结果字符串。

(1)加框处的程序代码有错,请改正。

(2)在划线处填入合适代码。

Private Sub Cmd 1_Click()

Dim s As String,t As String,ch As String

Dim c As String,num As Integer,ss As String,f As String

Dim n As Integer,n1 As Integer,i As Integer,k As Boolean

s=Text 1.Text: t=Text 2.Text

c="": num=0: ss=s: f=""

For i=1 To Len(t)

ch=Mid(t,i,1)

If ch >="a" And ch <="z" Or ch >="A" And ch<="Z" Then

c=c+ch

ElseIf ch >= "0" And ch<="9" Then

n=Val(ch)

Else

If ch=":" Then

n1=n

ElseIf f="-" Then

If n1=1 Then

函数Mid(x,y)返回字符串x第y位到最后的子串

s=Mid(s,n+n1)

Else

′(3)填空

End If

ElseIf f="+" Then

s=Mid(s,1,n-1)+c+Mid(s,n)

End If

If ch="+" Or ch="-" Or ch="#" Then

f=ch

If i <> 1 Then ss=ss + "→" + s

End If

n=0

c=""

End If

Next i

Label 4.Caption = ss

End Sub

分析:该试题的外层For循环是逐个处理操作信息字符串,这类操作比较常规。For循环中依据字符串内容的不同要分情况讨论,并做相应的处理。这是一个相对复杂的判断逻辑结构,这就要求学生具备通过判断、分析与综合各种信息,运用合理的算法解决问题的能力,而这也往往是学生缺乏的。

通过以上几个学生存在思维困难的典型案例可知,在高中阶段的信息技术学习中如何培养学生的计算思维能力是一个亟待解决的问题。

二、 新课程标准中的计算思维

国家高中信息技术教育的顶层设计者们已经看到了这个问题。2017版的《普通高中信息技术课程标准》中将信息技术学科核心素养是由信息意识、计算思维、数字化学习与创新、信息社会责任四个核心要素组成。新课标中描述计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。具备计算思维的学生,在信息活动中能够采用计算机可以处理的方式界定问题、抽象特征、建立结构模型、合理组织数据;通过判断、分析与综合各种信息资源,运用合理的算法形成解决问题的方案;总结利用计算机解决问题的过程与方法,并迁移到与之相关的其他问题解决中。

三、 基于问题解决为核心的计算思维培养

那么在具体的教学过程中如何来培养学生的计算思维能力呢?笔者认为可以尝试用基于问题解决的方式来进行。

问题解决从心理学的角度讲是指一系列有目的的认知操作过程。一般有三个基本特征,第一,是一种思维活动,即在问题解决的过程中,必须有认知成分的参与。第二,具有目的指向性,问题解决过程具有明确的目的。第三,包含一系列的操作,即问题解决包含一系列的心理步骤。

基于问题解决的教学是指教师通过引发、促进、支持和指导学生的问题解决活动,来完成学科教学任务的一种教学方式。这种教学以问题的提出和解决为线索组织教学过程,问题和问题解决是它的两个关键要素,教师就学习目标和内容设计问题,学生以类似问题解决的过程、方法和形式进行学习,在解决问题的过程中获取和应用隐含于问题背后的学科知识与技能,解决问题的能力也得以发展。

笔者认为在基于问题解决教学中问题的设计是最为关键的环节,应该遵循以下几个原则。第一,问题尽量符合现实生活实际,使学生有直观感受。第二,问題设计要能紧扣学习内容和学习目标。第三,问题要能引导学生建构和发展学科知识、学科技能和学科思维。第四,问题的设计要适应当前的教学对象。

新课标的基本理念中提到要培育以学习为中心的教与学关系,在问题解决中提升信息素养。可见以学生为主体,以问题解决过程为主要的媒介来提升学生的认知能力和信息素养,应该是一种比较推荐的方法。下面以《算法与程序设计》模块中的查找算法教学为例,设计一系列的问题,通过问题解决来提升学生的计算思维。以下描述问题及其解决过程主要分为问题设计,问题的探究与解决,计算思维的培养,核心素养水平分级,发展性问题这几个方面。

(一)用程序设计的方法模拟实现Word中的查找、替换功能。

1. 问题设计

文档编辑软件Word大家经常使用,里面的查找、替换功能对于文档编辑很有帮助。要求用程序设计的方法模拟该功能。

2. 问题探究与解决

3. 计算思维的培养

该问题解决过程中主要培养了学生的抽象问题中的数据特征,建立结构模型(形式化);运用合理的算法,形成解决问题的方案;利用计算机及高级语言处理问题等素养。

4. 核心素养水平分级

该问题达到分级水平1。

5. 发展性问题

顺序查找算法与学过的什么算法是类似?

(二)对分查找中查找范围标志(L,R)的移动问题

1. 问题设计

假定数组中的数据已成升序排列,对分查找的标准程序如下(用自定义函数表达):

Function search(key As Integer,L As Integer,R As Integer) As Integer

Dim mAs Integer

Do While L <= R

m = (L + R) \\ 2

If key = a(m) Then

search = m

Exit Function

ElseIf key < a(m) Then

R=m-1 ′①

Else

L=m+1 ′②

End If

Loop

search=0

End Function

①,②两处是移动L、R,缩小查找范围的代码。现在的问题是,是否能将①处改成R=m,②处改成L=m,或者修改其中一处?

2. 问题探究与解决

3. 计算思维的培养

该问题解决过程中主要培养学生熟悉对分查找的基本方法。使用模型化的方法来分析数据,进一步研究算法的内在含义,提高对算法的理解程度和应用能力。

4. 核心素养水平分级

该问题达到水平分级1。

5. 发展性问题

循环条件是否能从L<=R改为L

(三)顺序查找与对分查找的效率比较问题

1. 问题设计

假定要查找的值都能在数组中找到的情况下,对分查找的效率一定比顺序查找高吗?

2. 问题探究与解决

3. 计算思维的培养

分析问题及信息,建立结构模型,合理组织数据并进行适当的归纳,进而得出结论。

4. 问题水平分级

该问题达到水平分级2。

5. 发展性问题

順序查找和对分查找的时间复杂度问题。

(四)利用对分查找思想设计的插入排序算法中数据插入位置的分析与讨论

1. 问题设计

(1)给出利用对分查找思想设计的查找插入位置的主要程序段示例。

假设待插入数值存储在变量Key中,数据存放在a数组中,且呈升序排列。程序的主要部分如下:

Do While L<=R

m=(L+R)\\2

IF key<=a(m) Then

R=m-1

Else

L=m+1

EndIF

Loop

(2)如上算法所示,插入位置应该是哪个位置,如何表示?

(3)如果数组内已有值与待插入的值相同,则新插入值的位置是在相同值的左边还是右边?

2. 问题探究与解决

3. 计算思维的培养

能提取问题的基本特征,运用基本算法解决问题。有分析数据,分析算法的能力。

4. 问题水平分级

该问题达到水平分级1。

5. 可迁移问题

如果降序排列如何设计类似算法?

四、 小结

计算思维的培养是学生信息技术学科核心素养培养的重要组成部分。本文试图以查找算法为例,利用字符、字符串的查找、替换,对分查找中查找范围标志(L,R)的移动问题,顺序查找与对分查找的效率比较问题,利用对分查找思想设计的插入排序算法中数据插入位置的分析与讨论这几个问题的设置,说明如何通过问题的合理设计来组织与引导学生熟悉算法、探究问题,提高学生的学科认知能力,实施基于问题解决的计算思维的建构与培养。

参考文献:

[1]李艺,钟柏昌.信息技术课程核心素养体系设计问题讨论[J].理论探讨,2016(4):5-10.

[2]解月光,付海东.高中学生信息技术学科核心素养的描述与分级[J].中国电化教育,2015(5):8-14.

[3]任友群,黄荣怀.高中信息技术课程标准修订说明[J].中国电化教育,2016(12):1-3.

[4]李慧桂.基于问题解决的高中信息技术新课程教学研究[D].金华:浙江师范大学,2006.

作者简介:华骥良,浙江省杭州市,浙江省杭州第二中学。

猜你喜欢
计算思维核心素养
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养
作为“核心素养”的倾听
“1+1”微群阅读
向着“人”的方向迈进
核心素养:语文深度课改的靶向