Algoritmos de Strings. Héctor Navarro

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Algoritmos de Strings. Héctor Navarro"

Transcripción

1 lgoritmos de Strings Héctor Navarro

2 Substrings Dado un string T (posiblemente muy grande) y un patrón P (de tamaño menor), encontrar la primera (o todas) las apariciones de P en T Solución trivial de (NM) N es el tamaño de T M es el tamaño de P

3 Substrings for (i=0; T[i]!= '\0'; i++) { } for (j=0; T[i+j]!= '\0' && P[j]!= '\0' && T[i+j]==P[j]; j++) ; if (P[j] == '\0') // found a match

4 Substrings Peor caso: T= aaaa a P= aaa ab Normalmente no se comporta tan mal ya que se descartan rápidamente en las primeras iteraciones

5 Substrings P = nano i T b a n a n a n o b a n o i=0 X i=1 X i=2 n a n X i=3 X i=4 n a n o i=5 X i=6 n X i=7 X i=8 X i=9 n X i=10 X

6 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 En cada estado existen dos posibilidades: La letra actual coincide con la letra reconocida en ese estado: avanzar al siguiente estado y letra

7 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 En cada estado existen dos posibilidades: La letra actual no coincide con la letra reconocida en ese estado: avanzar al siguiente estado, no avanzar la letra

8 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 En el estado 0 siempre se avanza de letra

9 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n o j=0 j=1 j=2 j=3 j=4 B N N N B N

10 utómata Es posible construir un autómata en base al patrón para hacer búsquedas n a n a j=0 j=1 j=2 j=3 j=4 N N N

