Operatory, porównania i warunki
Ta strona opisuje symbole i słowa łączące wartości: działania arytmetyczne, kolejność ich wykonywania, porównania zwracające true lub false oraz operatory logiczne i bitowe. Zajrzyj tu, gdy wiersz daje inną liczbę, niż oczekujesz, albo gdy chcesz, aby notatka coś sprawdzała, na przykład czy nadal mieścisz się w budżecie.
Arytmetyka
| Operator | Sposoby zapisu | Przykład | Wynik |
|---|---|---|---|
| Dodawanie | +, plus |
£12.50 + £4.30 |
£16.80 |
| Odejmowanie | -, −, minus |
£20 - £4.50 |
£15.50 |
| Mnożenie | *, ×, times, multiplied by, zapis obok siebie |
3 × £4.50, 2(3 + 4) |
£13.50, 14 |
| Dzielenie | /, ÷, divided by |
£60 / 4 |
£15.00 |
| Potęgowanie | ^, **, to the power of, raised to, exponent |
2 ** 3, 2 raised to 10 |
8, 1,024 |
| Reszta z dzielenia | mod, % (między dwiema liczbami) |
50 mod 6, 50 % 6 |
2 |
| Pierwiastek kwadratowy | √, sqrt(...), square root of |
√144 |
12 |
| Kwadrat / sześcian | ², ³ |
3³ |
27 |
| Silnia | !, factorial(...) |
5!, factorial(5) |
120 |
Działania arytmetyczne obsługują liczby bez jednostek, kwoty i wielkości z jednostkami. Wynik zachowuje walutę lub jednostkę:
£12.50 + £4.30 daje £16.803 * £4.50 daje £13.50£1,000 * 1.05^3 daje £1,157.636 times 7 daje 42100 minus 37.5 daje 62.5Zapis przez zestawienie oznacza pominięcie *, jak w 2(3 + 4) lub 2π. Mnożenie domyślne wyjaśnia, kiedy to działa, a kiedy nie.
Kolejność działań
Obliczenia są wykonywane w zwykłej kolejności znanej ze szkoły:
- Nawiasy.
- Silnie, takie jak
5!. - Potęgi, obliczane od prawej do lewej:
2^3^2to2^9, czyli 512. - Początkowy znak minusa, stosowany po potęgowaniu:
-2^2to -4, a(-2)^2to 4. - Mnożenie, dzielenie i
mod, od lewej do prawej. - Dodawanie i odejmowanie, od lewej do prawej.
Pominięcie * nie zmienia tej kolejności: 2x^2 najpierw podnosi x do kwadratu, a dopiero potem podwaja wynik, tak jak we wzorze z podręcznika.
Oznacza to, że mnożenie jest wykonywane przed sąsiednim dodawaniem, co łatwo przeoczyć przy sumowaniu rachunku:
£85 - £12.50 * 2 daje £60.00(£85 - £12.50) * 2 daje £145.00£120 / 4 / 2 daje £15.00W razie wątpliwości dodaj nawiasy. Nie zaszkodzą, a później ułatwią odczyt notatki.
Znak pierwiastka kwadratowego dotyczy wartości bezpośrednio po nim, więc √9 + 16 to 19. Aby obliczyć pierwiastek z sumy, umieść całe wyrażenie w nawiasie:
√(9 + 16) daje 5Reszty z dzielenia
mod zwraca resztę z dzielenia. Przydaje się przy dzieleniu rzeczy na grupy:
eggs = 50eggs mod 6 daje 2floor(eggs / 6) daje 8Pięćdziesiąt jaj wypełnia osiem pudełek po sześć sztuk; dwa jaja pozostają.
% między dwiema liczbami również oznacza resztę z dzielenia, nawet bez spacji przed drugą liczbą: 50 % 6 i 50% 6 dają 2. % bez niczego po nim tworzy wartość procentową (50%), opisaną w rozdziale Procenty.
Silnie
Umieść ! bezpośrednio po liczbie, nazwie lub nawiasie zamykającym, aby obliczyć silnię:
5! daje 120runners = 4runners! daje 243! + 2 daje 85!=4 daje trueSilnia jest obliczana przed sąsiednią potęgą, więc 2^3! to 2⁶, czyli 64. ! z następującym po nim = nadal oznacza „różne od”, jak pokazuje ostatni wiersz. factorial(5) daje ten sam wynik co 5!.
Porównywanie
==, !=, <, <=, > i >= porównują dwie wartości i zwracają true lub false. Obsługują liczby bez jednostek, kwoty w tej samej walucie oraz wielkości mierzące to samo, nawet w różnych jednostkach:
budget = £400spent = £365spent <= budget daje truespent == budget daje falsespent != budget daje true5 km == 5,000 m daje true90 min >= 1.5 hours daje true2 kg < 2,500 g daje trueJednostki są przeliczane przed porównaniem, więc 1 mile > 1.5 km daje true. Porównanie różnych wielkości, takich jak kilogramy i metry, powoduje błąd incompatible units.
Czego porównania nie obsługują
- Łańcuchy porównań.
5 < x < 10nie jest obsługiwane. Połącz zamiast tego dwa porównania:5 < x && x < 10. - Symbole Unicode.
≠,≤i≥nie są rozpoznawane. Użyj!=,<=i>=. - Daty. Nie można porównywać dwóch dat za pomocą
<ani>. Odejmij je od siebie i porównaj różnicę z czasem trwania:
deadline = 30 September 2026booked = 14 September 2026deadline - booked daje 2 weeks 2 daysdeadline - booked >= 7 days daje trueOperatory logiczne
Łącz porównania za pomocą && (oba muszą być prawdziwe) lub || (co najmniej jedno musi być prawdziwe). Słowa and i or działają tak samo między dwoma porównaniami.
distance = 5 kmrun time = 27 mindistance >= 5 km && run time < 30 min daje truedistance >= 10 km || run time < 25 min daje falsedistance >= 10 km or run time < 30 min daje truetrue i false można wpisywać bezpośrednio i łączyć za pomocą && i ||:
true || false daje truetrue && false daje falseNiektóre spodziewane formy zapisu nie są obsługiwane:
andiordziałają tylko między porównaniami.true and falsenie działa; wpisztrue && false.- Nie ma operatora negacji:
not truei!truenie działają. Zamiast tego porównaj zfalse, jak w(spent > budget) == false. ornie zapewnia wartości zastępczej przy błędzie:1/0 or 5nie daje 5.
Porównania w wyrażeniach warunkowych
Porównanie jest szczególnie przydatne w if … then … else …, które wybiera wartość zależnie od wyniku:
basket = £34.50if basket >= £40 then £0 else £3.99 daje £3.99Warunki opisują pełną składnię, w tym else if, końcowe if i unless oraz przypisania wewnątrz gałęzi.
Operatory bitowe
Liczby całkowite obsługują operatory bitowe & (AND), | (OR), xor, << (przesunięcie w lewo) i >> (przesunięcie w prawo). Działają też słowa pisane wielkimi literami: AND, OR i XOR. Przydaje się to głównie w zadaniach programistycznych, na przykład przy wartościach kolorów i uprawnieniach plików.
12 & 10 daje 812 | 10 daje 1412 xor 10 daje 612 AND 10 daje 81 << 10 daje 1,0241024 >> 3 daje 128Wynik jest wyświetlany jako zwykła liczba. Dodaj to binary, in hex lub to octal, aby zobaczyć go w używanym systemie liczbowym:
0o644 | 0o111 to octal daje 0o755colour = 0xFF8800(colour >> 8) & 0xFF daje 136Przesunięcia są wykonywane przed &, | i xor, ale nawiasy znacznie ułatwiają odczyt wiersza takiego jak przykład z kolorem.
Przykład całościowy
Kontrola miesięcznego budżetu łącząca arytmetykę, porównania i logikę:
# September budgettake home = £2,400rent = £1,050bills = £230groceries = 4 * £65 daje £260.00left over = take home - rent - bills - groceries daje £860.00rent / take home as % daje 43.75%left over > £500 daje trueleft over > £500 && rent <= take home * 45% daje trueW groceries mnożenie odbywa się przed dodawaniem, a left over odejmuje od lewej do prawej. Ostatnie dwa wiersze zamieniają notatkę w kontrolę: wynik pozostaje true, dopóki zostaje ponad £500, a czynsz nie przekracza 45% dochodu netto. Zmienia się na false, gdy choć jeden z tych warunków przestaje być spełniony.