本号已推荐《中国信息技术教育》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. 动态修改迅雷的下载地址
  2. Django 一些 简单 配置
  3. 处理多维度变化——桥接模式
  4. python之解析最简单的xml
  5. 多层感知机 深度神经网络_使用深度神经网络和合同感知损失的能源产量预测...
  6. git工作中常用命令
  7. 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数
  8. 问题:虚拟环境名字相同遇到bug,please specify a different sdk name?
  9. C语言中,int、char、float、double各占多少字节
  10. PP苹果助手 v2.3.0 官方版
  11. linux下可以输入中文曲,Ubuntu 14.04终端模式下中文输入听歌
  12. android opengl滤镜,Android OpenGL ES滤镜开发设计
  13. 计算机科学与技术需要什么要求,计算机科学与技术专业需要掌握哪些技能?
  14. Cesium奇幻之旅(一)
  15. 北京大学计算机研究生怎么样,北京大学计算机专业在职研究生怎么样?
  16. 深入Redis数据结构和底层原理
  17. stm32 设置systick中断抢先式优先级
  18. filecoin lotus 图形化测试平台pond
  19. java邮件登录系统设计_基于Java web的邮件管理系统的设计与实现(含源文件).doc
  20. win10 任务栏全透明,一键设置(translucentTB)

热门文章

  1. 【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!
  2. 联想混合云Lenovo xCloud,新企业IT服务门户
  3. java解析excel的工具_Java 解析 Excel 工具 easyexcel
  4. 【邀请函】相约2022中国(南京)软博会,现场见!
  5. 感谢以下老师对软件支持
  6. Unity 接入Facebook
  7. 泛型通配符之PECS
  8. 1、STM32 CubeMx使用教程
  9. 黑龙江交通科技杂志黑龙江交通科技杂志社黑龙江交通科技编辑部2023年第2期目录
  10. 笔记:矩阵行列式求导以及矩阵的逆的求导