A veces, hay que realizar trabajos repetitivos. Y no me refiero a las composiciones iterativas, aunque básicamente es un problema parecido. Sino, encapsular problemas más pequeños como si fueran pequeños algoritmos. Un ejemplo claro, son las referentes a acciones de entrada y salida de datos.
Tabla de contenidos
Acciones
Una acción es un pequeño algoritmo empaquetado que desarrolla una tarea concreta. Las acciones se pueden utilizar en cualquier punto del programa que las contiene.
Como las funciones son algoritmos en miniatura, tienen exactamente la misma estructura que su algoritmo padre. Eso quiere decir que también tiene una cabecera, la cual se delimita por las siguientes palabras clave:
indice, tabla: entero {Pre: indice = 0, tabla = TABLA} accion multiplica() var tabla: entero; indice: entero; fvar para indice := 0 hasta indice<=10 indice++ hacer EscribirEntero(entero * indice); fpara faccion {Post: indice = 11, entero = TABLA, tenemos la tabla del 0 al 10 del número contenido en entero}
Como vemos, primero sustituimos la palabra clave algoritmo
y falgoritmo
por accion
y faccion
. También especificamos el inicio y final de la acción, además de la declaración de sus varaibles como lo hacemos con un algoritmo general.
EscribirEntero()
; es una acción predefinida que veremos más adelante y que darás por hecho, que hace lo que su nombre indica sin preocuparte demasiado.
Esta acción la tendrás creada y la utilizarás cada vez que quieras mostrar la tabla de multiplicar de un número dado. El número tabla
, se la darás como parámetro, cosa que verás ahora.
Parámetros
Cuando se define una acción, su proceso interno tiene que ser lo bastante generalista para que desempeñe su función, es decir, que se pueda aprovechar en cualquier parte del programa sin que se tenga que adaptar continuamente, porque eso haría perder su función y ventaja.
Después, una vez creada la acción, en el entorno donde se quiera aprovechar la acción se crea un vinculo más especifico con dicha acción, o dicho de otra forma, se le pasa un dato o parámetro. De esa forma podrás usarla tantas veces como quieras.
En el ejemplo de la tabla de multiplicar, para poder aprovecharla tienes que cambiar el valor de la variable tabla
. Pero claro sería un engorro copiar toda la acción en el entorno concreto y cambiar el número de la variable. Es más cómodo implementar el la acción multiplica()
una sola vez y colocar una llamada de la acción cuando quieras mostrar la tabla pasandole como parámetro el número de la tabla. Tal que así:
accion multiplica(10);
En la cabecera de la acción se ha de declarar que le pasamos un parámetro, el nombre del cual es irrelevante, es decir, podemos poner el nombre que queramos. En este caso, sólo necesitamos un parámetro, pero se pueden pasar los que se necesiten, siempre declarandalos previamente.
accion multiplica (ent tabla: entero) ... faccion
También se tiene que especificar de que tipo de dato tienen que ser los parámetros que tiene que recibir. Las palabra clave posibles son:
- Entrada (
ent
): Es un parámetro que sólo interesa consultar el valor de entrada. Sintaxis:ent nombre: tipo;
- Salida (
sal
): En este tipo de parámetro sólo interesa el parámetro que retorna la acción. Por lo tanto, este parámetro se calcula dentro de la acción. Sintaxis:sal nombre: tipo;
- Entrada/salida (
entsal
): Este parámetro interesa tanto el dato pasado como el que retorna calculado por la función. El dato pasado se actualiza o modifica. Sintaxis:entsal nombre: tipo;
Observa que si en otro lugar del algoritmo quieres saber la tabla de, por ejemplo el 2, llamarías la acción así: accion multiplica (2);
Y esto escribiendo una sola vez el código. ¡Una autentica maravilla!
Funciones
Una función es igual en su estructura básica, pero una función sólo se pueden llamar a través de una expresión. No se pueden llamar de la misma forma que las acciones.
Puede formar parte de un calculo, también se puede asignar a una variable, que tras hacer unos cálculos retorna un valor. Por lo que una función, siempre ha de retornar una valor.
funcion cuadriplica (ent cantidad: entero) var resultado: entero; fvar resutado = cantidad * 4; retorna resultado; ffuncion
Una función siempre acaba con un retorna
. Se llama de la siguiente forma:
x = cuadriplica(10); y = 10 + cuadriplica(5);
Otra diferencia con las acciones, es que las funciones sólo aceptan parámetros de entrada.
Funciones de conversión de tipo de dato
Las funciones predefinidas que tiene el lenguaje algorítmico son:
funcion realAEntero(x: real): entero
funcion enteroAReal(x: entero): real
funcion caracterACodigo(x: caracter): entero
funcion codigoACaracter(x:entero): caracter
A veces se necesitan funciones de conversión de tipo de dato, funciones que ya están predefinidas por el lenguaje, y que están en todos los lenguajes de programación.
Acciones y funciones de entrada y salida de datos
El lenguaje algorítmico también tiene funciones y acciones predefinidas para comunicarse con el teclado o la pantalla. Acciones y funciones que se encargan de esta labor y que no hace falta que te preocupes para implementarlas, y que en otros lenguajes también disponemos.
funcion leerEntero(): entero
funcion leerReal(): real
funcion leerCaracter(): caracter
accion escribirEntero(ent e: entero)
accion escribirReal(ent r: real)
accion escribirCaracter(ent c: caracter)
Si te ha gustado o te ha aclarado conceptos el contenido de este artículo compártelo en redes sociales para que pueda crecer, ¡Muchas gracias!
Deja una respuesta