programación modular y estructyrada

29
Programación Modular y Estructurada IUTE – Mérida Prof: Duberlis González

Upload: guestefc95b

Post on 13-Jun-2015

18.951 views

Category:

Travel


0 download

TRANSCRIPT

Page 1: Programación Modular y Estructyrada

Programación Modular y

EstructuradaIUTE – Mérida

Prof: Duberlis González

Page 2: Programación Modular y Estructyrada

Tipos de programación

Los tipos o técnicas de programación son bastante variados, aunque puede que muchos de los lectores sólo conozcan una metodología para realizar programas. En la mayoría de los casos, las técnicas se centran en programación modular y programación estructurada, pero existen otros tipos de programación. Los explicaremos a lo largo del artículo.

Page 3: Programación Modular y Estructyrada

Programación estructurada (PE) La programación estructurada esta compuesta por un conjunto de técnicas que

han ido evolucionando aumentando considerablemente la productividad del programa reduciendo el tiempo de depuración y mantenimiento del mismo.

Esta programación estructurada utiliza un número limitado de estructuras de control, reduciendo así considerablemente los errores.

Esta técnica incorpora:

Diseño descendente (top-dow): el problema se descompone en etapas o estructuras jerárquicas.

Recursos abstractos (simplicidad): consiste en descompones las acciones complejas en otras más simples capaces de ser resueltas con mayor facilidad.

Estructuras básicas: existen tres tipos de estructuras básicas: Estructuras secuénciales: cada acción sigue a otra acción

secuencialmente. La salida de una acción es la entrada de otra. Estructuras selectivas: en estas estructuras se evalúan las condiciones y

en función del resultado de las mismas se realizan unas acciones u otras. Se utilizan expresiones lógicas.

Estructuras repetitivas: son secuencias de instrucciones que se repiten un número determinado de veces.

Page 4: Programación Modular y Estructyrada

Las principales ventajas de la programación

estructurada Los programas son mas fáciles de entender Se reduce la complejidad de las pruebas Aumenta la productividad del programador Los programas queden mejor documentados

internamente.

Un programa esta estructurado si posee un único punto de entrada y sólo uno de salida, existen de "1 a n" caminos desde el principio hasta el fin del programa y por último, que todas las instrucciones son ejecutables sin que aparezcan bucles infinitos.

Page 5: Programación Modular y Estructyrada

Programación modular

En la programación modular consta de varias secciones dividas de forma que interactúan a través de llamadas a procedimientos, que integran el programa en su totalidad.

En la programación modular, el programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros.

A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones.

Page 6: Programación Modular y Estructyrada

Algunas teorías de la programación se centran en las técnicas de programación modular y programación estructurada. El diseño de un programa entraña la descomposición del problema en módulos o partes independientes – programación modular –, la programación de cada módulo mediante métodos estructurados – programación estructurada – y su unión posterior

Page 7: Programación Modular y Estructyrada

Programación Estructurada.Ésta incorpora entre otros elementos: el diseño

descendente, recursos abstractos y estructuras básicas. Recursos abstractos.Consiste en descomponer una determinada acción

compleja en términos de un número de acciones más simples capaces de resolverla.

Diseño descendente.Consiste en efectuar una relación entre las sucesivas

etapas de estructuración. Es decir, se descompone el problema en etapas o estructuras jerárquicas, de modo que se puede considerar cada estructura desde dos puntos de vista: lo que hace y cómo lo hace

Page 8: Programación Modular y Estructyrada

Teorema de la programación estructurada.

Se ha demostrado que un programa propio puede ser escrito utilizando solamente tres tipos de estructuras de control: —secuenciales, selectivas y repetitivas. Un programa es propio si posee un sólo punto de entrada y uno de salida, si existen caminos desde el inicio hasta el fin que se pueden seguir y que pasan por todas las partes del programa, y si todas las instrucciones son ejecutables sin que hayan bucles infinitos.

Estructura secuencial.

Es aquella en que una acción sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente.

Estructura selectiva.

