【blockly教程】第三章Blockly顺序程序设计
3.1 什么是Blockly语言
2012年6月,Google发布了完全可视化的编程语言Google Blockly,整个界面清晰明了, 你可以如同在玩拼图一样用一块块图形对象构建出应用程序。每个图形对象都是代码块,你可以将它们拼接起来,创造出简单功能,然后将一个个简单功能组合起来,构建出一个程序。这个程序与我们平时使用的编程语言最大的差别是无需自己编写代码,在我们所使用的代码块的背后就是已经编写好了的代码,而用户并不需要关心这些,整个过程只需要鼠标的拖曳,不需要键盘敲击。
我们首先通过一个小游戏来了解 Google Blockly,在Blockly Games:Maze这个小游戏中,每个关卡都会提供一个地图,地图上有起点和终点,而我们要做的事就是利用每个关卡提供的语句模块构成一个小程序,使得程序运行起来时起点处的小人能够顺利从起点到达终点。
例如第二关,小人需要经过两次转弯才能到达终点,需要注意的是,第一次转弯后小人必须前进一部分路程才能进行第二次转弯。

所有组成的模块如下:

在这个游戏中,我们最需要弄清楚的是每个数据块执行的顺序,以及我们应该如何摆放它才能让小人顺利的到达终点,这就引出了本章的重点,Blockly语言的顺序程序设计。
在本章的学习中,我们将学习到几种顺序执行的语句,在这些语句的执行过程中不会发生流程控制的转移,比如赋值语句,输入输出语句。
在讲解Blockly语言的顺序程序设计之前,让我们先来对Blockly语言做一个总的概述,Blockly语言总共分为8个板块。
(1)Logic ,表明数据间的逻辑关系。

(2)Loops 循环控制

(3)Math 数学运算模块

(4)text 文本块

(5) list 列表块

(6) Colour 颜色块

(7) Variables 变量块

(8)Functions 函数块

当学生学习了新的函数或者命令,就可以使用这些Blockly语句块进行联系,所有的块被组织排放在左侧的列表中,使用时根据正确的语法和适当的缺口对接就能实现预定的功能。因此,我们可以通过对块进行适当的组织就能轻松的实现每一个新的想法和创意。
3.2 赋值语句
在c语言的学习中,我们可以知道赋值语句是由赋值表达式加上一个分号构成。而在Blockly语言中,赋值语句是由如下一个语句块构成:

其中i 指的是一个变量,也可以用其它字母代替,在to 后面紧跟着的是要赋给i 的值。同样的,这个赋值表达式也可以包括在其它表达式中,例如: 其中i 指的是一个变量,也可以用其它字母代替,在to 后面紧跟着的是要赋给i 的值。同样的,这个赋值表达式也可以包括在其它表达式中,例如:

if 后面跟着的是一个条件,例如可以是

其作用是当i 大于零时,将一个值赋给i。
3.3 Blockly 语言的输入与输出
当计算机被用于和外界交互时才是最有趣的,所谓的输入与输出是以计算机主机为主体而言的。
输入就是将数据从输入设备带入计算机 (如键盘,磁盘,光盘,扫描仪等)
输出就是将数据从计算机发送到外部输出设备(如显示屏,打印机,磁盘等),输入输出有时候并称为I/O。有许多种类的I/O,包括人机界面,网络接口,存储设备接口和自动机器接口。计算机在处理各种输入输出上有许多共同点,无论是与一个人,一个文件或其他一些设备进行交互。用户可以通过只学习如何创建用户界面来学习重要的I/O技术。
我们先来介绍Blockly语言的输出语句块:

它可以根据后面所接的不同的语句块而输出不同的数据,例如:

它输出的是两个数字的和。

而打印 “hello,my name is zhangwei”则是在屏幕上输出这一段文本。

而在这一段文本的前面加上另一个数据块则又是另外一种效果 如:

上面这一行数据模块则是输出的这段文本的长度。

例 输出字符串“Hello World!”

