Funciones/Subprocesos en PSeInt
Si el perfil de lenguaje seleccionado lo permite (ver Opciones del Pseudocdigo), se pueden declarar nuevas
funciones o subprocesos en un algoritmo en Pseudocdigo. La sintaxis para ello es la siguiente:
SubProceso Tipo variable_de_retorno <- nombre_de_la_funcion ( Tipo argumento_1, Tipo argumento_2, ... )
accin 1;
accin 1;
.
.
.
accin n;
FinSubproceso
Comienza con la palabra clave SubProceso (o Funcin, son equivalentes) seguida del Tipo de la variable de retorno
(real, entero, string, etc.), el nombre de la variable de retorno, el signo de asignacin, el nombre del subproceso, y
finalmente, la lista de argumentos entre parntesis con su correspondiente Tipo antes del nombre. Existen variantes
para esta estructura. Si la funcin no retorna ningn valor, pueden omitirse el identificador variable_de_retorno y el
signo de asignacin, es decir, colocar directamente el nombre y los argumentos a continuacin de la palabra clave
SubProceso. Si el subproceso no recibe ningn valor pueden colocarse los parntesis vacos u omitirse, finalizando la
primer lnea con el nombre del subproceso. Las reglas para los nombres de subprocesos, variables de retorno y
argumentos son las mismas que para cualquier identificador en pseudocdigo.
Adems, opcionalmente pueden agregarse las palabras claves Por Valor o Por Referencia para indicar el tipo de
pasaje en cada argumento. Si no se indica, los arreglos se pasan por referencia, las dems expresiones por valor. El
pasaje por referencia implica que si la funcin modifica el argumento, se modificar en realidad la variable que se
utiliz en la llamada, mientras que el pasaje por valor implica que la funcin opera con una copia de la variable (o el
resultado de la expresin) que se utiliz en la llamada, por lo que las modificaciones que aplique la funcin no se
vern reflejadas fuera de la misma.
Para invocar a la funcin se debe utilizar su nombre y entre parntesis los parmetros, que podrn ser expresiones
slo si el tipo de pasaje es por referencia. Una llamada puede ser en s una instruccin, pero si la funcin retorna
algn valor, tambin puede utilizarse como operando dentro de una expresin.
El ejemplo Subprocesos, muestra un programa que declara dos funciones, una que retorna un valor y se que es
luego utilizado dentro de una expresin para mostrar en pantalla, y otra que no recibe argumentos; el ejemplo
Potencia, muestra una funcin recursiva; y el ejemplo Promedio muestra una funcin que recibe un arreglo como
argumento.
Ejemplos de varias funciones y procedimientos que se llaman desde un programa principal.
// funcion que no recibe ni devuelve nada
SubProceso Saludar
Escribir "Hola mundo!"
FinSubProceso
// funcion que recibe un argumento por valor, y devuelve su doble
SubProceso Real res <- CalcularDoble(Real num)
res <- num*2 // retorna el doble
FinSubProceso
// funcion que recibe un argumento por referencia, y lo modifica
SubProceso Triplicar(real num por referencia)
num <- num*3 // modifica la variable duplicando su valor
FinSubProceso
// proceso principal, que invoca a las funciones antes declaradas
Proceso PruebaFunciones
Definir x como real
Escribir "Llamada a la funcion Saludar:"
Saludar // como no recibe argumentos pueden omitirse los parntesis vacios
Escribir "Ingrese un valor numrico para x:"
Leer x
Escribir "Llamada a la funcin CalcularDoble (pasaje por valor)"
Escribir "El doble de ",x," es ", CalcularDoble(x)
Escribir "El valor original de x es ",x
Escribir "Llamada a la funcin Triplicar (pasaje por referencia)"
Triplicar(x)
Escribir "El nuevo valor de x es ", x
FinProceso