11 KMP Knuth Morris Pratt Convertir el autómata en código j = 0; for (i = 0; i < n; i++) while(1) { if (T[i] == P[j]) { // matches? j++; // yes, move on to next state if (j == m) { // match! j = reset[j];// ya reconocimos algunos caracteres de P } break; } else if (j == 0) break; // no match (j==0), next T else j = reset[j]; // no match (j!=0), // shorter partial match }

12 KMP Knuth Morris Pratt ecorrer este autómata es de (N), ya que en cada iteración se inspecciona un solo carácter de T El while más interno sólo se puede ejecutar en el peor caso una cantidad de veces igual al estado en el que estemos actualmente (M estados), pero una vez que se hace esto, regresamos al estado 0 (costo amortizado)

13 KMP Knuth Morris Pratt Falta ver cómo se realiza la construcción del arreglo de transiciones de estados (reset)

14 eset reset[i] indica el estado al que hay que saltar una vez que ya se han reconocido i caracteres y hay una falla Por ejemplo, si P= aabaab y ya hemos reconocido 5 caracteres (aabaa), dónde debemos saltar?

15 eset Por ejemplo, si P= aabaab y ya hemos reconocido 5 caracteres (aabaa), dónde debemos saltar? El sufijo más largo de esos 5 caracteres que también es prefijo de P, sería aa aabaa aabaab

16 eset Supongamos P=B reset[0]=0 (aunque nunca se usa) reset[1]=0 Para reset[2] basta ver que P[2-1]=P[0], por lo tanto, si hay una falla en este punto debemos regresar al estado 1 (reset[2]=1)

17 eset Supongamos P=B Para reset[3] basta ver que P[3-1]=P[1], por lo tanto, si hay una falla en este punto debemos regresar al estado 2 (reset[3]=2) Para reset[4], P[4-1]!=P[2], esto significa que cuando estamos en el estado 4 y no viene una B, debemos regresar al estado indicado por reset[3] (estado 2) Pero como P[3]!=P[1], este estado tampoco sirve. El único estado que sirve es el estado 0

18 eset int i = 0, j = -1; reset[0] = -1; while(i<m){ while(j>=0 && P[i]!=P[j]) j = reset[j]; i++; j++; reset[i] = j; }

19 eset En cada iteración se avanza un caracter de P El while más interno se hace a lo sumo tantas veces como caracteres hayamos procesado hasta ahora. Pero una vez que esto se hace, regresamos a j=0, por lo que el while interno se hará más corto en las siguientes iteraciones Esta parte del algoritmo es entonces de (M)

20 eset tros ejemplos P=B

21 eset tros ejemplos P=BCBC

22 eset tros ejemplos P=BXYZXYZ

23 KMP Finalmente KMP requiere de (M)+(N)=(N+M) N tamaño del string en donde queremos hacer la búsqueda M tamaño del substring que estamos buscando

24 Boyer-Moore También está basado en un autómata para hacer eficiente la búsqueda En lugar de hacer matching en los primeros caracteres del patrón de búsqueda, se hace en los últimos, acelerando el procesamiento Mientras el patrón sea más grande, el algoritmo se ejecutará más rápidamente

25 Tries Un Trie es un árbol en donde se almacenan palabras para encontrarlas rápidamente Supongamos que las palabras están formadas por caracteres de un alfabeto con cardinalidad n Cada nodo del Trie puede tener n hijos

26 Tries Por ejemplo, si las palabras pueden estar formadas por letras mayúsculas en inglés (26 caracteres), un nodo se ve como esto: B C D Y Z struct NodoTrie{ NodoTrie * hijo[26]; bool espalabra; };

27 Tries Insertar CS C S El atributo espalabra indica si en ese nodo termina una palabra

28 Tries Insertar C C S El atributo espalabra indica si en ese nodo termina una palabra

29 Tries Insertar DE C D E S El atributo espalabra indica si en ese nodo termina una palabra

30 Tries Insertar DED C D E S D El atributo espalabra indica si en ese nodo termina una palabra

31 Tries Búsqueda Seguir los enlaces dependiendo del valor de la letra actual Si un enlace es nil, la palabra no está en el Trie Si al terminar la palabra llegamos a un nodo con espalabra en falso, la palabra no está en el Trie Si al terminar la palabra llegamos a un nodo con espalabra en true, la palabra está en el Trie

32 Tries Buscar C C D E S D

33 Tries Buscar C C D E S D

34 Tries Buscar C C D E S D

35 Tries Buscar C C D E S D El apuntador es nil

36 Tries Buscar C C D E S D

37 Tries Buscar C C D E S D

38 Tries Buscar C C D E S D El apuntador no nil pero espalabra es falso

39 Tries bool buscar(char *w, Trie * T){ if(*w==null) return T->esPalabra; if(t->hijo[*w- ]==NULL) return false; return buscar(w+1, T->hijo[*w- ]); }

40 Trie de Sufijos Sirve para almacenar todos los sufijos de varios strings con el fin de poder recuperarlos rápidamente Con un Trie podemos rápidamente saber si una palabra está almacenada Con un Suffix Trie podemos rápidamente saber si algún substring está almacenado

41 Trie de Sufijos Supongamos la palabra CS Los posibles sufijos son: CS S S

42 Trie de Sufijos Si queremos agregar una palabra a un Suffix Trie, agregamos cada uno de sus sufijos (es posible que ya exista) Por ejemplo, supongamos las palabras CS, C, S, SP

43 Trie de Sufijos CS: CS,S,S, C S S S

44 Trie de Sufijos C: C,,,, C S S S

45 Trie de Sufijos S: S, S,, C S S S

46 Trie de Sufijos SP: SP, P, P, C P S P S S P

47 Trie de Sufijos hora podemos buscar cualquier substring de cualquier palabra del diccionario muy fácilmente ecordemos que el Trie permite reconocer prefijos del string Como almacenamos los sufijos de los strings, podemos reconocer cualquier prefijo de cualquier sufijo Un substring es justamente eso, un prefijo de un sufijo

48 Trie de Sufijos C, CS, SP, S. Buscar el substr S C P S P S S P

49 Trie de Sufijos C, CS, SP, S. Buscar el substr C P S P S S P

50 Trie de Sufijos C, CS, SP, S. Buscar el substr C P S P S S P

51 Árbol de Sufijos Sirve para almacenar eficientemente todos los sufijos de un solo string Usaremos un carácter especial para marcar el final del string ($), cuyo código SCII sea menor que el del resto de los caracteres del string El sufijo vacío debe estar en el suffix tree

52 Árbol de Sufijos Palabra: GTGC$ Sufijos: i Sufijo 0 GTGC$ 1 TGC$ 2 TGC$ 3 GC$ 4 GC$ 5 C$ 6 C$ 7 $ 8 $

53 Árbol de Sufijos i En cada nodo hoja del suffix tree se almacena el índice del sufijo que se encuentra ahí Sufijo 0 GTGC$ 1 TGC$ 2 TGC$ 3 GC$ 4 GC$ 5 C$ 6 C$ 7 $ 8 $ 7 5 $ 3 1 $

54 Árbol de Sufijos Hay muchos substrings que se repiten (vértices repetidos) Un suffix tree se puede crear a partir de un suffix trie uniendo los nodos consecutivos que tienen un solo hijo

55 Árbol de Sufijos CS S C S 3 $ 4 $ 0 2 S 1

56 plicaciones del Suffix Tree Substring en (m+occ): m es el tamaño del patrón de búsqueda y occ es el número de ocurrencias del patrón en T 8 7 $ Buscar el patrón

57 plicaciones del Suffix Tree Encontrar el substring más largo repetido en (n) 8 7 $

58 plicaciones del Suffix Tree String común más largo en (N): construir el suffix tree de ambos strings en interceptarlos Ejemplo: SP vs TP

59 rreglo de Sufijos La construcción del suffix tree es muy compleja El suffix array tiene funcionalidades parecidas al suffix tree pero es más fácil de construir y de usar

60 rreglo de Sufijos Un arreglo de sufijos es un arreglo de enteros que almacena una permutación de los índices de los sufijos ordenados Por ejemplo, con T= GTGC$, n=9 El arreglo de sufijos asociado sería {8,7,5,3,1,6,4,0,2}

61 rreglo de Sufijos i Sufijo 0 GTGC$ 1 TGC$ 2 TGC$ 3 GC$ 4 GC$ 5 C$ 6 C$ 7 $ 8 $ rdenar i sa[i] Sufijo 0 8 $ 1 7 $ 2 5 C$ 3 3 GC$ 4 1 TGC$ 5 6 C$ 6 4 GC$ 7 0 GTGC$ 8 2 TGC$ El arreglo de sufijos asociado sería {8,7,5,3,1,6,4,0,2}

62 rreglo de Sufijos Si hacemos un recorrido en preorden del suffix tree obtenemos el suffix array 8 7 $ {8,7,5,3,1,6,4,0,2}

63 rreglo de Sufijos Un nodo interno del suffix tree corresponde a un rango en el suffix array 8 7 $ {8,7,5,3,1,6,4,0,2} {8,7,5,3,1,6,4,0,2}

64 rreglo de Sufijos Un nodo hoja del suffix tree corresponde a una entrada simple del suffix array 8 7 $

65 rreglo de Sufijos Primera implementación char T[MX_N]; int S[MX_N], i, n; bool cmp(int a, int b){ return strcmp(t+a,t+b)<0; } n = strlen(t); for(int i=0; i<n; i++) S[i] = i; sort(s, S+n, cmp);

66 rreglo de Sufijos En tiempo requiere (N 2 log N) Esto puede mejorarse ordenando los sufijos caracter por caracter (usando un ordenamiento lineal basado en radix-sort) (N log N) Duplicar en cada paso el tamaño del sub string a comparar

67 rreglo de Sufijos GTGC$ (0) TGC$ (1) TGC$ (2) GC$ (3) GC$ (4) C$ (5) C$ (6) $ (7) $ (8) rdenar según el primer caracter $ (8) TGC$ (1) GC$ (3) C$ (5) $ (7) C$ (6) GTGC$ (0) TGC$ (2) GC$ (4)

68 rreglo de Sufijos $ (8) TGC$ (1) GC$ (3) C$ (5) $ (7) C$ (6) GTGC$ (0) TGC$ (2) GC$ (4) rdenar según dos primeros caracteres $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2)

69 rreglo de Sufijos $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) rdenar según 4 primeros caracteres $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2)

