Está en la página 1de 83

Unidad 2

ALGORITMOS

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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".

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

25

Dedicarle tiempo a esta etapa nos ayudar a desarrollar buenos hbitos, los cuales sern necesarios cuando se desarrolle software en forma profesional.

INSTITUTO TECNOLGICO DE PACHUCA

26

El manual tcnico debe incluir como mnimo:


Descripcin del problema. Resultados esperados y datos necesarios para generar dichos resultados. Diagramas UML, DF y/o Pseudocdigo. Pruebas desarrolladas. Listado de programas con comentarios internos
INSTITUTO TECNOLGICO DE PACHUCA
27

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

2.1 Anlisis de problemas


La algoritmia es uno de los pilares de la programacin y su relevancia se muestran el desarrollo de cualquier aplicacin, ms all de la mera construccin de programas.

INSTITUTO TECNOLGICO DE PACHUCA

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

El proceso de desarrollo de un algoritmo requiere :


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.
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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

36

Los mdulos pueden ser planificados, codificados, compilados y depurados independientemente pueden ser intercambiados entre s.

INSTITUTO TECNOLGICO DE PACHUCA

37

Este proceso implica la ejecucin de los siguientes pasos:


1.- Programar un modulo. 2.- Comprobar un modulo. 3.- Depurar el modulo. 4.- Combinar el modulo con mdulos anteriores.
INSTITUTO TECNOLGICO DE PACHUCA
38

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.

INSTITUTO TECNOLGICO DE PACHUCA

39

2.1 Representacin de algoritmos


Elementos y reglas de la representacin grfica 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.
INSTITUTO TECNOLGICO DE PACHUCA
40

El eje central de la metodologa para resolver estos problemas es el algoritmo. Un algoritmo es un mtodo para resolver un problema.

INSTITUTO TECNOLGICO DE PACHUCA

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:

INSTITUTO TECNOLGICO DE PACHUCA

43

INSTITUTO TECNOLGICO DE PACHUCA

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

Caractersticas de los algoritmos , un algoritmo debe:


1. Ser preciso e indicar el orden de realizacin de cada paso. 2. Estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. 3. Ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea, debe tener un nmero finito de pasos.
INSTITUTO TECNOLGICO DE PACHUCA
46

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

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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

Conceptos para la elaboracin de un algoritmo


Dato. Tipo de Dato. Identificadores. Expresiones.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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

INSTITUTO TECNOLGICO DE PACHUCA

62

Reglas para la creacin de diagramas


1. Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha. 2. Los smbolos se unen con lneas, las cuales tienen en la punta una flecha que indica la direccin que fluye la informacin del procesos, se deben de utilizar solamente lneas de flujo horizontal o verticales (nunca diagonales).
INSTITUTO TECNOLGICO DE PACHUCA
63

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

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

65

Ejemplo

INSTITUTO TECNOLGICO DE PACHUCA

66

2.3 Diseo de Algoritimos.


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.
INSTITUTO TECNOLGICO DE PACHUCA
67

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

Las principales caractersticas de este lenguaje son:


Se puede ejecutar en una computadora Es una forma de representacin sencilla de utilizar y de manipular. Facilita el paso del programa al lenguaje de programacin. Es independiente del lenguaje de programacin que se vaya a utilizar. Es un mtodo que facilita la programacin y solucin al algoritmo del programa.
INSTITUTO TECNOLGICO DE PACHUCA
69

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

Cuerpo: Inicio Instrucciones Fin

INSTITUTO TECNOLGICO DE PACHUCA

72

2.4 Diseo algortmico de 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.
INSTITUTO TECNOLGICO DE PACHUCA
73

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.

INSTITUTO TECNOLGICO DE PACHUCA

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.

INSTITUTO TECNOLGICO DE PACHUCA

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

INSTITUTO TECNOLGICO DE PACHUCA

82

INSTITUTO TECNOLGICO DE PACHUCA

83

También podría gustarte