本号已推荐《中国信息技术教育》2020年3月刊发表。

计算思维培养的“递进式”活动设计研究

  王静文  淄博实验中学 255090

崔国亮  淄博实验中学  255090

高中信息技术新教材的编程和算法教学注重培养学生的计算思维,体现了新课标发展学生核心素养和学科能力的理念。本文旨在探究如何在课堂教学中设计丰富的学习活动、培养学生的计算思维,并引导学生产生思维迁移以解决实际问题。

一、递进式培养策略概述

信息技术学科与时俱进,不再局限于知识技能和工具操作,而注重培养学生数字化环境下的思维方式,使学生能够合理运用信息技术解决实际问题。为了培养学生的计算思维,新教材的编程和算法教学采用项目式学习方式,让学生在做中学、在学中做。在项目式学习中,应用和实践是学习的载体,活动过程即获得知识和培养能力的过程。

高一学生以前没有接触过Python编程,面对具体的情境,学生能用自己的话说出解决问题的方法,但不知如何用计算机程序实现。比如,判断一个数的奇偶性,通常看它能否被2整除;转换成编程计算,则采用对2取模的方法,判断余数是否为0。学生的计算思维需要慢慢形成,可以从解决简单的问题开始培养,让学生在学习活动中一边熟悉基本语法,一边提升思维能力。

在教学中不断摸索,体会“用教材教”,而不是“教教材”。教材中的资源一般具有普适性,是优质资源,但是不一定满足所有学生的需求。教师可以根据学情,补充相关资源。因此,依据教材资源并结合信息学竞赛辅导资源,设计一系列学习活动,作为教材的补充,可以让活动内容由浅入深,在活动开展过程中递进式地培养学生的计算思维。

二、学习活动一脉相承

依据项目式学习因“需”定“学”的特点,基于课程标准,结合学生的学情,我们对教科版必修1《数据与计算》第2单元“编程计算”的教学内容进行整体规划,设计了一系列递进式学习活动。 

活动1:求一个三位正整数每位上的数字

设计意图:理解通过整除和取模等运算拆分数字的方法;学会定义变量、使用赋值语句。拆分数字的方法也将用于后面的问题解决中。

算法分析:利用 “//”和“%”等算术运算符拆分一个三位数,分别得到每位上的数字。

小结:程序设计采用顺序结构。学生需要区分数学与Python中算术运算符的表示方法与运算功能。

活动2:输入一个三位正整数,判断它是不是回文数。若一个数字从左向右读与从右向左读都一样,我们就将其称之为回文数。

设计意图:结合前面拆分数字的算法提取出百位数和个位数,判断它们是否相等;熟练使用if分支语句进行条件判断。

算法分析:如果数字n的百位数字h和个位数字u相等,则n是回文数,否则不是。

小结:程序设计采用分支结构。学生已经掌握拆分数字的方法,在此基础上,设计判断回文数的算法变得容易一些。

活动3:反转任意位数的正整数,例如:输入123,输出321。

设计意图:理解反转数字的算法思想;了解while语句一般用于循环次数未知的情况。

算法分析:

(1)将x除以10取余,求得个位数,并将它添加到y中;

(2)将x除以10取整,去掉个位数;

(3)重复步骤(1)(2)直到x为0。

(4)输出y

小结:程序设计采用循环结构。算法中不仅包含拆分数字的方法,还包含组合数字的方法,具有一定的难度。活动中教师和学生一起将流程图补充完整,然后学生独自将程序补充完整。

活动4:输出所有的“水仙花”数。所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身 

设计意图:枚举所有的三位数,使用拆分数字的方法,得到各位数字,然后通过计算进行判断;综合运用for循环和分支语句解决问题。

小结:解决这个问题采用了循环+分支的程序结构。学生学习的难点是for语句的循环过程和if语句条件的设置。学生需要注意:range()函数设置两个参数时,会生成一个左闭右开的数字区间;在if语句的条件中两个等号一起使用才能判断相等。

活动5:火柴棒摆数字问题。有任意数量的火柴棒,列出这些火柴棒所能摆出的自然数,要求火柴棒正好用完。