Se utilizan para tomar decisiones lógicas. En éstas se evalúa una condición y en función del resultado de la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones lógicas. En pseudocódigo éstas palabras son if, then, else. Las estructuras selectivas pueden ser: – simples, dobles o múltiples.

Page 9: Programación Modular y Estructyrada

Selectivas simples.Ejecuta una determinada acción cuando se cumple una

determinada condición. La selección if – then (si – entonces) evalúa la condición y si es verdadera ejecuta la acción de lo contrario no hará nada.

Selectiva doble.Permite elegir entre dos opciones posibles en función del

cumplimiento o no de una determinada condición. Si la condición es verdadera, se ejecuta la acción 1, si es falsa, se ejecuta la acción 2. La selectiva en pseudocódigo es if – then – else.

Selectivas múltiples.La estructura de selección múltiple (case en pseudocódigo)

evaluará una expresión que podrá tomar n valores distintos 1, 2, 3, 4, …..n. Según sea el valor en la condición, se realizará una de las n acciones.

Page 10: Programación Modular y Estructyrada

Estructuras repetitivas.Las estructuras que repiten una secuencia de instrucciones un

número determinado de veces se llaman bucles, e iteración al hecho de repetir la ejecución de una secuencia de acciones.

Estructura mientras (while).La estructura repetitiva mientras es aquella en que el cuerpo del

bucle se repite mientras se cumple una determinada condición. Cuando se ejecuta esta instrucción, la primera cosa que sucede es que se evalúa la condición. Si la expresión es verdadera, entonces se ejecuta el cuerpo del bucle. Este proceso se repite una y otra vez mientras la condición sea verdadera.

Estructura repetir hasta (do/while).Se ejecuta hasta que se cumpla una condición determinada que se

comprueba al final del bucle, esto permite que la iteración se ejecute al menos una vez antes de que la condición sea evaluada.

Page 11: Programación Modular y Estructyrada

Estructuras desde/para (for).Se utilizan las estructuras for cuando se conocen con

certeza el número de veces que desea repetir un bucle, es decir, cuando es un número fijo de veces.

Estructura de decisión anidadas.Se tiene una estructira de decisión anidada cuando

una estructura if – then – else contiene otra dentro de sí, y ésta a su vez contiene otra dentro de sí. Estas estructuras contendrán varios si - entonces dentro de otros. Debido a que este tipo de estructuras pueden ser confusas, se implementa la identación para evitar perder el hilo de dónde comienza y dónde termina cada estructura.

Page 12: Programación Modular y Estructyrada

Ventajas de la programación estructurada Con la programación estructurada elaborar programas de computador

sigue siendo un albor que demanda esfuerzo, creatividad, habilidad y cuidado. Sin embargo, con este nuevo estilo podemos obtener las siguientes ventajas:

Los programas son más fáciles de entender. Un programa estructurado puede ser leído en secuencia, de arriba hacia abajo, sin necesidad de estar saltando de un sitio a otro en la lógica, lo cual es típico de otros estilos de programación. La estructura del programa es más clara puesto que las instrucciones están mas ligadas o relacionadas entre sí, por lo que es más fácil comprender lo que hace cada función.

Reducción del esfuerzo en las pruebas. El programa se puede tener listo para producción normal en un tiempo menor del tradicional; por otro lado, el seguimiento de las fallas (debugging) se facilita debido a la lógica más visible, de tal forma que los errores se pueden detectar y corregir más fácilmente.

Reducción de los costos de mantenimiento. Programas más sencillos y más rápidos. Aumento de la productividad del programador. Se facilita la utilización de las otras técnicas para el mejoramiento

de la productividad en programación. Los programas quedan mejor documentados internamente.

Page 13: Programación Modular y Estructyrada

RESOLUCIÓN DE PROBLEMAS A TRAVÉS DE LA COMPUTADORA.El proceso de resolución de problemas con computadoras conduce a

la escritura de un programa y su ejecución en la misma. Aunque el proceso de diseñar programas es esencialmente un proceso creativo, se puede considerar una serie de fases o pasos comunes que generalmente deben seguir los programadores. Estas fases son las siguientes

