Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Para empezar una función no es más que un bloque de código con un determinado fin o
propósito, podemos definir más de una y nos permiten ahorrar líneas código si nuestros
programas son muy extensos o hay codificación redundante.
A continuación se muestran una serie de ejemplos para comprender mejor esta temática.
En la línea 2 definimos una funcion que se llama mensaje, el fin de ésta es imprimir en
pantalla el mensaje ¡Hola Mundo! (línea 4). Si nos fijamos está declarada fuera del
proceso principal, para ser llamada (ejecutada) dentro de éste (línea 10). Esta funcion
no tiene argumentos, porque no hay nada dentro de los paréntesis y no devuelve un
valor.
Ejemplo 2. Funcion con 1 parámetro y sin retorno.
En este otro ejemplo la función mensaje recibe como parámetro (argumento) un valor
en este caso una cadena de texto para visualizarla en pantalla. Cuando se llama en el
proceso principal (línea 10), obligatoriamente deberemos ingresar un texto ya que sí no
lo hacemos generará un error.
Funcion variable<-nombre()
instrucciones...
FinFuncion
En el ejemplo 3 se crea una funcion que suma dos números y el resultado se lo vamos a
asignar a la variable res. Ésta entonces contendrá un valor y lo va a retornar. En la línea
10 se llama a la funcion e imprimimos un mensaje para visualizar el resultado. La salida
que imprime es: "El resultado es: 10".
En este ejemplo la funcion suma recibe dos parámetros, en este caso dos números que se
van a sumar y guardar el resultado en la variable res. Vemos que en la línea 9 se llama a
la función con dos valores (5 y 3), si no se ingresan o por el contrario se agregan más
valores el programa generará error. Finalmente el programa imprime: "El resultado es:
8".
Como vimos en los anteriores ejemplos, una función puede tener muchas variantes,
dependiendo del caso o del problema a resolver una funcion puede o no llevar
parámetros, como tambien puede o no devolver un valor, por eso es importante tener
claro estos conceptos para saber cuando utilizarlos o aplicarlos en nuestros programas.
En PSeInt se le pasan argumentos a una funcion de dos formas por valor o por
referencia. Hasta ahora en los anteriores ejemplos las funciones que recibieron
argumentos fueron por valor ya veremos por que.
Cuando decimos pasaje por valor nos referimos a que los argumentos de la funcion
opera con una copia de la variable o el valor que recibió en la llamada de la funcion, por
lo que las acciones que se hagan dentro de ésta no afectarán al resto del programa.
Forma 1
Ambas son válidas, depende del programador que forma quiera utilizar. Recomiendo la
forma 1.
Realizaremos un ejemplo más completo para entender mejor el pasaje por valor.
El primer valor 25 se debe a que a la funcion le estamos pasando una variable cuyo
valor es 20, dentro de la funcion este valor cambia a 25 pues hace la siguiente operacion
a<-20+5 e imprime el valor de a osea 25.
En la otra salida ("El valor de i es: 20"), simplemente estamos imprimiendo el valor de i
para poder entender el pasaje por valor, podemos observar que conserva el mismo valor
a pesar de que la funcion miFuncion lo haya modificado a 25, esto porque cómo
expresamos anteriormente, las funciones que reciben argumentos por valor los cambios
que ocurren dentro de ella no afectan al resto del programa. La variable i le está pasando
una copia de su valor a la variable a, para que i no se vea afectada en las operaciones
que se hagan con a, de manera que i siempre conservará su valor original.
Los pasajes por referencia es lo contrario a los pasajes por valor. Su sintaxis es la
siguiente:
Básicamente emplearemos el mismo ejemplo que el anterior sólo que el argumento será
por referencia. Reiterémos:
25
El valor de i es: 25
El primer valor 25 se debe a que a la funcion le estamos pasando una variable cuyo
valor es 20, dentro de la funcion este valor cambia a 25 pues hace la siguiente operacion
a<-20+5 e imprime el valor de a osea 25.
En la otra salida ("El valor de i es: 25"), estamos imprimiendo el valor de i para poder
captar el pasaje por referencia, podemos observar que el valor ya no es el mismo porque
la funcion miFuncion lo ha modificado a 25, las funciones que reciben argumentos por
referencia los cambios que ocurren dentro de ella afectan al resto del programa. De
manera que i pierde por completo su valor original.
Creamos la funcion suma que recibe como parámetro un arreglo y retorna un valor
(línea 2).
Se crea un acumulador inicializado en cero para sumar los dos números, éste contendrá
el resultado y es lo que vamos a retornar.
En la línea 5 se recorre el arreglo con un ciclo para y se suman los dos datos
ingresados.
En el proceso principal es donde se crea el arreglo con un tamaño de 2 (línea 15).
En la línea 17 - 24 a través del ciclo para pedimos los dos números al usuario y lo
guardamos en el arreglo.
Finalmente en la línea 26 se imprime el resultado y se invoca a la funcion pasandole
como parámetro el arreglo