70 rreglo de Sufijos $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) rdenar según 8 primeros caracteres $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2)

71 rreglo de Sufijos Búsqueda de substring: hacer búsqueda binaria $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) Buscar: GC li = 0 ls = 8 m = 4 T[S[m]] = TGC$

72 rreglo de Sufijos Búsqueda de substring: hacer búsqueda binaria $ (8) $ (7) C$ (5) GC$ (3) TGC$ (1) C$ (6) GC$ (4) GTGC$ (0) TGC$ (2) Buscar: GC li = 4 ls = 8 m = 6 T[S[m]] = GC$

73 rreglo de Sufijos Contar apariciones de un substring: hacer búsqueda binaria lower bound y upper bound para buscar en donde está Palabra: CLBL Contar apariciones de: L $ $ BL$ L$ LBL$ BL$ CLBL$ L$ LBL$

74 rreglo de Sufijos Contar apariciones de un substring: hacer búsqueda binaria lower bound y upper bound para buscar en donde está Palabra: CLBL Contar apariciones de: L $ $ BL$ L$ LBL$ BL$ CLBL$ L$ LBL$

75 rreglo de Sufijos Longest Common Prefix (LCP): el prefijo común más largo entre pares consecutivos de sufijos lcp[0] = 0 De ahí en adelante lcp[i] almacena el prefijo común más largo entre el s[i] y s[i-1] lgoritmo trivial de (N 2 ) Puede hacerse en (N)

