点击这里,现在就开启CodeMonkey的趣味编程之旅。

目标

  • 了解什么是变量
  • 了解变量的命名规则
  • 掌握如何使用变量

变量

什么是变量?顾名思义,变量就是可以变化的量。

和变量相对的是常量,即不可变化的量。例如数字1、2.5等等,它们都是常量。

在使用变量之前,我们首先要给变量取一个名字,这样我们才能使用这个变量。

变量名只能使用数字、字母和下划线,并且不能以数字开头。

例如,d是一个合法的变量名,而2d则是不合法的,它不能用作变量名。

在定义变量的同时,我们一般都会对它进行赋值,这一过程也称做变量的初始化

d = 2       # 定义一个名字为d的变量,将其初始化为2

以上语句即定义了一个名字为d的变量,它的值是2。

我们可以把变量想象成是一个盒子,在它里面存放着数据(2),为了方便查找,我们在盒子外面写了一个d,用来表示这个变量的名字。

当我们以后需要用到这个盒子里面的数据时,我们只用写出盒子的名字d就行了。

step 2*d

因为变量d里面存放的是数据2,所以,上述语句等同于:

step 4

看到这里,你也许会问,我为什么不直接写成 step 4 , 这样不是更加地简单明了吗?

你说得没错,在这里确实体现不出使用变量的优点。现在,让我们看一个例子,你就知道变量有多么大的用处啦!

使用变量

下面是我设计的一个关卡,用于说明为什么要引入变量这一概念。请看下图:

上图右侧给出了最直接,同时也是最笨的解题方法。

如果忽略每次移动的步数的差别,那么,这段代码是可以使用times循环简化成如下的形式的:

12.times ->

....step d     # 请先忽略这个d

....turn left

但是关键问题是,由于每次移动的距离都是不一样的,所以没法直接写成上述形式。

所以,我们引入了变量,有了变量,这可就好办了。

很明显,小猴子每次移动的步数都是递增的,它每次都比上一次多走2步。

于是,我们可以定义一个变量,它的名字是d,我们用它来表示每次小猴子移动的距离,并给它一个初始值2。

每移动一次之后,让变量增加2。

这样,我们能得到了以下的代码:

d = 2       # 定义变量d,赋初始值2给它

12.times ->    # 将以下的代码循环执行12次

....step d     # 小猴子移动d步

....d = d + 2    # d递增2

....turn left     # 小猴子左转

怎么样,再对比一下上图的笨办法,这样写是不是顿时简单清爽好多啦?

来看一看运行结果:

这就是为什么要引入变量的原因,你现在了解了吧?

好了,本章内容就到这里了,赶紧利用本章所学知识去闯关吧!

作业

  • 故事模式 31 - 50 关
  • 进阶模式 4-1 - 4-20 关

小结

  • 变量的值是可以变化的。
  • 变量名不能以数字开头。
  • 变量常常配合times循环使用。

问答

  • 怎么能玩到你创建的那一关

    点击这里,你可以尝试来给出你自己的解决方案。
  • 怎么样才能体验更多的关卡?

    点击这里,即刻开始了解更多CodeMonkey有趣课程。
  • 内容还不错,但这文章排版实在不行啊?

    点击这里,获取更好的阅读体验。

