余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

一堂意想不到的数学(英语)编程课--苹果swiftplaygrounds编程

xiyangw 2022-12-03 12:40 18 浏览 0 评论

前言:

在英语的教学过程中。我发现只有把英语当做一个工具,才能让孩子们真正学好英语,并且掌握它。

背景介绍:

swiftplaygrounds是苹果公司推出的专门锻炼逻辑思维的编程启蒙游戏,通过游戏通关的方式让孩子掌握swift编程的基本知识。它与scratch猫抓编程, 或者是国内的编程猫等其他编程启蒙最大的不同之处在于,去除了浮夸酷炫的游戏效果,在类似于迷宫的立体实际环境中锻炼实际解决问题的能力。每个编程知识都会设定难度逐增的关卡。在层层递进的关卡中,循序渐进的学习相关编程知识。而且越到后面,每一关都会有好几种解决问题的方法,需要综合灵活运用前面所学的编程知识。

最后,经过不断的浴血通关战斗,学习者的逻辑思维会有一个质的提升,特别是对逻辑运算符的应用会相当的娴熟,这为以后正式学习swift语言或者其他编程语言打下坚实的基础。

今天我们讲下如何用数学知识来解决看似很难的编程关卡--随机宝石遍布各处。

宝石随机出现在各处,每次的数量都不一样

视频加载中...

首先,我让学生们自己观察下这一关的特点,然后让他们说出观察到的情况。(几分钟后)

学生A说:这一关好诡异,每运行一次,宝石所在的位置都不同,而且每次宝石出现的数量都不一样。

学生B说: 怎样控制两个不同颜色的传送门,该用什么变量控制呢?

老师说:大家观察得都很仔细,问得也很好,我们知道单单用收集宝石到的数量无法控制传送门的状态(开或者关),那么 我们是否应该增加一个变量来控制传送门,并且在收集指定宝石后就让小怪物停止走动。

过了10分钟同学们还是一筹莫展,个个眉头紧锁。

我就给了点提示,“大家试试用转身的次数做为变量试试。”

又过了10分钟,A同学已经做出来了,他很兴奋,赶紧拉我进去看他写的程序代码,“老师老师,我做出来了!”

我看了下他的代码,稍显冗长但是整体做得还不错,我就让他把代码优化下,原本他的代码如下:

If turnAround==1||turnAround==3||turnAround==5 {

pinkPortal.isActive=false

bulePortal.isActive=false

}

If turnAround==2||turnAround==4||turnAround==6 {

pinkPortal.isActive=true

bulePortal.isActive=false

}

因为这两种情况是相对立的,所以我建议他用if--else语句。

代码优化如下:

If turnAround==1||turnAround==3||turnAround==5 {

pinkPortal.isActive=false

bulePortal.isActive=false

}else {

pinkPortal.isActive=true

bulePortal.isActive=false

}

然后我问他,在这一关中最多出现8颗宝石,我们现在的方法只适用于最多收集8颗宝石,如果宝石数量是100颗,我们该怎么办?

同学们又陷入的沉思中,过了一会儿,学生B说:“我发现转身的次数是有规律分布的,1,3,5 和数字2,4,6, 分别是基数和偶数。那该如何用代码表达这种情形呢?”

我看时间已经成熟,就和学生讲;“B同学分析得很好,1,3,5是基数,2,4,6是偶数。我们可以用数学余数的知识把这个具体的解决方案宽泛化。

我们知道1,3,5被2除的话,余数是1,用编程的语言可以这样写turnAround%2!=0(即余数不等于0),而2,4,6被2除的话,余数是0;所以当余数不等于0的时候让所有的传送门都关闭,否则就让它们开着。

具体代码如下:

If turnAround%2!=0 {

pinkPortal.isActive=false

bulePortal.isActive=false

}else {

pinkPortal.isActive=true

bulePortal.isActive=false

}

然后我和学生说,大家看这个方法适用性更广,代码反而更简洁了。同学们纷纷点头赞同。

