Fuciones Y Procedimiento
Enviado por jelopez • 19 de Octubre de 2011 • 3.398 Palabras (14 Páginas) • 415 Visitas
1
FUNCIONES Y PROCEDIMIENTOS
OBJETIVOS
• Aprender a resolver problemas grandes y complejos dividiendo un problema en
subproblemas a través del uso de procedimientos y funciones.
• Distinguir entre parámetros de entrada (valor) y parámetros de salida (referencia).
• Analizar las diferencias entre funciones y procedimientos.
• Aprender a escribir funciones recursivas.
• Distinguir entre variables locales y variables globales.
1. FUNCIONES
El concepto de función en programación se fundamenta en el concepto de función matemática1
Una función, desde el punto de vista de la programación, se define como un proceso que recibe
valores de entrada (llamados parámetros) y el cual retorna un valor resultado. Adicionalmente,
las funciones son subprogramas dentro de un programa, que se pueden invocar (ejecutar) desde
cualquier parte del programa, es decir, desde otra función, desde la misma función o desde el
programa principal, cuantas veces sea necesario.
Las funciones se usan cuando existen dos o más porciones de algoritmo dentro de un programa
que son iguales o muy similares, por ejemplo, en un algoritmo se puede emplear varias veces
una porción de algoritmo que eleva a una potencia dada un número real. De esta manera
conviene definir una función que al ser invocada ejecute dicho código, y en el lugar donde
estaba la porción de algoritmo original, se hace un llamado (ejecución) de la función creada.
En el seudolenguaje una función se declara de la siguiente manera:
funcion <nombre> ( param1 : tipo1 , ..., paramn : tipon ) : tipo
variables
<declaraciones>
inicio
<instrucciones>
retornar <expresión>
fin_funcion
Donde,
• <nombre>: representa el nombre de la función
• parami: representa el parámetro i-ésimo de la función.
• tipoi: representa el tipo del i-ésimo parámetro de la función.
1 Una función es una relación que asocia con cada elemento de un conjunto llamado el dominio, uno y solo
un elemento de otro conjunto llamado el codominio. La relación puede ser establecida mediante una tabla,
un proceso o un cálculo.
f:Dom ⇒ Codom
x ⇒ f(x)
Ejemplo 1. f:{a,b,c} ⇒ {0,1,2}
a ⇒ 1
b ⇒ 0
c ⇒ 2
Ejemplo 2. g: Naturales ⇒ Naturales
x ⇒ x2
Ejemplo 3. h: Reales x Reales ⇒ Reales
( a , b ) ⇒ a2+2*b.
2
• tipo: representa el tipo de dato que retorna la función.
• <declaraciones>: representa el conjunto de variables definidas para la función (diferentes a
los parámetros).
• <instrucciones>: representa el conjunto de instrucciones que realiza la función.
• <expresión>: representa el valor que retorna la función.
EJEMPLOS
Ejemplo 1. La función h que en matemáticas se define como sigue:
h: Reales x Reales ⇒ Reales
(a , b) ⇒ a2+2*b
En programación se define así:
funcion h ( a : real, b : real): real
inicio
retornar a*a + 2*b
fin_funcion
Ejemplo 2. La función minimo que en matemáticas se define como sigue:
minimo: Reales x Reales x Reales ⇒ Reales
minimo( a , b , c ) = a ,si a b y a c
minimo( a , b , c ) = b ,si b a y b c
minimo( a , b , c ) = c ,si c a y c b
En programación se define así:
funcion minimo( a : real, b : real , c : real ): real
inicio
si (a <=b & a <=c) entonces
retornar a
sino
si (b <=a & b<=c)entonces
retornar b
sino
retornar c
fin_si
fin_si
fin_funcion
1.1 FUNCIONES RECURSIVAS
Una función recursiva es una función que se define en términos de si misma, es decir, que el
resultado de la función depende de resultados obtenidos de evaluar la misma función con otros
valores.
Se debe tener mucho cuidado en la definición de funciones recursivas, pues si no se hace bien,
la función podría requerir de un cálculo infinito o no ser calculable. Observe las siguientes
definiciones, una correcta y la otra incorrecta:
DEFINICIÓN RECURSIVA CORRECTA
3
Está bien definida porque se puede calcular el valor de la función para cualquier valor que tome
x. Por ejemplo si x = 3.5 se tiene que f(3.5) = 13.125 ya que:
f(3.5) = f(3.5-1.0)* 3.5 = f(2.5) * 3.5
f(2.5) = f(2.5-1.0)*2.5 = f(1.5) * 2.5
f(1.5) = f(1.5-1.0)*1.5 = f(0.5) * 1.5
f(0.5) = 1.0 (pues 0.5 <= 1.0) y de esta manera, el cálculo de la función se devuelve.
f(1.5) = f(0.5)*1.5 = 1.0 * 1.5 = 1.5
f(2.5) = f(1.5)*2.5 = 1.5 * 2.5 = 3.75
f(3.5) = f(2.5)* 3.5 = 3.75 * 3.5 = 13.125
DEFINICIÓN RECURSIVA INCORRECTA
Está mal definida porque no se puede calcular el valor de la función para cualquier valor que
tome x. Por ejemplo, si x = 3.5 se tiene que f(3.5) no se puede calcular ya que:
f(3.5) = f(3.5+1.0)* 3.5 = f(4.5) * 3.5
f(4.5) = f(4.5+1.0)*4.5 = f(5.5) * 4.5
f(5.5) = f(5.5+1.0)*5.5 = f(6.5) * 5.5
f(6.5) = …… y nunca se termina este proceso
Una función recursiva es aquella que para calcular su valor en un dato dado, generalmente
necesita ser calculada en uno u otros valores. Un punto de ruptura de la recursión es un valor
del parámetro para el cual la función no tiene que ser calculada de nuevo en otros valores.
EJEMPLOS
Ejemplo 1. La función factorial que en matemáticas se define como sigue:
factorial : Entero + ⇒ Entero +
factorial(n) = 1, si n 1
factorial(n) = n * factorial(n-1), si n >1
Punto de ruptura: cuando n es igual a uno (1)
ALGORITMO:
funcion factorial ( n : entero ) : entero
inicio
si (n <=1) entonces
retornar 1
sino
retornar factorial(n-1) * n
fin_si
fin_funcion
Ejemplo 2. La función fibonacci que en matemáticas se define como sigue:
fibonacci : Entero → Entero
4
fibonacci(0)=0
fibonacci(1)=1
fibonacci(n)=fibonacci(n-1)+fibonacci(n-2), para n>1
Punto de ruptura: cuando n es menor o igual a uno (1)
ALGORITMO:
funcion fibonacci( n : entero ) : entero
inicio
si (n =0 | n = 1) entonces
retornar n
sino
retornar fibonacci(n-1) + fibonacci(n-2)
...