76 rreglo de Sufijos i sa[i] Sufijo lcp[i] 0 8 $ $ C$ GC$ TGC$ C$ GC$ GTGC$ TGC$ 0

77 rreglo de Sufijos Un grupo de elementos consecutivos con el mismo lcp (mayor a cero) equivalen a un nodo interno del suffix tree 8 7 $

78 Substring repetido más largo Supongamos el lcp siguiente: rreglo de Sufijos i lcp[i]

79 Substring que más se repite i lcp[i] rreglo de Sufijos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

Algorítmica y Complejidad. Tema 3 Ordenación.

Algorítmica y Complejidad. Tema 3 Ordenación. Algorítmica y Complejidad Tema . Introducción.. Algoritmo de inserción.. Algoritmo de selección.. Algoritmo de la burbuja.. Algoritmo heapsort.. Algoritmo quicksort. 7. Algoritmo countingsort.. Algoritmo

Más detalles

Análisis y Diseño de Algoritmos Tablas de Hash

Análisis y Diseño de Algoritmos Tablas de Hash Análisis y Diseño de Algoritmos Tablas de Hash Guillermo Morales-Luna Arturo Díaz Pérez CONTENIDO 1. Dispersión 2. Funciones de dispersión (a) Método de división (b) Método de multiplicación 3. Direccionamiento

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. 86 Capítulo 7. ORDENAMIENTO. 7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. Si los elementos a ordenar son compuestos

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

Más detalles

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir

Más detalles

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

Más detalles

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica. Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006 ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los

Más detalles

Problema - Sumando Digitos