学生C说;“老师,是否还有别的办法呢?”

我说;“当然还有更好的办法,但是大家先用步数做变量把这个关卡再通关下。”

底下的学生既哀嚎又兴奋的做了起来,看着他们那么投入,我感觉特好。

这堂课让他们明白:

1.只要对解决问题有帮助的因素都可以设定为变量。

2.用数学知识可以高效的解决编程的问题。

3.认识解决方案的局限性及如何把这个方案适用性更广

完整解决方案如下--仅供参考

相关推荐

前后端分离 Vue + NodeJS(Koa) + MongoDB实践

作者:前端藏经阁转发链接:https://www.yuque.com/xwifrr/gr8qaw/vr51p4写在前面闲来无事,试了一下Koa,第一次搞感觉还不错,这个项目比较基础但还是比较完整了,...

MongoDB 集群如何工作?

一、什么是“MongoDB”?“MongoDB”是一个开源文档数据库,也是领先的“NoSQL”数据库,分别用“C++”“编程语言”编写,使用带有“Schema”的各种类似JSON的文档,是也分别被认为...

三部搭建mongo,和mongo UI界面

三步搭建mongo,和mongoUI界面安装首先你需要先有一个docker的环境检查你的到docker版本docker--versionDockerversion18.03.1-ce,b...

Mongodb 高可用落地方案

此落地方案,用于实现高可用。复制集这里部署相关的复制集,用于实现MongoDB的高可用。介绍MongoDB复制集用于提供相关的数据副本,当发生硬件或者服务中断的时候,将会从副本中恢复数据,并进行自动...

一次线上事故,我顿悟了MongoDB的精髓

大家好,我是哪吒,最近项目在使用MongoDB作为图片和文档的存储数据库,为啥不直接存MySQL里,还要搭个MongoDB集群,麻不麻烦?让我们一起,一探究竟,继续学习MongoDB分片的理论与实践,...

IDEA中安装MongoDB插件-再也无要nosql manager for mongodb

大家都知道MongoDB数据库作为典型的非关系型数据库被广泛使用,但基于MongoDB的可视化管理工具-nosqlmanagerformongodb也被用的较多,但此软件收费,所以国内的破解一般...

数据库监控软件Lepus安装部署详解

Lepus安装部署一、软件介绍Lepus是一套开源的数据库监控平台,目前已经支持MySQL、Oracle、SQLServer、MongoDB、Redis等数据库的基本监控和告警(MySQL已经支持复...

YAPI:从0搭建API文档管理工具

背景最近在找一款API文档管理工具,之前有用过Swagger、APIManager、Confluence,现在用的还是Confluence。我个人一直不喜欢用Swagger,感觉“代码即文档”,让代...

Mac安装使用MongoDB

下载MongoDB包:https://www.mongodb.com/download-center解压mongodb包手动解压到/usr/local/mongodb文件夹配置Mac环境变量打开环境...

保证数据安全,不可不知道的MongoDB备份与恢复

大家在项目中如果使用MongoDB作为NOsql数据库进行存储,那一定涉及到数据的备份与恢复,下面给大家介绍下:MongoDB数据备份方法在MongoDB中我们使用mongodump命令来备...

MongoDB数据备份、还原脚本和定时任务脚本

备注:mongodump和mongorestore命令需要在MongoDB的安装目录bin下备份脚本备份格式/usr/local/mongodb/bin/mongodump -h ...

等保2.0测评:mongoDB数据库

一、MongoDB介绍MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产...

MongoDB入门实操《一》

什么是MongoDBMongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之...

Python安装PyMongo的方法详细介绍

欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练、PDF电子文档、面试集锦、学习资料等。前言本文主要给大家介绍的是关于安装PyMongo的...

第四篇:linux系统中mongodb的配置

建议使用普通用户进行以下操作。1、切换到普通用户odysee。2、准备mongodb安装包,自行去官网下载。3、解压安装包并重命名为mongodb4.04、配置mongodbcdmongod...

取消回复欢迎 发表评论: