You are on page 1of 6

Instituto Tecnolgico de Tijuana

Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
SUBDIRECCIN ACADMICA

1. Tcnicas de Diseo detallado


1.1 Diseo Algortmico La algoritmia es uno de los pilares de la programacin y su relevancia se muestra en el desarrollo de cualquier aplicacin, ms all de la mera construccin de programas. La importancia de un algoritmo radica en mostrar la manera de llevar a cabo procesos y resolver mecnicamente problemas matemticos o de otro tipo. Al igual que las funciones matemticas, los algoritmos reciben una entrada y la transforman en una salida, comportndose como una caja negra. Sin embargo, no toda caja negra que convierta una entrada en una salida se puede considerar un algoritmo: para que un algoritmo pueda ser considerado como tal, debe ser una secuencia ordenada, finita y definida (formalizacin de su comportamiento) de instrucciones. El proceso de desarrollo de un algoritmo requiere de :

Anlisis de proceso, implica que hace el programa, y Diseo, implica como se hace o realiza la tarea (problema) solicitado
En el diseo: El todo es la sumatoria de las partes. Divide el todo en varias partes.

En la resolucin de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador. Esta caracterstica define lo que se entiende como diseo descendente( Top-Down / Norte-Sur ) o diseo modular. El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo. Cada problema se resuelve mediante un modulo (subprograma) y tiene un solo punto de entrada y un solo punto de salida. Un programa bien diseado consta de un programa principal (modulo de nivel ms alto) que llama a subprogramas (mdulos de nivel mas bajo), que a su vez pueden llamar otros sub programas. Los programas que se estructuran de esta forma, se dicen que tienen diseo modular y el mtodo de romper el programa en modos pequeos se llama programacin modular. Los mdulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre si. Este proceso implica la ejecucin de los siguientes pasos:

Pgina 1

Instituto Tecnolgico de Tijuana


Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
SUBDIRECCIN ACADMICA

1 2 3 4

programar un modulo comprobar un modulo depurar el modulo combinar el modulo con mdulos anteriores

este proceso convierte el resultado del anlisis del problema en un diseo modular con refinamientos sucesivos que permiten una traduccin a un lenguaje que se denomina diseo del algoritmo.

1.1.1 Elementos y reglas de la representacin grafica de los algoritmos El programador de computadoras es una persona que resuelve problemas. Es por ello que, para llegar a ser un programador eficaz, se necesita aprender a resolver problemas de un modo riguroso y sistemtico. El eje central de la metodologa para resolver estos problemas es el algoritmo. Un algoritmo es un mtodo para resolver un problema. La palabra algoritmo proviene de Mohammed al-KhoWrizmi, matemtico persa que vivi durante el siglo IX y alcanz gran reputacin por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir nmeros decimales. La traduccin al latn del apellido en la palabra algorismus deriv posteriormente en algoritmo. La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema, como lo muestra la siguiente figura:

Pgina 2

Instituto Tecnolgico de Tijuana


Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
Pasos para la resolucin de un problema 1.- Diseo del algoritmo que describe la secuencia ordenada de pasos -sin ambigedades- que conducen a la solucin de un problema dado. (Anlisis del problema y desarrollo del algoritmo). 2.- Expresar el algoritmo como un programa en un lenguaje adecuado. (Fase de codificacin). 3.- Ejecucin y validacin del programa por la computadora. Caractersticas de los algoritmos Un algoritmo debe: ser preciso e indicar el orden de realizacin de cada paso. estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea, debe tener un nmero finito de pasos.
SUBDIRECCIN ACADMICA

El cientfico de computacin Donald Knuth ofreci una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:

1. Carcter finito. "Un algoritmo siempre debe terminar despus de un nmero finito de pasos". 2. Precisin. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a 3. Entrada. "Un algoritmo tiene cero o ms entradas: cantidades que le son dadas antes de que el
algoritmo comience, o dinmicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos especficos de objetos". 4. Salida. "Un algoritmo tiene una o ms salidas: cantidades que tienen una relacin especfica con las entradas". 5. Eficacia. "Tambin se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente bsicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lpiz y papel". Knuth admite que, aunque su descripcin pueda ser intuitivamente clara, carece de rigor formal, puesto que no est exactamente claro qu significa "precisamente definido", "de manera rigurosa y no ambigua", o "suficientemente bsicas", y as sucesivamente.. A partir del carcter finito y de la salida se deduce que ante una misma situacin inicial (o valores de entrada) un algoritmo debe proporcionar siempre el mismo resultado (o salida), con excepcin de los algoritmos probabilistas. Se denomina diseo del algoritmo al proceso que convierte los resultados del anlisis del problema en un diseo modular con refinamientos sucesivos que permitan una posterior traduccin a un lenguaje. llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".

