Sie sind auf Seite 1von 10

CAPITULO I

METODOLOGIA DE LA PROGRAMACION

1.1. INTRODUCCIN Y MOTIVACIN


Este capitulo le introduce al estudiante a seguir una metodologa para la resolucin de problemas con
computadoras y el uso del lenguaje de programacin Java.
La resolucin de un problema con una computadora se hace escribiendo un programa, que exige al menos
los siguientes pasos: Definicin o anlisis del problema, diseo del algoritmo, transformacin del
algoritmo en un programa y ejecucin y validacin del programa.
Uno de los objetivos fundamentales de este manual es el aprendizaje y diseo de los algoritmos. Este
capitulo introduce al lector en el concepto de algoritmo y de programa, as como las herramientas que
permiten dialogar al usuario con la maquina: los lenguajes de programacin.

1.2. FASES EN LA RESOLUCIN DE PROBLEMAS


El proceso de resolucin de un problema con una computadora conduce a la escritura de un programa y a
su ejecucin en la misma. Aunque el proceso de disear programa es esencialmente un proceso creativo,
se puede considerar una serie de fases o pasos comunes, que generalmente deben seguir todos los
programadores.
Las fases de resolucin de un problema con computadora son:

Anlisis del problema


Diseo del algoritmo
Codificacin
Compilacin y ejecucin
Verificacin
Depuracin
Mantenimiento
Documentacin

Constituye el ciclo de vida del software y sus caractersticas ms sobresalientes son:

Anlisis. El problema se analiza teniendo presente la especificacin de los requisitos dados por
el cliente de la empresa o por la persona que encarga el programa.
Diseo. Una vez analizado el problema, se disea una solucin que conducir a un algoritmo
que resuelva el problema.
Codificacin (implementacin). La solucin se escribe en la sintaxis del lenguaje de alto nivel
y se obtiene un programa fuente que se compila a continuacin.
Ejecucin, verificacin y depuracin. El programa se ejecuta, se comprueba rigurosamente y
se eliminan todos los errores (denominados Bugs, en ingls) 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.
Documentacin. Escritura de las diferentes fases del ciclo de vida del software, esencialmente
el anlisis, diseo y codificacin, unidos a manuales de usuario y de referencia, as como normas
para el mantenimiento.
Las dos primeras fases conducen a un diseo detallado escrito en forma de algoritmo. Durante la
tercera etapa (codificacin) se implementa el algoritmo en un cdigo escrito en un lenguaje de
programacin, reflejando las ideas desarrolladas en las fases de anlisis y diseo.
Las fases de compilacin y ejecucin traducen y ejecutan el programa. En las fases de verificacin y
depuracin el programador busca errores de las etapas anteriores y los elimina. Comprobara que mientras
ms tiempo se gaste en la fase de anlisis y diseo, menos se gastar en la depuracin del programa. Por
ltimo, se debe realizar la documentacin 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 traduccin al latn de la palabra Alkho-warizmi,
nombre de un matemtico y astrnomo rabe que escribi un tratado sobre la manipulacin de nmeros y
ecuaciones en el siglo IX. Un algoritmo es un mtodo para resolver un problema mediante una serie de
pasos precisos, definidos y finitos.

Caractersticas de un algoritmo

Preciso (indica el orden de realizacin en cada paso),


Definido (si se sigue dos veces, obtiene el mismo resultado
cada vez),
Finito (tiene fin; un nmero determinado de pasos).

Un algoritmo debe producir un resultado en un tiempo finito. Los mtodos que utilizan algoritmos se
denominan mtodos algortmicos, en oposicin a los mtodos que implican algn juicio o interpretacin
que se denominan mtodos heursticos. Los mtodos algortmicos se pueden implementar en
computadoras; sin embargo, los procesos heursticos no han sido convertidos fcilmente en las
computadoras. En los ltimos aos las tcnicas de inteligencia artificial han hecho posible la
implementacin del proceso heurstico en computadoras.
Ejemplos de algoritmos son: instrucciones para obtener el mximo comn divisor de dos nmeros,
calculo del factorial de un numero, calculo de la tabal de multiplicar del 1 al 12, etc. Los algoritmos se
pueden expresar por frmulas, diagramas de flujo o N-S y pseudocdigos.

