AutoIt/Operatory

Z Wikibooks, biblioteki wolnych podręczników.

Operatory (tylko dla zmiennych typu prostego)[edytuj]

Operatory są symbolami opisującymi rodzaj operacji wykonywanych na zmiennych lub wartościach. Operatory dzielimy na cztery grupy:


Operatory przypisania:[edytuj]

nadanie 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ń)[edytuj]

Jeż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[edytuj]

Operatory 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.