Actualizado el 15 de Diciembre del 2018 (Publicado el 3 de Diciembre del 2018)
1.923 visualizaciones desde el 3 de Diciembre del 2018
1,5 MB
53 paginas
Creado hace 9a (08/10/2015)
Fundamentos de la Programación
08/10/2015
1
TEMA 2:
Programación
Modular y
Estructurada
Tema2: Fundamentos de la Programación
1
Fundamentos de la Programación
08/10/2015
2
Final de estos
apartados:
EJEMPLOS
ILUSTRATIVOS
TRABAJO
PERSONAL
ÍNDICE
2.1. Introducción(2-5)
2.2. Principios de la Programación Estructurada(6,7)
2.3. Pasos para la construcción de un programa Modular(8-15)
2.4. Ámbito de las variables (Globales y Locales)(16-21)
2.5. Creación de subprogramas (22-52)
2.5.1. Paso de parámetros por valor y por referencia(24,25)
2.5.2. Definición de función (26-40)
2.5.3 Definición de Procedimientos (41-52)
Tema 2: Fundamentos de Programación
Tema2: Fundamentos de la Programación
2
Fundamentos de la Programación
08/10/2015
2.1. Introducción
3
Hasta ahora nosotros hemos aprendido a invocar
funciones predefinidas
(abs,
round…..)
Otras funciones las hemos utilizado importándolas de algunos módulos (módulo math:
sin, log…)
En este capítulo se explicarán todos los elementos necesarios para crearlas
Programación modular : Diseño de programas mediante la descomposición del
problema en módulos sencillos e independientes
Programación estructurada : Programación de cada uno de estos módulos de forma
estructurada . Unión de módulos para la resolución del problema global.
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
3
Fundamentos de la Programación
08/10/2015
2.1. Introducción
4
Recordemos el principal objetivo de la asignatura:
“Aprender a programar según este paradigma =>Escribir programas
que funcionen correctamente y sean claros, legibles y fácilmente
actualizables y depurables.”
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
4
Fundamentos de la Programación
08/10/2015
2.1. Introducción
5
Evitar determinados 'malos hábitos' de programación que llevan a problemas como:
● Código demasiado largo, enrevesado y poco claro, ilegible en la mayoría de los casos
no solo para otros programadores, también para el autor del mismo.
● Dificultades en la corrección de errores, siendo generalmente difícil la localización de los
mismos. Las modificaciones o actualizaciones son costosas por lo que generalmente se
recurre a 'parches' que contribuyen a su vez a un empeoramiento en la lógica inicial del
programa.
● A estos inconvenientes se suele añadir una documentación escasa e incompleta y no
siempre actualizada.
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
5
Fundamentos de la Programación
08/10/2015
2.2. Principios de la Programación Estructurada
6
Programación Estructurada.
Principios:
Abstracción.
No se diseña la solución de un problema pensando en una máquina y lenguaje concreto.
Teorema de la Estructura (Bohn y Jacopini)
Todo diagrama o programa propio, cualquiera que sea el trabajo que tenga que realizar, se
puede implementar utilizando las tres estructuras de control básicas que son la secuencial,
alternativa o selectiva y repetitiva o iterativa.
La importancia de este teorema radica en que estas tres estructuras tienen un único punto
de entrada y un único punto de salida => Todo lo que se construya con estas tres estructuras
tendrá también un único inicio y un único final.
Diseño descendente (Top-down).
Resolver el problema original apoyándonos en una serie de subtareas o módulos.
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
6
Fundamentos de la Programación
08/10/2015
2.2.1. Instrucción goto
Observación: la instrucción “ir a” (goto).
7
Esta instrucción fue la base de lenguajes como BASIC, o FORTRAN y muchos otros, pero
desde la aparición de la programación estructurada, esta instrucción esta proscrita puesto
que va contra los principios de la misma.
Esta instrucción permite saltar desde cualquier punto del programa a cualquier otro, y por
tanto va contra el principio enunciado en el Teorema de la estructura.
Esta instrucción nos impide hacer una descomposición del problema, puesto que si desde
cualquier lugar podemos ir a cualquier otro es imposible ir separando el programa en áreas
claras,
trabajar de forma
estructurada.
todo estará mezclado con todo. Nuestro objetivo es
Norma importantísima: se llega al fin del programa por un sólo camino, de la misma forma
que se sale de un bucle por una única vía.
En programación estructurada esta totalmente prohibido el uso de la instrucción goto
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
7
Fundamentos de la Programación
08/10/2015
2.3. Pasos para la construcción de un programa modular
8
Programación modular
División del problema a resolver en varios subproblemas más sencillos con entidad y sentido
propios .
Búsqueda de la abstracción => no importa como se hace sino que hace cada uno de los
módulos.
Para cada uno de estos subproblemas o módulos se construye un algoritmo que los resuelve.
Terminada esta fase, se componen todos los módulos para obtener un algoritmo global que
resuelva el problema. Esto se conoce como la técnica Divide y vencerás.
Existen dos formas de realizar el diseño modular:
Diseño descendente (Top Down): Resolver el problema original apoyándonos en una
serie de subtareas o módulos que se suponen ya resueltos y obtener la solución del
problema, posponiendo la solución de dichas subtareas.
Diseño ascendente (Bottom Up): Se comienza por resolver las subtareas más pequeñas
que contiene el problema original para, posteriormente, unirlas obteniendo la solución
del problema.
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
8
Fundamentos de la Programación
08/10/2015
9
2.3.1. Ejemplo 1
Algoritmo para el calculo del área de un cilindro:
leer radio y altura
Calcular área circunferencia (*)
calcular longitud circunferencia
Calcular área rectángulo (**)
Calcular área cilindro
(*) área circunferencia
= p * radio * radio
Longitud = 2 * p * radio
(**) área rectángulo = longitud * altura
área cilindro= 2 * área circunferencia + área rectángulo
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
9
Fundamentos de la Programación
08/10/2015
2.3.2. Organigramas
10
Diseño del organigrama modular, donde se muestran los diferentes módulos en los que se divide el
problema inicial y la comunicación entre ellos.
Diseño del modulo principal que realiza la distribución del trabajo entre los diferentes submódulos.
Incluye básicamente las llamadas a los diferentes submódulos y algunas operaciones de
carácter general.
Cuando se llama a un módulo, el módulo que llama cede el control al submódulo llamado, y
este le devuelve el control en el punto inmediatamente siguiente al de la llamada, una vez
completado el proceso o tarea que realiza es decir cuando finalicen TODAS SUS
INSTRUCCIONES (incluyendo las llamadas a otros módulos si las hay).
Los módulos se pueden llamar tantas veces como sea necesario, es decir es posible realizar el
mismo proceso sobre diferentes datos tantas veces como se precise sin repetir código.
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
10
Fundamentos de la Programación
08/10/2015
2.3.2. Organigramas
Prog. Principal
11
Módulo 1
Módulo 2
Módulo 3
Módulo 4
Módulo 5
Módulo 6
Módulo 7
Módulo 8
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
11
Fundamentos de la Programación
08/10/2015
2.3.3. Organigrama Ejemplo1
Calcular el área de un cilindro
12
Leer radio (r) y altura (h)
Calcular el área de un círculo
Calcular el área de la pieza
Sumar 2*S y F
de radio r (S)
frontal de altura h
S = p * r2
Calcular la longitud de una
circunferencia de radio r (L)
Calcular el área de un rectángulo de
altura h y base L (F)
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
L = 2 * p * r
F = L * S
Tema2: Fundamentos de la Programación
12
Fundamentos de la Programación
08/10/2015
2.3.4. Comunicación entre módulos
13
Establecer la comunicación entre los módulos: Qué información necesitan, qué información
devuelven y quién y a quién se la proporcionan. Los módulos deben cumplir las siguientes
características:
Máxima cohesión, es decir, las salidas de un módulo deben ser compatibles con las entradas de
otros módulos.
Mínimo acoplamiento, es decir, la cantidad de información que recibe un módulo de otro
módulo debe ser la mínima.
El resultado de un módulo debe ser función directa de sus entradas y no depender de ningún
estado interno.
Los módulos serán como 'cajas negras' que recibe un / unos valores de entrada y devuelven un /
unos valores de
salida (los programas son combinaciones de esas cajas negras enlazadas por sus salidas y
entradas).
Tema 2: Fundamentos de Programación
Tema 3: Fundamentos de Programación
Tema2: Fundamentos de la Programación
13
Módulo 1 Módulo 2 E1 S1 /E2 S2 I/F 1 I/F 2 Programa E1 S2 Fundamentos de la Programación
08/10/2015
2.3.4. Comunicación entre módulos
14
Describir en detalle cada módulo básico, como paso previo a su implementación.
En el caso de que el proceso que realiza un módulo sea a su vez una tarea compleja
puede ser necesario volver a dividirlo en otros submódulos con idéntica filosofía (diseño
descendente).
Unión de los subprogramas construidos para obtener
la solución del problema (diseño
ascendente).
Esta técnica aporta dos características importantes :
Reutilización de código
Abstracción
La programación modular se implementa utilizando módulos que toman diferentes
Comentarios de: Tema 2: Programación Modular y Estructurada (0)
No hay comentarios