Problema - Sumando Digitos Primera Olimpiada de Informática Problema - Sumando Digitos Comenzando con un entero entre 00 y 99 inclusive, escritos como dos dígitos (use un cero a la izquierda en caso de que el numero sea menor que

Más detalles

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo:

No todos los LRs finitos se representan mejor con ERs. Observe el siguiente ejemplo: 1 Clase 3 SSL EXPRESIONES REGULARES Para REPRESENTAR a los Lenguajes Regulares. Se construyen utilizando los caracteres del alfabeto sobre el cual se define el lenguaje, el símbolo y operadores especiales.

Más detalles

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas. LEX Estructura de un programa en LEX { definiciones { reglas { subrutinas del usuario Las definiciones y subrutinas son opcionales. El segundo es opcional pero el primer indica el comienzo de las reglas.

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Curso de Programación 1

Curso de Programación 1 Curso de Programación 1 Plan 97 Búsqueda y Ordenación Métodos de búsqueda Existen aplicaciones en las cuales es necesario consultar si un elemento se encuentra dentro de un array. A continuación veremos

Más detalles

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R. Conjuntos Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por se entiende que a pertenece a R. a R Normalmente, podremos definir a un conjunto de dos maneras: Por

Más detalles

Árboles de sufijos. Algoritmia para problemas difíciles Elvira Mayordomo

Árboles de sufijos. Algoritmia para problemas difíciles Elvira Mayordomo Árboles de sufijos Algoritmia para problemas difíciles 25-11-14 Elvira Mayordomo Contenido El problema de string matching Algoritmos de propósito general Árboles de sufijos Otras aplicaciones de árboles

Más detalles

Estructuras de Datos Declaraciones Tipos de Datos

Estructuras de Datos Declaraciones Tipos de Datos Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Notación Asintótica 2

Notación Asintótica 2 Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos

Más detalles

XQuery. Un lenguaje de consulta para XML.

XQuery. Un lenguaje de consulta para XML. XQuery. Un lenguaje de consulta para XML. Nieves Carralero Colmenar. IES Pedro Mercedes. Junta de Comunidades de Castilla-La Mancha. España. Resumen En este artículo se muestra una introducción práctica

Más detalles

FUNCIONES EN EXCEL III

FUNCIONES EN EXCEL III FUNCIONES EN EXCEL III UTILIZANDO REFERENCIAS ABSOLUTAS Y RELATIVAS En Excel puedes especificar tres tipos de referencias: relativas, absolutas y mixtas. Al utilizar el tipo de referencia adecuado nos

Más detalles

Expresiones regulares y distancia de edición.

Expresiones regulares y distancia de edición. Expresiones regulares y distancia de edición. Francisco Barreras QUANTIL S.A.S. 19 de agosto de 2015 Francisco Barreras (QUANTIL S.A.S.) Expresiones regulares y distancia de edición. 19 de agosto de 2015

Más detalles

Tabla de Símbolos. Programación II Margarita Álvarez

Tabla de Símbolos. Programación II Margarita Álvarez Programación II Margarita Álvarez La tabla de símbolos es una estructura global utilizada por distintos módulos del compilador. Es el principal atributo heredado. Almacena todos los nombres declarados

Más detalles

1.1. Los números reales

1.1. Los números reales 1.1. Los números reales El conjunto de los números reales está compuesto por todos los números racionales (Q) y todos los irracionales (I). Sin olvidar que los números racionales incluyen a los naturales

Más detalles

REFERENCIA DEL LENGUAJE

REFERENCIA DEL LENGUAJE REFERENCIA DEL LENGUAJE Sesión 07 Mg. Cadenas de caracteres Una cadena de caracteres es un arreglo de caracteres. Los caracteres son letras, números y signos de puntuación. Cuando un número se usa como

Más detalles

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos)

Examen escrito de Programación 1. Jueves 5 de febrero de Problema 1 o (3.5 puntos) Examen escrito de Programación 1. Jueves 5 de febrero de 2015 Se debe disponer de un documento de identificación con fotografía sobre la mesa. Se debe comenzar a resolver cada uno de los dos problemas

Más detalles

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS 1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

Estructuras de Datos. La pila es un objeto dinámico en constante cambio.

Estructuras de Datos. La pila es un objeto dinámico en constante cambio. 21 Capítulo 2. LA PILA (STACK). 2.1 Definición y ejemplos. Una pila es un conjunto ordenado de elementos en el cual se pueden agregar y eliminar elementos de un extremo, el cual es llamado el tope de la

Más detalles

Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Estructuras de Datos Proyecto del curso,

Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Estructuras de Datos Proyecto del curso, Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas Estructuras de Datos Proyecto del curso, 2016-30 1. Descripción del problema Scrabble es un juego de mesa, patentado en 1948 y actualmente

Más detalles

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es

Más detalles

Métodos de Ordenamiento. Unidad VI: Estructura de datos

Métodos de Ordenamiento. Unidad VI: Estructura de datos Métodos de Ordenamiento Unidad VI: Estructura de datos Concepto de ordenación La ordenación de los datos consiste en disponer o clasificar un conjunto de datos (o una estructura) en algún determinado orden

Más detalles

FORMATO CONDICIONAL EN EXCEL

FORMATO CONDICIONAL EN EXCEL FORMATO CONDICIONAL EN EXCEL El Formato Condicional es una herramienta muy útil como información gráfica adicional para los datos numéricos que están en celdas o en rangos. Este tipo de formato tiene un

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

Diagramas de secuencia

Diagramas de secuencia Facultad de Ingeniería Departamento de Ingeniería de Sistemas y Computación Diagramas de secuencia Fragmentos Combinados: caminos alternativos Departamento de Ingeniería de Sistemas y Computación - Universidad

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad Estructuras Discretas Relaciones Definición: relación Relaciones Claudio Lobos, Jocelyn Simmonds clobos,[email protected] Universidad Técnica Federico Santa María Estructuras Discretas INF 152 Sean

Más detalles

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas Tema 3.1: Autómatas Finitos Deterministas Luis Peña [email protected] http://www.ia.urjc.es/cms/es/docencia/ic-msal Sumario Tema 3.1: Autómatas Finitos Deterministas. 1. Concepto de AFD 2. Equivalencia

Más detalles

Algoritmos de Ordenación

Algoritmos de Ordenación Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] Algoritmos comunes - Ordenación Ordenación o clasificación es

Más detalles

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos

Más detalles

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.

Más detalles

Unidad Nº V Listas Enlazadas

Unidad Nº V Listas Enlazadas Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

PROGRAMACIÓN EN C#.NET Módulo 4.- Arreglos y cadenas. Ing. Bruno López Takeyas

PROGRAMACIÓN EN C#.NET Módulo 4.- Arreglos y cadenas. Ing. Bruno López Takeyas PROGRAMACIÓN EN C#.NET Módulo 4.- Arreglos y cadenas Ing. Bruno López Takeyas Instituto Tecnológico de Nuevo Laredo 1 ARREGLOS Conjunto homogéneo y estático de datos relacionados e indexados Homogéneo

Más detalles

Complejidad computacional (Análisis de Algoritmos)

Complejidad computacional (Análisis de Algoritmos) Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución

Más detalles

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos

Más detalles

INSTRUMENTACIÓN N AVANZADA. ARRAYS EN LABVIEW Relacionando Datos Arrays y Clusters

INSTRUMENTACIÓN N AVANZADA. ARRAYS EN LABVIEW Relacionando Datos Arrays y Clusters ARRAYS EN LABVIEW Relacionando Datos Arrays y Clusters Objetivos 1. Event Structure 2. Arrays 3. Funciones 4. Ejercicios 5. Cluster 6. Simulación de adquisición de señales de tensión 7. Adquisicion de

Más detalles

ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA

ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA ALGORITMOS DE ORDENAMIENTO COUNTING SORT CHRISTIAN ESTEBAN ALDANA ROZO BRAYAN STIF FORERO CRUZ GIOVANNY GUZMÁN CÉSPEDES JORGE MEJIA Profesora: DIANA MABEL DIAZ UNIVERSIDAD PILOTO DE COLOMBIA INGENIERIA

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Arboles Binarios Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, 2001 Thomas Cormen et

Más detalles

Análisis y Diseño de Algoritmos

Análisis y Diseño de Algoritmos Análisis y Diseño de Algoritmos Ordenamiento en Tiempo Lineal DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE Ordenamiento por Comparación (Comparison Sorts) Tiempo de ejecución HeapSort y

Más detalles

Estructuras de datos. Estructuras de datos

Estructuras de datos. Estructuras de datos Un arbol es un conjunto de nodos que cumplen con las relaciones padre, hijo y hermano. Llamamos hijos de un nodo a todos los nodos que podemos llegar directamente por medio de un apuntador hacia ellos

Más detalles

Algoritmos para determinar Caminos Mínimos en Grafos

Algoritmos para determinar Caminos Mínimos en Grafos Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)

Más detalles

Algoritmo para Calcular Logaritmos

Algoritmo para Calcular Logaritmos Algoritmo para Calcular Logaritmos José Acevedo Jiménez Santiago, Rep. Dom. Calcular el logaritmo de un número hoy día es tarea sencilla, el uso de tablas y reglas para calcular el valor de los mismos

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash (2) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash: resolviendo colisiones por encadenamiento cuando el número de elementos en total es proporcional al número

Más detalles

TIPO DE DATO ABSTRACTO (TDA)

TIPO DE DATO ABSTRACTO (TDA) TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

Fundamentos de programación

Fundamentos de programación Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador

Más detalles

= RETURN =3 7-. ELSE K

= RETURN =3 7-. ELSE K 11-. Pida Al Usuario Dos Números Enteros (Que Se Guardaran En Las Variables Num 1 Y Num2). Si Num2 Es Cero, Deberá Mostrar Un Mensaje De Error, Y En Caso Contrario Mostrara En Pantalla El Resto De La División

Más detalles

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

UNIDAD 9. DATOS COMPLEJOS PILAS

UNIDAD 9. DATOS COMPLEJOS PILAS UNI 9. TOS OMPLEJOS PILS Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. omo consecuencia, los elementos de una pila serán eliminados

Más detalles

Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria

Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Sistemas de Información II Tema 8. Estructuras de datos en memoria secundaria Bibliografía: Elmasri y Navathe: Fundamentos de Sistemas de Bases de Datos 3ª edición, 2002 (Capítulo 6). Garcia-Molina, Ullman

Más detalles

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen Fundamentos de Informática. Dpto. de ATC - Página 1 de 8 conceptos Manejo de ficheros en C Contienen los datos que se almacenan en dispositivos de almacenamiento masivo: disquetes, discos duros, DROM,

Más detalles

Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte

Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 2: Inducción y Recursión 1 / 20 Motivación

Más detalles

La clase String

La clase String Clases y objetos Las clases del lenguaje Java Cómo se obtiene información acerca del string Comparación de strings Extraer un substring de un string Convertir un número a string Convertir un string en

Más detalles

fundamentos de programación (unidad 4) programación estructurada en Java

fundamentos de programación (unidad 4) programación estructurada en Java fundamentos de programación (unidad 4) programación estructurada en Java Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es

Más detalles

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto

EJERCICIOS del TEMA 3: Lenguajes independientes del contexto EJERCICIOS del TEMA 3: Lenguajes independientes del contexto Sobre GICs (gramáticas independientes del contexto) 1. Sea G una gramática con las siguientes producciones: S ASB ε A aab ε B bba ba c ) d )

