sábado, 10 de mayo de 2014

EVAP 4

Algorítmica y Lenguajes de Programación
Funciones y subrutinas





Funciones y subrutinas. Introducción


  • El diseño descendente permite obtener un programa que resuelva un problema dividiendo este en subproblemas cada vez más sencillos.
  • Cada subproblema tiene asociado un pseudocódigo de alto nivel compuesto por acciones no primitivas.
  • Cuando una de estas acciones no primitivas se repite en varios puntos del algoritmo es interesante darle un nombre y reutilizarla.
  • Estas acciones con nombre se denominan subprogramas, pudiendo ser, a su vez, funciones y subrutinas.


Funciones y subrutinas. Ventajas

Las ventajas de los subprogramas son múltiples:


  • Facilitan la modularidad y estructuración de los algoritmos.
  • Facilitan la lectura e inteligibilidad de los algoritmos.
  • Permiten economizar el esfuerzo del programador al permitir reutilizar el mismo código en varios puntos del mismo algoritmo.
  • Facilitan la depuración y mantenimiento de los programas.


Funciones y subrutinas. Funciones (i)


  • Las funciones son subprogramas con 0 ó más argumentos que siempre devuelven un valor de retorno.
  • Las funciones pertenecen entonces a un tipo determinado.
  • La invocación de una función puede formar parte de:
               Una expresión.
               La parte derecha de una asignación.
  • Una invocación de una función no puede formar:
               Una sentencia aislada.
               La parte izquierda de una asignación.

Funciones y subrutinas. Funciones (ii)
  • Funciones intrínsecas:
  • Las funciones intrínsecas son proporcionadas directamente por el lenguaje de programación.
  • La mayor parte de funciones intrínsecas son funciones matemáticas como la raíz cuadrada, los logaritmos o funciones trigonométricas.
  • Por cada una de las funciones intrínsecas más habituales en FORTRAN existe una función o un operador equivalentes en la notación algorítmica.

Funciones y subrutinas. Funciones (iii)
  • Funciones de usuario (i):

                 En muchas ocasiones el usuario estará interesado en definir sus propias funciones.
                 Las funciones de usuario deben estar definidas dentro del algoritmo principal:

definiciones de constantes                                                
declaraciones de variables
      inicio
          sentencias del algoritmo
 DEFINICIONES DE FUNCIONES
fin


program nombre_programa
    variables y constantes
    sentencias del programa
contains
DEFINICIONES DE FUNCIONES
end


Funciones y subrutinas. Funciones (iv)
  • Funciones de usuario (ii):
  • Para definir una función es necesario:

                   El nombre de la función.
                   El tipo de la función.
                   Los argumentos de la función y el tipo de los mismos.

  • Sintaxis de definición de funciones:


tipo funcion nombre (arg1ÎÎtipo1,..., argNÎÎtipoN)
inicio
sentencia1
sentencia2
...
sentenciaN
fin


tipo function nombre (arg1, ..., argN)
declaración arg1
...
declaración argN
sentencia1
sentencia2
...
sentenciaN
end


Funciones y subrutinas. Funciones (v)


  •            Ejemplos de funciones de usuario:


logical function siempreVerdad ()
siempreVerdad=.true.
end function

integer function maximo (a, b)
integer a,b
if (a>b) then
maximo=a
else
maximo=b
end if
end function

Funciones y subrutinas. Ámbitos (i)
  • Las funciones pueden acceder a una serie de variables:
  •          Argumentos.
  •          Variables definidas dentro de la función.
  • Estas variables se denominan locales por contraposición a las variables declaradas dentro del algoritmo principal denominadas globales.
  • Las variables locales sólo “existen” mientras la función se está ejecutando.
  • Si una variable local se denomina igual que una variable global la función sólo puede acceder a la primera.
  • En FORTRAN las subrutinas pueden modificar los valores de los argumentos recibidos; este fenómeno se denomina efecto lateral y hay que manejarlo con precaución.


Funciones y subrutinas. Subrutinas (i)
  • Subrutinas o procedimientos:
          Las subrutinas son subprogramas con 0 ó más argumentos que nunca devuelven un valor de retorno.
          Las subrutinas, por tanto, no tienen tipo.
          La invocación de una subrutina sólo puede aparecer en una sentencia de llamada a procedimiento                 (llamar/call).
          Una invocación de subrutina no puede formar:
                                         
                                          Una expresión.
                                          La parte derecha de una asignación.
                                          La parte izquierda de una asignación.
   
Funciones y subrutinas. Subrutinas (ii)
  • Ejemplos de subrutinas:


accion intercambio (a,b ÎÎ  entero)
inicio
temporal ÎÎ  entero
temporal ßß a
a ßß b
b ßß temporal
fin


Funciones y subrutinas. Resumen (i)

1. Los subprogramas facilitan la utilización de técnicas de diseño descendente para la construcción de               programas.
2. Los subprogramas:
          · Facilitan la modularidad y estructuración de los algoritmos.
          · Facilitan la lectura e inteligibilidad de los algoritmos.
          · Permiten una economización del esfuerzo del programador al poder escribir
            código reutilizable en muchas partes de un mismo algoritmo.
          · Facilitan la depuración y mantenimiento de los programas.
3. Los subprogramas pueden ser funciones y subrutinas.
4. Las funciones son subrutinas con 0 ó más argumentos y que devuelven un único valor de retorno.
5. Las funciones pueden formar parte de expresiones o aparecer en la parte derecha de una sentencia de           asignación pero nunca pueden constituir una sentencia aislada o aparecer en la parte izquierda de una           asignación.
6. Las funciones son invocadas mediante su nombre seguido de los argumentos entre paréntesis.

Funciones y subrutinas. Resumen (ii)

7. Existen dos tipos de funciones: intrínsecas y definidas por el usuario.
8. Las funciones intrínsecas son funciones de uso muy común: raíz cuadrada, logaritmos, funciones               trigonometricas, etc
9. Las funciones definidas por el usuario deben describirse dentro del algoritmo principal.
10. Los argumentos y variables declaradas dentro del cuerpo de una función (o subrutina) se denominan             variables locales, las variables declaradas dentro del programa principal son variables globales. Los
      subprogramas tienen acceso a las variables globales aunque en el caso de que una variable local se               denomine igual que una variable global tiene preferencia la primera.
11. Las subrutinas son subprogramas que no devuelven ningún resultado; sin embargo, gracias a la utilización       de los efectos laterales es posible su utilización para permitir el “retorno” de varios resultados.

No hay comentarios:

Publicar un comentario