这段程序将会输出三次Hello World!,在程序中,我们先将步长的值设置为1,当步长的值小于等于3的时候进入repeat循环,在屏幕上输出Hello World!的字样然后将步长的值加1加赋值给步长,直到步长的值大于3时将不再进入循环,所以我们不难知道,这段程序将会在屏幕上输出三次Hello World!的字样。
介绍完输出的语句块之后,让我们再来介绍输入的语句块,Blockly语言的输入语句块为

这个输入语句块输入的既能是文本,也可以是数字,通过语句中间的选项可以进行不同的选择,当我们运行这句语句块的时候,屏幕同样会弹出一个文本框,这个时候我们就能在文本框里面输入我们想带入计算机的数据,点击确认后,我们所输入的数据就将会进入我们所设置的变量里面,下图便是我们输入数据的界面:

通过上面简单的介绍,同学们可能对输入的理解还不够深刻,下面让我们来举一个具体的例子。
首先,让我们设置一个变量a,然后再将上面的输入语句块连接在设置变量语句块的后面,点击运行,在出现的为文本框里面输入我们想要输入的数据,点击确认以后,数据就会被赋值给a了,如果同学们想确认a的值是不是真的是我们所输入的数据,可以在这段数据块的下面加上输出数据块,将a的数据输出到屏幕上,这样我们就能确认a的值了。



3.4 顺序结构程序设计举例
例  从键盘输入一个大写字母,要求改用小写字母输出。
看到这个题目,同学们首先想到的是什么呢?在前面介绍的几个Blockly模板中大家会首先想到哪个语句块?或许记忆力好的同学已经想到,在我们介绍到的Text板块中就有一个语句块是用来转换大小写的:

这个语句块使用起来相当简单,只需要将你需要转换的文本连接在此语句块的后面就行了,此语句块同样能根据需求不同产生三种不同的效果,我们所做的只要改变语句块中的选项罢了。
既然已经找到了这个问题所需要的核心语句,那么后面的问题就简单了,不难看出这个题目同时用到了输入和输出,所以我们只需要设置一个变量用来存放我们所输入的数据,然后将输入的数据转化成小写并输出,这个问题就解决了。所组成的数据块如下:

运行结果如下:


例 输入一个两位数,如果这两位相乘大于两位相加,则输出“大”这个字。
在同学们第一次见到这个题目时,可能会感到有点手足无措,但其实我们一步步分析就会发现这个题目不过如此,在解决这个问题前,我们首先要搞清楚怎么根据输入的俩位数分别得到个位数和十位数,如果大家曾经接触过其它语言,就会知道俩位数 除以10得到的商就是十位上的数字,而得到的余数就是个位上的数字,在弄清楚这个问题以后,这个题目同样变得不堪一击了。具体数据块如下:

在这个组好的数据块里,我们首先将输入的俩位数存到ab这个变量里面,然后将计算得出的个位数和十位数分别赋值给b和a,再利用我们前面提到的logic模板里面的if语句块判断大小,最后输出。
运行过程与结果如下:


通过本章的讲解,相信大家对Blockly语言的顺序程序设计有了大概的了解,也对输入输出有了清晰的认识,语言的顺序程序设计在同学们今后的语言学习中起着相当重要的作用,希望能引起大家的重视。
课后练习
1、对两个整数变量的值进行互换。
2、如果是做单项选择题,请根据给定的选项,输出对应的结果。
举例:
总共有4个字符。A,B,C,D。
你给出字符A,输出:你选择了A
你给出字符B,输出:你选择了B
你给出字符C,输出:你选择了C
你给出字符D,输出:你选择了D
3、根据输入的值,判断是星期几。
举例:
输入:1
输出:星期1
知识梳理

