Funciones en “PseInt”
Funciones/Subprocesos en PSeInt
Es necesario activar selección en la configuración del perfil de lenguaje
seleccionado lo permite (ver Opciones del Pseudocódigo), se pueden declarar
nuevas funciones o subprocesos en un algoritmo en Pseudocódigo.
La sintaxis para ello es la siguiente:
Funcion variable_de_retorno = nombre_de_la_funcion ( argumento_1, argumento_2, ... )
acción 1;
acción 1;
.
acción n;
FinFuncion
Comienza con la palabra clave Funcion (alternativamente puede
utilizarSubProceso o SubAlgoritmo, son sinónimos) seguida de la variable de
retorno, el signo de asignación, el nombre del subproceso, y finalmente, la lista
de los argumentos entre paréntesis. Existen variantes para esta estructura. Si la
función no retorna ningún valor, pueden omitirse la variable de retorno y el
signo de asignación. Es decir, se puede colocar directamente el nombre y los
argumentos a continuación de la palabra clave Funcion. Si el subproceso no
recibe ningún valor pueden colocarse los paréntesis vacíos u omitirse,
finalizando la primer línea 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 pseudocódigo.
Además, opcionalmente pueden agregarse las palabras claves Por Valor o Por
Referencia para indicar el tipo de paso en cada argumento. Si no se indica, los
arreglos se pasan por referencia, las demás expresiones por valor. El paso por
referencia implica que si la función modifica el argumento, se modificará en
realidad la variable que se utilizó en la llamada, mientras que el paso por valor
implica que la función opera con una copia de la variable (o el resultado de la
expresión) que se utilizó en la llamada, por lo que las modificaciones que
aplique la función no se verán reflejadas fuera de la misma.
Para invocar a la función se debe utilizar su nombre y entre paréntesis los
parámetros, que podrán ser expresiones sólo si el tipo de pasaje es por
referencia. Una llamada puede ser en sí una instrucción, pero si la función
retorna algún valor, también puede utilizarse como operando dentro de una
expresión.
El ejemplo Subprocesos, muestra un programa que declara dos funciones, una
que retorna un valor y que es luego utilizado dentro de una expresión para
mostrar en pantalla, y otra que no recibe argumentos; el ejemplo Potencia,
muestra una función recursiva; y el ejemplo Promedio muestra una función que
recibe un arreglo como argumento
// 0
// funcion que no recibe ni devuelve nada
Funcion Saludar
Escribir "Hola mundo!"
FinFuncion
// funcion que recibe un argumento por valor, y devuelve su doble
Funcion res <- CalcularDoble(num)
Definir res como real
res <- num*2 // retorna el doble
FinFuncion
// funcion que recibe un argumento por referencia, y lo modifica
Funcion Triplicar(num por referencia)
num <- num*3 // modifica la variable duplicando su valor
FinFuncion
// proceso principal, que invoca a las funciones antes declaradas
Algoritmo PruebaFunciones
Definir x Como Real
Escribir "Llamada a la funcion Saludar:"
Saludar // como no recibe argumentos pueden omitirse los paréntesis vacios
Escribir "Ingrese un valor numérico para x:"
Leer x
Escribir "Llamada a la función CalcularDoble (paso por valor)"
Escribir "El doble de ",x," es ", CalcularDoble(x)
Escribir "El valor original de x es ",x
Escribir "Llamada a la función Triplicar (paso por referencia)"
Triplicar(x)
Escribir "El nuevo valor de x es ", x
FinAlgoritmo
// 0
// 1
Funcion ElVector (V,yy)
V[0]=10;V[1]=11;V[2]=12;V[3]=13;V[4]=14;
yy[0]=20; yy[1]=21
FinFuncion
Funcion res2 = AleatorioF()
Definir res2 como Entero
res2 = Azar(1)
FinFuncion
Algoritmo PruebaF
Definir x,yy,F como Entero
Dimension x[5]
Dimension yy[2]
F=AleatorioF
Escribir " F:",F
x[0]=0;x[1]=1;x[2]=2;x[3]=3;x[4]=4;
//Escribir " ",yy[0]," ",yy[1]
Escribir " ",x[0]," ",x[1]," ",x[2]," ",x[3]," ",x[4]
ElVector(x,yy)
Escribir " ",x[0]," ",x[1]," ",x[2]," ",x[3]," ",x[4]
Escribir " ",yy[0]," ",yy[1]
FinAlgoritmo
// 1
// 2
Funcion res1 = Aleatorios()
Definir res1 como Entero
res1 = Azar(7)+3
Mientras res1 % 2 = 0 Hacer
res1 = Azar(7)+3
FinMientras
FinFuncion
Funcion res =Sumar(x,n)
Definir res,i como entero
res=0
para i=0 hasta n-1 hacer
res=res+x[i]
FinPara
FinFuncion
Funcion EscribaVector(x,n)
Definir i Como Entero
Escribir " Vector de :",n," elementos"
Escribir " ... "
Para i<-0 Hasta n-1 Con Paso 1 Hacer
Escribir Sin Saltar x[i]," "
FinPara
Escribir " "
FinFuncion
Algoritmo SubProcesoVector1
Definir i,j,N,S,sum Como Entero
N=Aleatorios();
Dimension S[9]
Para i<-0 Hasta N-1 Con Paso 1 Hacer
S[i]= Azar(80)+20
FinPara
EscribaVector(S,N)
sum=Sumar(S,N)
Escribir sum
FinAlgoritmo
// 2