白枫手把手教你lua编程3(程序设计的三种结构)



白枫
2010-05-04 19:00:15

题外话就不说了,直接进入主题.

在这里引用一下著名的计算机科学家沃思(N.Wirth)曾提出过的一个经典公式:

[color=Red][size=3]程序 = 数据结构 + 算法[/size][/color]

别问哥沃思是谁,哥会很尴尬的,虽然每个人对程序的构成认识都不一样,但是我觉得这个公式还是很值得我记忆在脑海里的。

希望你对算法是什么东西已经有初步的认识,算法就是一个解决问题的步骤,而数据结构说的当然就是变量了,所谓的程序,就是一个对数据操作的过程,而且这个过程能确实解决你想让计算机帮你解决的问题,当然,这个过程也有可能是毫无意义的...

需要说明一下的是,数据结构除了基本数据类型以外(整数,小数,字符串),还包括了自定义的数据类型(由自己创造的数据类型),所谓的自定义类型数据其实也就是建立在基本数据类型的一个集合而已,这里给大家先留个印象,不详说。

真相只有一个。现在由我为大家揭开程序设计最基本的三种结构。

[color=Red][size=3]顺序结构、选择结构、循环结构[/size][/color]

顺序结构估计大家都知道了,也接触过,就是把代码写好了,计算机一句一句按顺序的往下执行,而选择结构,就是在顺序结构的基础上,加入了条件的判断,从而使代码执行的流程作出改变,比如买一台游戏机,如果拥有的钱大于1500元,则购买PSP,否则,购买NDS,嗯,很囧,不过就是这么回事,而循环结构,和字面意思一样,是一个循环,下面,开始结合lua代码来让你更深刻的了解这三种结构和补充相关的理论知识。

[color=Red]--------------------------[/color]啦啦啦我是华丽的分割线[color=Red]--------------------------------[/color]

先说顺序结构的程序设计,它的特点是结构中的语句按其先后顺序执行。

而语句包括了下面几种: [color=Red]表达式语句、函数调用语句、空语句[/color]
这里是以lua脚本语言为标准,期待补充.

[color=Red]表达式语句:[/color]
x = 0; -- 赋值语句
x = x + 1; -- 赋值语句
x + 10; -- 加法运算语句,但结果并不保留,无意义
x = z = y = 10; -- 这种连续=号赋值是允许的

[color=Red]函数调用语句:[/color]
print("hello world.
"); -- 打印hello world字样
print(x+z); -- 打印x+z的结果
print(string.len("hello world.")); -- 打印"hello world"字符串的长度

string.len()是一个返回字符串长度的函数,以后再详细讨论它的使用方法.

[color=Red]空语句:[/color]
; -- 好吧,只有一个分号....

[color=Red]--------------------------[/color]啦啦啦我是华丽的分割线[color=Red]--------------------------------[/color]

选择结构的程序设计,其特点是程序的流程由多条分支路线组成,程序根据不同的情况,只有一条支路被选中,而其他分支上的语句被直接跳过。

首先介绍一下lua的关系运算符:
[color=Red]> >= < <= ~= ==[/color]
从左到右分别是大于,大于等于,小于,小于等于,不等于,等于

例子:
a+b > 30
a*30 == a+b
当这个关系表达式为真的时候,返回一个true的值,为假的时候,返回一个false的值,比如上面的a+b>30,假设a=10,b=20,表达式将返回false值,因为a+b不大于30

接下来介绍逻辑运算符(关键字)
[color=Red]and or not[/color]
我以c语言的名字给这3个运算符命名,从左到右是逻辑与、逻辑或、逻辑非

例子:
a+b > 30 and 3*b==20 -- 当a+b>30和3*b==20都为真的时候,结果才会返回true
a+b > 30 or 3*b==20 -- 当a+b>30和3*b==20其中一个为真的时候,结果就会返回true
not (a+b)==(a*b) -- 把结果否定掉,如果表达式为真,那结果就返回false,这里返回了一个true(真)

好吧,群众表示一头雾水,不知道这些有什么用,下面给一段具有演示作用的代码

a = 10;
b = 20;
z = 0;
if a+b > 30 then
z = 15;
print("a+b大于30
");
else
z = 30;
print("a+b小于等于30
");
end
if z==15 then
print("z确实等于15
");
else
print("z不等于15
");
end

先告一段落,下次接着写...待续.大家可以使用我提供的工具自己做下代码测试,这可以让你更好的理解那些运算符的作用.


白枫
2010-05-04 19:00:52

果断占楼


qxshark
2010-05-04 19:04:47

围观白叔吐糟教程


1239985932
2010-05-04 19:33:08

看了半天看晕了


宅十四
2010-05-04 21:18:17

第三课出现了


明日青蛙
2010-05-04 21:26:21

吼吼吼吼~~~支持支持~~~


gyyfifafans
2010-05-05 11:01:34

精美的教程啊.........


ast
2010-05-06 19:06:02

看完
留个名


love_xiaolu
2010-05-07 05:43:14

纳尼?我竟然没有回帖


aishiadahao
2010-05-08 17:28:51

围观。表示C语言上课在大嗑虫而已。。所以鸭梨很大


GnNu
2010-05-23 13:04:22

- -其实我在等待更新


S.L.T
2010-05-23 17:03:16

解读一下最后的东东…:输入a=10;b=20;z=0;如果a+b>30;然后z赋值15输出a+b大于30
;否则z赋值30输出a+b小于等于30
结束如果;如果z等于15;然后输出z确实等于15
;否则输出z确实不等于15
;结束…


S.L.T
2010-05-23 17:04:03

应该没错吧?


Asahi.
2010-06-11 15:23:46

待更新...
话说我家是Vista系统
只有再去买个本本来操作了...
杯具...


czb7895123
2010-08-16 00:04:34

路過支持~顶顶顶顶顶顶


reekin
2010-08-20 17:22:16

白叔TJ了吗?


dtaee
2013-03-04 20:09:37

a = 10;
b = 20;
z = 0;
if a+b > 30 then 如果A+B>30的话
z = 15;
print("a+b大于30
");
else
z = 30;
print("a+b小于等于30
");
end
if z==15 then 如果Z=15的话
print("z确实等于15
");
else
print("z不等于15
");
end


dtaee
2013-03-04 20:10:05

总感觉像是应用题的文科表达方式...0.0