En este tema, aprenderemos sobre los operadores y expresiones en REXX, que son fundamentales para realizar cálculos, tomar decisiones y manipular datos. Cubriremos los siguientes puntos:
- Operadores Aritméticos
- Operadores Relacionales
- Operadores Lógicos
- Operadores de Concatenación
- Precedencia de Operadores
- Ejemplos Prácticos
- Ejercicios
- Operadores Aritméticos
Los operadores aritméticos se utilizan para realizar operaciones matemáticas básicas. A continuación se muestra una lista de los operadores aritméticos en REXX:
| Operador | Descripción | Ejemplo |
|---|---|---|
+ |
Suma | a + b |
- |
Resta | a - b |
* |
Multiplicación | a * b |
/ |
División | a / b |
// |
División entera | a // b |
** |
Exponenciación | a ** b |
%% |
Módulo (residuo) | a %% b |
Ejemplo:
/* Ejemplo de operadores aritméticos */
a = 10
b = 3
say "Suma: " a + b /* 13 */
say "Resta: " a - b /* 7 */
say "Multiplicación: " a * b /* 30 */
say "División: " a / b /* 3.333333 */
say "División entera: " a // b /* 3 */
say "Exponenciación: " a ** b /* 1000 */
say "Módulo: " a %% b /* 1 */
- Operadores Relacionales
Los operadores relacionales se utilizan para comparar dos valores. Los resultados de estas comparaciones son valores booleanos (1 para verdadero y 0 para falso).
| Operador | Descripción | Ejemplo |
|---|---|---|
= |
Igual a | a = b |
\= |
No igual a | a \= b |
> |
Mayor que | a > b |
< |
Menor que | a < b |
>= |
Mayor o igual que | a >= b |
<= |
Menor o igual que | a <= b |
Ejemplo:
/* Ejemplo de operadores relacionales */
a = 10
b = 3
say "Igual a: " (a = b) /* 0 (falso) */
say "No igual a: " (a \= b) /* 1 (verdadero) */
say "Mayor que: " (a > b) /* 1 (verdadero) */
say "Menor que: " (a < b) /* 0 (falso) */
say "Mayor o igual que: " (a >= b) /* 1 (verdadero) */
say "Menor o igual que: " (a <= b) /* 0 (falso) */
- Operadores Lógicos
Los operadores lógicos se utilizan para combinar expresiones booleanas.
| Operador | Descripción | Ejemplo |
|---|---|---|
& |
Y lógico (AND) | a & b |
| ` | ` | O lógico (OR) |
\ |
No lógico (NOT) | \a |
Ejemplo:
/* Ejemplo de operadores lógicos */
a = 1
b = 0
say "Y lógico: " (a & b) /* 0 (falso) */
say "O lógico: " (a | b) /* 1 (verdadero) */
say "No lógico: " (\a) /* 0 (falso) */
- Operadores de Concatenación
Los operadores de concatenación se utilizan para unir cadenas de texto.
| Operador | Descripción | Ejemplo |
|---|---|---|
| ` | ` |
Ejemplo:
/* Ejemplo de operadores de concatenación */
str1 = "Hello"
str2 = "World"
say "Concatenación: " str1 || " " || str2 /* Hello World */
- Precedencia de Operadores
La precedencia de operadores determina el orden en que se evalúan las expresiones. A continuación se muestra una tabla con la precedencia de operadores en REXX, de mayor a menor:
| Operador | Descripción |
|---|---|
** |
Exponenciación |
*, /, //, %% |
Multiplicación, División, Módulo |
+, - |
Suma, Resta |
=, \=, >, <, >=, <= |
Relacionales |
& |
Y lógico (AND) |
| ` | ` |
\ |
No lógico (NOT) |
| ` |
Ejemplo:
/* Ejemplo de precedencia de operadores */
a = 2
b = 3
c = 4
result = a + b * c ** 2
say "Resultado: " result /* 38 (b * c^2 se evalúa primero, luego a + resultado) */
- Ejemplos Prácticos
Ejemplo 1: Cálculo de Área de un Círculo
/* Cálculo del área de un círculo */
radius = 5
pi = 3.14159
area = pi * radius ** 2
say "El área del círculo es: " area /* 78.53975 */Ejemplo 2: Comparación de Números
/* Comparación de dos números */
num1 = 10
num2 = 20
if num1 > num2 then
say num1 "es mayor que" num2
else
say num1 "no es mayor que" num2 /* 10 no es mayor que 20 */
- Ejercicios
Ejercicio 1: Operaciones Aritméticas
Escribe un programa en REXX que tome dos números como entrada y realice las siguientes operaciones: suma, resta, multiplicación, división, división entera, exponenciación y módulo. Muestra los resultados.
Ejercicio 2: Comparación de Valores
Escribe un programa en REXX que compare tres números y determine cuál es el mayor y cuál es el menor.
Ejercicio 3: Concatenación de Cadenas
Escribe un programa en REXX que tome dos cadenas de texto como entrada y las concatene con un espacio en medio. Muestra el resultado.
Soluciones
Solución Ejercicio 1
/* Solución Ejercicio 1 */
say "Introduce el primer número:"
pull num1
say "Introduce el segundo número:"
pull num2
say "Suma: " num1 + num2
say "Resta: " num1 - num2
say "Multiplicación: " num1 * num2
say "División: " num1 / num2
say "División entera: " num1 // num2
say "Exponenciación: " num1 ** num2
say "Módulo: " num1 %% num2Solución Ejercicio 2
/* Solución Ejercicio 2 */
say "Introduce el primer número:"
pull num1
say "Introduce el segundo número:"
pull num2
say "Introduce el tercer número:"
pull num3
if num1 > num2 & num1 > num3 then
say num1 "es el mayor"
else if num2 > num1 & num2 > num3 then
say num2 "es el mayor"
else
say num3 "es el mayor"
if num1 < num2 & num1 < num3 then
say num1 "es el menor"
else if num2 < num1 & num2 < num3 then
say num2 "es el menor"
else
say num3 "es el menor"Solución Ejercicio 3
/* Solución Ejercicio 3 */
say "Introduce la primera cadena:"
pull str1
say "Introduce la segunda cadena:"
pull str2
result = str1 || " " || str2
say "Resultado de la concatenación: " resultConclusión
En esta sección, hemos aprendido sobre los operadores y expresiones en REXX, incluyendo operadores aritméticos, relacionales, lógicos y de concatenación. También hemos visto cómo la precedencia de operadores afecta la evaluación de las expresiones. Los ejemplos prácticos y ejercicios proporcionados te ayudarán a reforzar estos conceptos y prepararte para los siguientes temas en el curso.
Curso de Programación REXX
Módulo 1: Introducción a REXX
- ¿Qué es REXX?
- Configuración del Entorno REXX
- Hola Mundo en REXX
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Conceptos Básicos de Programación
- Operadores y Expresiones
- Estructuras de Control: IF/THEN/ELSE
- Bucles: DO y LEAVE
- Entrada y Salida
- Manipulación Básica de Cadenas
Módulo 3: Programación Intermedia en REXX
- Funciones y Subrutinas
- Funciones Integradas
- Manejo de Errores
- Operaciones de Entrada/Salida de Archivos
- Trabajando con Arreglos
Módulo 4: Programación Avanzada en REXX
- Manipulación Avanzada de Cadenas
- Técnicas de Análisis
- Interfaz con Programas Externos
- Macros en REXX
- Optimización del Rendimiento