1.2.1. Anlisis del Problema


La primera fase de la resolucin de un problema con computadora es el anlisis del problema.
Esta fase requiere una clara definicin, donde se contemple exactamente lo que debe hacer el
programa y el resultado o solucin deseada.
Dado que se busca una solucin por computadora, se precisan especificaciones detalladas de
entrada y salida. La Figura 1 muestra los requisitos que se deben definir en el anlisis.

Resolucin
de un problema

Anlisis Diseo Resolucin del


del del problema con
problema algoritmo computadora

Figura 1. Anlisis 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).
Cul es la salida deseada? (tipo de datos de los resultados y cantidad).
Qu mtodo produce la salida deseada?
Requisitos o requerimientos adicionales y restricciones a la solucin.

Ejemplo:
Se desea obtener una tabla con las depreciaciones acumuladas y los valores reales de cada ao, de
un automovil comprado en 1,800.00 soles en el ao 1985, durante los seis aos siguientes
suponiendo un valor de recuperacin o rescate de 120.00. Realizar el anlisis del problema,
conociendo la frmula de la depreciacin anula constante D para cada ao de vida til.

D= Costo valor de recuperacin


Vida til

D = 1.800.00 120.00 = 1,680.00 = 280.00


6 6

Costo original
Entrada Vida til
Valor de recuperacin
Depreciacin acumulada

Proceso clculo de la depreciacin acumulada cada ao


Clculo del valor del automovil en cada ao

Depreciacin anual
Salida Depreciacin acumulada en cada ao
Valor del automovil en cada ao

1.2.2. Diseo del Algoritmo

En la etapa de anlisis del proceso de programacin se determina qu hace el programa. En la


etapa de diseo se determina cmo hace el programa la tarea solicitada. Los mtodos ms eficaces
para el proceso de diseo se basan en el conocido divide y vencers. Es decir, la resolucin de un
problema complejo se realiza dividiendo el problema en subproblemas y a continuacin dividiendo
estos subproblemas en otros de nivel ms bajo, hasta que pueda ser implementada una solucin en
la computadora. Este mtodo se conoce tcnicamente como diseo descendente (top-down) o
modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma ms
detallada se denomina refinamiento sucesivo.
Cada subprograma es resuelto mediante un mdulo (subprograma) que tiene un slo punto
de entrada y un slo punto de salida.
Cualquier programa bien diseado consta de un programa principal (el mdulo de nivel ms
alto) que llama a subprogramas (mdulos de nivel ms bajo) que a su vez pueden llamar a otros
subprogramas. Los programas estructurados de esta forma se dice que tienen un diseo modular y
el mtodo de romper el programa en mdulos mas pequeos se llama programacin modular. Los
mdulos pueden ser planeados, codificados, comprobados y depurados independientemente
(incluso por diferentes programadores) y a continuacin combinarlos entre s. El proceso implica
la ejecucin de los siguientes pasos hasta que el programa se termina:

1. Programar un mdulo.
2. Comprobar el mdulo.
3. Si es necesario, depurar el modulo.
4. Combinar el mdulo con los mdulos anteriores.
1.2.3. Herramientas de Programacin

Las dos herramientas ms utilizadas comnmente para disear algoritmos son: diagramas de flujo
y pseudocdigos.
Un diagrama de flujo (flowchart) es una representacin grfica de un algoritmo. Los
smbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalizacin
(ANSI), y los ms frecuentemente empleados se muestran en la Figura 2.

Entrad
Terminal Subprogram a/
a Salida

Proceso
Si
Decisi
n No
Conectores

Si
Figura 2. Smbolos ms utilizados en los diagramas de flujo

El pseudocdigo es una herramienta de programacin en la que las instrucciones se escriben en


