【blockly教程】Blockly编程案例
案例一 原码反码和补码
我们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位。
原码:是指符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。例如:假设机器数的位数是8,那么:[+17]原=00010001 [-39]原=10100111
反码:在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。例如: [+45]反 = [+45]原 = 00101101,[-32]原 = 10100000,[-32]反 = 11011111
补码:在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如: [+14]补 = 10100100,[-36]反 = 11011011,[-36]补 = 11011100
实事求是地说,引入补码意义非同寻常,可以说是先辈们智慧的结晶。因为,通过补码运算,可以把减法运算变成加法运算;而乘法可以用加法来做,除法可以转变成减法。这样一来,加、减、乘、除四种运算“九九归一”了。这对简化CPU的设计非常有意义,CPU里面只要有一个加法器就可以做算术运算了。

因此只要能将数字转化为二进制机器数,那么就可以模拟计算机完成各种数值运算,实现加减乘除的功能。下面我们来一起将正负数的十进制数转化为二进制:
需求分析:输入:一个十进制数,输出:这个数的原码,反码和补码。
实现:
1、正数的原码反码和补码都是相同的,因此只要求出一个即可,我们通常用栈来实现向二进制的转换,blockly提供list作为指针数组可以实现栈的操作,如下图所示:

栈操作实际上就是一种先进后出的数据结构:

我们举一个例子,比如求29的原码,那么过程如下:


list数组提供从头尾插入和删除元素,并能在指定位置提取元素:

因此我们只要依次将求出的余数从数组头处插入即可,读取数组的时候从头到尾开始阅读。

2.负数的原码其实内容上和正数是一样的,只是符号位与正数是不同的,我们之所以把数设置成8位,就是为了留出1位作为符号位,因此8位数可以表示-128~127,第一位表示符号位,0为正数,1为负数,所以-29二进制表示为:10011101。
负数的反码就是符号位不变,其余位取反,反码的意义就在于进行下一步取补码。负数的补码就是反码加1,求出补码的算法就是从最后一位开始判断,如果是0,就将其变为1,如果是1,就判断倒数第二位,依次类推,你可以举几个例子自行判断一下。


案例二 有限状态机
有限状态机,(英语:Finite-state machine,FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。它反映从系统开始到现在时刻的输入变化,转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它;动作是在给定时刻要进行的活动的描述。 我们举一个例子,我们平时在自动售货机上买饮料,自动售货机的内部实际上就是一个有限状态机:
假如有这样一个自动售货机,售卖苏打汽水,它有如下五种输入:
- 输入0 -- 存入25美分
- 输入1 -- 存入1美元
- 输入2 -- 取汽水
- 输入3 -- 退币
- 输入4 -- 退出系统


实现如下:

其实我们的小车就是通过有限状态机来实现的,我们可以把小车的行为依依列举出来,比如左右转,前进,发出声波,光线,声音等,我们只要通过控制这些状态就能控制小车完成各样的工作:

你能自己设计出一个更加复杂的售货机么?
【blockly教程】Blockly编程案例的更多相关文章
- 【blockly教程】第六章 Blockly的进阶
6.1 模块化程序设计 一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能.所有的高级语言中都有子程序这个概念,用子程序实现模块的功能.比如在C语言中,子程序的作用是由函数完成 ...
- 【blockly教程】第三章Blockly顺序程序设计
3.1 什么是Blockly语言 2012年6月,Google发布了完全可视化的编程语言Google Blockly,整个界面清晰明了, 你可以如同在玩拼图一样用一块块图形对象构建出应用程序.每个图 ...
- ArcGIS Python编程案例-电子资料链接
ArcGIS Python编程案例(1)-Python语言基础 https://www.jianshu.com/p/dd90816d019b ArcGIS Python编程案例(2)-使用ArcPy编 ...
- 面向对象编程案例02--显示地调用父类的__init__()
# -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例02--显示地调用父类的__init__() ''' 继承是面向对象的重要特征之一,继承是2 ...
- python 面向对象编程案例01
# -*- coding: utf-8 -*- #python 27 #xiaodeng #面向对象编程案例01 class Behave(): def __init__(self,name): se ...
- Java 学习之网络编程案例
网络编程案例 一,概念 1,网络编程不等于网站编程 2,编程只和传输层打交道,即TCP和UDP两个协议 二,案例 1,TCP实现点对点的聊天 Server端:两个输入流:读客户端和控制台,一个输出端: ...
- javascript进阶教程第一章案例实战
javascript进阶教程第一章案例实战 一.学习任务 通过几个案例练习回顾学过的知识 通过练习积累JS的使用技巧 二.实例 练习1:删除确认提示框 实例描述: 防止用户小心单击了“删除”按钮,在用 ...
- Python的元编程案例
Python的元编程案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是元编程 元编程概念来自LISP和smalltalk. 我们写程序是直接写代码,是否能够用代码来生成 ...
- 大数据笔记(十)——Shuffle与MapReduce编程案例(A)
一.什么是Shuffle yarn-site.xml文件配置的时候有这个参数:yarn.nodemanage.aux-services:mapreduce_shuffle 因为mapreduce程序运 ...
- SpringBoot图文教程「概念+案例 思维导图」「基础篇上」
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...
随机推荐
- January 27 2017 Week 4 Friday
Procrastination is the thief of time. 拖延是时光之贼. Procrastination is the thief of time, besides, it is ...
- 名词后变为复数+s,或者+es等怎么读
, 以ce,se,ze, (d)ge等结尾的词 加 -s 读 /iz/ license-licenses, office offices 最佳答案1: 当名词后加-e(-es)变成复数,动词单数第三人 ...
- 1.Jdeveloper打印出完整日志(-Djbo.debugoutput=console)
有时候在JDeveloper中需要打印出来比较系统和完整的ADF运行时日志 例如,想查看VO当前执行的是哪个View Criteria,运行的完整SQL语句到底如何 以及当前Binding Varia ...
- Redis配置文件(1)units/includes/GENERAL/SECURITY/LIMITS
redis.conf文件 在Linux进行文件的查看! units单位: # Note on units: when memory size is needed, it is possible to ...
- 备份&添加无线网络配置
netsh wlan export profile key=clear folder=c:\ #备份 (ls c:\*.xml).FullName|%{netsh wlan add profile f ...
- Mac python3.5 + Selenium 开发环境配置
一. python 3.5 1. 下载 2. Mac默认为2.7,所以这里主要介绍如何将系统Python默认修改为3.5. 原理: 1)Mac自带的python环境在: python2.7: /Sys ...
- HDU 1045 Fire Net(DFS 与8皇后问题类似)
Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- webapi 获取json数据
一般的我们可以直接使用参数来接受,这个就不多介绍了 [HttpGet] public IHttpActionResult Test2([FromUri]string name) { object ob ...
- easyui 上 datagrid 的表头的checkbox全选时 取消选中 disabled的checkbox
业务需求: 正常情况下,easyui的全选checkbox会选择表中全部的checkbox包括行.及时对checkbox加了disable属性也没有效果.但是现在的业务是当对checkbox加了dis ...
- 20181029NOIP模拟赛T3
3 .空间活动 [题目描述] 贝茜和佩奇正在玩一款游戏,在游戏开始会生成一个有n个点m条单向边的地图,经过每条边需要花费价格为Hi的费用(Hi<=1000).但是如果两个点可以互相到达,那么这两 ...