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 %% num2
Solució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: " result
Conclusió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