martes, 7 de julio de 2020

Funciones y Procedimientos

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 sintaxis para la declaración de una función depende del lenguaje de programación utilizado se propone un esquema que usa la palabra función. Para indicar el inicio de la función seguido del identificador o nombre, la lista de parámetros, el tipo de dato de retorno de la función y por último, el cuerpo de la función enmarcado entre sentencias de inicio y fin del bloque de código.

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