设计意图:在解决问题的过程中,学会使用自定义函数进行程序设计。通过对算法进行优化,学生加深对算法设计的理解。

算法分析:首先确定任意根火柴棒所能摆出的最大数字,火柴棒数量分为奇偶两种情况,偶数根能摆出的最大数字由snum//2个1组成;奇数根火柴棒则先取出三根摆放数字7,然后用剩余的火柴棒摆放(snum//2-1)个1。参考程序如下:

def match_num(num):

#计算一个数字需要多少根火柴棒

f=[6,2,5,5,4,5,6,3,7,6]

if num==0:

total=f[0]

else:

total=0

while (num>0):

x=num % 10

total=total+f[x]

num=num//10

return total

#主程序

snum=int(input('请输入火柴棒数量:'))

if snum%2==0:

n=snum//2

maxnum=int(n*'1')

else:

n=snum//2-1

maxnum=int('7'+n*'1')

print("你可以拼出这些数字:")

for i in range(maxnum+1):

if match_num(i)==snum:

print (i)

算法优化:上述程序中使用“*”运算符返回一个重复若干次的字符串,在Python语言中适用,在VB和C++等语言中都不适用。运用for循环计算任意根火柴棒所能摆出的最大数字,会使算法更加通用,而且不会增加算法的时间复杂度。相应代码修改如下:

if snum%2==0:

maxnum=0

n=snum//2

else:

maxnum=7

n=snum//2-1

for i in range(n):

maxnum=maxnum*10+1

小结:在程序设计中使用了自定义函数。理解自定义函数的难点是函数的调用过程:程序执行从主程序开始,在主程序中遇到自定义函数的调用语句时,才会转到自定义函数执行,自定义函数执行完成将返回值带回给主程序。

拓展活动:十进制转换R进制

算法分析:把十进制非负整数转换为R进制,可使用短除法,即“除R取余,逆序排列”。前面拆分十进制数字重复执行对10取余、再整除10的操作;而十进制转换R进制则重复执行对R取余、再整除R的操作。

小结:十进制转换二进制本来是一个难点,学生不易理解,但是在前面解决了一系列数字问题之后,将解决问题的思维迁移过来,这个问题就迎刃而解了。

在以上活动中所设计的的程序从顺序结构到分支结构、循环结构,再到分支+循环结构,程序结构不断升级。简单的拆分数字方法在后面的活动中不断使用,探究内容保持在学生的最近发展区内。在课堂上,学生积极思考、寻找解决问题的方法。编写代码、调试程序、纠正错误的过程,也使学生感受到编程的乐趣,激发了学生的学习兴趣。

三、教学反思贯穿始终

学生在学习编程与算法之前,可能存在畏难情绪,认为程序代码晦涩难懂,算法设计比较复杂,通过整体规划学习活动,引导学生步步为营,在算法学习中找到乐趣。算法教学是一项连续性工程,学生计算思维的形成也不是短期能实现的,这就需要教师不断反思、不断摸索,梳理教学思路,形成系统的知识框架,引领学生踏上算法学习之路,在路上递进式地培养学生的计算思维。 

(本文系山东省淄博市教育科学重点课题“高中学生信息素养的现状调查及提升策略的研究”研究成果之一。)

