Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4 Algoritmos
4 Algoritmos
Algoritmos
Conceptos bsicos.
Programacin:
1. Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una determinada tarea 2. Fases: Resolucin del problema propuesto => determinacin de un algoritmo. Adaptacin del algoritmo al computador => codificar el algoritmo en un lenguaje que el computador pueda comprender.
Conceptos bsicos.
1. Accin: Etapa en la realizacin de un trabajo 2. Accin primitiva: Accin que el procesador puede ejecutar sin necesidad de informacin adicional. 3. Algoritmo: Secuencia ordenada de acciones primitivas que realizan un trabajo. Ejemplos:
Ir al trabajo 1.Levantarse 2.Darse una ducha 3.Vestirse 4.Desayunar 5.Tomar locomocin Clculo de la media aritmtica de dos nmeros con una calculadora 1.Pulsar la tecla AC 2.Teclear el primer nmero 3.Pulsar la tecla + 4.Teclear el segundo nmero 5.Pulsar la tecla + 6.Pulsar la tecla / 7.Teclear el nmero 2 8.Pulsar la tecla =
Primitivas Origami
Primitivas Origami
Conceptos bsicos.
Aspectos que se deben considerar a la hora de escribir un algoritmo:
Determinacin de las primitivas de las que partimos Lenguaje simblico a utilizar para desarrollar el algoritmo Representacin de los datos Establecer datos de entrada Establecer datos de salida Establecer las relaciones entre los datos de entrada y los de salida
Definition de algoritmo
Es un procedimiento computacional bien definido que toma un conjunto de valores como entrada y produce otro conjunto de valores como salida.
Representacin de algoritmos
Mtodos para representar un algoritmo: Pseudolenguaje Diagramas de flujo Pseudolenguaje Es un lenguaje especfico de descripcin de algoritmos La traduccin de un algoritmo escrito en pseudolenguaje a un programa en un lenguaje de programacin determinado es relativamente simple Herramientas de un pseudolenguaje para representar un algoritmo Conjunto de palabras clave que proporcionan: las estructuras de control declaraciones de variables caractersticas de modularidad Sintaxis libre de un lenguaje natural que describe las caractersticas del proceso Elementos para la definicin y llamada a subprogramas
Metodologa de diseo
Un problema => muchos algoritmos para resolverlo Cmo elegir el ms adecuado? Basndonos en las siguientes caractersticas: Legibilidad Eficiencia Portabilidad Modularidad Modificabilidad Estructuracin
Metodologa de diseo
Programacin estructurada
Conjunto de tcnicas que aumentan la productividad de un programa, reduciendo el tiempo para: Escribir Depurar Verificar Mantener Utiliza un nmero limitado de estructuras de control que minimizan la complejidad de los problemas Teorema de BOHM-JACOPINI: cualquier programa, por complejo que sea, puede escribirse utilizando slo tres estructuras de control: Secuencial Selectiva Repetitiva
Secuencial
Actividad 1
Actividad 2
Actividad n
Simple:
Condicin
Seleccin
s
Doble:
s
condicin Actividad 1
no
no
actividad
Actividad 2
Mltiple:
Condicin
sino
Condicin
Condicin
sino
s
Actividad 1
s
Actividad 2
s
Actividad n-1 Avtividad n
Repeticin
Test condition
false
true
activity
Ordenamiento Entrada: secuencia de n nmeros <a1, a2,..,an> Salida: Una permutacin <a'1, a'2,..,a'n> reordenamiento de la secuencia, tal que: a'1 < a'2 < ... < a'n Ejemplo instancia: Entrada: <5,3,1,6,0> Salida: <0,1,3,5,6>
Bsqueda
Entrada: secuencia de n nmeros <a1, a2,..,an> Un nmero b Salida: un entero i, tal que b == ai (igual) 0 si b != ai, para i = 1,...,n Ejemplo instancia: Entrada: <5, 6, 9, 12> y 9 Salida: 3
Slide 4-24
=> O(n2)
Grfico del anlisis del peor caso ordenamiento por insercin O(n2)
Algoritmos recursivos
Recursividad
Son funciones que se llaman a s mismas. Requisitos: Deben retornar un valor. Deben tener expresiones en las que se llaman a s mismas: ciclo activo. Deben incluir, en una sentencia de seleccin, una opcin en la cual terminen la ejecucin y no se llamen a s mismas: caso base. Si no poseen un opcin que les permita terminar su ejecucin, se producirn llamadas hasta agotar los recursos de memoria del sistema. Si se alcanza el caso base en una llamada del ciclo activo, entonces se inicia el ciclo pasivo o de retorno.
29
Recursividad cdigo C
tipo_de_retorno nombre_funcion(tipo argumentos){ if ( caso_base ) return valor_base; else { ................ return nombre_funcion(argumentos'); } }
30
Recursividad (ejemplo)
Obtener el factorial de un nmero Casos base: - el factorial de cero es uno
32
if (3==0) return 1; else if (3==1) return 1; else return 3*factorial(3-1); factorial(2){ 3*factorial(2);
if (2==0) return 1; else if (2==1) return 1; factorial(1){ else return 2*factorial(1); 2*factorial(2-1); if (1==0) return 1; else if (1==1) return 1 1;
33
else if (3==1) return 1; 3*factorial(2 factorial(2){ else return 3*factorial(3-1); ); if (2==0) return 1; else if (2==1) return 1; 2*1 else return 2*factorial(2-1);
34
else if (3==1) return 1; 3*factorial(2 factorial(2){ else return 3*factorial(3-1); ); if (2==0) return 1; else if (2==1) return 1; else return 2;
35
36
37
38