AutoIt/Operatory
Operatory (tylko dla zmiennych typu prostego)
edytujOperatory są symbolami opisującymi rodzaj operacji wykonywanych na zmiennych lub wartościach. Operatory dzielimy na cztery grupy:
Operatory przypisania:
edytujnadanie wartości: "="
$zmienna=2 ;zmienna przyjmuje wartość 2
dodanie wartości: "+="
$zmienna+=2 ;wartość zmiennej zwiększona o 2
odjęcie wartości: "-="
$zmienna-=2 ;wartość zmiennej zmniejszona o 2
wymnożenie wartości: "*="
$zmienna*=2 ;wartość zmiennej wymnożona przez 2
podzielenie wartości: "/="
$zmienna/=2 ;wartość zmiennej podzielona przez 2
dołączenie łańcucha znaków do zmiennej: "&="
$zmienna=”Ala”
$zmienna&=” ma kota” ;$zmienna przyjmuje wartość „Ala ma kota”
Operatory arytmetyczne
edytuj $zmienna=$zmienna1+$zmienna2 ;dodawanie
$zmienna=$zmienna1-$zmienna2 ;odejmowanie
$zmienna=$zmienna1*$zmienna2 ;mnożenie
$zmienna=$zmienna1/$zmienna2 ;dzielenia
$zmienna=$zmienna1^$zmienna2 ;potęgowanie
$zmienna=$zmienna1&$zmienna2 ;łączenie łańcuchów znakowych
Operatory relacji (porównań)
edytujJeżeli relacja jest prawdziwa, wyrażenie przyjmuje wartość logiczną True, w przeciwnym wypadku wartość False.
Relacja równości:
$zmienna =($zmienna1=$zmienna2) ;$zmienna=True gdy $zmienna1 i $zmienna2 są sobie równe
Przy porównywaniu łańcuchów tekstowych operator „=” nie rozróżnia wielkości liter.
Wyrażenie (”Ala”=”ala”) ma wartość True.
Jeżeli przy porównywaniu łańcuchów wielkość liter jest istotna, należy użyć operatora „==”.
W tym wypadku wyrażenie (”Ala”==”ala”) ma wartość False.
UWAGA: W przykładzie powyższym znak = występuje dwa razy, pierwsze wystąpienie to przypisanie, drugie to relacja. W AutoIt nie ma osobnych symboli dla tych operatorów, a to jak on zostanie potraktowany zależy od kontekstu. W językach Pascal i Object Pascal = jest tylko operatorem relacji, operator przypisania składa się z dwóch znaków i ma postać :=.
Pozostałe operatory relacji:
$zmienna =($zmienna1<$zmienna2) ;$zmienna1 mniejsza od $zmienna2
$zmienna =($zmienna1>$zmienna2) ;$zmienna1 większa od $zmienna2
$zmienna =($zmienna1<=$zmienna2) ;$zmienna1 mniejsza lub równa $zmienna2
$zmienna =($zmienna1>=$zmienna2) ;$zmienna1 większa lub równa $zmienna2
$zmienna =($zmienna1<>$zmienna2) ;$zmienna1 różna od $zmienna2
Przy porównywaniu łańcuchów tekstowych wszystkie te operatory nie rozróżniają wielkości liter.
Np. wyrażanie (”Ala”<>”ala”) ma wartość False.
Operatory logiczne
edytujOperatory logiczne służą do wykonywania operacji logicznych na wartościach logicznych (typ Boolen, False/True). Ponieważ w AutoIt liczby i łańcuchy (stringi) mają określoną wartość logiczną (rozdział: Zmienne w AutoIt / Konwersja typów zmiennych i wyrażeń / Wariant), można także na nich wykonywać operacje logiczne.
AND – logiczne AND (wyrażenie jest prawdziwe, gdy wszystkie wyrażenia składowe są prawdziwe)
OR – logiczne OR (wyrażenie jest prawdziwe, gdy przynajmniej jedno wyrażenia składowe jest prawdziwe)
NOT - logiczne NOT (zaprzeczenie, prawdziwe, gdy pierwotne wyrażenie jest fałszywe)
$a = 5
$b = -1
$wynik1 = ($a>1 And $b>0) ;False
$wynik2 = (1 And 2 And -1) ;True, liczby różne od zera mają wartość logiczną True
$wynik3 = (1 And "") ;False, string pusty ma wartość logiczną False
$wynik4 = ("Ala" And "As">"Ala") ;True, string niepusty ma wartość logiczną True
$wynik5 = ($a>1 Or $b>0 Or False) ;True
$wynik6 = Not True ;False
$wynik7 = Not 0 ;True
Operatory porównań i logiczne najczęściej używane są w instrukcjach i pętlach warunkowych. Ich użycie zostało dokładniej opisane w rozdziale "Instrukcje sterujące".
Priorytet operatorów
edytuj(od najwyższego do najniższego)
NOT ^ * / + - & < > <= >= = <> == AND OR
Jeżeli operatory mają jednakowy priorytet, to są realizowane w kolejności od lewej do prawej strony wyrażenia.
Operatory wyrażeń w nawiasach mają wyższy priorytet od operatorów na zewnątrz nawiasów.
UWAGA: Znak minus na początku wyrażenia jest traktowany tak jak NOT i ma najwyższy priorytet, np. wyrażenia -2^2 jest traktowane jak (-2)^2 i ma wartość 4, a nie -4.
Natomiast równoważne w sensie matematycznym wyrażenie -(2^2) ma już wartość -4 ponieważ operator potęgowania w nawiasach ma wyższy priorytet.
W wersji AutoIt'a 3.3.14.2 jest pewien błąd związany z operatorem potęgowania i priorytetem operatorów. I tak wyrażenie 4-2^2 zachowuje się jak 4+(-2)^2 i przyjmuje wartość 8, zamiast spodziewanego zera. Dlatego aby uniknąć dziwnych wyników w wyrażeniach z odejmowaniem potęg, należy potęgowanie ująć w nawiasy. Wyrażenie 4-(2^2) da już spodziewaną wartość zero.