小于三位的正整数 正则式_蓝调解码|样板文章,投稿必读:计算思维培养的“递进式”活动设计研究...相关推荐

  1. 小于三位的正整数 正则式_正则表达式

    正则表达式是解决字符串处理问题的利器,大部分替换.匹配字符串的问题都可以用正则表达式来解决. 正则表达式中常用元字符定义如下: d 代表整数 B 代表非边界 D 代表非整数 w 是word的缩写,等价 ...

  2. 颠倒整数的C语言程序,帮忙解决c语言题目1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。2.编...

    共回答了15个问题采纳率:93.3% 1.编写一个程序,用户输入一个小于5位的正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果. #include void main() { int num,t ...

  3. 一个整数称为完全平方数,是指它的值是另一个整数的平方。如81是个完全平方数,因为它是9的平方。请按要求完成:①在三位的正整数中寻找所有完全平方数;例如:144(12*12),676(26*26)

    一个整数称为完全平方数,是指它的值是另一个整数的平方.如81是个完全平方数,因为它是9的平方.请按要求完成: ①在三位的正整数中寻找所有完全平方数; 例如:144(12*12),676(26*26)  ...

  4. python解题教学设计的理解_面向计算思维培养的初中 Python 项目式学习教学设计流程构建...

    2006 年, 美国卡内基梅隆大学的周以真教授提出了计算思维的概念.计算思维是利用计算机科学的基本理念解决问题.设计系统和理解人类行为的一种方法,并指出计算思维的本质是抽象(Abstraction)和 ...

  5. 计算机基础项目任务教学重构,面向计算思维培养的中职课程项目式重构研究

    摘要: 21世纪以来,随着信息技术的飞速发展,有专家指出,计算思维应该是继实验思维和理论思维之后人们应该具备的第三种思维;我国2017年发布的高中信息技术课程标准中明确提出了计算思维的概念,并将其作为 ...

  6. python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...

    面对国际日趋紧张的科技竞争,发展新一代人工智能已成为各国的重要国家战略.人工智能人才的梯队建设是我国发展人工智能技术和推动产业应用的重要基础. 01存在问题 近年来教育部和各省市教育主管部门发布了一系 ...

  7. 大学计算机——所有大学生都应学习的一门计算思维基础教育课程,_大学计算机_所有大学生都应学习的一门计算思维基础教育课程...

    中国大学教学 2011年第4期 "大学计算机"--所有大学生都应学习的一门计算思维基础教育课程 战德臣 聂兰顺 徐晓飞 摘 要:当前,大学非计算机专业计算机课程存在知识型/技能型教 ...

  8. 一个数三位立方和相加等于本身_【题解信奥】打印水仙花数(粉丝求助)

    前言 本题来源于粉丝的求助. 关于粉丝求助的问题,我们会按照先后顺序来解答,并从公众号后台回复答案和解析. 打印水仙花数时间限制: 1000 ms    内存限制: 65536 KB [题目描述] 打 ...

  9. java随机数生成三位数_Java编写一程序编写一程序,实现下面功能.(1)随机产生200个三位的正整数,按每行10个数输出.(2)统计其中偶数和...

    共回答了14个问题采纳率:85.7% /** * 题中所说的生成三位数,这里理解成都是正数.即100-999这些数. * 所以在生成随机数的时候,生成0-899间的数,然后再加上100即得到了100- ...

最新文章

  1. jittor和pytorch生成网络对比之pixelda
  2. bcd编辑工具Linux,​快启动pe系统工具之BCD编辑工具各个功能详细介
  3. 2015年IT领域里Docker和其它颠覆性的趋势
  4. 线性链表java实现_java实现线性单链表
  5. 人工神经网络与生物神经网络
  6. 1. 根据输出的数据,对各个阶维度的反推+2.tf中生成根据指定的shape,tensor的各个阶的维度判断
  7. MongoDB练习题
  8. ibatis动态的传入表名、字段名
  9. Spring boot 之 dubbo 无xml 简单入门
  10. oracle表空间查询维护命令大全之二(undo表空间)
  11. mybatis动态sql传ist集合參与传数组参数
  12. 【Redis笔记】数据结构和对象:字典
  13. win10 安装msys2 和 ruby
  14. Java中使用poi导入、导出Excel
  15. 使用.net的Cache框架快速实现Cache操作
  16. Keras 开发你的第一个 Python 深度学习项目
  17. MySQL sql语句总结
  18. Emoji表情的的文字编码问题
  19. ICP经营许可证需要多久能够下证
  20. 让割草类游戏更有趣的攻击动作设计技巧

热门文章

  1. java线程池最大线程数_Java并发(八)计算线程池最佳线程数
  2. 网页版photoshop使用
  3. JavaScript 扩展运算符
  4. USACO09FEB庙会捷运Fair Shuttleの思路
  5. 华东师范大学2018研究生复试-庙会
  6. 安装win7和ubuntu双系统
  7. Java 位运算(移位、位与、或、异或、非)
  8. Redis 主节点宕机原因及解决方法
  9. pythonocc_PythonOCC基础使用:基础建模指令(重要!!!)
  10. 复旦大学将展示320mW 16核心处理器