Más detalles

IN Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0

IN Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0 IN3701 - Guía de Problemas Resueltos de Geometría de Programación Lineal v1.0 Acá va una pequeña guía con problemas resueltos de Geometría en Programación Lineal con problemas básicamente extraídos del

Más detalles

RADIO =? R AREA = : πr 2 < CIRC = : 2 πr

RADIO =? R AREA = : πr 2 < CIRC = : 2 πr PROGRAMACION BASICA Programar la calculadora corresponde a decirle que presione teclas por sí misma automáticamente. Los programas se pueden ingresar vía RUN SHIFT PRGM (tecla VARS), o bien ingresando

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

Teoría de grafos y optimización en redes

Teoría de grafos y optimización en redes Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,

Más detalles

Árboles Filogenéticos. BT7412, CC5702 Bioinformática Diego Arroyuelo. 2 de noviembre de 2010

Árboles Filogenéticos. BT7412, CC5702 Bioinformática Diego Arroyuelo. 2 de noviembre de 2010 Unidad 6: Árboles Filogenéticos BT7412, CC5702 Bioinformática Diego Arroyuelo 2 de noviembre de 2010 Temario (Introduction to Computational Molecular Biology Setubal y Meidanis Capítulo 6) 1. Introducción

Más detalles

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

Más detalles

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Conceptos básicos de bases de datos