palabras similares al ingls o espaol, que facilitan tanto la escritura como la lectura de programas.
En esencia, el pseudocdigo se puede definir como un lenguaje de especificaciones de algoritmos.
Aunque no existen reglas para escritura del pseudocdigo en espaol, se ha recogido una
notacin estndar que se utilizara en el presente manual y que ya es muy empleada en los libros de
programacin en espaol. Las palabras reservadas bsicas se representan en letras negritas
minsculas. Estas palabras son traduccin libre de palabras reservadas de lenguajes como C,
pascal, etc.

Ejemplo:
Algoritmo que permite calcular el mayor valor de dos nmeros ingresados por teclado, en el caso
de ser iguales mostrara un mensaje que no existe numero mayor, los nmeros son iguales.
Inicio:
Leer n1, n2
Si n1 = n2 entonces
Imprimir No existe nmero mayor, los nmeros son
iguales
Caso contario:
Si n1>n2 entonces
Imprimir El nmero mayor es n1
Caso contrario:
Imprimir El nmero mayor es n2
Fin de si
Fin de si
Fin

1.2.4. Herramientas de Programacin


Codificacin es la escritura en un lenguaje de programacin de la representacin del algoritmo.
Dado que el diseo de un algoritmo es independiente del lenguaje de programacin utilizado para
su implementacin, el cdigo puede ser escrito con igual facilidad en un lenguaje o en otro.
Para realizar la conversin del algoritmo en programa se deben de sustituir las palabras
reservadas en espaol por sus homnimos en ingls, y las operaciones/ instrucciones indicadas en
lenguaje natural expresarlas en el lenguaje de programacin correspondiente.

1.2.5. Compilacin y Ejecucin de un Programa

Una vez que el algoritmo se ha convertido en un programa fuente, es preciso introducirlo en


memoria mediante el teclado y almacenarlo posteriormente en un disco. Esta operacin se realiza
con un programa editor. Posteriormente el programa fuente se convierte en un archivo de
programa que se guarda en disco.
El programa fuente debe ser traducido a lenguaje de maquina, este proceso se realiza con el
compilador y el sistema operativo que se encarga prcticamente de la compilacin.
Tras la compilacin se presentan errores en el programa fuente, es preciso volver a editar el
programa, corregir los errores y compilar de nuevo. Este proceso se repite hasta que no se
producen errores, obtenindose el programa objeto que todava no es ejecutable directamente.
Suponiendo que no existen errores en el programa fuente, se debe instruir al sistema operativo para
que realice la fase de montaje o enlace (link), carga, del programa objeto con las bibliotecas del
programa del compilador. El proceso de montaje produce un programa ejecutable. La Figura 3
describe el proceso completo de compilacin/ejecucin de un programa.
Figura 3. Fases de la compilacin/ejecucin de un programa:
a) edicin; b) compilacin; c) montaje o enlace

1.2.6. Verificacin y Depuracin de un Programa

La verificacin o compilacin de un programa es el proceso de ejecucin del programa con una


amplia variedad de datos de entrada, llamados datos de test o prueba, que determinarn si el
programa tiene errores. Para realizar la verificacin se debe desarrollar una amplia gama de datos
de test: valores normales de entrada, valores extremos de entrada que comprueben los limites del
programa y valores de entrada que comprueben aspectos especiales del programa.
La depuracin es el proceso de encontrar los errores del programa y corregir o eliminar
dichos errores.
Cuando se ejecuta un programa, se pueden producir tres tipos de errores:
1. Errores de Compilacin. Se producen normalmente por un uso incorrecto de las
reglas del lenguaje de programacin y suelen ser errores de sintaxis. Si existe un error
de sintaxis, la computadora no puede comprender la instruccin, no se obtendr el
programa objeto y el compilador imprimir una lista de todos los errores encontrados
durante la compilacin.
2. Errores de Ejecucin. Estos errores se producen por instrucciones que la computadora
puede comprender pero no ejecutar. Ejemplos tpicos son: divisin por cero y races
cuadradas de nmeros negativos. En estos casos se detiene la ejecucin del programa y
se imprime un mensaje de error.
3. Errores Lgicos. Se producen en la lgica del programa y la fuente de error suele ser
el diseo del algoritmo. Estos errores son los ms difciles de detectar, ya que el
programa puede funcionar y no producir errores de compilacin ni de ejecucin, y slo
puede advertirse el error por la obtencin de resultados incorrectos. En este caso se
debe volver a la fase de diseo del algoritmo, modificar el algoritmo, cambiar el
programa fuente y compilar y ejecutar una vez ms.

