Вы находитесь на странице: 1из 29

INTRODUCCION:

Aunque este documento tiene como finalidad principal la presentacin y desarrollo de tres temas: algoritmos, diagramas de flujo y pseudocdigo, Se comenzar definiendo algunos conceptos bsicos dentro del contexto de la programacin, hablaremos sobre lo que es un algoritmo el cual es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute. Su importancia 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, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Por tanto, un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra "algoritmo" deriva del nombre latinizado del gran matemtico rabe Mohamed Ibn Moussa Al Kow Rizmi, el cual escribi sobre entre los aos 800 y 825 su obra Quitab Al Jabr Al Mugabala, donde se recoga el sistema de numeracin hind y el concepto del cero. Fue Fibonacci, el que tradujo su obra al latn y la inici con las palabras: Algoritmi dicit.

LOS ALGORITMOS Y SUS FINALIDADES


Algoritmos: Es una secuencia o un conjunto finito y ordenado de operaciones que permite hallar la solucin de un problema, pero se debe tener en cuenta el no confundir algoritmo con programa ya que este ltimo es la codificacin del algoritmo en algn lenguaje de programacin o en instrucciones de la maquina. Los pasos deben estar muy bien definidos, y tienen que describir sin ambigedades cmo llegar desde el inicio hasta el final. La palabra tiene su origen de Al-Khwarizmi o Al Juarism, sobrenombre del erudito Mohamed ben Musa, un rabe del siglo nueve aproximadamente de los aos (780 850), considerado padre del Algebra. Cuyo libro al-jabr wa'l muqabalah derivo en los libros de texto de lgebra de hoy en las escuelas secundaria. Al-Khwarizmi

