Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ALGORITMOS
Unidad 2 Algoritmos
2.1 Anlisis del problema. 2.2 Representacin de algoritmos. 2.3 Diseo de algoritmos aplicados a problemas. 2.4 Diseo de algoritmos de funciones.
Introduccin
Durante el transcurso de nuestra vida nos enfrentamos a diversos problemas. Algunos de ellos podemos solucionarlos fcilmente, mientras que otros se complican de tal forma que nos afectan de una manera muy profunda.
INSTITUTO TECNOLGICO DE PACHUCA
3
Algunos problemas, por su naturaleza, pueden ser resueltos utilizando una computadora. Estos problemas generalmente son de tipo estructurado, es decir, tienen una solucin determinada y pueden ser desde muy sencillos hasta muy complejos.
INSTITUTO TECNOLGICO DE PACHUCA
4
Para resolver problemas estructurados utilizando la computadora es importante un mtodo. Este mtodo debe ser fcil de comprender y nos debe guiar paso a paso hasta la solucin del problema.
El mtodo propuesto y utilizado en esta unidad es el Mtodo de las 6'D, que est compuesto por 6 etapas, cada una de las cuales consta de una serie de complejidad del problema y las herramientas que se utilicen para si solucin.
INSTITUTO TECNOLGICO DE PACHUCA
6
Con la finalidad de recordar el mtodo, se ha definido que el nombre de cada una de las etapas del mtodo comience con la misma letra, la letra "D". Es decir, el mtodo tiene seis etapas y el nombre de cada una de las etapas comienza con la letra "D", de modo que este se pueda recordar como el Mtodo de las 6'D.
INSTITUTO TECNOLGICO DE PACHUCA
7
Etapa 1:
En esta etapa, en primer lugar, es necesario identificar cual es el problema que se desea resolver. Esto que parece algo sumamente sencillo, muchas veces resulta una tarea agotadora ya que generalmente existen muchas opiniones de cual es el problema central. Identificarlo es una de las tareas mas importantes que los analistas deben de afrontar.
INSTITUTO TECNOLGICO DE PACHUCA
9
Identificando el problema es necesario poder comprenderlo en su totalidad, es decir comprender qu es exactamente lo que se desea que se resuelva. Finalmente se deber escribir un enunciado claro, concreto y conciso del problema a resolver.
10
Pasos:
Identificacin del problema. Descripcin general del problema. Enunciado claro y preciso del problema.
El resultado de esta etapa es el ENUNCIADO claro del problema que se desea solucionar.
INSTITUTO TECNOLGICO DE PACHUCA
11
Etapa 2:
En esta etapa, es necesario estudiar a fondo el problema para poder solucionarlo, saber exactamente en qu consiste y poder descomponerlo en cada una de sus partes para facilitar su compresin y posterior solucin. Esta es una regla que siempre deber ser aplicada se utilice o no una computadora en la solucin de un problema.
INSTITUTO TECNOLGICO DE PACHUCA
12
Una vez entendido el problema, se est en condiciones de estudiarlo a fondo y plantear diversas alternativas que permitan solucionar el problema, para finalmente, seleccionar la alternativa ms adecuada.
13
PASOS:
Definir el resultado deseado. Determinar los datos que se deben ingresar o generar para obtener el resultado deseado. Determinar la forma en que los datos sern procesados para transformarlos en informacin.
El resultado obtenido en esta etapa son las ESPECIFICACIONES de lo que se debe hacer para solucionar el problema.
INSTITUTO TECNOLGICO DE PACHUCA
14
Etapa 3:
Definida la solucin, se procede a disear la lgica modelando y desarrollando algoritmos. Para el modelado de la solucin del problema se utiliza el Lenguaje Unificado de Modelado (Unified Modeling Language, UML), el cual es una herramienta usada para describir clases, objetos y sus relaciones.
INSTITUTO TECNOLGICO DE PACHUCA
15
Para el desarrollo del algoritmo se utiliza Pseudocdigo o Diagramas de Flujo (DF), los cuales son herramientas utilizadas para disear los algoritmos de los diferentes mtodos de una clase.
16
Finalizando el desarrollo de los algoritmos es necesario verificar se se ha incluido soluciones para todas las formas en que se presente el problema. A este tipo de prueba se le denomina "Prueba de escritorio".
17
PASOS:
Definir un nombre para el proyecto. Definicin de diagramas, relaciones y clases. Desarrollo de algoritmos.
El resultado obtenido en esta etapa son los DIAGRAMAS y los ALGORITMOS que especifican cmo se debe hacer para solucionar el problema.
INSTITUTO TECNOLGICO DE PACHUCA
18
Etapa 4 :
Una vez previstas todas las posibilidades y alternativas que pueden presentarse y que pasen sin inconvenientes por la clase y algoritmos, se podr proceder a la codificacin del problema en algn lenguaje de programacin.
INSTITUTO TECNOLGICO DE PACHUCA
19
La codificacin involucra traducir los diagramas, las especificaciones de las clases (expresadas en notacin UML), y los pasos del algoritmo de cada mtodo (Expresado en Diagrama de Flujo o pseudocdigo), en sentencias de un lenguaje de programacin determinado. Estas sentencias son almacenadas en un proyecto (o archivo) lgico, y constituyen lo que la computadora podr ejecutar.
INSTITUTO TECNOLGICO DE PACHUCA
20
PASOS:
Codificar el proyecto. Desarrollar comentarios internos en los programas de computadoras. Desarrollar copias de seguridad de los programas de computadoras.
El resultado obtenido en esta etapa son los PROGRAMAS y/o CLASES, codificados en una lenguaje de programacin, que permiten solucionar el problema.
INSTITUTO TECNOLGICO DE PACHUCA
21
Etapa 5 :
Luego que se codifiquen los programas y/o clases, deben ser probados mediante la ejecucin de los mismos (esto es conocido como corrida del programa). Al realizarse sta, pueden surgir diferentes tipos de errores, siendo los errores de lgica y sintaxis los ms comunes.
INSTITUTO TECNOLGICO DE PACHUCA
22
Hay que corregir el programa; anular, modificar o crear nuevas sentencias, volver a probar el programa y continuar con la correccin y pruebas hasta conseguir el resultado deseado.
23
PASOS:
Realizar la depuracin y verificar la correcta escritura de los programas. Realizar pruebas de sintaxis. Realizar pruebas de lgica.
El resultado obtenido en esta etapa son las PRUEBAS que registran el adecuado funcionamiento de la solucin del problema.
INSTITUTO TECNOLGICO DE PACHUCA
24
Etapa 6:
En esta etapa se recopila toda la documentacin generada en las etapas anteriores, la cual va servir como base para la elaboracin del manual tcnico.
25
Dedicarle tiempo a esta etapa nos ayudar a desarrollar buenos hbitos, los cuales sern necesarios cuando se desarrolle software en forma profesional.
26
PASOS:
Recopilar el material generado en cada una de las fases anteriores. Generar el manual del programa. Generar el manual del usuario.
El resultado obtenido en esta etapa son los MANUALES que permiten un adecuado manejo de la solucin desarrollada.
INSTITUTO TECNOLGICO DE PACHUCA
28
29
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.
INSTITUTO TECNOLGICO DE PACHUCA
30
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.
INSTITUTO TECNOLGICO DE PACHUCA
31
En el diseo:
El todo es la sumatoria de las partes. Divide el todo en varias partes.
INSTITUTO TECNOLGICO DE PACHUCA
32
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.
33
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.
INSTITUTO TECNOLGICO DE PACHUCA
34
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.
35
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.
36
Los mdulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre s.
37
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.
39
El eje central de la metodologa para resolver estos problemas es el algoritmo. Un algoritmo es un mtodo para resolver un problema.
41
La palabra algoritmo proviene de Mohammed alKhoWrizmi, 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.
INSTITUTO TECNOLGICO DE PACHUCA
42
La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema, como lo muestra la siguiente figura:
43
44
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.
INSTITUTO TECNOLGICO DE PACHUCA
45
El cientfico de computacin Donald Knuth ofreci una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:
47
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 llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
INSTITUTO TECNOLGICO DE PACHUCA
48
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".
INSTITUTO TECNOLGICO DE PACHUCA
49
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".
INSTITUTO TECNOLGICO DE PACHUCA
50
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..
INSTITUTO TECNOLGICO DE PACHUCA
51
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.
INSTITUTO TECNOLGICO DE PACHUCA
52
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.
53
Propiedades de un algoritmo: Algoritmos deterministas: para los mismos datos de entrada se producen los mismos datos de salida. Algoritmos no deterministas: para los mismos datos de entrada pueden producirse diferentes de salida.
INSTITUTO TECNOLGICO DE PACHUCA
54
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.
INSTITUTO TECNOLGICO DE PACHUCA
55
56
Dato
En lenguajes de programacin un tipo de dato es un atributo de una parte de los datos que indica al ordenador (y/o el programador) algo sobre la clase de datos sobre los que se va a procesar. Esto incluye imponer restricciones en los datos, como qu valores pueden tomar y qu operaciones se pueden realizar. Tipos de datos comunes son: enteros, nmeros de coma flotante (decimales), cadenas alfanumricas, fechas, horas, colores, coches o cualquier cosa que se nos ocurra.
57
Tipo de Dato
Un tipo de datos define un conjunto de valores y las operaciones sobre estos valores. Casi todos los lenguajes de programacin explcitamente incluyen la notacin del tipo de datos, aunque lenguajes diferentes pueden usar terminologa diferente.
58
Identificadores
Los identificadores (IDs) son smbolos lxicos que nombran entidades. El concepto es anlogo al de "nombre". Los identificadores se usan ampliamente en todos los sistemas de procesamiento de la informacin. Nombrar las entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simblico.
INSTITUTO TECNOLGICO DE PACHUCA
59
Expresiones
Se conocen como expresiones los valores que son manipulados dentro de un programa. Estos valores pueden surgir como resultado de efectuar operaciones, como valores de retorno de las funciones, al extraerlos de las variables, o simplemente pueden ser constantes expresadas directamente dentro del cdigo del programa.
INSTITUTO TECNOLGICO DE PACHUCA
60
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 ms frecuentes se presentan en la siguiente figura:
INSTITUTO TECNOLGICO DE PACHUCA
61
62
3. Se debe evitar el cruce de lneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se vana utilizar conectores cuando sea estrictamente necesario. 4. No deben quedar lneas de flujo sin conectar
64
5. Todo texto escrito dentro de un smbolo debe ser legible, preciso, evitando el uso de muchas palabras. 6. Todos los smbolos pueden tener ms de una lnea de entrada, a excepcin del smbolo final. Solo los smbolos de decisin pueden y deben tener mas de una lnea de flujo de salida.
65
Ejemplo
66
El principal objetivo del pseudocdigo es el de representar la solucin a un algoritmo de la forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que posteriormente se utilizara para la codificacin del mismo.
INSTITUTO TECNOLGICO DE PACHUCA
68
Todo documento en pseudocdigo debe permitir la descripcin de: Instrucciones primitivas Instrucciones de proceso Instrucciones de control Instrucciones compuestas Instrucciones de descripcin
INSTITUTO TECNOLGICO DE PACHUCA
70
Estructura a seguir en su realizacin: Cabecera: Programa: Modulo: Tipos de datos: Constantes: Variables:
INSTITUTO TECNOLGICO DE PACHUCA
71
72
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.
INSTITUTO TECNOLGICO DE PACHUCA
74
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.
INSTITUTO TECNOLGICO DE PACHUCA
75
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.
76
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.
INSTITUTO TECNOLGICO DE PACHUCA
77
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.
78
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.
INSTITUTO TECNOLGICO DE PACHUCA
79
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.
INSTITUTO TECNOLGICO DE PACHUCA
80
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.
INSTITUTO TECNOLGICO DE PACHUCA
81
Contacto
M.C.C Jos Ezequiel Meja Loaisa
josemejia.ead@itpachuca.edu.mx Skype: josemejia.ead
82
83