1.2.7. Documentacin y Mantenimiento


La documentacin de un problema consta de las descripciones de los pasos a dar en el proceso de
resolucin de dicho problema. La importancia de la documentacin debe ser destacada por su
decisiva influencia en el producto final. Programas pobremente documentados son difciles de leer,
ms difciles de depurar y casi imposible de mantener y modificar.
La documentacin de un programa puede ser interna y externa. La documentacin interna es
la contenida en lneas de comentarios. La documentacin externa incluye anlisis, diagramas de
flujo y/o pseudocdigos, manuales de usuario con instrucciones para ejecutar el programa y para
interpretar los resultados.
La documentacin es vital cuando se desea corregir posibles errores futuros o bien cambiar
el programa. Tales cambios se denominan mantenimiento del programa. Despus de cada cambio
la documentacin debe ser actualizada para facilitar cambios posteriores.

1.3. PROGRAMACION MODULAR

La programacin modular es uno de los mtodos de diseo ms flexible y potente para mejorar la
productividad de un programa. En programacin modular el programa se divide en mdulos (partes
independientes), cada uno de las cuales ejecuta una nica actividad o tarea y se codifican
independientemente de otros mdulos. Cada uno de estos mdulos se analiza, codifica y pone a punto por
separado. Cada programa contiene un mdulo denominado programa principal que controla todo lo que
sucede; se transfiere el control a submdulos (subprogramas), de modo que ellos puedan ejecutar sus
funciones; sin embargo, cada submdulo devuelve el control al mdulo principal cuando se haya
completado su tarea. Si la tarea asignada a cada submdulo es demasiado compleja, ste deber romperse
en otros mdulos ms pequeos. El proceso sucesivo de subdivisin de mdulos contina hasta que cada
mdulo tenga solamente una tarea especifica que ejecutar. Esta tarea puede ser entrada, salida,
manipulacin de datos, control de otros mdulos o alguna combinacin de stos. Un mdulo puede
transferir temporalmente el control a otro mdulo; sin embargo, cada mdulo debe eventualmente
devolver el control al mdulo del cual se recibe originalmente el control.
Los mdulos son independientes en el sentido en que ningn mdulo puede tener acceso directo a
cualquier otro mdulo excepto el mdulo al que llama y sus propios submdulos. Sin embargo, los
resultados producidos por un mdulo pueden ser utilizados por cualquier otro mdulo cuando se
transfiera a ellos el control.

Raz

Modulo 1 Modulo 2

Modulo Modulo Modulo Modulo


11 12 21 22

Figura 4. Programacin Modular


Dado que los mdulos son independientes, diferentes programadores pueden trabajar simultneamente en
diferentes partes del mismo programa. Esto reducir el tiempo del diseo del algoritmo y posterior
codificacin del programa. Adems, un mdulo se puede modificar radicalmente sin afectar a otros
mdulos, incluso sin alterar su funcin principal.
La descomposicin de un programa en mdulos independientes ms simples se conoce tambin
como el mtodo de divide y vencers. Se disea cada mdulo con independencia de los dems, y
siguiendo un mtodo ascendente o descendente se llegar hasta la descomposicin final del problema en
mdulos en forma jerrquica.

1.4. PROGRAMACION ESTRUCTURADA

Los trminos programacin modular, programacin descendente y programacin estructurada se


