Unidad 4:
Funciones y
Procedimiento
*Definir que son las funciones, sus características y
sintaxis.
*Definir los procedimientos, sus características y sintaxis.
*Explicar el ámbito de las variables.
*Definir que es la Recursividad.
Concepto de Función:
Desde el punto de vista matemático es una función una
operación que toma uno o varios operandos
(parámetros) y devuelve un resultado. Desde el punto de vista
algorítmico una función es un subprograma que toma uno o varios parámetros como
entrada y devuelve un único resultado. Este único resultado ira asociado al
nombre de la función.
Existen 2 tipos de
Funciones:
Internas o
Incorporadas: Son las que vienen definidas por defecto en el lenguaje de
programación.
Externas del Usuario:
Son las que define el usuario y tienen un nombre o identificador.
Declaración de una
Función:
La estructura de función es semejante a cualquier subprograma, tendrá una cabecera con el nombre y los parámetros y un cuerpo con la declaración de los parámetros de las funciones y las instrucciones.
Sintaxis:
La lista de parámetros
es la información que se le tiene que pasar a la función los parámetros dentro
del cuerpo de la función se utilizan como variables locales definidas en la
función .Es necesario definirle a cada parámetro su nombre y tipo de dato al
momento de declarar la función.
El nombre de la
función lo da el programador y debe ser un nombre significativo.
Dentro del cuerpo de la función se escriben todas acciones o
sentencias de código destinadas a cumplir el propósito de la función. Es
necesario para las funciones que dentro de las acciones de su cuerpo, se
incluya una del tipo retorno valor, esta sentencia pondrá fin a la ejecución de
la función. Y devolverá el valor de la función al programa que lo invoco.
El valor de la función deberá ser del mismo valor del dato
que se colocó al final de la cabecera.
Invocación de una
función:
Para que una función pueda ser invocada desde cualquier
parte de un programa es necesario que la definición de dicha función ya sea del
conocimiento previo del compilador antes de usarla. El nombre de la función,
tipo y número de argumentos debe estar presente en algún lugar valido del
programa antes de poder invocarla.
Pasos Para Hacer la
Llamada a una función:
Cuando se efectúa una llamada se sede al control de la
función y se asocia, es decir se asigna , el valor de cada parámetro real al
parámetro formal correspondiente , siempre por orden de aparición de izquierda
a derecha , se produce un error cuando no coincidan los tipos o el número de
parámetros formales y reales.
Si la llamada de la función es válida entonces se ejecutan
las acciones de la función hasta que se encuentre una instrucción tipo retorno
en la misma función.
Colocadas en diferentes bloques de código y normalmente dependen
de sentencias condicionales para su ejecución.
En resumen, se asocia el valor retorno con el nombre de la
función y se devuelve el control al subprograma que hizo la llamada,
sustituyendo así el nombre de la función por el valor devuelto.
Procedimiento: Es un subprograma que realiza una determinada
tarea pro que tras ejecutar esa tarea no
tiene ningún valor asociado a su nombre
, como ocurre en las funciones , si un procedimiento devuelve información los
hace a través de parámetros de entrada – salida
o de salida.
Al invocar un procedimiento se le cede control, comienza a
ejecutarse y cuando termina devuelve el control
a la instrucción siguiente, al punto donde se efectuó la llamada.
Ejemplo de
declaración y llamado de un Procedimiento:
Sintaxis de un
Procedimiento:
La sintaxis para declarar un procedimiento es esencialmente la misma que para definir una
función, solo que no se coloca un tipo de retorno asociado.
La cabecera va a estar formada por el nombre del
procedimiento se colocan todas las sentencias necesarias con su tarea y no
habrá ninguna sentencia de tipo retorno valor. Ahora bien si el procedimiento
devuelve resultados a través de sus parámetros que se pasan por referencia,
tendrán que existir sentencias de asignación de valores a estos parámetros
pasados por referencia para devolver resultados.
Pasos para hacer la
llamada a un Procedimiento:
En primer lugar, desde el programa principal o subrutina, se
coloca el nombre del procedimiento con su lista de parámetros reales entre paréntesis
como una sentencia única. Esto sede el control al procedimiento que se llama
después de esto lo primero es sustituir cada parámetro formal de la definición,
por un parámetro actual o real asociado a él en la llamada. Esta asociación
entre parámetros formales se realiza de izquierda a derecha por orden de
ubicación. Para que pueda existir la asociación debe haber el mismo número de
parámetros formales que reales y además el tipo de dato debe coincidir con el
parámetro formal asociado. Si no se cumple con algunas de estas condiciones se
produce un error.
Si la asociación ha sido correcta comienza a ejecutarse las
instrucciones del procedimiento hasta llegar a la última instrucción.
Finalmente sede el control a la instrucción siguiente a la
que efectuó la llamada al procedimiento.
Ejemplo de
declaración y llamado de un Procedimiento:
Diferencias entre
funciones y procedimientos:
Las funciones están diseñadas para devolver un único valor y
un procedimiento puede devolver ningún o muchos valores por medio de sus
argumentos o parámetros
Ninguno de los resultados devueltos por el procedimiento se
asocia a su nombre como ocurre en la función.
Mientras que la llamada a una función siempre puede formar
parte de una expresión, la llamada a un procedimiento es una instrucción
aislada que por sí sola no puede formar parte de una expresión.
Ámbitos: Variables Globales y Locales
El ámbito de un identificador ya sea variable, constante, función
entre otros, se refiere a la parte del programa en la que se conoce y por lo
tanto se puede usar al identificador. Un identificador es un nombre construido
bajo ciertas reglas de sintaxis y se asocia a un elemento del programa.
Existen dos tipos de ámbitos básicos:
El ámbito global: Se
refiere a los identificadores que se declaran
dentro del programa principal y fuera de cualquier otro bloque de código. Al
ser declarados de esta forma, los identificadores globales están disponibles a lo largo del programa y podrán ser usados en
cualquier parte del mismo. De allí su nombre de globales porque se dice que son
globales al programa.
El ámbito Local:
Se refiere a los identificadores declarados dentro de un bloque de
código diferente al programa principal, como por ejemplo una
subrutina o procedimiento, siendo visibles y accesibles, por lo tanto solo
dentro de un bloque de código especifico.
Variable Local:
Una variable local es aquella que está declarada y definida
dentro de un subprograma o sub-bloque de código, por lo tanto, su ámbito
coincidirá con el ámbito del subprograma en la que está definida.
Variable Global:
Una variable global es aquella que está definida a nivel del programa,
es decir, su ámbito es el programa o algoritmo principal y todos los
subprogramas que dependen de este último.
Tipos de Parámetros:
Parámetros de
Entrada: Son parámetros que solo
aportan el valor que tienen, como entrada al subprograma al que pertenecen como
parámetros. En el caso de las funciones
todas sus variables son de este tipo, como solo son entradas solo pueden ser leídos
pero no modificados.
Parámetros de Salida:
Se usan solo y exclusivamente para devolver resultados a través de ellos. Su
valor al hacer la llamada al subprograma no es de relevancia. Ese valor solo va
a tener sentido cuando termine la ejecución del subprograma. Un parámetro de
este tipo teóricamente nunca se puede leer, solo se va actualizar o modificar.
Parámetros de Entrada
y Salida:
El valor del parámetro tiene importancia tanto a la entrada
como a la salida del subprograma. Aporta dato cuando se llama al subprograma y
por otra parte, devuelve a través de él los resultados cuando se termina el
subprograma. En este caso, tiene sentido tanto poder leer como actualizar el parámetro.
Recursividad:
Se dice que un subprograma es recursivo cuando se llama así
mismo. La recursividad se puede utilizar en subprogramas que se pueden definir
en términos recursivos, es decir en términos de sí mismo, como procesos de
alguna manera repetitivos.
Todo programa recursivo debe tener una condición que ponga fin
a la recursividad. De otra forma se genera un bucle infinito con el consecuente
error de desbordamiento de pila.
Factorial (x) = x* Factorial (x-1)
No hay comentarios:
Publicar un comentario