Publicado el 4 de Marzo del 2020
2.079 visualizaciones desde el 4 de Marzo del 2020
626,7 KB
53 paginas
Creado hace 19a (28/06/2005)
cap.2 28/6/05 12:17 Página 40
CAPÍTULO
2
METODOLOGÍA
DE LA PROGRAMACIÓN
Y DESARROLLO DE SOFTWARE
C O N T E N I D O
2.1. Fases en la resolución de
problemas
2.2. Programación modular
2.3. Programación estructurada
2.4. Concepto y características
de algoritmos
2.5. Escritura de algoritmos
2.6. Representación gráfica de los
algoritmos
2.7. El ciclo de vida del software
2.8. Métodos formales de
verificaciónde programas
2.9. Resumen
2.10. Ejercicios
2.11. Ejercicios resueltos
40
cap.2 28/6/05 12:17 Página 41
I N T R O D U C C I Ó N
Este capítulo le introduce a la metodología a seguir
para la resolución de problemas con computadoras
y con un lenguaje de programación como C.
La resolución de un problema con una computa-
dora se hace escribiendo un programa, que exige al
menos los siguientes pasos:
Uno de los objetivos fundamentales de este libro
es el aprendizaje y diseño de los algoritmos.Este
capítulo introduce al lector en el concepto de algo-
ritmo y de programa, así como las herramientas que
permiten «dialogar» al usuario con la máquina: los
lenguajes de programación.
1. Definición o análisis del problema.
2. Diseño del algoritmo.
3. Transformación del algoritmo en un
programa.
4. Ejecución y validación del programa.
C O N C E P T O S C L A V E
• Algoritmo
• Ciclo de vida
• Diseño descendente
• Diagrama Nassi Schneiderman
• Diagramas de flujo
• Diseño
• Dominio del problema
• Factores de calidad
• Invariantes
• Métodos formales
• Postcondiciones
• Precondiciones
• Programación modular
• Programación estructurada
• Pruebas
• Pseudocódigo
• Verificación
41
cap.2 28/6/05 12:17 Página 42
42mmProgramación en C: Metodología, algoritmos y estructura de datos
2.1. FASES EN LA RESOLUCIÓN DE PROBLEMAS
El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a
su ejecución en la misma. Aunque el proceso de diseñar programas es —esencialmente— un proceso crea-
tivo, se puede considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los pro-
gramadores.
Las fases de resolución de un problema con computadora son:
• Análisis del problema.
• Diseño del algoritmo.
• Codificación.
• Compilación y ejecución.
• Verificación.
• Depuración.
• Mantenimiento.
• Documentación.
Constituyen el ciclo de vida del software y sus características más sobresalientes son:
• Análisis. El problema se analiza teniendo presente la especificación de los requisitos dados por el
cliente de la empresa o por la persona que encarga el programa.
• Diseño. Una vez analizado el problema, se diseña una solución que conducirá a un algoritmo que
resuelva el problema.
• Codificación (implementación). La solución se escribe en la sintaxis del lenguaje de alto nivel (por
ejemplo, C) y se obtiene un programa fuente que se compila a continuación.
• Ejecución, verificación y depuración. El programa se ejecuta, se comprueba rigurosamente y se eli-
minan todos los errores (denominados «bugs», en inglés) que puedan aparecer.
• Mantenimiento. El programa se actualiza y modifica, cada vez que sea necesario, de modo que se
cumplan todas las necesidades de cambio de sus usuarios.
• Documentación. Escritura de las diferentes fases del ciclo de vida del software, esencialmente el
análisis, diseño y codificación, unidos a manuales de usuario y de referencia, así como normas para
el mantenimiento.
Las dos primeras fases conducen a un diseño detallado escrito en forma de algoritmo. Durante la ter-
cera etapa (codificación) se implementa1 el algoritmo en un código escrito en un lenguaje de programa-
ción, reflejando las ideas desarrolladas en las fases de análisis y diseño.
Las fases de compilación y ejecución traducen y ejecutan el programa. En las fases de verificación y
depuración el programador busca errores de las etapas anteriores y los elimina. Comprobará que mientras
más tiempo se gaste en la fase de análisis y diseño, menos se gastará en la depuración del programa. Por
último, se debe realizar la documentación del programa.
Antes de conocer las tareas a realizar en cada fase, vamos a considerar el concepto y significado de la
palabra algoritmo. La palabra algoritmo se deriva de la traducción al latín de la palabra Alkhô-warîzmi2,
nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y
ecuaciones en el siglo IX. Un algoritmo es un método para resolver un problema mediante una serie de
pasos precisos, definidos y finitos.
1 En la última edición (21ª) del DRAE (Diccionario de la Real Academia Española) se ha aceptado el término implementar:
(Informática) «Poner en funcionamiento, aplicar métodos, medidas, etc. para llevar algo a cabo».
2 Escribió un tratado matemático famoso sobre manipulación de números y ecuaciones titulado Kitab al-jabr w’almugaba-
la. La palabra álgebra se derivó, por su semejanza sonora, de al-jabr.
cap.2 28/6/05 12:17 Página 43
Metodología de la programación y desarrollo de softwaremm43
Características de un algoritmo
• preciso (indica el orden de realización en cada paso),
• definido (si se sigue dos veces, obtiene el mismo resultado cada vez),
• finito (tiene fin; un número determinado de pasos).
Un algoritmo debe producir un resultado en un tiempo finito. Los métodos que utilizan algoritmos se deno-
minan métodos algorítmicos, en oposición a los métodos que implican algún juicio o interpretación que se deno-
minan métodos heurísticos. Los métodos algorítmicos se pueden implementar en computadoras; sin embargo,
los procesos heurísticos no han sido convertidos fácilmente en las computadoras. En los últimos años las téc-
nicas de inteligencia artificial han hecho posible la implementación del proceso heurístico en computadoras.
Ejemplos de algoritmos son: instrucciones para montar en una bicicleta, hacer una receta de cocina,
obtener el máximo común divisor de dos números, etc. Los algoritmos se pueden expresar por fórmulas,
diagramas de flujo o N-S y pseudocódigos. Esta última representación es la más utilizada para su uso con
lenguajes estructurados como C.
2.1.1. Análisis del problema
La primera fase de la resolución de un problema con computadora es el análisis del problema. Esta fase
requiere una clara definición, donde se contemple exactamente lo que debe hacer el programa y el resulta-
do o solución deseada.
Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entrada
y salida. La Figura 2.1 muestra los requisitos que se deben definir en el análisis.
Resolución
de un
problema
Análisis
del
problema
Diseño
del
algoritmo
Resolución del
problema con
computadora
Figura 2.1. Análisis del problema
Para poder identificar y definir bien un problema es conveniente responder a las siguientes preguntas:
• ¿Qué entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).
• ¿Cuál es la salida deseada? (tipo de datos de los resultados y cantidad).
• ¿Qué método produce la salida deseada?
• Requisitos o requerimientos adicionales y restricciones a la solución.
Problema 2.1.
Se desea obtener una tabla con las depreciaciones acumuladas y los valores reales de cada año, de un
automóvil comprado en 1.800.000 pesetas en el año 1996, durante los seis años siguientes suponiendo
cap.2 28/6/05 12:17 Página 44
44mmProgramación en C: Metodología, algoritmos y estructura de datos
un valor de recuperación o rescate de 120.000. Realizar el análisis del problema, conociendo la fórmu-
la de la depreciación anual constante D para cada año de vida útil.
coste - valor de recuperación
D = ——————————————
vida útil
1.800.000 – 120.000 1.680.000
D = —————————— = ————— = 280.000
6
6
Entrada coste original
{
{
{
Salida
vida útil
valor de recuperación
depreciación anual por año
depreciación acumulada en cada año
valor del automóvil en cada año
Proceso depreciación acumulada
cálculo de la depreciación acumulada cada año
cálculo del valor del automóvil en cada año
La tabla siguiente muestra la salida solicitada
Año
Depreciación
1 (1996)
2 (1997)
3 (1998)
4 (1999)
5 (2000)
6 (2001)
280.000
280.000
280.000
280.000
280.000
280.000
Depreciación
acumulada
280.000
560.000
840.000
1.120.000
1.400.000
2.180.000
Valor anual
1.520.000
1.240.000
960.000
680.000
400.000
120.000
2.1.2. Diseño del algoritmo
En la etapa de análisis del proceso de programación se determina qué hace el programa. En la etapa de dise-
ño se determina cómo hace el programa la tarea solicitada. Los métodos más eficaces para el proceso de dise-
ño se basan en el conocido divide y vencerás. Es decir, la resolución de un problema complejo se realiza
dividiendo el problema en subproblemas y a continuación dividiendo estos subproblemas en otros de nivel
más bajo, hasta que pueda ser implementada una solución en la computadora. Este método se conoce técni-
camente como diseño descendente (top-down) o modular. El proceso de romper el problema en cada eta-
pa y expresar cada paso en forma más detallada se denomina refinamiento sucesivo.
Cada subprograma es resuelto mediante un módulo (subprograma) que tiene un sólo punto de entra-
da y un sólo punto de salida.
Cualquier programa bien diseñado consta de un programa principal (el módulo de nivel más alto) que lla-
ma a subprogramas (módulos de nivel más bajo) que a su vez pueden llamar a otros subprogramas. Los pro-
gramas estructurados de esta forma se dice que tienen un diseño modular y el método de romper el programa
en módulos más pequeños se llama programación modular. Los módulos pueden ser planeados, codificados,
comprobados y depurados independientemente (incluso por diferentes programadores) y a continuación com-
binarlos entre sí. El proceso implica la ejecución de los siguientes pasos hasta que el programa se termina:
cap.2 28/6/05 12:17 Página 45
Metodolog
Comentarios de: Capítulo 2 - Metodología de la programación y desarrollo de software (0)
No hay comentarios