AHK基础入门与程序结构

作者: 派大星啊我 | 来源:发表于2016-07-01 16:30 被阅读798次

    [toc]

    # 前言

    ## 什么是程序结构?

    程序结构一般指结构化程序设计,也就是说我们把程序结构化,进行以模块功能和处理过程设计为主的详细设计的基本原则。
    详细请点 [结构化程序设计的百度百科]。

    其概念最早由 E.W.Dijikstra在1965年提出的,是软件发展的一个重要的里程碑。它的主要观点是采用自顶向下、逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。

    所以我们今天就来讲一讲顺序、选择、循环三种基本控制结构构造。

    # 基本控制结构构造

    结构流程图(待补)


    ## 顺序结构

    内容: 按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
    表示方式:(语句一)——›(语句二)——›(语句n)
    比如:

    msgbox,你好
    msgbox,你真好
    msgbox,你太好了
    run Notepad             ;激活运行记事本这个动作
    send 你烦不烦?{enter}   ;{enter}代表回车
    return
    

    运行试一下,你会发现它是从上而下依次运行语句。


    ## 选择结构

    内容:选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
    表示方式:(条件),如果(语句一)满足(条件),则运行(语句一),如果(语句二)满足(条件),则运行(语句二)。
    比如:

    a=1
    b=2
    if a>b
    {msgbox,a大于b}
    else
    {msgbox,a小于b}
    return
    

    由此可见,选择结构大都依赖与if...else这个命令。
    AHK中还有一种看起来很复杂的选择结构。

    首先先依次解析下命令

    + InputBox: 显示输入框让用户输入字符串,也就是说这条命令会获取用户的输入。类似于C语言中的scanf。
    
    表示方法:InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]              ;后悔写这个了,因为要解释的东西好多啊。
    
    + OutputVar:用来保存用户输入文本的变量名.
    比如:
    > +  inputbox, name   ;变量名 即 OutputVar 为 name    //运行后弹出一个以脚本名为标题的输入框,输入数据保存在变量name中。  
    
    + ErrorLevel:当用户按下取消按钮时 ErrorLevel 值被设置为 1,按下确定时值为 0;
    

    故来看下面这条命令。

    比如

    InputBox, password, Enter Password, (your input will be hidden), hide   ;hide为隐藏你所输入的数据
    InputBox, UserInput, Phone Number, Please enter a phone number., , 640, 480
    if ErrorLevel
        MsgBox, CANCEL was pressed.
    else
        MsgBox, You entered "%UserInput%"      ; "%UserInput%" 相当与 C 语言中的 %d 。
    

    第一个‘,’为(1),以此类推。hide为隐藏你所输入的数据

    (1)获取用户输入的数据,保存在(2)变量 password 中。
    (3) Enter Password 为标题。
    (4) (your input will be hidden) 为显示框中的内容 。
    (5)获取用户输入的数据,保存在(6)变量 UserInput 中。
    (7) Phone Number 为标题。
    (8) Please enter a phone number.为显示框中的内容。
    (9)(10)依次为 Width, Height, X, Y的值

    关于 % 的使用,详细参见[ AHK中% 符号的用法 ]


    ## 循环结构

    内容: 循环结构可以看成是一个条件判断语句和一个向回转向语句的组合。另外,循环结构的三个要素:循环变量、循环体和循环终止条件. ,循环结构在程序框图中是利用判断框来表示,判断框内写上条件,两个出口分别对应着条件成立和条件不成立时所执行的不同指令,其中一个要指向循环体,然后再从循环体回到判断框的入口处.

    表达方式:见图。

    循环结构有三种: for 循环; loop 循环; while 循环。


    ### for 循环

    内容:for....in
    表达形式: For Key [, Value] in Expression
    解释一下:

    Key : 在每次重复开始时用来保存键的变量名称. ** 变量 **
    [, Value] : 保存与当前键关联的值的变量名. ** 值 **,中括号表示非必需。
    Expression :结果为对象的 表达式 或包含对象的变量. ** 表达式或变量 **

    比如:

    colours := Object("red", 0xFF0000, "blue", 0x0000FF, "green", 0x00FF00) ;  列出对象中的键值对:
    for k, v in colours   ; 上面的表达式可以直接代替下面的“colours”:
        s .= k "=" v "`n"
    MsgBox % s
    

    k相当与‘red’,‘blue’,‘green’这些键,而v则取代逗号后面的‘0xFF0000’等键值。
    所以在上段代码中,for 循环的作用是历遍colours里面的键和键值,并赋值给s

    上段代码语法其实和 C 语言类似。
    但首先我们还是要看AHK中独特的赋值。即等号的应用。
    也就是要先要了解变量和表达式,这里省略[shenglue](笑)不写,详细请参见参考手册的变量与表达式,或者单独开章讲解。

    单独讲赋值。(因为自己一看其实也不懂)(笑)

    ### 等号运算符(=)

    内容:给变量赋值,获取变量的内容。


    #### 给变量赋值

    传统方法:使用 等号运算符 (=) 来指定 没有加引号的 原义字符串或包围在百分号中的变量. 例如:

    MyNumber = 123
    MyString = This is a literal string.
    CopyOfVar = %Var%  ; 和 = 运算符一起使用时, 需要使用百分号来获取变量的内容.
    

    表达式方法:使用 冒号等号运算符 (:=) 来保存数字, 加引号的字符串和其他类型的表达式. 例如:

    MyNumber := 123
    MyString := "This is a literal string."
    CopyOfVar := Var  ; 和前面段落中与其作用相同的语句不同, 百分号不和 := 运算符一起使用.
    

    那么如何清空变量?

    MyVar =         ;传统方法。
    MyVar := ""     ;表达式方法。
    

    注意的是:上面的这对空引号只能和 := 运算符一起使用, 因为和 = 运算符一起使用时, 则会在变量中保存两个原义的引号字符.

    也可以看看这个:AHK 中 = 和 := 赋值运算符的用法

    还是没有搞懂.=和“=”是什么意思,赋值?


    ### loop 循环

    表达形式: Loop [, Count]

    Count:执行循环体 (重复) 的次数. 如果省略, Loop 会无期限继续, 直到遇到 break 或 return.

    比如:

    Loop
    {
        if a_index > 25
            break  ; 终止循环
        if a_index < 20
            continue ; 跳过后面并开始下一次重复
        MsgBox, a_index = %a_index% ; 这里将仅显示数字 20 到 25
    }
    

    调试看看它循环了多少次。

    ### while 循环

    内容:重复执行一系列命令,一直到指定的表达式计算结果为假。
    表达方式: While Expression

    Expression : 任何有效的 表达式. 例如:while x < y。

    比如:

    x=1
    y=2
    while y>x
    msgbox,y大于x
    

    (笑)
    之后要怎么改才能跳出循环呢?试试看。


    # 总结

    主要讲了三种基本的控制程序结构构造。分别为 顺序结构,选择结构和循环结构
    选择结构的主要关键字是 if ... else
    重点讲了循环结构,循环结构有 for 循环,loop 循环 ,while 循环。
    for 循环 关键字为 for in ;
    还适当的讲解了一下等号运算符的应用,留下了几个问题。比如 .= 和 “ = ” 。
    适当的扩展了一下如何获取用户输入(inputbox和ErrorLevel)。

    归纳:

    • 关键字: if ...else ,

    for ... in ... ,
    loop ... , while ... ,
    ErrorLevel ,
    inputbox ,
    OutputVar ,
    := 。

    如果有哪个关键字还不懂,可以去参考手册来详细了解。

    # 参考链接

    相关词条:

    相关网站:

    相关文章

      网友评论

        本文标题:AHK基础入门与程序结构

        本文链接:https://www.haomeiwen.com/subject/osafjttx.html