Download Tecnologías para e-learning (I)
Document related concepts
no text concepts found
Transcript
Tema 1 Introducción a la programación
(Lenguaje java).
1.3 Programación modular. Subprogramas.
1.3 Programación modular. Subprogramas.
EL TRABAJO MODULAR COMO PARADIGMA DE INGENIERÍA:
Tecnología para la programación modular.
Módulos externos
Incluidos como paquetes (packages) en el entorno de desarrollo.
Construidos por el programador.
Adquiridos a terceros.
Desarrollados por el programador como ficheros independientes.
Desarrollados por el programador e incorporados en el fichero que
contiene el programa principal.
“Conjunto de algoritmo más estructuras de datos”. Wirth
(1985)
1.3 Programación modular. Subprogramas.
Modelo estático.
Modelo dinámico:
El bloque correspondiente al programa principal está permanentemente en memoria mientras
que los subprogramas se cargan cuando se necesitan y al finalizar su ejecución se libera la
memoria ocupada.
1.3 Programación modular. Subprogramas.
Mecanismos para el paso de información.
Llamada:
Se indica nombre e información que se pasa al módulo: lista de argumentos.
Forma de compartir la información:
Valor . Se pasa una copia del argumento. Única forma posible en Java para los
tipos simples (primitivos).
Referencia. Se permite al módulo acceder al argumento (se pasa su referencia).
Se puede modificar el contenido de la referencia. Única forma posible en Java
para tipos no primitivos.
Otras consideraciones:
El subprograma puede tener sus propias variables (locales). Inaccesibles desde el
módulo de llamada.
Es posible (pero no recomendable) declarar variables (globales) accesibles por
los módulos de llamada (principal) y módulos llamados (subprograma).
1.3 Programación modular. Subprogramas.
Aplicación al lenguaje Java.
Los subprogramas en Java se denominan métodos (funciones o
procedimientos en otros lenguajes).
Cabecera:
<tipoDevuelto> <nombreDel Método>(<tipo> <argumento1>, <tipo> <argumento2>,... )
Los nombres de los argumentos son formales.
La lista de argumentos puede estar vacía.
El método puede no devolver nada (void).
Cuerpo:
Delimitado por { }.
Incluye la declaración de las variables globales y el algoritmo.
Debe finalizar con:
return <variableDeTrabajoLocal>;
(return; si no devuelve nada)
1.3 Programación modular. Subprogramas.
Estructura
general de
un programa
en Java.
1.3 Programación modular. Subprogramas.
Recursividad (I).
Concepto de objeto recursivo:
“Aquel que forma parte de sí mismo o que forma parte de su propia
definición”.
Ejemplos:
Número
natural:
El 1 es un número natural.
El siguiente de un número natural es un número natural.
Factorial de un número
0! = 1;
N > 0, N! = N * (N-1)!
natural.
1.3 Programación modular. Subprogramas.
Recursividad (II).
La recursividad en programación.
Justificación:
El tratamiento recursivo (frente al iterativo) simplifica la lógica pero resulta
menos eficiente para la máquina (memoria y tiempo).
Es la única alternativa posible para la resolución de algunos problemas.
Materialización.
Es un subprograma que se llama, a sí mismo (fase “de ida”) hasta que se
alcanza una condición “de parada” (fase “de transición”). A continuación se
realiza un recorrido en sentido inverso (fase “de vuelta”) por las diferentes
instancias que fueron invocadas en la fase de ida.
Hace uso del modelo dinámico de subprogramación.
1.3 Programación modular. Subprogramas.
Recursividad (III).
Consideraciones complementarias.
Terminación anticipada. Por omisión: no hacer una
nueva llamada.
Utilización de módulos de llamada. Inicialización del
estado de partida.
Momentos de realización del proceso (fases de ida,
transición o vuelta) y su implicación en la modalidad
del paso de argumentos (valor o referencia).
Recursividad indirecta. Reciprocidad de llamadas.