微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索

該用戶從未簽到

升級   0%

跳轉到指定樓層
主題
發表於 2012-10-23 18:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最後由 rictirse 於 2012-11-5 23:31 編輯

來講講基本的 AutoIt 輸入輸出功能

基本輸入功能
InputBox ( "標題", "提示" [, "預設值" [, "密碼字元" [, 寬度, 高度 [, 左方, 上方 [, 逾時 [, 主控制碼(hwnd)]]]]]] )
擷取自官方教學[code=autoit];將輸入框置於左上角,當輸入字元時立刻將它們顯示出來
$answer = InputBox("問題", "您在哪個地方出生?", "在地球行星上出生。", "", -1, -1, 0, 0)

;要求使用者輸入密碼,別忘記要讓它生效!
$passwd = InputBox("安全性確認", "請輸入密碼:", "", "*")

;要求使用者輸入 1 或 2 個字串回應
;密碼中的字母 M 表示不允許空白字串,而 2 表示最多 2 個字元長度
$value = InputBox("測試", "請輸入 1 或 2 字元密碼。", "", " M2")[/code]基本輸出功能
MsgBox ( 旗標, "標題", "文字" [, 逾時 [, 主控制碼(hwnd)] )[code=autoit]$passwd = InputBox ("安全性確認", "請輸入密碼:", "", "*")
MsgBox ( 0, "密碼", $passwd)[/code]運算子
擷取自官方教學
算術運算子
+
將兩個數字相加:10 + 20    (等於 30)
-
將兩個數字相減:20 - 10    (等於 10)
*
將兩個數字相乘:20 * 10    (等於 200)
/
將兩個數字相除:20 / 10    (等於 2)
&
將兩個字串組合/連結:"一" & 10    (等於 "一10")
^
提升次方:2 ^ 4    (等於 16)
複合運算子
=
聲明,例如 $var = 5     (將數字 5 聲明為 $var)
+=
加入聲明,例如 $var += 1     (將 1 加入聲明為 $var)
-=
減去聲明。
*=
相乘聲明。
/=
相除聲明。
&=
連接聲明,例如 $var = "一",然後聲明 $var &= 10    ($var 現在等於 "一10")
[code=autoit]Dim $i = 0 ;;  聲明 變數 $i = 0

$i += 10;; 等同於 $i = $i + 10

MsgBox ( 0, "$i += 10後", $i);; i = 10

$i -= 5;; 等同於 $i = $i - 5

MsgBox ( 0, "$i -= 5後", $i);; i = 5


$i *= 5;; 等同於 $i = $i * 5

MsgBox ( 0, "$i *= 5後", $i);; i = 25

$i /= 5;; 等同於 $i = $i / 5

MsgBox ( 0, "$i /= 5後", $i);; i = 5[/code]邏輯運算子
=
判斷兩個值是否相等 (使用字串時不區分大小寫),例如:If $var= 5 Then    (如 $var 等於 5 則成立)
==
判斷兩個值是否相等 (使用字串時區分大小寫)。
<>
判斷兩個值是否不相等。
>
判斷第一個值是否大於第二個。
>=
判斷第一個值是否大於或等於第二個。
<
判斷第一個值是否小於第二個。
<=
判斷第一個值是否小於或等於第二個。

AND
邏輯 AND 運算子,例如:If $var = 5 AND $var2 > 6 Then    (如 $var 等於 5 $var2 大於 6 則成立)
OR
邏輯 OR 運算子,例如:If $var = 5 OR $var2 > 6 Then    (如 $var 等於 5 $var2 大於 6 則成立)
NOT
邏輯 NOT 運算子,例如:NOT 1    (False)

If...ElseIf...Else...EndIf

例題BMI 計算機[code=autoit]Dim $Mass = InputBox ( "BMI計算", "請輸入體重(單位kg)", 60);;單位 Kg
Dim $Height = InputBox ( "BMI計算", "請輸入身高(單位cm)", 180);;單位 cm

$Height /= 100;; 單位換算 cm 換 m

$BMI = $Mass/($Height^2) ;; BMI = 體重(kg) / 身高(m)平方

If $BMI <  18.5 Then
        MsgBox (0,"", "BMI = "&$BMI&@CRLF&"體重過輕")
ElseIf $BMI <= 24 Then
        MsgBox (0,"", "BMI = "&$BMI&@CRLF&"正常體重")
ElseIf $BMI <= 27 Then
        MsgBox (0,"", "BMI = "&$BMI&@CRLF&"過重")
ElseIf $BMI <= 30 Then
        MsgBox (0,"", "BMI = "&$BMI&@CRLF&"輕度過胖")
ElseIf $BMI <= 35 Then
        MsgBox (0,"", "BMI = "&$BMI&@CRLF&"中度過胖")
Else
        MsgBox (0,"", "BMI = "&$BMI&@CRLF&"重度過胖")
EndIf[/code]
樓主熱門主題

該用戶從未簽到

升級   0%

2F
 樓主| 發表於 2013-2-10 14:04 | 只看該作者
學完基本 輸入/輸出、運算子、判斷式
接著講 Loop,常見的迴圈有 For While Do 這三種
每一種都有自己的特色與用途
For...To...Next
[code=autoit]For $i = 0 To 5 ; i = 0、1、2、3、4、5 一共六個
        MsgBox ( 0, "", $i)
Next[/code]

For...To...Step...Next
[code=autoit]For $i = 6 To 0 Step -2 ; Step -2 意思是 每個迴圈 i - 2
        MsgBox ( 0, "", $i);; i = 6、4、2、0 一共四個
Next[/code]
While...WEnd
[code=autoit];;; 這一題是在講 1 + 2 + 3 + .... 100 = 5050
;;; 公式用 (上底+ 下底) * 高 / 2 就可以知道答案
;;; ((1 + 100) * 100) / 2 = 5050
;; 我們要反推這題回去 看 i 要加到多少的時候 數字會 = 5050

Dim $i = 0 ; 定義i 初始值 = 1
Dim $SUM = 0; 定義SUM 初始值 = 0

While $SUM < 5050 ;; SUM值 < 5050 就結束迴圈
    $i += 1;; 計數器 + 1
    $SUM += $i ;; SUM = SUM + i
WEnd

MsgBox ( 0, "", $i)[/code]
Do...Until
[code=autoit];;; 九九乘法表

Dim $i = 1;; 定義 外迴圈 i = 1
Dim $j = 1;; 定義 內迴圈 j = 1
Dim $str = "";; 定義初始化文字

Do
        Do
                $str = $str&$i&"*"&$j&"="&($i*$j)&" ; "
                $j += 1 ;; 計數器 +1
        Until $j > 9 ;; j > 9 離開迴圈
        $str = $str&@CRLF ;; 換行
        $j = 1;;; j 歸零
        $i += 1 ;; 計數器 +1
Until $i > 9  ;; i > 9 離開迴圈

MsgBox ( 0, "", $str)[/code]
ExitLoop [層級]

單迴圈
[code=autoit]Dim $i = 0 ;; 定義 i 初始值 = 0

While True ;; 無窮迴圈
        $i += 1 ;; 計數器 +1
        If $i = 5 Then ExitLoop;;; i = 5 的時候 離開迴圈
WEnd
MsgBox (0,"已離開迴圈", "i = "&$i)[/code]
巢狀迴圈
[code=autoit]Dim $i = 0;; 定義 i 初始值 = 0
Dim $j = 0 ;; 定義 j 初始值 = 0

;;; 跳一層的 Do loop 結束後 會繼續跑 while loop

While True ;;; While 無窮迴圈; While loop 判斷是為真時繼續 所以這邊放入True
        If $i >= 3 Then ExitLoop(1);; i >= 3 跳出迴圈 一層
        Do
                If $j >= 3 Then ExitLoop(1);; j >= 3 跳出迴圈 一層
                MsgBox ( 0, "Do Loop", "i = "&$i&@CRLF&"j = "&$j)
                $j += 1
        Until False ;;; Do 無窮迴圈; Do loop 判斷式為假時繼續 所以這邊放False
        MsgBox ( 0, "While Loop", "i = "&$i&@CRLF&"j = "&$j)
        $i += 1
WEnd

$i = 0; 歸零 i
$j = 0; 歸零 j

;;; 跳兩層的 Do loop 結束後會跳出 兩層迴圈 所以 While loop 不會再執行

While True
        If $i >= 3 Then ExitLoop(2);; i >= 3 跳出迴圈 兩層
        Do
                If $j >= 3 Then ExitLoop(2);; j >= 3 跳出迴圈 兩層
                MsgBox ( 0, "Do Loop", "i = "&$i&@CRLF&"j = "&$j)
                $j += 1
        Until False ;;; Do 無窮迴圈
        MsgBox ( 0, "While Loop", "i = "&$i&@CRLF&"j = "&$j)
        $i += 1
WEnd[/code]
ContinueLoop

[code=autoit]Dim $i, $Str

For $i = 0 To 5 ;; i = 0、1、2、3、4、5  一共六個
        If $i = 1 Or $i = 2 Then ContinueLoop ; i = 2 or 2 時 跳過這次不執行
        $Str = $Str&$i&@CRLF
Next

MsgBox  ( 0, "不包含 1 跟 2", $Str)[/code]


使用道具

簽到天數: 13

該用戶今日未簽到

升級   100%

3F
發表於 2013-2-10 16:00 | 只看該作者
本帖最後由 bunnie 於 2013-2-10 16:15 編輯

噹噹,我很喜歡你po的這些文章,很棒很詳細!
我也寫了一個單迴圈跑九九乘法的程式

-------------------------------------------------
[code=autoit];使用單迴圈跑九九乘法表
Dim $Num = ""
Dim $i = 1
Do
    If Mod($i, 9) == 0 Then
        $Num = $Num & $i / 9 & "x9=" & ($i / 9) * 9 & "|" & @CRLF
    Else
        $multiplicand = Int(($i / 9) + 1, 1)
        $Num = $Num & $multiplicand & "x" & Mod($i, 9) & "=" & $multiplicand * Mod($i, 9) & "|"
    EndIf
    $i += 1
Until $i > 81
MsgBox(0, "NineTimesTable", $Num)[/code]

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-12-4 16:01

Discuz! X

© 2009-2023 Microduo

快速回覆 返回頂部 返回列表