Pgina 3

Instituto Tecnolgico de Tijuana


Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
SUBDIRECCIN ACADMICA

El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar posteriormente. Existen dos herramientas utilizadas conceptualmente para disear algoritmos: los diagramas de flujo y el pseudocdigo. Diagramas de flujo Un diagrama de flujo (flowchart) es una representacin grfica de un algoritmo. Los smbolos utilizados para la elaboracin de diagramas de flujo han sido normalizados por el ANSI, y los mas frecuentes se presentan en la siguiente figura:

Ejemplo: El problema planteado es obtener el promedio de las calificaciones de un grupo de 30 alumnos.

Pgina 4

Instituto Tecnolgico de Tijuana


Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
Diagrama de flujo:
SUBDIRECCIN ACADMICA

1.1.2 Implementacin de Algoritmos secuenciales El pseudocdigo es una herramienta de programacin en la que las instrucciones se escriben en palabras similares al ingls o al espaol, que facilita tanto la escritura como la lectura de programas. En esencia, el pseudocdigo se puede definir como un lenguaje para la especificacin de algoritmos. Ejemplo: Una versin en pseudocdigo para el algoritmo del promedio de calificaciones de 30 alumnos, presentado en el apartado 1.1.1, sera: Inicio del algoritmo Num toma 1 Suma toma 0 Etiqueta A: Lee Calif Suma toma Suma + Calif

Pgina 5

Instituto Tecnolgico de Tijuana


Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
Si Num es menor que 30 Num toma Num + 1 Ir a Etiqueta A Si no Escribe Suma / 30 Fin del algoritmo
SUBDIRECCIN ACADMICA

1.2 Diseo Algortmico de las funciones Formalmente, un algoritmo calcula a una funcin. Como cualquier conjunto finito es numerable, y cualquier conjunto no numerable se puede expresar en trminos del conjunto de los nmeros naturales (infinito, pero numerable, de hecho no existe otro conjunto ms grande que sea tambin numerable), en esencia, todo algoritmo calcula a funciones definidas en los nmeros naturales. En este punto, una funcin est parcial o totalmente definida. Una funcin es parcial cuando hay nmeros naturales que no pertenecen a su dominio (es decir, hay nmeros naturales sobre los que no est definida la funcin), y una funcin es total en caso contrario. Si una funcin es parcial, el algoritmo que lo calcula solo devolver un resultado (es decir gasta un tiempo de clculo finito) para los valores en los que la funcin est definida, no devolviendo resultado (el tiempo de clculo es infinito) para el resto de valores. Si un algoritmo que calcula a una funcin parcial devolviera un resultado para los valores no definidos de la funcin, entonces no calculara a esa funcin sino a otra. Del mismo modo, un algoritmo que calcula a una funcin total siempre devuelve un resultado para todo valor, y que al igual que las funciones parciales, ste debe coincidir exactamente con el valor que devuelve la funcin a la que calcula; y reiterativamente, en caso contrario, no calculara a esa funcin sino a otra. As, todo algoritmo (secuencia de pasos finita, ordenada y definida) calcula a una funcin definida sobre los nmeros naturales, sea cul sea sta su naturaleza. Toda funcin para la cual exista un algoritmo que lo calcule se denomina funcin computable (parcialmente computable o totalmente computable depende del grado de definicin de la funcin en cuestin), pero existen funciones que no pueden ser calculadas funcin de Ackermann; a este ltimo tipo de funciones se las denomina funciones no computables. Para concluir, a los segmentos de cdigo que implementan al comportamiento de los objetos se les denomina de diferentes maneras, dependiendo del lenguaje de programacin que se utilice para hacer la implementacin. Por ejemplo, en C++ se les conoce como funciones miembro, en Java y C# como mtodos. La implementacin de los mtodos se basa en el diseo algortmico, slo que en este caso no se trata de algoritmos que resuelven completamente un problema dado, sino de algoritmos que realizan una tarea especfica, la cual representa el comportamiento que manifestar el objeto, cuando reciba el mensaje correspondiente.

Pgina 6

You might also like