AutoIt教程:2. 最基本的概念

by xiaolai on 2010/04/29 · 14 comments

in Auto-It

学习的一个秘密是:无论什么东西,不一定非要先搞懂,而是可以先随便试试,胡乱用用。年纪越大的人,越害怕“随便试试”;面对陌生的环境,越坚信自己还不懂,甚至不可能懂,宁可“无为而治”……

新建一个AutoIt文件,将其命名为Testing1.au3,输入以下代码:

$a = 100
$b = 100
$c = $a + $b
ConsoleWrite($c)

而后按F5键查看运行结果:

注意红框中的内容(点击上图看大图)

再新建一个AutoIt文件,将其命名为Testing2.au3,输入以下代码:

$s1 = "AutoIt"
$s2 = "Script"
$s3 = $s1 & $s2
ConsoleWrite($s3)

而后按F5键查看运行结果:

注意红框中的内容(点击上图看大图)

再新建一个AutoIt文件,将其命名为Testing3.au3,输入以下代码:

$b1 = True
$b2 = False
$b3 = $b1 And $b2
ConsoleWrite($b3)
$b4 = $b1 Or $b2
ConsoleWrite($b4)

而后按F5键查看运行结果:

注意红框中的内容(点击上图看大图)

计算机最擅长干的事(之一)当然是“计算”,不过,在编程语言里,我们更多使用“运算”这个术语,而不是“计算”,因为在自然语言中,“计算”这个动词的对象往往仅限于“数字”,而程序所要处理的“计算对象”,除了数字之外,还有很多种。比如,你刚刚试过的三段代码,分别是数值运算字符串运算,和逻辑运算

1. “变量”(Variable)

在AutoIt中,“$”符号用来标识变量。变量(variables)是用来保存数据(data)的,比如用来保存一个数值(digit),或者一个字符串(string),或者一个逻辑值(也称布林值,boolean)。所以,一个变量由以下三个部分构成:

  • 变量名(name)
  • 变量类型(type)
  • 变量值(value)

比如,

  • 在Testing1.au3中,$a这个变量,它的名称是“$a”,类型是“数值”,值是“100
  • 在Testing2.au3中,$s1这个变量,它的名称是“$s1”,类型是“字符串”,值是“AutoIt
  • 在Testing3.au3中,$b1这个变量,它的名称是“$b1”,类型是“字符串”,值是“True

在AutoIt中,

  • 变量必须以“$”开头做为标识
  • 变量名的第一个字符必须是大小写字母或者下划线,其它部分还可以由数字构成

2. 运算符(Operator)

计算数值的运算符很直观:

  • 加:+
  • 减:-
  • 乘:*
  • 除:/
  • 幂:^

字符串的运算符最常用的只有一个:

  • 合并:&

逻辑运算符包括

  • 与:And
  • 或:Or
  • 非:Not
  • 等于:==
  • 不等于:<>
  • 大于:>
  • 大于等于:>=
  • 小于:<
  • 小于等于:<=

3. 表达式(Expression)

表达式由变量(或“值”)与运算符构成。最终,每个合法的表达式都有运算结果,可被保存为某个变量的值。在这一行代码中:

$c = $a + $b

“$a + $b”就是一个表达式,它由两个变量($a$b,它们各自已经拥有一个“数值类型”的“值”)和一个运算符(+)构成。最终,这个表达式的值是200,该行代码执行过后,这个值(200)被保存到变量$c之中,即,从此之后,变量$c的值为200

4. 赋值(Assignment)

$a = 100

或者

$c = $a + $b

看起来非常直观,可其中也有需要认真处理的细节。

新建一个AutoIt文件,将其命名为Testing4.au3,输入以下代码:

$a = 100
$b = 100
$c = $a + $b + $c
ConsoleWrite($c)

而后按F5键查看运行结果:

这一次,出错了……

SciTE提醒你,第3行第18个字符处(3,18)出了问题:

WARNING: $c: possibly used before declaration.

