Hướng dẫn tự học AutoIT
CÂU LỆNH ĐIỀU KIỆN
IF TRONG AUTOIT
Câu
lệnh if là một câu lệnh điều kiện phổ biến nhất trong các ngôn ngữ lập trình bậc
cao. Nó được dùng để kiểm tra một điều kiện nào đó, nếu dúng
thì thực hiện công việc tương ứng, ngược lại thì làm một việc khác. Nếu
bạn đã học qua Excel thì chắc chắn phải biết hàm If bên đó. Với AutoIt, câu lệnh
điều kiện if được thành lập thành một khối. Để đơn giản, ta chia thành các phần
nhỏ để dễ trình bày.
Dạng
chung của If :
If
<điều
kiện> Then
<các câu lệnh>
............
Else
<các câu lệnh>
.........
EndIf
Như
trình bày ở trên ta thấy rằng, một khối lệnh If phải
được bắt đầu với If... Then và kết thúc với
EndIf.
<điều kiện> là một biểu thức so sánh (có sử dụng các toán
tử so sánh, logic như : <, >, <> , =,...And, Or, Not) hoặc một biểu
thức thường có trả về giá trị. Nếu điều kiện trả về True thì <các câu
lệnh> sau Then được thực hiện. Nếu
ngược lại thì <các câu lệnh> sau Else được thực hiện, không bao giờ xảy ra
hai trường hợp cùng một lúc. Cũng xin nhắc lại, nếu
<điều kiện> trả về một giá khác 0 thì có nghĩa True, bằng 0 là
False.
<các câu lệnh> có thể là một hay nhiều dòng lệnh, hoặc cũng
có thể là lệnh rỗng. Hoặc cũng có thể là một khối điều kiện If khác.
Mệnh
đề Else thì tự chọn, có thể có hoặc không.
Nếu Else không tồn tại thì khi <điều kiện> là False thì chương trình sẽ thực hiện tiếp các lệnh nằm sau
EndIf.
Ví
dụ đơn giản sau xét xem số chỉ định là chẵn hay lẻ.
$n
= 101
If
Mod($n,
2)=0 Then
MsgBox(0, "Ket qua", $n & " là số chẵn")
Else
MsgBox(0, "Ket qua", $n & " là số lẻ")
EndIf
Hàm
Mod có chức năng tìm số dư của phép chia giữa $n và 2.
Cú pháp chung là Mod( a, b). Trong đó
a là số bị chia và b là số chia.
Các
If lồng nhau :
If
được lồng nhau là một If nằm bên trong một khối If...EndIf khác. Các If lồng nhau được dùng rất phổ biến trong lập trình, thông
thường là trong trường hợp thẩm định một <điều kiện> với nhiều giả thiết
xảy ra khác nhau. Trong các If lồng nhau thì lệnh Else luôn có mối quan
hệ liên kết với khối If (chưa có EndIf ) nằm gần nó
nhất.
Ví
dụ sau là một bổ sung của ví dụ phía trên, xét xem thêm điều kiện để biết số đó
có phải là số có 3 chữ số hay không.
$n
= 1010
If
Mod($n,
2)=0 Then
If 100<=$n And $n<=999 Then
MsgBox(0, "Ket qua", $n & " là số chẵn có 3 chữ
số")
Else
MsgBox(0, "Ket qua", $n & " là số chẵn không phải 3
chữ số")
EndIf
Else
If 100<=$n And $n<=999 Then
MsgBox(0, "Ket qua", $n & " là số lẻ có 3 chữ
số")
Else
MsgBox(0, "Ket qua", $n & " là số lẻ không phải 3
chữ số")
EndIf
EndIf
Bước
thang If... ElseIf... Else...
EndIf
Với
hai phần vừa được trình bày ở trên thì có lẻ bạn đã hiểu được phần nào khối lệnh
If và có thể sử dụng nó để giải quyết nhiều bài toán có yêu cầu điều kiện. Trong
phần các khối If lồng nhau, chỗ lồi lõm là một kỹ thuật đúng. Tuy nhiên, khi có
quá nhiều If được lồng vào nhau thì đoạn mã của bạn sẽ bị lõm vào rất sâu. Vì lý
do này mà bước thang If..ElseIf...
được dùng. ElseIf là một từ khóa của AutoIt, báo hiệu việc thẩm định điều
kiện If tiếp theo. Cú pháp
:
If
<điều
kiện 1> Then
<các câu lệnh 1>
.........
ElseIf
<điều
kiện 2> Then
<các câu lệnh 2>
..........
ElseIf
<điều
kiện n> Then
<các câu lệnh n>
...........
Else
<các câu lệnh>
........
EndIf
Xin
nói luôn với các bạn một điều, cú pháp này mới chính là cú pháp tổng quát nhất
của khối lệnh If. Hai phần : “Dạng chung của If” và
“Các if lồng nhau” thực chất được tách từ đây mà ra. Cho nên từ đây trở đi, khi
sử dụng If bạn chỉ cần quan tâm đến phần này. Đến đây cũng xin
giải thích lại để bạn hiểu và ghi nhớ.
Các
<điều kiện> được thẩm định từ trên xuống.
Nếu <điều kiện 1> là True, thì <các câu lệnh
1> được thi hành. Ngược lại thì kiểm tra <điều kiện 2> , nếu đúng thì thi hành <các câu lệnh 2>. Việc ước lượng được xét dần đến <điều kiện n>. Nếu sau tất cả các lần thẩm định, không một điều kiện nào thỏa mãn
và Else có tồn tại, thì các lệnh sau Else được thi hành. Ví dụ sau minh
họa rõ việc dùng khối If tổng quát .
Dim
$var = '-5'
If
$var > 0 Then
MsgBox(4096,"", "Value is positive.")
ElseIf
$var < 0 Then
MsgBox(4096,"", "Value is negative.")
Else
If StringIsXDigit ($var) Then
MsgBox(4096,"", "Value might be
hexadecimal!")
Else
MsgBox(4096,"", "Value is either a string or is
zero.")
EndIf
EndIf
Chú
ý
Ø Trong
trường hợp câu lệnh If bạn sử dụng, chỉ có một lệnh sau Then và không có phần
Else thì có thể viết gọn như sau :
If
<điều
kiện> Then <câu lệnh>
Ví
dụ :
$v='05'
if
StringIsDigit($v) Then MsgBox(0,'msg','It is a number')
;
các lệnh không thuộc If có thể viết tiếp ở
đây
Ø Trong
các câu lệnh điều kiện (như If) thì việc dùng dấu ngoặc đơn ( ) là không thể
thiếu nếu như bạn muốn thẩm định các điều kiện một cách chính xác, vài bài toán
yêu cầu được kiểm tra với nhiều điều kiện lồng vào nhau, một kết quả không mong
muốn có thể được đưa ra nếu như bạn không gom nhóm các điều kiện hoặc gom nhóm
không đúng. Bạn xem ví dụ sau cho thấy cách thức xét điều kiện của khối If thứ
nhất và khối If thứ hai là hoàn toàn khác nhau :
Dim
$a=0, $b =2, $c=0
if
($a>0 And $b>0) Or $c=0 Then MsgBox(0,"msg", " Thông điệp 1")
if
$a>0 And ($b>0 Or $c=0) Then MsgBox(0,"msg", " Thông điệp
2")
Rated 4.6/5 based on 28 votes
0 Response to "[Bài 1] Câu lệnh điều kiện If Then trong AutoIT"
Post a Comment