[教程]程序语言思维
minecraftpe吧
全部回复
仅看楼主
level 13
七海浅夏 楼主
前言:很多人看了各种js帖子
依然表示看不懂
那么我将会以数学的眼光
来给各位解析程序语言
1L会徽
镇楼
图片来自:MP430488的百度相册
ICE POLE(QQ群:)302495286
ICE POLE(百度群:)2439031
2013年12月28日 12点12分 1
level 13
大神帖 顶
2013年12月28日 12点12分 4
[滑稽]和编程语言很像,虽然不会写js,但是看得懂什么内容,IOS党无力
2013年12月28日 13点12分
回复 MP430488 :大神借楼,深感荣幸
2013年12月29日 04点12分
回复 MP430488 :补上,群号24390310...天啊
2013年12月29日 12点12分
2014年01月03日 12点01分
level 8
额。貌似还没人顶,jswax留名
2013年12月28日 14点12分 7
24390310....,竟然打错啦
2013年12月29日 12点12分
回复 MP430488 :额。啥意思
2013年12月29日 15点12分
level 9

2013年12月28日 14点12分 8
请各位看新帖地址
2013年12月30日 14点12分
level 15

2013年12月28日 17点12分 9
level 12
好。
    (>^ω^<)
2013年12月29日 00点12分 10
level 12
支持
    (>^ω^<)
2013年12月29日 00点12分 11
level 11
本来会的,看完后就神马也不知道了[乖]
2013年12月29日 01点12分 12
说明你不是靠数学理解程序语言的
2013年12月29日 01点12分
回复 MP430488 :这样子做js有缺陷
2013年12月29日 01点12分
回复 MP430488 :我数学就不用怀疑了,上次考了104分!主要是那个感叹号不会啊![乖]
2013年12月29日 01点12分
回复 377528898 :我130.....
2013年12月29日 01点12分
level 14
不懂
2013年12月29日 01点12分 13
0基础看会有点吃力
2013年12月29日 01点12分
回复 MP430488 :都不知道你在说什么[狂汗][狂汗][狂汗]
2013年12月29日 02点12分
level 11
顶一顶,虽然我这种小白还是看不懂
2013年12月29日 01点12分 15
level 13
七海浅夏 楼主
@灬丶寂落丿 @宏68328 @唐家S狂少 @kewangboshi @a361145944 @救世诸 @散人之粉 @abc905252821 @影人shine @白狼之巅 @Mynameiswzfgf @life我的世jie @377528898
2013年12月29日 02点12分 17
接下来我将会要各位实战,敬请期待
2013年12月29日 02点12分
请各位看新帖地址
2013年12月30日 14点12分
2013年12月31日 13点12分
level 13
七海浅夏 楼主
1.语法错误
可能有人不懂什么是语法错误
通俗一点说就是格式错误
------------------------------------------
这一个是新手犯得最多的错误
想要检测是否语法错误
一般地我们可以在电脑上直接双击js
没反应代表没有语法错误
------------------------------------------
但是这个检测方法有个缺陷
如果经过某些偏门软件转码后
或者多次转码成js之后
可能会因为识别不了而发生错误
------------------------------------------
解决的方法如下:
我们发现同样的内容,没有任何错误
但是就是执行不了
------------------------------------------
这个时候
我们可以复制这段代码
新建一个js
然后粘贴我们要写的代码
然后惊奇的发现
没有问题了!
------------------------------------------
那么如何检测语法错误讲完了
这些都是我实践出来的结果
------------------------------------------
下面说一些书写的问题
那么常见的问题有哪一些呢?
------------------------------------------
比如说
var x1=2,x2=3,x3=123
if(x1==2&&x2==3)
{clientMessage(""+x3+"")}
------------------------------------------
这么一小段话就可以体现很多东西
------------------------------------------
比如变量的设法:
var x1=2
var x2=3
然而我们完全可以精简掉var,改成用小逗号分开来
------------------------------------------
还有就是x3=123这里
大家可能觉得了有个地方怪怪的
clientMessage(""+x3+"")
------------------------------------------
先从基础讲起
+是干什么的呢?
他是一种逻辑连接词
通常用于连接某种变量
------------------------------------------
现在引入它的特殊用法
比如说
clientMessage(ChatColor.YELLOW+"show!")
其中ChatColor.YELLOW
是这个函数的一种功能
------------------------------------------
是clientMessage的一种用法,也就是让他变成黄色
由于计算机不知道你想表达什么
那么就用+"内容"表示是对他用的(内容)
------------------------------------------
由此我们得出结论
双引号的第一种用法是
让其他功能函数(比如ChatColor.YELLOW)
只是针对某个变量(比如"show!")
------------------------------------------
为什么说他是变量呢?
这是双引号的本质作用
接下来将会讲他的一般性
------------------------------------------
也可以这么打
clientMessage(""+x3)
也就是""(没有任何内容)+x3(要显示的内容)
为什么要这么打呢?
------------------------------------------
clientMessage(""+x3+"")
这种打法就是最好的例子
因为右边有了""
所以右边也要加上+
也就是""(没有任何内容)+x3(要显示的内容)+""(没有任何内容)
------------------------------------------
以此类推,我们得出最简单的打法
clientMessage(x)
就这么简单!
------------------------------------------
由于有些人习惯上会看到某些函数里面写的格式
clientMessage("x(中文)")
OK,开始讲双引号的一般性
------------------------------------------
但是不可以代入变量
之所以带双引号是因为他是中文
""只是说明他是变量
计算机看不懂中文是亮点。。
------------------------------------------
如果你本来clientMessage("x")
x本身又是一个变量
------------------------------------------
那么计算机就会理解为变量中的变量
就会显示出NaNz(也就是他不明白)
所以我们应该去掉双引号
------------------------------------------
值得一提的是
变量不一定是设出来的
标明""也可以的
------------------------------------------
接下来是符号数量错误
比如说
------------------------------------------
function modTick()
{
if(xxx)
{
yyy
}
}
------------------------------------------
然而新手总是不小心打成了
function modTick()
{
if(xxx)
{
yyy
}
------------------------------------------
或者
function modTick()
{
if(xxx
{
yyy
}
}
------------------------------------------
简单地说,就是括号的数量要一一对应
有左括号就要有右括号
不然就会出现各种奇葩问题
总之格式要对,下面会讲道
------------------------------------------
括号里面可以没有任何内容
但是也要有括号
这是一种格式
计算机毕竟不是人脑
------------------------------------------
接下来讲道设变量的误区
------------------------------------------
比如说var x=某某(中文)
然后我们会检测错误
这时候怎么办呢
------------------------------------------
想起前面的""没有?
表示他是一个变量
正确设法
var x="某某"
------------------------------------------
值得注意的是
如果你设了一个变量
然而却没有赋值
比如说
------------------------------------------
var t
然后又使用了命令
setTile(x,y,z,t)
------------------------------------------
要么就会说"t"未定义
也可能会随机弄出一个数
因为他不知道是什么
------------------------------------------
除非是这样
------------------------------------------
var t=1
setTile(x,y,z,t)
------------------------------------------
当然如果你假设了之后
不用那个t就不会有任何问题
比如不用到setTile(x,y,z,t)
------------------------------------------
比如说只有这个
var t
这时候就不会出问题
------------------------------------------
学习计算机语言的看一下
没学的还请跳过
------------------------------------------
在这里额外提一下
设变量之后
可以不用x=null
(说明x是一个存在但无意义的东西)
------------------------------------------
接下来给各位讲赋值问题
请看下一章
2013年12月29日 04点12分 19
不知为何删不了帖子。。 新连接 https://tieba.baidu.com/p/2787941913
2014年01月03日 12点01分
level 13
七海浅夏 楼主
2.逻辑错误
这个主要是针对数学比较差的人写的
如果数学过关可以跳过这一段
------------------------------------------
定性思维错误
------------------------------------------
js这种语言不同于c语言
像如下这些东西基本都可以省去
------------------------------------------
举几个例子
; 分函数标志
preventDefault() 阻止原来作用,这个用途不大
default: swtich条件判断语句结尾附带的东西
------------------------------------------
像这些东西,基本上不输入也没什么影响
由于我个人喜欢精简的函数
所以我都把它给删去了
------------------------------------------
错误二:照搬格式
------------------------------------------
if(){xxx}
else{yyy}
------------------------------------------
有的人可能会觉得奇怪
因为函数表给的例子里面是有东西的啊
------------------------------------------
括号里面可以不输入任何东西吗?
答案是肯定的
并不是说打了括号什么的就一定要输入东西
但是我们依然要遵守这个格式
------------------------------------------
接下来说上面的if else
这是一种选择语句
还是上面那个例子
if(){xxx}
else{yyy}
------------------------------------------
翻译过来呢
意思就是这样
------------------------------------------
如果(条件){执行命令xxx}
否则{执行命令yyy}
------------------------------------------
还有一种就是
if(){xxx}
else if(){yyy}
------------------------------------------
这个有的新手无法理解他的含义
------------------------------------------
实际上就是if else 再加上一个if
------------------------------------------
也就是如果。。。否则。。。。。如果
------------------------------------------
值得一提的是
第二个如果是在第一个如果条件成立的情况下
才会判断的
------------------------------------------
符号逻辑错误
------------------------------------------
这一段呢,主要是运算符的逻辑错误
不同于上面书写的逻辑错误
------------------------------------------
首先当然是与或非
或者→||
与→&&
非→!=
一般地,条件判断都是占用两个
为了好看。。。。
------------------------------------------
在这里,值得一提的是
逻辑符号:||
完全可以用,来替代
比如说
------------------------------------------
if(x==1||x==2)
{
}
------------------------------------------
这个完全可以用
if(x==1,x==2)
{
}
替代原来的函数
------------------------------------------
为什么我要讲这个细节呢?
原因有二
一,或这个符号不好打
二,明显不够精简,多了一个符号
------------------------------------------
接着说明与或非的逻辑关系
什么是与的逻辑关系?
通俗的说,就是同时满足N个条件才会执行
比如说
------------------------------------------
if(x1==1&&x2==2)
{
}
------------------------------------------
这个是要同时满足被&&连接的两个条件
这两个条件就是x1==1 x2==2
------------------------------------------
然而逻辑电路和这个有点不同
为了不混淆我就不讲逻辑电路了
接下来将会讲道为什么会和逻辑电路不同?
------------------------------------------
在这里补充一个知识
什么是输入,什么是输出?
以日常生活为例子
输入就是从高压发电站输过来的电
输出就是我们的用电器
比如电脑,灯泡
------------------------------------------
如果没有输入
也就是如果没有来电
------------------------------------------
那么就没有输出
也就是电脑开不了,灯泡不会亮
------------------------------------------
问题来了
if(x1==1&&x2==2||x3==3&&x4==4)
{
输出命令:xxx
}
------------------------------------------
这样子会发生什么事情呢?
让我们来用假设的思想来解释这个奇怪的现象
因为他和逻辑电路不同!
------------------------------------------
假设1:如果x2==2
输出命令:xxx
------------------------------------------
假设2:如果x3==3
输出命令:xxx
------------------------------------------
假设3:如果x1==1
没有反应
------------------------------------------
假设4:如果x4==4
没有反应
------------------------------------------
假设5:如果x1==1&&x2==2
输出命令:xxx
------------------------------------------
讲到这里
或许已经有人明白我之前说的
&&使用来连接左边和右边的条件了
------------------------------------------
是的,这个逻辑符号只会理他的左边和右边的一个条件
如果你输入了别的条件(被另外的逻辑符号连接的)
他会直接无视被逻辑符号另外连接的东西
------------------------------------------
如果还是不懂得
看我拆解这个逻辑关系
------------------------------------------
if(x1==1&&x2==2||x3==3&&x4==4)
{
输出命令:xxx
}
------------------------------------------
他就相当于
------------------------------------------
if(x1==1&&x2==2)
{
输出命令:xxx
}
if(x2==2||x3==3)
{
输出命令:xxx
}
if(x3==3&&x4==4)
{
输出命令:xxx
}
------------------------------------------
我想这样子大家就可以看明白了
被逻辑符号连接的条件
是单独成立的
如果出现了新的逻辑符号
他不会和他一起执行
------------------------------------------
这就有点像
可以用逗号分开来替代或的逻辑符号一样
------------------------------------------
下面讲到条件判断和赋值的区别
一般地,条件判断的时候
符号要用两个
比如说
------------------------------------------
if(xxx==1)
if(xxx==1&&yyy==1)
这代表的是条件判断
------------------------------------------
下面说到赋值的问题
比如说
------------------------------------------
x=1
这个是什么意思呢?
显然这个不是条件判断
------------------------------------------
这个=代表的是赋值!
如果数学水平到高中了
下面的可以跳过
------------------------------------------
用数学语言来说
就是把右边的值赋予到左边
------------------------------------------
用通俗的语言来说
就是让x这个变量
它的数值等于1
------------------------------------------
这也是为什么不能够反过来打的原因
------------------------------------------
回到上一章
xx(变量)=null
------------------------------------------
其中null的含义
就是一种存在,但是没有任何意义的东西
想必大家明白了吧
------------------------------------------
但是我们可以不需要说明
------------------------------------------
var x
x=nuil
------------------------------------------
直接var x就行了
2013年12月29日 04点12分 20
null
2013年12月29日 07点12分
回复 MP430488 :这段有瑕疵,if...else if 是在第一个if条件不成立的情况下进入elseif再进行判断,当然if条件如果成立,则控制流程直接跳出本结构
2017年02月01日 20点02分
回复 无聊嚼炫迈 :就不再去判断else if
2017年02月01日 20点02分
level 13
七海浅夏 楼主
3.函数包含问题
------------------------------------------
首先是function这一类函数
------------------------------------------
function useItem(x,y,z,ii,bi)
{
function modTick()
{
}
}
------------------------------------------
有人或许看着觉得别扭
但我可以说这是成立的
------------------------------------------
一般地,大括号外面的叫做母函数
被括号包含的叫做子函数
------------------------------------------
母函数又可以理解为前提条件
也就是母函数触发
才有后面的条件判断(括号里面)
------------------------------------------
这也是一种定性思维错误
不要相信自觉,逻辑才是王道
------------------------------------------
说到逻辑包含关系
又可以说到前面的一个函数格式
------------------------------------------
if(){else if(){}
------------------------------------------
如果之前还是不明白的
想必大家明白了吧
------------------------------------------
第一个如果是第二个如果的条件
------------------------------------------
也就是第一个条件触发才会判断第二个条件
------------------------------------------
下面讲道一种新的条件判定
之所以没在逻辑关系那里讲
是因为我觉得时机不够成熟
------------------------------------------
首先是格式
switch(变量)
case xxx:
yyy
default:
------------------------------------------
之前我就说过
default:
这个只是一种格式
完全可以无视掉它
------------------------------------------
这个条件判断呢
switch(变量)
case xxx:
yyy
------------------------------------------
就相当于if(变量==xxx){yyy}
------------------------------------------
那么这个有什么用处呢?
------------------------------------------
我个人觉得看的书写方便
不用一个又一个的if(){}(同一个变量,比如x什么的)
------------------------------------------
另外一种用处就是
假如这个变量是Math.random() (取一个随机数)
------------------------------------------
如果我们用了if
这时候我们难免会定性思维去设一个
x=Math.random()
------------------------------------------
包含关系很重要
如果错了的话
前提条件就会变了
------------------------------------------
或者是他覆盖的范围变了
------------------------------------------
这样子有些我们给定的条件
就触发不了了
------------------------------------------
而且他不会认为你是语法错误
------------------------------------------
额外提一下一种赋值方法,想必大家现在也能看懂这里了
------------------------------------------
x=x-2
------------------------------------------
这个是什么意思呢?
------------------------------------------
也就是把右边的值
假如这个x原本是10
------------------------------------------
那么就把10-2=8这个值
------------------------------------------
赋予给x
------------------------------------------
简单的说就是每执行一次这个命令
x的值减2
如果x没有数值的话
也就是既没有设 var x=数字
也没有用到 x=数字
那么就会语法错误。。。
------------------------------------------
这和前面说的,设了变量
如果要用到它,必须要有个数值
(有意义的东西就行)
是一个道理
2013年12月29日 04点12分 21
function中用function里面那个不会执行,我试过   --就算是楼中楼,我也要凑够十五字。
2013年12月30日 03点12分
回复 804806480 :?不应该啊,根据母函数思想是不会相互影响的,你看看前提条件那里
2013年12月30日 13点12分
回复 MP430488 :我function useItem里用function modTick不执行   --就算是楼中楼,我也要凑够十五字。
2013年12月31日 00点12分
回复 804806480 :那是在点击方块的瞬间才执行modTick里的指令[汗]
2014年01月15日 01点01分
level 13
七海浅夏 楼主
5.假设思维
------------------------------------------
一般新手做函数的时候
都没有假设的习惯
那么假设有什么好处呢?
------------------------------------------
首先我给大家一种简单的循环语句设法
由于我只讲了if,就像用它吧
------------------------------------------
function modTick()
var x=1
if(x<=5)
{
x++
输出命令:xxx
}
------------------------------------------
在这里,给大家讲一下x++是什么意思
它相当于x=x+1
也就是每执行一次,x的值加1
想必大家会猜测会不会有
------------------------------------------
x--
答案是肯定的
我们可以类推出
它相当于 x=x-1
------------------------------------------
回归主题
用数学语言来解释上面那句话的意思
就是x如果小于或等于5
就会重复执行
------------------------------------------
然后我们在输出命令加入了x++
也就是每执行一次,x就越接近我们规定的值(比如那个x<=5)
当他大于5的时候就会停止执行命令
使它(这个命令)变得有限次
至于多少次完全可以由我们自己来定
------------------------------------------
对于上面那个x<=5
没到初中的还请看一下这里
------------------------------------------
x<=5是什么意思呢?
就是x小于或等于5
注意是或而不且(与)!
------------------------------------------
我们之前的章节也说到
或连接的条件
只要有一个条件达成
就会执行命令
(单独成立的)
------------------------------------------
接下来讲解另外一种循环语句
不同的是,上面那一种只能一次性的执行N次
而下面这一种,他可以在给定范围执行,而且是不停地执行(循环)
------------------------------------------
例子来了
var x=1,y=10
for(var t=0;x+t<10;t++)
------------------------------------------
这个循环语句有什么作用呢?
他会一直在1到10之间循环
(不会停止!)
怎么停止我会另外讲到
其中一个方法就是干脆用if
------------------------------------------
特别注意的是
for这种语句比较特殊
必须用;来分开要执行的命令
------------------------------------------
上面的那个语句呢
是这么个意思
假设有一个变量t(我们理解为辅助变量)
可能这时有人会奇怪了
------------------------------------------
为什么不直接写成(x++<10)呢?
这样不就每执行一次+1了么
------------------------------------------
后面我会讲道,先看如何结束他
------------------------------------------
下面说到如何结束他
相信已经有人想到了
结束的方法就是另外设一个个变量,在用两个if
------------------------------------------
例子如下
var x=1,y=10,z=0
if(z=0)
{
for(var t=0;x+t<10;t++)
}
if(x+t>=10)
{
z=1
}
------------------------------------------
这样,我们就可以轻松地结束他了
至于为什么要讲for这个语句?
------------------------------------------
根据个人测试
for语句和if语句比起来
具有更高的运算率(也就是运算速度)
------------------------------------------
路人甲:(而且还可以坑人,不停地执行是吧。。。)
LZ:虽然不知道你在说什么,不过好像很厉害的样子。。
------------------------------------------
回到这里,讲解为什么不直接用x++<10
------------------------------------------
var x=1,y=10,z=0
if(z=0)
{
for(var t=0;x+t<10;t++)
}
if(x+t>=10)
{
z=1
}
------------------------------------------
其实不这样子写也是可以的
但是他有一个缺点
就是x这个变量如果后面还要用到
那就变不回来了
------------------------------------------
除非把x这个变量
赋值给另外一个变量
然后再赋值回来
但是这样子太麻烦
------------------------------------------
所以习惯上
我们都是这样子写
var x=1,y=10,z=0
if(z=0)
{
for(var t=0;x+t<10;t++)
}
if(x+t>=10)
{
z=1
}
------------------------------------------
而不是这样子写
var x=1,y=10,z=0,y
if(z=0)
{
y=x
for(x++<10)
}
if(x+t>=10)
{
z=1,x=y
}
------------------------------------------
如果赋值来赋值去的
数学不好的人估计就会头晕了
2013年12月29日 04点12分 23
level 12

2013年12月29日 04点12分 24
level 10

----

2013年12月29日 06点12分 25
level 13
七海浅夏 楼主
7.赋值
------------------------------------------
我发现依然有小白不明赋值是什么意思
x=1,也就是说
------------------------------------------
x是一个变量,这时候它的值为一
也就是x的作用和1是一样
但是这个x是可以变的
------------------------------------------
下面讲解一种函数
也是和赋值有关系的
------------------------------------------
ModPE.saveData(预设变量, 已存在变量)
ModPE.readData(预设变量)
ModPE.remove(预设变量)
------------------------------------------
这个是什么意思呢?
------------------------------------------
首先
save的意思是保存
read的意思是读取
remove的意思是移除(清除)
Data的意思是数据
------------------------------------------
OK,回到这里
ModPE.saveData(预设变量, 已存在变量)
------------------------------------------
他就等价于(相当于)
var 预设变量=已存在变量
------------------------------------------
也就是先设一个
新的预设变量
然后把已存在的变量
赋予给预设变量
------------------------------------------
接下来讲
ModPE.readData(预设变量)
------------------------------------------
这个就是把它读取出来
但是可以不用另外设变量
这有点像计算机直接输出结果
------------------------------------------
如果之前输入了
ModPE.saveData(预设变量, 已存在变量)
------------------------------------------
那么用了
ModPE.readData(预设变量)
它就相当于已存在变量
也就是说
他的效果
和已存在变量是一样的
------------------------------------------
ModPE.removeData(预设变量)
------------------------------------------
这个呢,很简单,就是把预设变量移除
也就是预设变量不存在了
2013年12月29日 09点12分 27
level 14
感觉太多了,好乱
   ---今天我要做俯卧撑
      今天先俯卧,明天再撑
2013年12月29日 11点12分 28
。。。慢慢理解,实践最重要
2013年12月29日 11点12分
想一次性理解完是不可能的,毕竟这都是我的实践经验
2013年12月29日 12点12分
回复 MP430488 :每个解释的都太简略了,最好分章节。1.0,1.1什么的 。由最开始的if到难的   --就算是楼中楼,我也要凑够十五字。
2013年12月29日 12点12分
回复 804806480 :额,我每一章节都是从简单到困难啊,如果看不懂可以跳过,然后回头看,一般同样的东西我都会讲几次,一般不用回头
2013年12月29日 12点12分
1 2 3 尾页