hizo hincapi en la importancia de procedimientos metdicos para la solucin de problemas. Condiciones de un Algoritmo Los algoritmos, adems de ser un conjunto finito de reglas que dan lugar a una secuencia de operaciones para resolver un tipo especfico de problemas, deben cumplir con cinco importantes condiciones, que reducen significativamente el espectro tan amplio que hasta ahora se ha manejado como algoritmo, y no da pie a ambigedades. 1. Finitud: Un algoritmo tiene que acabar siempre tras un nmero finito de pasos. (Un procedimiento que tiene todas las caractersticas de un algoritmo salvo que posiblemente falla en su finitud, se conoce como mtodo de clculo. 2. Definible: Cada paso de un algoritmo debe definirse de modo preciso; las acciones a realizar han de estar especificadas para cada caso rigurosamente y sin ambigedad.

3. Conjunto de entradas: Debe existir un conjunto especificado de objetos, cada uno de los cuales constituye los datos iniciales de un caso particular del problema que resuelve el algoritmo. A este conjunto se le denomina conjunto de entradas del algoritmo. 4. Conjunto de salidas: Debe existir un nmero especificado de objetos, cada uno de los cuales constituye la salida o respuesta que debe obtener el algoritmo para los diferentes casos particulares del problema. A este conjunto se le denomina conjunto de salidas del algoritmo. Para cada entrada del algoritmo, debe existir una salida asociada que constituye la solucin al problema particular determinado por dicha entrada. 5. Efectividad: Un algoritmo debe ser efectivo. Esto significa que todas las operaciones a realizar por el algoritmo deben ser lo bastante bsicas para poder ser efectuadas de modo exacto, y en un lapso de tiempo finito por el procesador que ejecute el algoritmo.

Metodologa para la solucin de problemas. En general, se escriben algoritmos para resolver problemas que no son tan fciles de resolver a primera vista, y de los que necesitamos especificar el conjunto de acciones que se llevarn a cabo para su resolucin. Adems, como lo que interesa es resolver problemas utilizando la computadora, los algoritmos tendrn como finalidad ser traducidos en programas, por lo que es conveniente mencionar el proceso general de resolucin de problemas, desde que se dispone de un algoritmo, hasta que la computadora lo ejecuta. El proceso es el siguiente: Definicin y anlisis del Problema: definicin y delimitacin (macro algoritmo).Considerar los datos de entrada, el proceso que debe realizar el ordenador y los datos de salida.

Diseo del Algoritmo: se utiliza diferentes herramientas de representacin pseudocdigo, escritura natural de algoritmo, diagramas de flujo etc.

Prueba de escritorio: seguimiento manual de los pasos descritos en el algoritmo. Se realiza con valores bajos y tiene como finalidad detectar errores.

Codificacin (Programa Lenguaje alto nivel).Seleccin de un lenguaje de programacin y digitacin del pseudocdigo haciendo uso de la sintaxis y escritura gramatical del lenguaje seleccionado.

Compilacin o Interpretacin del programa: El software elegido convierte las instrucciones escritas en el lenguaje comprendidas por el computador.

Ejecucin del Programa: El programa es ejecutado por el ordenador para llegar a los resultados esperados.

Prueba y Depuracin: Operacin de detectar, localizar y eliminar errores del mal funcionamiento del programa.

Evaluacin de los resultados: Obtenidos lo resultados se los evala para verificar si son correctos. Un programa puede arrojar resultados incorrectos aun cuando su ejecucin no muestra errores.

Es importante recordar que las computadoras tienen su propio lenguaje (binario), por lo que es necesario un proceso de traduccin (realizado por el compilador) para que se traduzca el conjunto de sentencias escritas en un lenguaje de programacin de alto nivel (cdigo fuente), a un conjunto de instrucciones que sean compresibles para la computadora (cdigo de mquina). Finalmente, y aunque el proceso involucrado es

ms complejo que lo que aqu se ha descrito, si todo est bien, el resultado de este proceso ser la ejecucin del programa basado en el algoritmo. Teniendo en consideracin lo anterior, debera ser claro que el papel del algoritmo es fundamental, ya que sin algoritmo no puede haber programas, y sin programas, no hay nada que ejecutar en la computadora. Es importante mencionar y enfatizar tambin que, un algoritmo es independiente tanto del lenguaje de programacin en que se exprese, como de la computadora en la que se ejecute, por lo que no deberan ser diseados en funcin de ello. Otro aspecto muy importante dentro de los algoritmos, es el del anlisis y diseo de algoritmos. El anlisis y diseo formal de algoritmos es una actividad intelectual considerable, ya que el diseo de buenos algoritmos requiere creatividad e ingenio, y no existen reglas para disear algoritmos en general, esto es, todava no existe un algoritmo para disear algoritmos y que adems stos sean buenos, por lo que, aunque es importante mencionarlo y tenerlo en cuenta. Estructura de un algoritmo Aunque no existe una nica forma de representar un algoritmo, la estructura general de un algoritmo debera ser: cada uno tiene formas diferentes aunque esencialmente iguales de representar un algoritmo. Estructura general de un algoritmo Algoritmo <nombre_del_algoritmo> Inicio Definicin de constantes Declaracin de variables Sentencia 1 Sentencia 2 Sentencia n Fin

Tcnicas para la formulacin de algoritmos Las dos herramientas utilizadas comnmente para disear algoritmos son: Diagrama de Flujo Pseudocdigo Diagrama de Flujo Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede decir que es la representacin detallada en forma grfica de cmo deben realizarse los pasos en la computadora para producir resultados. Esta representacin grfica se da cuando varios smbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante lneas que indican el orden en que se deben ejecutar los procesos. Los smbolos utilizados han sido normalizados por el instituto norteamericano de normalizacin (ANSI). Smbolos en los Organigramas

Reglas para el Diseo de Diagramas de Flujo Todo Diagrama de Flujo debe tener un inicio y un fin. Se deben se usar solamente lneas de flujo horizontal y/o vertical, Las lneas utilizadas para indicar la direccin del flujo del diagrama y no se deben cruzar. Se deben usar conectores solo cuando sea necesario y no deben quedar lneas de flujo sin conectar. Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando el uso de muchas palabras, adems debe ser independiente del lenguaje de programacin. El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de izquierda a derecha (left-right). Si el diagrama de flujo requiere ms de una hoja para su construccin, se debe utilizar conectores adecuados y enumerar las pginas convenientemente. A un smbolo del diagrama (excepto lneas) no puede llegar ms de una lnea.

Organigrama Genrico

Variables y Operaciones Variables: Numricas: Enteros, punto Flotante Alfanumricas: Carcter y Cadena de caracteres

Operaciones: Pseudocdigo. Es una descripcin estructurada de un algoritmo basada en ciertas convenciones notacionales. Si bien es muy parecido al cdigo que finalmente se escribir en el computador, el pseudocdigo est pensado para ser ledo por humanos. Las lneas que comienzan con leer y escribir denotan, respectivamente, la entrada y la salida del programa. Los diferentes casos son representados usando sentencias si y o si no. Las asignaciones siguen la misma notacin que en el caso de los diagramas de flujo. La notacin de pseudocdigo es bien liberal. Uno puede mezclar notacin de matemticas con frases en espaol, siempre que quede absolutamente claro para el lector qu representa cada una de las lneas del algoritmo. El pseudocdigo es un lenguaje de especificacin, mezcla de lenguaje de programacin y espaol (o ingls o cualquier otro idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo de un programa. En esencial, el pseudo cdigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar
8

Asignacin: = Comparacin: =? Aritmticas: +, -, *, /, ** (potenciacin) Lgicas: >, <, =, , ,

solucin a un problema determinado. El pseudo cdigo utiliza palabras que indican el proceso a realizar. Clasificacin de Algoritmos Existen algoritmos cualitativos y cuantitativos directos e indirectos. Cualitativos: son todos aquellos pasos que son descritos en forma terica y que nos permiten llegar a la solucin de un problema determinado como lo es por ejemplo: elaborar una receta de cocina, desvarar un carro por llanta, realizar una llamada telefnica, etc. Cuantitativos: son todas aquellas instrucciones que poseen clculos matemticos para llegar a un resultado satisfactorio. Ej. La solucin de una ecuacin de segundo grado, hallar los mltiplos de un nmero determinado, identificar pares e impares de un conjunto de datos, si es positivo o negativo. Algoritmos directos: Es aquel donde se realiza la solucin en un nmero conocido de pasos. Algoritmos indirectos: Es aquel donde no conocemos el nmero de pasos para llegar a la solucin. Tipos de Algoritmos: Varios algoritmos que se utilizan prevalentemente en informtica se consideran "bsicos" mostraremos los ms comunes, es una descripcin muy general y la implementacin depende del lenguaje. Adicin (resumen): Un algoritmo de uso general en ciencia de la computacin es la adicin. Podemos sumar dos o tres nmeros enteros muy fcilmente, pero cmo podemos sumar muchos enteros? La solucin es simple: utilizar el operador de aadir (add) en un bucle. Un Algoritmo de adicin tiene 3 partes lgicas.

1. Inicializacin de la suma al principio. 2. El bucle, que en cada iteracin aade un nuevo entero a la suma. 3. Retorno del resultado despus de salir del bucle. Producto: Otro algoritmo comn es encontrar el producto de una lista de nmeros enteros. La solucin es simple: utilizar el operador de multiplicacin en un bucle. Un algoritmo de producto tiene tres partes lgicas: 1. Inicializacin del producto al principio. 2. El bucle, que en cada iteracin multiplica un nuevo entero con el producto. 3. Retorno del resultado despus de salir del bucle.

Estructura Secuencial: Es aquella en la que una accin (instruccin) sigue a la otra en el orden en el que estn escritas. Su representacin y el diagrama de flujo se muestran en la Figura.

Figura: Estructura secuencial de instrucciones.

10

Estructuras de control: Las estructuras secuenciales, selectivas y repetitivas se denominan estructuras de control porque son las que controlan el modo o flujo de ejecucin del algoritmo. Su importancia es tal, que una vez que se entienda su estructura y funcionamiento, puede decirse que en esencia es todo lo que hay que saber respecto al control y flujo de los algoritmos. Otro aspecto importante consiste en saber en dnde utilizarlas, pero esto es muy dependiente del problema a resolver, pero lo maravilloso de esto es que el mismo nombre de la estructura identifica su objetivo y utilidad. Entre estas estn: Condicionales y bucles Son parte fundamental de cualquier lenguaje. Sin ellas, las instrucciones de un programa solo podrn ejecutarse en el orden en que estn escritas (orden secuencial). Las estructuras de control permiten modificar este orden. Hay dos categoras de estructuras de control: I.-Condicionales o bifurcaciones: permiten que se ejecuten conjuntos distintos de instrucciones, en funcin de que se verifique o no determinada condicin. 1.-Estructura condicional simple: IF Este es el tipo ms sencillo de estructura condicional. Sirve para implementar acciones condicionales del tipo siguiente: Si se verifica una determinada condicin, ejecutar una serie de instrucciones y luego seguir adelante. Si la condicin NO se cumple, NO se ejecutan dichas instrucciones y se sigue adelante.

Figura: Estructura condicional simple: IF. Obsrvese que, en ambos casos (que se verifique o no la condicin), los \caminos" bifurcados se unen posteriormente en un punto, es decir, el flujo del

11

programa recupera su carcter secuencial, y se continua ejecutando por la instruccin siguiente a la estructura IF. 2.- Estructura condicional doble: IF ELSE Este tipo de estructura permite implementar condicionales en los que hay dos acciones alternativas: -Si se verifica una determinada condicin, ejecutar un serie de instrucciones (bloque 1). -Si no, esto es, si la condicin NO se verifica, ejecutar otra serie de instrucciones (bloque 2). En otras palabras, en este tipo de estructuras hay una alternativa: se hace una cosa o se hace la otra. En ambos casos, se sigue por la instruccin siguiente a la estructura IF - ELSE.

Figura: Estructura condicional doble: IF - ELSE. 3. - Estructura condicional mltiple: IF - ELSEIF ELSE En su forma ms general, esta estructura permite implementar condicionales ms complicados, en los que se encadenan condiciones en la forma siguiente: -Si se verifica la condicin 1, ejecutar las instrucciones del bloque 1. -Si no se verifica la condicin 1, pero SI se verifica la condicin 2 , ejecutar las instrucciones del bloque 2. -Si no, esto es, si no se ha verificado ninguna de las condiciones anteriores, ejecutar las instrucciones del bloque 3.

12

En cualquiera de los casos, el flujo del programa continua por la instruccin siguiente a la estructura IF - ELSEIF - ELSE.

Figura Estructura condicional mltiple: IF- ELSEIF - ELSE.

II.- Bucles o repeticiones: permiten que se ejecute repetidamente un conjunto de instrucciones, bien un nmero pre-determinado de veces, o bien hasta que se verifique una determinada condicin. En trminos de un lenguaje de programacin, que se verifique o no una condicin se traduce en que una (adecuada) expresin lgica tome el valor VERDADERO (TRUE) o tome el valor FALSO (FALSE). En los casos ms sencillos y habituales la condicin suele ser una comparacin entre dos datos, como por ejemplo: si a < b hacer una cosa y en caso contrario hacer otra distinta. 1.- Estructura de repeticin indexada: FOR Este tipo de estructura permite implementar la repeticin de un cierto conjunto de instrucciones un nmero predeterminado de veces. Para ello se utiliza una variable de control del bucle, llamada tambin ndice, que va recorriendo un conjunto pre-fijado de valores en un orden determinado. Para cada

13

valor del ndice en dicho conjunto, se ejecuta una vez el mismo conjunto de instrucciones.

Figura 5.8: Repeticin Indexada 2.- Estructura repetitiva condicional: WHILE Permite implementar la

repeticin de un mismo conjunto de instrucciones mientras que se verifique una determinada condicin: el nmero de veces que se repetir el ciclo no est definido a priori. Su funcionamiento es evidente, a la vista del diagrama: -Al comienzo de cada interaccin se evala la expresin lgica. -Si el resultado es VERDADERO, se ejecuta el conjunto de instrucciones y se vuelve a iterar, es decir, se repite el paso 1. -Si el resultado es FALSO, se detiene la ejecucin del ciclo WHILE y el programa se sigue ejecutando por la instruccin siguiente al END.

Figura 5.9: Estructura repetitiva WHILE


14

3.- Ruptura de ciclos de repeticin: BREAK y CONTINUE En ocasiones es necesario interrumpir la ejecucin de un ciclo de repeticin en algn punto interno del bloque de instrucciones que se repiten. Lgicamente, ello depender de que se verifique o no alguna condicin. La interrupcin puede hacerse de dos formas: 1. Abandonando el ciclo de repeticin definitivamente. 2. Abandonando la interaccin en curso, pero comenzando la siguiente.

Figura: Diagrama de flujo de la ruptura de ciclo BREAK.

Figura: Diagrama de flujo de la ruptura de ciclo CONTINUE.

4.- Estructura de eleccin entre varios casos: SWITCH

Este tipo de

estructura permite decidir entre varios caminos posibles, en funcin del valor que tome una determinada instruccin.

15

Figura 5.12: Estructura de eleccin de caso SWITCH En cada uno de los casos, el valor correspondiente puede ser o bien un solo valor, o bien un conjunto de valores, en cuyo caso se indican entre llaves. La clausula OTHERWISE y su correspondiente conjunto de instrucciones pueden no estar presentes. El funcionamiento es el siguiente: -Al comienzo se evala la expresin. -Si expresin toma el valor ( valores) especificados junto a la primera clausula CASE, se ejecuta el conjunto de instrucciones de este caso y despus se abandona la estructura SWITCH, continuando por la instruccin siguiente al END. -Se repite el procedimiento anterior, de forma ordenada, para cada una de las clausulas CASE que siguen. -Si la clausula OTHERWISE est presente y la expresin no ha tomado ninguno de los valores anteriormente especificados, se ejecuta el conjunto de instrucciones correspondiente. Obsrvese que se ejecuta, como mximo el conjunto de instrucciones de uno de los casos, es decir, una vez que se ha verificado un caso y se ha ejecutado su conjunto de instrucciones, no se testea el resto de casos, ya que se abandona la estructura. Obviamente, si la clausula OTHERWISE no est presente, puede ocurrir que no se d ninguno de los casos.

Estructuras de repeticin: En las estructuras de repeticin, los enunciados del cuerpo del ciclo se repiten mientras se cumpla una determinada condicin, misma que deber seguir los mismos lineamientos descritos para la estructura de seleccin descrita con anterioridad. En este tipo de estructuras, es frecuente el uso de contadores1 o centinelas2 para controlar el nmero de repeticiones de un ciclo.

16

Vectores: Definicin de Vector: Conjunto ordenado que contiene un n fijo de elementos (su dimensin) de cualquier tipo vlido definido con la condicin de que todos deben ser del mismo tipo. Forma de declarar un vector: Vector tipo nombre [ndice mnimo .. ndice mximo] Ejemplo: Para el ejemplo anterior la declaracin del vector quedara de esta forma: Vector entero venta [1..40] Operaciones con vectores Asignacin: En general, los lenguajes de programacin incluyen como muchas instrucciones de lectura/escritura de vectores completos, siendo muy pocos la que tienen definidas otras operaciones primitivas con el vector tomado como dato nico. La estructura de control asociada de manera natural con los vectores es la estructura de tipo "PARA" Ejemplo: Algoritmo Inicializar_Vector Vector de reales V [1 .. 100] Para i de 1 hasta 100 hacer V(i) 0.0 Fin para Final En algunos lenguajes se permite la asignacin directa entre vectores de igual dimensin y tipo. La condicin principal para poder realizar este tipo de asignaciones es que debe cumplirse que los dos vectores sean del mismo tipo y de la misma longitud.

17

u v

el vector 'u' pasa a contener los datos de 'v'

Otra forma de hacer esta asignacin es a travs de la asignacin de elemento en elemento. Este tipo de asignacin es la que se realiza de forma comn en programacin, y la que utilizaremos en nuestros algoritmos. Para i de 1 hasta n hacer u(i) v(j) Fin para Matrices. Podemos extender el concepto de vector a estructuras con dos ndices, es decir, matrices. De forma anloga a la utilizacin de un bucle, normalmente de tipo "para", en el tratamiento de los elementos de un vector para el caso de una matriz, lgicamente, se requerirn dos bucles compuestos. Al igual que en el caso de vectores, todos los elementos de una matriz deben ser del mismo tipo. Declaracin: Matriz tipo nombre (ndice fila mn..ndice fila mx, ndice col mn..ndice col mx) Los conceptos de vector y matriz no son sino casos particulares de

una estructura general de "p" dimensiones que denominaremos tabla. Operaciones con matrices. Asignacin: Por ejemplo: Inicializacin a cero : para i de 1 a m hacer para j de 1 a n hacer a(i,j) 0.0 fin para

18

fin para Definicin de matriz identidad: Por ejemplo para i de 1 a n hacer para j de 1 a n hacer si i=j entonces I(i,j) 1 sino I(i,j) 0 finsi fin para fin para

Asignacin de valores introducidos por el usuario: para i de 1 a m hacer para j de 1 a n hacer leer a(i,j) fin para fin para

Algoritmos de Ordenacin: Una de las aplicaciones ms comunes en ciencia de la computacin es la ordenacin, que es el proceso mediante el cual los datos se organizan de acuerdo a sus valores. La gente est rodeada de datos. Si los datos no estuvieran ordenados, se tardara horas y horas para encontrar una sola pieza de informacin. Imagine la dificultad de encontrar el nmero de telfono de alguien en un directorio telefnico que no est ordenado. Presentamos tres algoritmos de ordenacin: Ordenamiento de seleccin, ordenamiento de burbuja y la ordenacin por insercin. Estos tres algoritmos de

19

ordenacin son la base de los algoritmos de ordenacin ms rpidos utilizados en la informtica de hoy. 1.- Ordenamiento de seleccin En un ordenamiento de seleccin, la lista a ser ordenada se divide en dos sub-listas, clasificados y no clasificados, que estn separadas por una pared imaginaria. Encontramos el elemento ms pequeo en la lista secundaria sin clasificar y lo intercambiamos con el elemento al principio de la lista secundaria sin clasificar. Despus de cada seleccin e intercambio, la pared imaginaria entre los dos sub-listas se mueve un elemento para delante. Ejemplo de Ordenacin por Seleccin con Vectores Supongamos un vector, donde parte de sus elementos estn ordenados y otros no. Los pasos a seguir para realizar la ordenacin son los siguientes: r a1 n a2 t ... d ak-1 a ak h ... m ... z ... o ai k ... s ... c an

Elementos desordenados

a) Para realizar la ordenacin por seleccin se hacen varios barridos del vector. Primeramente cogemos el primer elemento del vector y lo

comparamos con todos los elementos restantes buscando aquel elemento que posea el valor ms pequeo. r a1 n a2 t ... d ak-1 a ak h ... m ... z ... o ai k ... s ... c an

b) Una vez encontrado el elemento menor, se coloca en la posicin correspondiente, realizando un intercambio de posiciones entre el elemento que hemos comparado y el que hemos encontrado.

20

a a1

n a2

t ...

h ...

m ...

z ...

o ai

k ...

s ...

c an

ak-1 ak

c) Una vez ordenado el primer elemento, realizamos la misma operacin con los restantes. Finalmente el vector quedar ordenado. a a1 c a2 d ... h ak-1 k ak m ... n ... o ... r ai s ... t ... z an

El algoritmo de ordenacin por seleccin es el siguiente. Algoritmo Seleccin constante n=... variable entera i,j,k real x variable de apoyo vector de reales a(1..n) Leer a Para i de 1 a n-1 hacer k i el ultimo 'n' ya estar ordenado. k es el ndice del elemento menor a permutar con a[i], inicialmente lo ponemos igual que i Para j de i+1 a n hacer si a(j) < a(k) entones k j Finsi Fin para x a(i) Permutamos a[i] con a[k] Si aparece un elemento de menor valor, fijamos k a su ndice

21

a(i) a(k) a(k) x Fin para

Escribir a Final

2.-Ordenamiento de Burbuja En el mtodo de ordenamiento de burbuja, la lista a ser ordenada tambin se divide en dos sub-listas, clasificados y sin clasificar. El elemento ms pequeo se burbujea desde la lista secundaria sin clasificar y se traslada a la sub-lista ordenada. Despus de que el elemento ms pequeo ha sido trasladado a la lista ordenada, la pared se mueve un elemento por delante. 3.-Ordenamiento por insercin: El algoritmo de ordenamiento por insercin es una de las tcnicas de ordenamiento ms comunes, y es a menudo utilizado por los jugadores de cartas. Cada tarjeta que un jugador coge la inserta en el lugar que le corresponde en su mano de cartas para mantener una secuencia particular. Algoritmos de Bsqueda: Otro algoritmo comn en ciencias de la computacin est buscando, que es el proceso de encontrar la ubicacin de un objetivo de entre una lista de objetos. En el caso de una lista, buscando los medios que le da un valor, queremos encontrar la ubicacin del primer elemento de la lista que contiene ese valor. Hay dos registros de base para las listas: la bsqueda secuencial y bsqueda binaria. Bsqueda secuencial puede ser utilizado para localizar un elemento en cualquier lista, mientras que la bsqueda binaria requiere que la este primero ordenada.

22

1.- Bsqueda Secuencial: se utiliza si la lista en la que se debe buscar no est ordenada. En general, utilizamos esta tcnica slo para pequeas listas o listas en las que no se busca a menudo. En otros casos, lo mejor es primero ordenar la lista y, a continuacin buscar usando la bsqueda binaria discutida antes. En una bsqueda secuencial, se empieza buscando el objetivo desde el principio de la lista. Continuamos hasta que encontremos el objetivo o alcancemos el fin de la lista. 2.-Bsqueda Binaria: El algoritmo de bsqueda secuencial es muy lento. Si tenemos una lista de un milln de elementos, tenemos que hacer un milln de comparaciones en el peor de los casos. Si la lista no est ordenada, esta es la nica solucin. Si la lista est ordenada, sin embargo, podemos usar un algoritmo ms eficiente llamada bsqueda binaria. En general, los programadores utilizan una bsqueda binaria cuando la lista es grande. Una bsqueda binaria comienza probando los datos en el elemento en la mitad de la lista. Esto determina si el objetivo est en la primera mitad o la segunda mitad de la lista. Si est en la primera mitad, no hay necesidad de controlar ms el segundo segmento. Si est en la segunda mitad, no hay necesidad de controlar ms el primer segmento. En otras palabras, eliminamos la mitad de la lista de cualquier consideracin posterior.

23

Ejercicios de Algoritmos: Hacer un Diagrama de Flujo de matriz espiral ascendente 5 x 5 y que se muestre por pantalla.

24

2.- Elabore un diagrama de flujo, que muestre los estudiantes de un curso, de una lista de 10 estudiantes que aprobaron cuando sea igual a mayor a 60 puntos y poder aumentar la colegiatura y reprobados cuando su puntuacin sea menor a 60.

25

3.- Realizar un Diagrama de flujo, que dado el numero entero positivo, determine si es par o impar.

26

CONCLUSION

27

Un algoritmo es el conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. Tambin, se puede definir como una serie de pasos con cierta orden, para poder llegar a la solucin de un problema. Las tcnicas de desarrollo de algoritmos permiten encontrar la mejor solucin a los problemas que se nos presentan y deben ser solucionados por el computador, estas tcnicas estn orientadas para utilizarse en cada uno de los niveles de complejidad y variedad o alternativas para las cuales se aplican los algoritmos. Para luego aplicarse todos estos conocimientos a la programacin. Los lenguajes de programacin influencian notablemente la manera en que pensamos acerca del diseo y construccin del software y los algoritmos y estructuras de datos que utilicemos para desarrollar software.

BIBLIOGRAFIA

28

-Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford (2009). Introduction to Algorithms. Cambridge, Massachusetts: The MIT Press. ISBN 978-0262-53305-8. -Cairo. O. Metodologa de la Programacin. Segunda edicin. Alfa-Omega Grupo Editor, S.A., 2005 -G. Brassard y P. Bratley. Fundamentos de Algoritmia. (ISBN 848966000) -Piedrahita A. Introduccin a los Computadores (CNM-130) Algoritmos computacionales. 2013

29

Вам также может понравиться