introdujeron en la mitad de la dcada de los sesenta y a menudo se utilizan como sinnimos aunque no
significa lo mismo. La programacin estructurada significa escribir un programa de acuerdo a las
siguientes reglas:
El programa tiene un diseo modular
Los mdulos son diseados de modo descendente
Cada mdulo se codifica utilizando las tres estructuras de control bsicas: secuencia, seleccin y
repeticin.
El trmino programacin estructurada se refiere a un conjunto de tcnicas que han ido evolucionando
desde los primeros trabajos de Edgar Dijkstra. Estas tcnicas aumentan considerablemente la
productividad del programa reduciendo en elevado grado el tiempo requerido para escribir, verificar,
depurar y mantener los programas. La programacin estructurada utiliza un nmero limitado de
estructuras de control que minimizan la complejidad de los programas y, por consiguiente, reducen los
errores; hace los programas ms fciles de escribir, verificar, leer y mantener. Los programas deben estar
dotados de una estructura.
La programacin estructurada es el conjunto es el conjunto de tcnicas que incorporan:
Recursos abstractos,
Diseo descendente (top-down),
Estructuras bsicas.

1.4.1. Recursos Abstractos

La programacin estructurada se auxilia de los recursos abstractos en lugar de los recursos


concretos de que dispone un determinado lenguaje de programacin.
Descomponer un programa en trminos de recursos abstractos segn Dijkstra, consiste en
descomponer una determinada accin compleja en trminos de un nmero de acciones ms
simples capaces de ejecutarlas o que constituyan instrucciones de computadoras disponibles.

1.4.2. Diseo Descendente (top-down)

El diseo descendente (top-down) es el proceso mediante el cual un problema se descompone en


una serie de niveles o pasos sucesivos de refinamiento. La metodologa descendente consiste en
efectuar una relacin entre las sucesivas etapas de estructuracin de modo que se relacionasen
unas con otras mediante entradas y salidas de informacin. Es decir, se descompone el problema
en etapas o estructuras jerrquicas, de forma que se puede considerar cada estructura desde dos
puntos de vista: qu hace? Y cmo lo hace?
Si se considera un nivel n de refinamiento, las estructuras se consideran de la siguiente
manera:
Nivel n: desde el exterior Nivel n+1: Vista desde el interior
qu hace? cmo lo hace?

Figura 5. Diseo Descendente

1.4.3. Estructuras de Control


Las estructuras de control de un lenguaje de programacin son mtodos de especificar el orden en
que las instrucciones de un algoritmo se ejecutarn. El orden de ejecucin de las sentencias o
instrucciones determina el flujo de control. Estas estructuras de control son, por consiguiente,
fundamentales en los lenguajes de programacin y en los diseos de algoritmos, especialmente los
pseudocdigos.
Las tres estructuras de control bsicos son:
Secuencia,
Seleccin,
Repeticin.
La programacin estructurada hace los programas ms fciles de escribir, verificar, leer y
mantener; utiliza un nmero limitado de estructuras de control que minimizan la
complejidad de los problemas.

1.4.4. Teorema de la Programacin Estructurada: Estructuras Bsicas

En mayo de 1996, Bohm y Jacopini demostraron que un programa propio puede ser escrito
utilizando solamente tres tipos e estructuras de control.
Secuenciales,
Selectivas,
Repetitivas.
Un programa se define como propio si cumple las siguientes caractersticas:
Posee un solo punto de entrada y uno de salida o fin para control del programa.
Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por
todas las partes del programa.
Todas las instrucciones son ejecutables y no existen lazos o bucles infinitos (sin fin).

La programacin estructurada significa que:

El programa completo tiene un diseo modular.


Los mdulos se disean con metodologa descendente (puede hacerse tambin
ascendente).
Cada mdulo se codifica utilizando las tres estructuras de control bsicas:
secuenciales, selectivas y repetitivas
Estructuracin y modularidad son conceptos complementarios

Das könnte Ihnen auch gefallen