progress-4gl
Praca z liczbami
Szukaj…
Wprowadzenie
Progress ABL obsługuje trzy formaty liczb: 32 i 64-bitowe liczby całkowite i zmiennoprzecinkowe.
Operatorzy
Postęp obsługuje + / - * jako operatory. Nie mogą być przeciążone. Dzielenie zawsze zwraca liczbę dziesiętną. Jeśli którakolwiek z liczb w obliczeniu jest liczbą dziesiętną, zostanie zwrócona liczba dziesiętna. W przeciwnym razie INTEGER
lub INT64
.
Nie ma operatora +=
lub ++
. Aby zwiększyć lub zmniejszyć zmienną, musisz przypisać ją do siebie plus lub minus coś. Aby dodać 1 do zmiennej, należy: i = i + 1.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.
i = 3.
j = 2.
DISPLAY i + j. // 3 + 2 = 5
DISPLAY i - j. // 3 - 2 = 1
DISPLAY i / j. // 3 / 2 = 1.5
DISPLAY INTEGER(i / j). //Integer(3/2) = 2.
DISPLAY i * j. //3 x 2 = 6
Więcej funkcji matematycznych
EXP - Zwraca wynik podniesienia liczby do potęgi.
Termin ważności (podstawa, wykładnik)
MESSAGE EXP(10, 2) VIEW-AS ALERT-BOX. // Messages 100
SQRT - Zwraca pierwiastek kwadratowy z liczby.
SQRT (liczba)
MESSAGE "The square root of 256 is " SQRT(256) VIEW-AS ALERT-BOX. // Messages 16
MODULO - określa resztę po podzieleniu.
wyrażenie MODULO podstawa
DISPLAY 52 MODULO 12. //Displays 4
OKRĄGŁY - Zaokrągla wyrażenie dziesiętne do określonej liczby miejsc po przecinku.
OKRĄGŁY (liczba, precyzja)
DISPLAY ROUND(67.12345, 6) FORMAT "99.99999". // 67.12345
DISPLAY ROUND(67.12345, 5) FORMAT "99.99999". // 67.12345
DISPLAY ROUND(67.12345, 4) FORMAT "99.99999". // 67.12350
DISPLAY ROUND(67.12345, 3) FORMAT "99.99999". // 67.12300
DISPLAY ROUND(67.12345, 2) FORMAT "99.99999". // 67.12000
DISPLAY ROUND(67.12345, 1) FORMAT "99.99999". // 67.10000
DISPLAY ROUND(67.12345, 0) FORMAT "99.99999". // 67.00000
TRUNCATE Obcina wyrażenie dziesiętne do określonej liczby miejsc dziesiętnych, zwracając wartość dziesiętną.
TRUNCATE (liczba, miejsca)
DISPLAY TRUNCATE(67.12345, 6) FORMAT "99.99999". // 67.12345
DISPLAY TRUNCATE(67.12345, 5) FORMAT "99.99999". // 67.12345
DISPLAY TRUNCATE(67.12345, 4) FORMAT "99.99999". // 67.12340
DISPLAY TRUNCATE(67.12345, 3) FORMAT "99.99999". // 67.12300
DISPLAY TRUNCATE(67.12345, 2) FORMAT "99.99999". // 67.12000
DISPLAY TRUNCATE(67.12345, 1) FORMAT "99.99999". // 67.10000
DISPLAY TRUNCATE(67.12345, 0) FORMAT "99.99999". // 67.00000
ABSOLUTNY - Zwraca wartość bezwzględną liczby
DISPLAY ABS(10 - 12). //Displays 2
DISPLAY ABS(-2) = ABS(2). //Displays yes
MINIMUM i MAKSYMALNIE - zwraca najmniejszą i największą liczbę
MINIMUM (liczba 1, liczba 2, ... liczba n)
MAKSYMALNA (liczba 1, liczba 2, ... liczba n)
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE j AS INTEGER NO-UNDO.
DEFINE VARIABLE k AS INTEGER NO-UNDO.
i = 40.
j = 45.
k = 56.
DISPLAY MINIMUM(i, j, k) MAXIMUM(i, j, k). // Displays 40 and 56
Porównywanie liczb
Istnieją wbudowane standardowe funkcje do porównywania równości, nierówności itp.
Nazwa | Symbol | Alternatywny | Przykład |
---|---|---|---|
Równy | = | EQ | i = j |
Nie równe | <> | NE | i <> j |
Mniej niż | < | LT | ja <j |
mniejszy lub równy | <= | LE | i <= j |
Lepszy niż | > = | GT | i> j |
Większy bądź równy | ≥ = | GE | i> = j |
Symbol można wymienić na alternatywny i odwrotnie. Zatem var1 <> var2
to to samo, co var1 NE var2
.
Można porównać liczbę zmiennoprzecinkową z liczbą całkowitą, ale nie można na przykład porównać daty z liczbą całkowitą.
Generator liczb losowych
RANDOM - generuje liczbę losową
RANDOM (niski, wysoki)
Generuje pseudolosową liczbę całkowitą od niskiej do wysokiej
// Example that generates 20 random numbers between 1 and 20 (1 and 20 included)
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DO i = 1 TO 20.
DISPLAY i RANDOM(1, 20).
PAUSE.
END.