表达式中的任何变量,必须拥有“值”才能够参与运算。在这一行代码执行之前,我们并没有定义$c这个变量的值,所以它无法参与运算──于是SciTE报错了。

让我们重新来过,新建一个AutoIt文件,将其命名为Testing5.au3,输入以下代码(这一次,不要急于按F5运行代码,先用脑子演练一番):

$a = 100
$b = 100
$c = $a + $b
$c = $a + $b + $c
ConsoleWrite($c)

这一次,这段代码中的每一个表达式中的每一个变量都有值。

  • 第1行代码执行过后,变量$a的值为100;
  • 第2行代码执行过后,变量$b的值为100;
  • 第3行代码执行过后,变量$c的值为100+100,即,200;
  • ……

现在,既是难点又是要点的东西来了:“=”的意义。这个平时被我们称为等号的符号是绝大多数新手所能遇到的第一个真正的障碍。

注意:在程序代码中,“=”这个符号,并不对应这自然语言中的“等于”──在程序代码中,我们就不应该称它为“等号”!

“=”这个符号的意义用自然语言准确表述是这样的(稍微有点啰唆):

把它右边的表达式的运算结果保存为它左边的变量值。

也就是说,到了第4行代码,AutoIt编译器(又是一个暂时无需深入了解的概念)先去计算等号右边的表达式,$a + $b + $c,相当于100 + 100 + 200,即,最终结果为400;而后,把这个结果保存到$c中去,也就是说,在这一行代码结束之后,变量$c的值变了:不再是原来第3行结束之时的200,而是400了。

现在,你可以按一下F5查看一下结果了……

为了避免歧义与误解,我们最好称“=”为赋值符号。很多人嫌麻烦,“固执”地把“=”称为“等号”,而将来因此造成无数的麻烦以及相当不堪的后果……最可怜的是,当麻烦降临,后果不堪设想之时,他们全然不知根源竟然在这么个不起眼的地方。

{ 14 comments… read them below or add one }

上路 April 29, 2010 at 10:34

正在学习教程第一课,一刷新,第二课出现了,赶上直播了,这次千万不能掉队……虽然我是大学毕业生不是高中毕业生,脸红地说……

Reply

kuaidianba April 29, 2010 at 11:48

哎,笑来老师的学习精神真是值得配服。

Reply

空~~白 April 29, 2010 at 11:54

Testing2.au3 第三行$s3 = $s1 & $s2
可能由于解析问题,amp;应该去掉.

Reply

funyi April 29, 2010 at 12:58

感觉Auto的语法还是蛮像C语言的…

Reply

李笑来 April 29, 2010 at 19:36

用C写的。不过,更像BASIC吧。

Reply

funyi April 29, 2010 at 22:19

对于BASIC的记忆只有每句开头都要有 10 20 30 等等
呵呵 仔细看了看 还是与C有些不同 AUTOIT可以把赋值和定义变量放在一起
而C却必须先定义 再赋值

Reply

lwzz April 29, 2010 at 22:59

C里的确是要先声明变量开辟一块内存空间,不过声明和定义是可以写在一起的啊。比如说 int a = 5;
char *message = “hello world”;
autoit是弱类型语言,变量使用前不用声明吧。与其说像C不如说像php。

Reply

hplonline April 29, 2010 at 20:17

顶篇首关于学习的秘密。

Reply

s April 30, 2010 at 10:50

不要老是教这么简单的东西嘛~来你博客看文章的人又不是初中文化水平

Reply

李笑来 April 30, 2010 at 10:52

又不是写给你看的。该干吗干嘛去。

Reply

pc May 4, 2010 at 15:50

是不是少了这句话:Auto的变量类型在赋值时被确定,故没有专门的变量类型定义语句。

Reply

李笑来 May 4, 2010 at 18:12

AutoIt的变量处理比较特殊,后面要重新讲。

Reply

Robin May 10, 2010 at 05:52

努力学习中···

Reply

Xiaomao October 4, 2011 at 22:27

基础,刚刚好…..

Reply

Leave a Comment

Previous post:

Next post: