Funciones y procedimientos

Partimos del ejemplo anterior de función:

Funcion max <- CalcularMaximo(num1,num2)
	Definir max Como Entero;
	Si num1>num2 Entonces
		max <- num1;
	SiNo
		max <- num2;
	FinSi
FinFuncion	

Proceso Maximo
	Definir numero1,numero2,num_maximo Como Entero;
	Escribir "Dime el número1:";
	Leer numero1;
	Escribir "Dime el número2:";
	Leer numero2;
	num_maximo <- CalcularMaximo(numero1,numero2);
	Escribir "El máximo es ",num_maximo;
FinProceso

Ámbito de variables

Las variables definidas en la función no existen en otras funciones o el programa principal. Igualmente las variables del programa principal no existen en la función.

Por ejemplo la variable max definida en la función no existe en el programa principalmente. Igualmente la variable numero1 definida en el programa principal no existe en la función.

Parámetros formales y reales

  • Parámetros formales: Son las variables que recibe la función, se crean al definir la función. Su contenido lo recibe al realizar la llamada a la función de los parámetro reales. Los parámetros formales son variables locales dentro de la función.

  • Parámetros reales: Son la expresiones que se utilizan en la llamada de la función, sus valores se copiarán en los parámetros formales.

Paso de parámetro por valor o por referencia

  • Paso por valor: El valor de los parámetros reales se copian en los parámetros formales, por lo tanto una modificación de algún parámetro formal no modifica el parámetro real.
  • Paso por referencia: Cuando se pasa un parámetro por referencia implica que si modificamos el parámetro formal se modificará el parámetro real.

Pode defecto, los arreglos se pasan por referencia, las demás expresiones por valor. Si queremos indicar explícitamente como se pasan los parámetros podemos usar las palabras claves Por Valor o Por Referencia.

Ejemplos

Comprobamos que los parámetros pasados por valor no modifican los parámetros reales.

Funcion PasoPorValor(num)
	num <- num +1;
	Escribir num;
FinFuncion	

Proceso Prueba
	Definir numero1 Como Entero;
	numero1<-5;
	PasoPorValor(numero1);
	Escribir numero1;
FinProceso

El resultado será 5 y 6. Hemos incrementado el valor del parámetro formal, pero no se ha modificado el real.

Veamos ahora el mismo programa pero pasando el parámetro por referencia.

Funcion PasoPorReferencia(num Por Referencia)
	num <- num +1;
	Escribir num;
FinFuncion	


Proceso Prueba
	Definir numero1 Como Entero;
	numero1<-5;
	PasoPorReferencia(numero1);
	Escribir numero1;
FinProceso

El resultado será 6 y 6. Hemos modificado el parámetro formal y se modificado el real.

Llamada a la función

Para llamar a una función se debe utilizar su nombre y entre paréntesis los parámetros reales que se mandan. La llamada a una función se puede considerar una expresión cuyo valor y tipo es el retornado por la función. Evidentemente si estamos llamando un procedimiento, la llamada no tendrá ningún tipo.

Ejemplos de llamadas:

num1 <- CalcularMaximo(5,6)
Escribir CalcularMaximo(1,2)
...