CoeMonkey少儿编程第4章 变量的更多相关文章

  1. CodeMonke少儿编程第1章 step与turn

    第1章 step与turn 目标 了解游戏舞台的各组成部分 掌握step和turn指令的用法 说起计算机,对于不了解它的人来说,也许会感到有些神秘,其实不然,它不过是能够接收指令并且按照指令执行的一种 ...

  2. CodeMonkey少儿编程第2章 turnTo对象

    目标 了解对象的概念 了解方法与对象的关系 掌握turnTo指令的用法 在开始本章的学习之前,我们先来复习一下上一章的知识点. 在第1章中,我们学会了在这个游戏中最简单的两个指令. step x 其中 ...

  3. CodeMonkey少儿编程第3章 times循环

    目标 了解程序由哪三种基本的结构组成 了解循环的概念 掌握times的结构与用法 三种基本结构 计算机程序由三种最基本的结构组成,它们分别是: 顺序结构 循环结构 选择结构 千万不要被这些陌生的术语给 ...

  4. CodeMonkey少儿编程第7章 函数

    目标 了解函数是什么 掌握如何定义一个函数 函数是什么 本章我们学习一个新的概念----函数. 你可以简单的将函数看作为一个黑匣子,给它输入参数后,它将会按照一定的规则,执行相应的指令或输出数据. 让 ...

  5. 异步编程系列06章 以Task为基础的异步模式(TAP)

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  6. C++ Primer 读书笔记 第2章 变量和基本类型

    C++ Primer 第二章 变量和基本类型 2.1 基本内置类型 C++定义了一组表示整数.浮点数.单个字符和布尔值的算术类型(arithmetic type),此外还定义了Void类型. 算术类型 ...

  7. 使用Scratch进行少儿编程

    在上一篇<初识少儿编程>曾提到过Scratch的脚本标签内包含10大模块,本文将围绕这10大模块展开,分为两部分:积木和编程概念,结合<动手玩转Scratch2.0编程―STEAM创 ...

  8. 3-8《Ruby元编程》第二章对象模型

    <Ruby元编程> 第二章 对象模型 类定义揭秘inside class definitions: class关键字更像一个作用域操作符,核心作用是可以在里面随时定义方法. [].meth ...

  9. 少儿编程|Scratch编程教程系列合集,总有一款适合你

    如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...

随机推荐

  1. 推荐一款最强Python自动化神器!再也不用写代码了!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: seleniu ...

  2. Python之matplotlib画图

    折线图: Matplotlib处理csv文件 这里写两个其他的. 柱状图,柱状图个人喜欢用pygal来画,有两篇文章 - Pygal之掷骰子 和 pygal之掷骰子 - 2颗面数为6的骰子.下面用ma ...

  3. 论文阅读: A Review of Robot Learning for Manipulation: Challenges, Representations, and Algorithms

    机器人学习操纵综述:挑战,表示形式和算法 1.介绍 因此,研究人员专注于机器人应如何学习操纵周围世界的问题. 这项研究的范围很广,从学习个人操作技巧到人类演示,再到学习适用于高级计划的操作任务的抽象描 ...

  4. VS中使用RDLC提示类型不一致

    问题描述 错误"基类包括字段"XXXXXXX",但其类型(Microsoft.Reporting.WebForms.ReportViewer)与控件(Microsoft. ...

  5. apk获取md5值的方法

    最简单的获取md5值和sha1值的方法,就是使用在线工具,在线上传.keystore或apk文件,就可以获取其sha1值 https://www.yunedit.com/sha1 安卓应用都使用一个签 ...

  6. Android 自定义构建类型 BuildType

    简单介绍了 BuildType 定义在 app 项目与 module 项目的区别,以及在 Gradle 2.x 与 3.x 版本的区别. 最近接触到自定义构建类型 BuildType,发现这一块有些地 ...

  7. JAVA基础之接口

    接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...

  8. 相对于Statement,PreparedStatement的优点是什么?

    优点: 1.PreparedStatement有助于防止SQL注入,因为它会自动对特殊字符转义. 2.PreparedStatement可以用来进行动态查询. 3.PreparedStatement执 ...

  9. 使用pdf.js aspose各种文档转PDF 版本对应license.xml 去水印破解

    在使用pdf.js途中,使用aspose转换的文件一直有水印,在网上找了许多破解办法都是已经失效的,于是乎,就查看了一下jar的源码,找到了版本对应的破解字符(如下):对应版本为 aspose-wor ...

  10. java final思考

    final关键之主要用在三个方向: 数据 对于基本类型,final使数据恒定不变:而对于对象引用,final使引用恒定不变即无法再重新new另一个对象给他: 空白final JAVA允许定义一个空白f ...