progress-4gl
Trabajando con numeros
Buscar..
Introducción
Progress ABL admite tres formatos de números: enteros y flotantes de 32 y 64 bits.
Los operadores
Progress soporta + / - * como operadores. No pueden ser sobrecargados. La división siempre devuelve un decimal. Si alguno de los números en un cálculo es un decimal, se devolverá un decimal. De lo contrario un INTEGER
o INT64
.
No hay operador +=
o ++
. Para aumentar o disminuir una variable tienes que asignarla a sí misma más o menos algo. Entonces, para agregar 1 a una variable haces: 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
Mas funciones matematicas
EXP - Devuelve el resultado de elevar un número a una potencia.
EXP (base, exponente)
MESSAGE EXP(10, 2) VIEW-AS ALERT-BOX. // Messages 100
SQRT - Devuelve la raíz cuadrada de un número.
SQRT (número)
MESSAGE "The square root of 256 is " SQRT(256) VIEW-AS ALERT-BOX. // Messages 16
MODULO - Determina el resto después de la división.
expresion MODULO base
DISPLAY 52 MODULO 12. //Displays 4
REDONDO : redondea una expresión decimal a un número específico de lugares después del punto decimal.
RONDA (número, precisión)
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 Trunca una expresión decimal a un número especificado de posiciones decimales, devolviendo un valor decimal.
TRUNCATE (número, lugares)
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
ABSOLUTO - Devuelve el valor absoluto de un número
DISPLAY ABS(10 - 12). //Displays 2
DISPLAY ABS(-2) = ABS(2). //Displays yes
MÍNIMO y MÁXIMO : devuelve el número más pequeño y más grande
MÍNIMO (número1, número2, ... número)
MÁXIMO (número1, número2, ... número)
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
Comparando numeros
Hay funciones estándar integradas para comparar igualdad, desigualdad, etc.
Nombre | Símbolo | Alternativa | Ejemplo |
---|---|---|---|
Igual | = | Ecualizador | i = j |
No es igual | <> | Nebraska | i <> j |
Menos que | < | LT | i <j |
menor o igual | <= | LE | i <= j |
Mas grande que | > = | GT | i> j |
Mayor que o igual | ≥ = | GE | i> = j |
El símbolo se puede intercambiar con la alternativa y viceversa. Entonces var1 <> var2
es lo mismo que var1 NE var2
.
Puede comparar un flotante con un entero, pero no puede comparar, por ejemplo, una fecha con un entero.
Generador de números aleatorios
ALEATORIO - genera un número aleatorio
ALEATORIO (bajo, alto)
Genera un entero pseudoaleatorio entre bajo y alto
// 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.