Conceptos básicos de bases de datos Conceptos básicos de bases de datos 1.1 Definición de base de datos Una base de datos es una colección de archivos relacionados que permite el manejo de la información de alguna compañía. Cada uno de dichos

Más detalles

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A)

Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) aprenderaprogramar.com Arrays unidimensionales. Dim.Option Base. Erase. Ejemplos en Visual Basic (CU00311A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión: 2029 Autor: Mario R. Rancel

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo

Más detalles

Uso avanzado de punteros

Uso avanzado de punteros Uso avanzado de punteros Mario Medina C. [email protected] Punteros Contienen direcciones de memoria Punteros a tipos de datos simples int, char, float, double Punteros a estructuras Punteros a vectores

Más detalles

Examen Principios de Programación Febrero 2012

Examen Principios de Programación Febrero 2012 Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.

Más detalles

Enunciados de los problemas (1)

Enunciados de los problemas (1) Enunciados de los problemas (1) Problema 1. El peso de tres manzanas y dos naranjas es de 255 gramos. El peso de dos manzanas y tres naranjas es de 285 gramos. Si todas las manzanas son del mismo peso

Más detalles

Definición de Memoria

Definición de Memoria Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo [email protected] Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria

Más detalles

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA INSTITUTO POLITÉCNICO NACIONAL SECRETARIA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR ESIME CULHUACAN NOMBRE ALUMNO: FECHA DIA MES AÑO INGENIERÍA EN COMPUTACIÓN ASIGNATURA 1. Objetivo Apellido paterno ESTRUCTURAS

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles