Professional Documents
Culture Documents
Departamento de Computacin y Sistemas Ingeniera en Sistemas Computacionales Fundamentos de Programacin M.C. Gabriela Torres Beltrn
SUBDIRECCIN ACADMICA
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
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
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
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:
Pgina 4
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
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