Les funcions incorporades en REXX són eines molt potents que permeten realitzar una àmplia varietat d'operacions sense necessitat de definir funcions personalitzades. Aquestes funcions estan disponibles de manera predeterminada i cobreixen operacions comunes com la manipulació de cadenes, operacions matemàtiques, gestió de dates i hores, entre d'altres.
Tipus de Funcions Incorporades
Les funcions incorporades en REXX es poden classificar en diverses categories:
- Funcions de Manipulació de Cadenes
- Funcions Matemàtiques
- Funcions de Data i Hora
- Funcions de Conversió
- Altres Funcions Utilitàries
- Funcions de Manipulació de Cadenes
Aquestes funcions permeten treballar amb cadenes de text de manera eficient.
- LENGTH(cadena): Retorna la longitud de la cadena.
- SUBSTR(cadena, inici, longitud): Retorna una subcadena de la cadena original.
- POS(subcadena, cadena, inici): Retorna la posició de la subcadena dins de la cadena.
- LEFT(cadena, longitud): Retorna els primers 'longitud' caràcters de la cadena.
- RIGHT(cadena, longitud): Retorna els últims 'longitud' caràcters de la cadena.
- STRIP(cadena, opcional, caràcter): Elimina espais o caràcters específics de l'inici i/o final de la cadena.
Exemple Pràctic
/* Exemple de funcions de manipulació de cadenes */ cadena = "Hola, món!" longitud = LENGTH(cadena) subcadena = SUBSTR(cadena, 1, 4) posicio = POS("món", cadena) esquerra = LEFT(cadena, 5) dreta = RIGHT(cadena, 4) cadena_neta = STRIP(" Hola, món! ") say "Longitud de la cadena: " longitud say "Subcadena: " subcadena say "Posició de 'món': " posicio say "Primers 5 caràcters: " esquerra say "Últims 4 caràcters: " dreta say "Cadena neta: '" cadena_neta "'"
- Funcions Matemàtiques
Aquestes funcions permeten realitzar operacions matemàtiques bàsiques i avançades.
- ABS(número): Retorna el valor absolut del número.
- MAX(número1, número2, ...): Retorna el valor màxim entre els números proporcionats.
- MIN(número1, número2, ...): Retorna el valor mínim entre els números proporcionats.
- ROUND(número, decimals): Arrodoneix el número al nombre de decimals especificat.
- SQRT(número): Retorna l'arrel quadrada del número.
Exemple Pràctic
/* Exemple de funcions matemàtiques */ num1 = -5 num2 = 3.14159 num3 = 9 valor_absolut = ABS(num1) valor_maxim = MAX(num1, num2, num3) valor_minim = MIN(num1, num2, num3) arrodonit = ROUND(num2, 2) arrel_quadrada = SQRT(num3) say "Valor absolut de " num1 ": " valor_absolut say "Valor màxim: " valor_maxim say "Valor mínim: " valor_minim say "Valor arrodonit de " num2 ": " arrodonit say "Arrel quadrada de " num3 ": " arrel_quadrada
- Funcions de Data i Hora
Aquestes funcions permeten treballar amb dates i hores.
- DATE(format): Retorna la data actual en el format especificat.
- TIME(format): Retorna l'hora actual en el format especificat.
- DATETIME(): Retorna la data i hora actuals.
Exemple Pràctic
/* Exemple de funcions de data i hora */ data_actual = DATE("S") hora_actual = TIME("L") data_hora_actual = DATETIME() say "Data actual: " data_actual say "Hora actual: " hora_actual say "Data i hora actuals: " data_hora_actual
- Funcions de Conversió
Aquestes funcions permeten convertir dades entre diferents formats.
- D2X(decimal): Converteix un número decimal a hexadecimal.
- X2D(hexadecimal): Converteix un número hexadecimal a decimal.
- C2D(cadena): Converteix una cadena a un número decimal.
- D2C(decimal): Converteix un número decimal a una cadena.
Exemple Pràctic
/* Exemple de funcions de conversió */ decimal = 255 hexadecimal = D2X(decimal) decimal_convertit = X2D(hexadecimal) cadena = "123" decimal_de_cadena = C2D(cadena) cadena_de_decimal = D2C(decimal) say "Decimal a hexadecimal: " hexadecimal say "Hexadecimal a decimal: " decimal_convertit say "Cadena a decimal: " decimal_de_cadena say "Decimal a cadena: " cadena_de_decimal
- Altres Funcions Utilitàries
Aquestes funcions proporcionen funcionalitats addicionals que poden ser útils en diversos contextos.
- RANDOM(min, max): Genera un número aleatori entre min i max.
- SLEEP(segons): Pausa l'execució del programa durant el nombre de segons especificat.
Exemple Pràctic
/* Exemple de funcions utilitàries */ aleatori = RANDOM(1, 100) say "Número aleatori entre 1 i 100: " aleatori say "Pausant l'execució durant 3 segons..." SLEEP(3) say "Execució reprès."
Exercicis Pràctics
Exercici 1: Manipulació de Cadenes
Escriu un programa que prengui una cadena d'entrada de l'usuari i faci el següent:
- Mostri la longitud de la cadena.
- Retorni els primers 5 caràcters de la cadena.
- Retorni els últims 3 caràcters de la cadena.
- Elimini els espais en blanc de l'inici i final de la cadena.
Solució
/* Solució de l'exercici 1 */ say "Introdueix una cadena:" pull cadena longitud = LENGTH(cadena) primers_5 = LEFT(cadena, 5) ultims_3 = RIGHT(cadena, 3) cadena_neta = STRIP(cadena) say "Longitud de la cadena: " longitud say "Primers 5 caràcters: " primers_5 say "Últims 3 caràcters: " ultims_3 say "Cadena neta: '" cadena_neta "'"
Exercici 2: Operacions Matemàtiques
Escriu un programa que prengui tres números d'entrada de l'usuari i faci el següent:
- Mostri el valor màxim.
- Mostri el valor mínim.
- Calculi i mostri l'arrel quadrada del primer número.
Solució
/* Solució de l'exercici 2 */ say "Introdueix tres números separats per espais:" pull num1 num2 num3 valor_maxim = MAX(num1, num2, num3) valor_minim = MIN(num1, num2, num3) arrel_quadrada = SQRT(num1) say "Valor màxim: " valor_maxim say "Valor mínim: " valor_minim say "Arrel quadrada del primer número: " arrel_quadrada
Conclusió
Les funcions incorporades en REXX són eines essencials que faciliten la programació i permeten realitzar operacions complexes de manera senzilla i eficient. Dominar aquestes funcions és fonamental per a qualsevol programador que vulgui treballar amb REXX de manera efectiva. En el proper tema, explorarem la gestió d'errors en REXX, una habilitat crucial per escriure programes robustos i fiables.
Curs de Programació REXX
Mòdul 1: Introducció a REXX
- Què és REXX?
- Configuració de l'Entorn REXX
- Hola Món en REXX
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Conceptes Bàsics de Programació
- Operadors i Expressions
- Estructures de Control: IF/THEN/ELSE
- Bucles: DO i LEAVE
- Entrada i Sortida
- Manipulació Bàsica de Cadenes
Mòdul 3: Programació Intermèdia en REXX
- Funcions i Subrutines
- Funcions Incorporades
- Gestió d'Errors
- Operacions d'Entrada/Sortida de Fitxers
- Treballant amb Arrays
Mòdul 4: Programació Avançada en REXX
- Manipulació Avançada de Cadenes
- Tècniques de Parsing
- Interfície amb Programes Externs
- Macros REXX
- Optimització del Rendiment