Definición del Problema: Esta fase está dada por el enunciado del problema, el cual requiere una definición clara y precisa. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.

Análisis del Problema: Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:

Los datos de entrada. Cual es la información que se desea producir (salida). Los métodos y fórmulas que se necesitan para procesar

los datos.

Page 14: Programación Modular y Estructyrada

Codificación.La codificación es la operación de escribir la solución del problema (de

acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

Prueba y Depuración:Los errores humanos dentro de la programación de computadoras son

muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo.

Page 15: Programación Modular y Estructyrada

Documentación:Es la guía o comunicación escrita es sus variadas formas, ya sea en

enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones.

La documentación se divide en tres partes:

Documentación Interna: son los comentarios o mensajes que se añaden al código fuente para hacer mas claro el entendimiento de un proceso.

Documentación Externa: se define en un documento escrito los siguientes puntos:

Descripción del Problema. Nombre del Autor. Algoritmo (diagrama de flujo o pseudocódigo). Diccionario de Datos. Código Fuente (programa). Manual del Usuario: describe paso a paso la manera como

funciona el programa, con el fin de que el usuario obtenga el resultado deseado.

Page 16: Programación Modular y Estructyrada

Mantenimiento:

Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementar al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.

Page 17: Programación Modular y Estructyrada

Programación ModularEs evidente que si esta metodología nos lleva

a tratar con subproblemas, entonces también tengamos la necesidad de poder crear y trabajar con subprogramas para resolverlos. A estos subprogramas se les suele llamar módulos, de ahí viene el nombre de programación modular. En Pascal disponemos de dos tipos de módulos: los procedimientos y las funciones

Page 18: Programación Modular y Estructyrada

Veamos un ejemplo de cómo emplear el diseño descendente para resolver un problema. Supongamos que un profesor quiere crear un programa para gestionar las notas de sus alumnos. Quiere que dicho programa le permita realizar tareas tales como asignar notas, cambiar notas, ver las notas según distintas calificaciones, etc. A continuación tines un esquema que representa una de las posibles divisiones del problema en módulos.

Page 19: Programación Modular y Estructyrada

Los procedimientos

Un procedimiento es un subprograma que realiza una tarea específica. Para invocarlo, es decir, para hacer que se ejecute, basta con escribir su nombre en el cuerpo de otro procedimiento o en el programa principal. Pero, hay que tener muy en cuenta que su declaración debe hacerse antes de que sea llamado por otro módulo.

Una vez que has construido varios programillas en Pascal, crear un procedimiento no es nada complicado, pues tiene prácticamente la misma estructura que un programa. Veamos las secciones que comparten y no comparten un procedimiento y un programa principal:

Mientras que en el programa la cabecera consta de la palabra reservada program seguida del nombre del programa, en un procedimiento se compone de la palabra procedure seguida del nombre del procedimiento y una lista de parámetros que es opcional.

Las secciones de declaración de constantes (const), de tipos (type) y de variables (var) también pueden aparecer en la estructura de cualquier procedimiento.

Respecto al cuerpo del procedimiento, decir que al igual que el de un programa se delimita por las palabras reservadas begin y end, y en su interior puede contener sentencias simples o estructuradas.

Por último, comentar que ambos difieren en el signo de puntuación que marca su final, ya que en un programa es el punto y en un procedimiento es el punto y coma.

Todas estas diferencias y similitudes que hemos comentado, puedes apreciarlas en los siguientes esquemas que representan las estructuras de un programa y de un procedimiento:

Page 20: Programación Modular y Estructyrada
Page 21: Programación Modular y Estructyrada

Los parámetros (argumentos)

Como habrás observado, con los procedimientos nos llega un concepto nuevo, el de los parámetros. A los parámetros también se les conoce como argumentos y tienen la misión de comunicar al procedimiento con el programa que lo llama. Por ejemplo, si quieres hacer un subprograma que multimplique dos números, lo más cómodo es que al llamar al procedimiento le pases los valores que participarán en la operación. Podría ser algo como:

Page 22: Programación Modular y Estructyrada

En el ejemplo anterior se observan las dos clases de argumentos que existen en Pascal:

Los parámetros por valor Los parámetros por referencia

Los parámetros por valor tiene dicho nombre porque lo que recibe el subprograma no son más que copias de los valores de los datos que el programa invocador le pasa. Por tanto si en el procedimiento modificamos alguno de estos valores, los datos originales permaneceran inalterados. En el ejemplo, son a y b.

En cambio, en los parámetros por referencia lo que se pasa al procedimiento son los datos en sí. Y si éste los modifica, los cambios permanecerán una vez que la ejecución vuelva al módulo que invocó al procedimiento. Se utilizan para obtener valores de los cálculos que haga un subprograma, y en el anterior ejemplo es rdo

Page 23: Programación Modular y Estructyrada

¿Cómo se especifica que un parámetro es por valor o por referencia?

Pues es tan sencillo como anteponer la palabra reservada var cuando quieres que un argumento sea considerado como referencia. Esto se observa claramente con el parámetro rdo del ejemplo.

nota: si no tienes muy clara la diferencia entre parámetros por valor y por referencia, te aconsejo que vayas al ejemplo sobre procedimientos del que dispones en este tema, estoy seguro que te ayudará.

Page 24: Programación Modular y Estructyrada

Las variables globales y locales

Despues de estudiar los procedimientos de Pascal y las diferencias entre parámetros por valor y por referencia, es hora de tratar otro aspecto clave en la programación modular: la distinción entre variables globales y locales.

Veamos un ejemplo que, como siempre, nos ayudará en la explicación de estos nuevos conceptos:

Page 25: Programación Modular y Estructyrada

Una variable local es una variable que está declarada dentro de un subprograma, y se dice que es local al subprograma. Y lo que la caracteriza es que su valor sólo está disponible mientras se ejecuta el subprograma. Dicho de otra manera, el programa principal no tiene conocimiento alguno de las variables locales de sus procedimientos y funciones.

Las variables declaradas en la sección correspondiente a esta labor en el programa principal se denominan variables globales. Y a diferencia de las locales, su valor está disponible tanto en el cuerpo del programa principal como en el de cualquiera de los subprogramas

Page 26: Programación Modular y Estructyrada

Las funciones predefinidas

Este tema trata de la programación modular, y como ya hemos dicho, Pascal nos ofrece dos tipos de módulos. Uno ya lo hemos comentado, los procedimientos, y el otro, es el que vamos a tratar ahora, las funciones.

La división a más alto nivel que se suele hacer con las funciones, es la que las divide según quien sea el autor de las mismas. Así tenemos funciones predifinidas o estándar, y funciones de usuario. Las de usuario las trataremos más adelante. Ahora nos centraremos en las predefinidas.

Las funciones predefinidas, también llamadas estándar, son las que el propio lenguaje Pascal pone a disposición del programador. Por ejemplo, si necesitas calcular el valor absoluto de un número, no es necesario que construyas la función, pues ya se dispone de una que lo hace.

Dependiendo del tipo de compilador de Pascal que uses, dispondrás de más o menos funciones estándar, pero siempre tendrás un grupo básico que comparten todos. A continuación se citan unas cuantas funciones de las básicas:

Page 27: Programación Modular y Estructyrada
Page 28: Programación Modular y Estructyrada

Funciones definidas por el usuarioLas funciones de usuario son, como su nombre indica, las que el

propio usuario declara, de igual manera que declara procedimientos. Las funciones nacen con el propósito de ser subprogramas que siempre tienen que devolver algún valor

Las dos principales diferencias entre procedimientos y funciones son:

Las funciones siempre devuelven un valor al programa que las invocó.

Para llamar a un procedimiento se escribe su nombre en el cuerpo del programa, y si los necesita, se incluyen los parámetros entre paréntesis. Para invocar una función es necesario hacerlo en una expresión.

Veamos el esqueleto básico que comparten las funciones:

Page 29: Programación Modular y Estructyrada