【blockly教程】第三章Blockly顺序程序设计的更多相关文章
- 【blockly教程】第二章 Blockly编程基础
2.1 Blockly的数据类型 2.1.1 数据的含义 在计算机程序的世界里,程序的基本任务就是处理数据,无论是数值还是文字.图像.图形.声音.视频等信息,如果要在计算机中处理的话,就必须将它们转 ...
- [Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程
[Learn Android Studio 汉化教程]第三章:使用 Android Studio 编程 本章包含如何在 Android Studio 中书写或生成代码. Android Studio ...
- javascript进阶教程第三章--匿名和闭包--案例实战
javascript进阶教程第三章--匿名和闭包--案例实战 一.学习任务 通过几个小练习回顾学过的知识点 二.实例 练习1: 实例描述:打开页面后规定时间内弹出一个新窗口,新窗口指定时间后自动关闭. ...
- [ABP教程]第三章 创建、更新和删除图书
Web应用程序开发教程 - 第三章: 创建,更新和删除图书 关于本教程 在本系列教程中, 你将构建一个名为 Acme.BookStore 的用于管理书籍及其作者列表的基于ABP的应用程序. 它是使用以 ...
- Objective-C 基础教程第三章,面向对象编程基础知
目录 Objective-C 基础教程第三章,面向对象编程基础知 0x00 前言 0x01 间接(indirection) 0x02 面向对象编程中使用间接 面向过程编程 面向对象编程 0x03 OC ...
- 【blockly教程】第一章 Google Blockly教学应用手册
1.1 Google Blockly概述 美国计算科学教育一直认为计算机作为当今各个领域的基础技术工具,有必要让学生尽早的了解和学习计算机工作原理,理解基础的编程思维.在2006年周以真教授提出计算思 ...
- 脚本语言丨Batch入门教程第三章:逻辑判断
通过学习Batch入门教程的前两章内容,我们已经大致掌握了基本概念和认识变量的相关内容,今天我们要跟大家继续分享第三章内容:Batch入门教程之逻辑判断. 前期回顾 ◀Batch入门教程丨部署与H ...
- python 教程 第三章、 运算符与表达式
第三章. 运算符与表达式 1) 运算符 + 加 - 减 * 乘 ** 幂 / 除 // 取整除 % 取模 << 左移 >> 右移 & 按位与 | 按位或 ^ 按位 ...
- (转)JAVA AJAX教程第三章—AJAX详细讲解
现在开始深入AJAX,这里还是按老思路,理论和实践相结合.这章的内容主要是讲解AJAX步骤详解,下一张将会用一个AJAX技术实现页面提示效果的实例来说明AJAX的实现. 一.AJAX步骤详解 AJAX ...
随机推荐
- [EffectiveC++]item37:绝不重新定义继承而来的缺省参数值
绝不重新定义继承而来的缺省参数值 静态类型 动态类型
- 利用Underscore求数组的交集、并集和差集
1 数组交集函数——intersection 数组的交集是指包含多个数组中的共同元素的一个数组,求数组的交集就是找出给定数组中的共有元素. 下面实现一个求两个数组交集的函数. 判断数组是够包含指定值, ...
- 绘图、Core Animation与硬件架构
原文地址:http://blog.csdn.net/wzzvictory/article/details/11180241 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wan ...
- PHP读取文件内容的五种方式(转载)
php读取文件内容的五种方式 分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭.实际应用当中,请注意关闭 fclose($fp); php读取文件内容: -----第一种方法--- ...
- Codeforces Round #533 (Div. 2) C. Ayoub and Lost Array 【dp】
传送门:http://codeforces.com/contest/1105/problem/C C. Ayoub and Lost Array time limit per test 1 secon ...
- xtrabackup2.4选项参考
该xtrabackup2.4选项参考¶ 此页面记录了xtrabackup二进制文件的所有命令行选项 . 选项 --apply-log-only 此选项仅在准备备份时执行重做阶段.这对增量备份非常重要. ...
- cascade rcnn
在region proposal阶段采用不同的iou. 第一幅图,不同颜色的线是用不同的region proposal的iou阈值,横坐标是region proposal生成的框与gt的原始iou,纵 ...
- 搭建nlp_server服务器
这是文档 如何启动斯坦福NLP-Service 1.sudo apt-get install gearman-job-server安装gearman-server 2.启动gearman服务: gea ...
- git忽略文件留存
##ignore this file##/target/ .classpath.project.settings /.settings/ ##filter databfile.sln file##*. ...
- P1018 乘积最大(高精度加/乘)
P1018 乘积最大 一道dp题目.比较好像的dp题目. 然而他需要高精度计算. 所以,他从我开始学oi,到现在.一直是60分的状态. 今天正打算复习模板.也就有借口解决了这道题目. #include ...