Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación"

Transcripción

1 Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación Estructuras de datos y algoritmos Facultad de Informática curso Introducción El objetivo de esta práctica consiste en estudiar experimentalmente diversos algoritmos de ordenación. Al finalizar la práctica dispondrás de los tiempos utilizados para ordenar un vector usando varios algoritmos, de modo que tendrás criterios objetivos para poder elegir la alternativa que creas más adecuada. Se aplicará el mejor de los algoritmos para la lectura de imágenes en un formato artificial pensado exclusivamente para el uso en esta práctica. Te proporcionamos la implementación del algoritmo Shellsort con la que, además, podrás generar medidas que utilizarás en prácticas de Estadística. 1. El formato OIF. El formato de imágenes OIF (Obfuscated Image Format) es un formato de imágenes pensado exclusivamente para el uso en esta práctica. Éste es un formato ofuscado, como su nombre indica, en el cual se propone una solución innecesariamente compleja al problema de dar un formato a una imágen. El OIF es un formato ASCII al igual que el PPM (P3) con el que venimos trabajando. El formato es el siguiente: OIF El formato empieza con la palabra OIF. A continuación se encuentra el ancho y alto de la imágen (número de columnas y de filas respectivamente). En total se tienen n = alto ancho píxeles. A continuación el formato contiene n líneas, cada una de las cuales es una tupla de 4 valores. El primero de ellos es un número real y los otros tres son la componente RGB del píxel Conversión a PPM El objetivo de la práctica es leer un fichero en formato OIF y convertir la imágen al formato PPM. Para poder obtener la imágen se debe de ordenar las n tuplas de acuerdo con el valor real asociado. Una vez ordenadas dichas tuplas se corresponden con los píxeles de la imagen en el orden usual (recorrido por filas de la imagen vista como matriz). Por ejemplo: Este sería un fichero completo en formato OIF: 1

2 OIF Éste debería ser el fichero en formato PPM: P A continuación veremos varios algoritmos de ordenación candidatos a formar parte de la implementación de la lectura del formato OIF. Para elegir el mejor, vamos a realizar una medida experimental del tiempo de CPU necesario para ordenar un vector de una talla determinada. Obviamente, que un algoritmo sea mejor en una talla no significa que lo sea mejor en todas las tallas. El coste de ordenar un vector varía entre individuos (vectores) de una misma talla. Nos han dicho que el formato OIF ordena aleatoriamente los píxelse, así que nos vamos a centrar en estudiar el coste de ordenar vectores desordenados aleatoriamente. 2. Shellsort La siguiente información ha sido obtenida de la wikipedia: El Shell sort es una generalización del ordenamiento por inserción directa, así que en primer lugar vamos a recordar su idea general: 2.1. Inserción directa El ordenamiento por inserción directa (insertion sort en inglés) es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un mazo de cartas numeradas en forma arbitraria. Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Después, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k + 1 y se compara con todos los elementos ya ordenados, deteniéndose cuando se encuentra un elemento mayor. En este punto se inserta el elemento k + 1 debiendo desplazarse los demás elementos. El coste de este algoritmo puede variar mucho para una misma talla según las instancias a ordenar. Si el vector a ordenar ya está ordenado o está casi ordenado, el coste será casi lineal. Para un vector desordenado, el coste puede ser cuadrático O(n 2 ), lo cual es mucho peor que otros algoritmos basados en comparaciones (como heapsort) que tienen como caso peor el menos malo posible para este tipo de algoritmos. Una posible implementación de este algoritmo se muestra a continuación: inline void swap ( T &a, T& b) { T tmp =a; a=b; b= tmp ; void insertion_ sort ( T A[], int size ) { for ( int i =1; i < size ; ++ i) for ( int j=i; j >= 1 && A[j -1] > A[ j]; j -= 1) swap (A[j],A[j - 1]);

3 2.2. El shellsort El Shell sort es una generalización del ordenamiento por inserción que siendo también relativamente fácil de implementar mejora el coste de la inserción directa. Está basado en inserción directa pero teniendo en cuenta estas dos observaciones: El ordenamiento por inserción es eficiente si la entrada está casi ordenada. El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga pasos más grandes hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados. Veamos un ejemplo ilustrativo de cómo funciona. Supongamos que vamos a ordenar el siguiente vector de números: [ ]. Imaginemos que este vector representa una matriz con 5 columnas recorrida por filas. La matriz quedaría así: Entonces lo que podemos hacer es ordenar cada columna, lo que nos da Cuando interpretamos de nuevo estos datos como vector, hemos obtenido: [ ] Para ordenar el conjunto de columnas de un vector visto como matriz con gap (salto) columnas, basta con modificar el algoritmo de inserción directa de la manera siguiente: inline void swap ( T &a, T& b) { T tmp =a; a=b; b= tmp ; inline void insertion_ sort_ with_ gap ( T A[], int size, int gap ) { for ( int i= gap ; i < size ; ++i) for ( int j=i; j >= gap && A[j- gap ] > A[ j]; j -= gap ) swap (A[j],A[j - gap ]); Es interesante observar que los movimientos de elementos para ordenar una fila mueve los elementos convenientemente para ordenar el vector. Es más, cada movimiento en 1 posición en la fila corresponde a 5 posiciones en el vector original. Si ahora hacemos lo mismo viendo una matriz de 3 filas: Y ordenamos de nuevo cada columna:

4 Cuando interpretamos de nuevo estos datos como vector, hemos obtenido: A pesar de no estar todavía ordenado, es un vector menos desordenado que el orginal. Cuando finalmente shellsort utiliza una matriz con una única columna, dicha columna corresponde a la matriz y en esa última iteración lo que hace no es ni más ni menos que el inserción directa original. En este ejemplo hemos usado la secuencia de incrementos o gap de 5,3 y 1, existen diversos estudios que muestran que algunas secuencias son mejores que otras. En esta práctica vamos a utilizar la secuencia siguiente: ,463792,198768,86961,33936, 13776,4592,1968,861,336,112,48,21,7,3,1 Aquí tienes una posible implementación del algoritmo Shellsort en C++: void shell_sort (T A[], int size ) { const int increments_ size = 16; static const int increment_ vector [ increments_ size ] = { ,463792,198768,86961,33936, 13776,4592,1968,861,336,112,48,21,7,3,1 ; for ( int index = 0; index < increments_ size ; ++ index ) insertion_sort_with_gap (A,size, increment_vector [ index ]); Otra posiblidad es desenrrollar el bucle: void shell_sort (T A[], int size ) { insertion_sort_with_gap (A,size, ); insertion_sort_with_gap (A,size,463792); insertion_sort_with_gap (A,size,198768); insertion_sort_with_gap (A,size,86961); insertion_sort_with_gap (A,size,33936); insertion_sort_with_gap (A,size,13776); insertion_ sort_ with_ gap (A, size,4592); insertion_ sort_ with_ gap (A, size,1968); insertion_ sort_ with_ gap (A, size,861); insertion_ sort_ with_ gap (A, size,336); insertion_ sort_ with_ gap (A, size,112); insertion_sort_with_gap (A,size,48); insertion_sort_with_gap (A,size,21); insertion_sort_with_gap (A,size,7); insertion_sort_with_gap (A,size,3); insertion_sort_with_gap (A,size,1); 3. El algoritmo Quicksort El algoritmo Quicksort se basa en la técnica de programación conocida como Divide y vencerás. Este algoritmo consiste básicamente en disponer los elementos del vector menores que un pivote en la parte inicial del vector y los mayores en la parte final. Aplicando repetidamente esta idea sobre estas dos partes se consigue ordenar el vector.

5 void quicksort ( T *v, int l, int r) { if (l<r) { int q= partition (v, l, r); quicksort (v, l, q); quicksort (v, q+1, r); El algoritmo de partición se encarga de disponer los elementos del vector tal como hemos comentado anteriormente Algoritmo de partición Existen diferentes versiones del algoritmo de partición, y la elección de una u otra versión es fundamental para el buen comportamiento del algoritmo de ordenación. En este apartado presentamos un posible algoritmo de partición para el algoritmo Quicksort. A continuación describimos la estrategia a seguir: Elegimos como pivote p un elemento de v[l..r]. Por ejemplo, se puede tomar el primer elemento v[l]. Se hace un recorrido del vector a partir de l, situando los elementos menores o iguales que p en una zona a la izquierda del vector, y los elementos mayores o iguales que p en una zona a la derecha. Para realizar este recorrido, usaremos dos variables i y j, de forma que: v l elementos<=p i j r elementos>=p Al final del recorrido, llegaremos al siguiente estado v l elementos<=p j i elementos>=p r Nótese que los elementos del vector entre las posiciones l y j son todos menores o iguales que los elementos del vector entre las posiciones i y r. El algoritmo de partición devuelve la posición j del vector que marca ambas partes del vector. int partition ( int *v, int l, int r) { int i = l -1, j = r+1, pivote = v[l]; do j - -; while ( pivote < v[j ]); do i ++; while ( v[ i] < pivote ); if (i<j) { int aux = v[ i]; v[i] = v[j]; v[j] = aux ; while (i <j); return j; Con este recorrido se resuelve el problema con un coste Θ(n) siendo n el número de elementos que hay entre las posiciones l y r.

6 4. Medida de tiempos 4.1. Determinación de tiempos de ejecución: primitiva clock Medir el tiempo de ejecución de una rutina es una forma empírica de determinar la calidad de una implementación del algoritmo correspondiente. En el lenguaje C++ se dispone de la librería entandar ctime que corresponde a la librería time.h del lenguaje C. Esta librería nos ofrece algunos tipos de datos y funciones: clock_t clock_t clock() CLOCKS_PER_SEC Tipo similar a un long Retorna un número de tics de reloj Constante para transformar tics a segundos Con ellos podemos medir el tiempo de ejecución entre dos llamadas a la función clock(). Este tiempo no se corresponde con tiempo realmente transcurrido, sino más bien es el tiempo de procesador consumido por el proceso que invoca clock. De esta manera las mediciones resultan bastante independientes de la carga que tenga el sistema debida a otros procesos. Por ejemplo veamos el siguiente código, donde {B es cualquier bloque de instrucciones cuyo tiempo de ejecución se desea determinar: t1 = clock(); {B t2 = clock(); Después de la ejecución de este fragmento de programa el tiempo de proceso consumido por el bloque {B será t2-t1 (en tics). La precisión de clock es limitada. En sistemas Unix/Linux estándar un tic equivale a 0.01 segundos (100 tics/s). Dada la gran potencia computacional que en la actualidad tienen la mayoría de procesadores, esta precisión es realmente muy limitada. Por ejemplo, en un modesto procesador PentiumIII a 450Mhz, una buena implementación del algoritmo Quicksort es capaz de ordenar 200 vectores de 10,000 enteros de 16 bits en 1 segundo; es decir el tiempo necesario para realizar una ordenación es de unos segundos. Si quisiéramos medir este tiempo mediante clock obtendríamos muy probablemente 0 tics. En realidad, se obtendrá aleatoriamente 0 o 1 tics, dependiendo del instante exacto en el que se invoque a clock, y la probabilidad depende del tiempo real y del tiempo entre dos tics. Aunque existen otros métodos de medición que permiten obtener resoluciones por debajo del microsegundo, de momento, por simplicidad, trataremos de arreglárnoslas con la función clock. Obviamente, dadas las limitaciones indicadas, si queremos medir el tiempo de proceso de una instancia deberemos recurrir a medir el tiempo de procesar muchas instancias para sacar la media. Esto plantea el problema de decidir cuántas son las instancias necesarias para obtener una precisión aceptable. En general, el número adecuado de instancias a procesar depende de lo que tarde en procesarse una instancia. Por ejemplo, con el mismo procesador e implementación del Quicksort anteriores, el tiempo de ordenar un vector de de enteros de 16 bits es de 1 segundo aproximadamente. En este caso, el tiempo por instancia se obtiene directamente con una precisión del 1 %, procesando una sola instancia. Por todas estas razones, el método ideal para medir tiempos con la función clock consiste en fijar un tiempo total (mínimo) de proceso, tt, y determinar cuántas instancias completas pueden procesarse en ese tiempo (o algo más). Aquí tienes un esquema para medir tiempos tal y como se propone: clock_t t_inicial, t_final ; double t = 0.0; // tiempo en segundos int iteraciones = 0; // aquí código para preparar lo que queremos medir t_ inicial = clock (); // aquí situamos el código que queremos medir t_final = clock (); t += ( t_final - t_ inicial )/( double ) CLOCKS_ PER_ SEC ; iteraciones ++; while ( t < tt ); // el valor tt podría ser por ejemplo 0.05 t /= iteraciones ; // ahora t tiene el tiempo por instancia

7 4.2. Generación de datos para la práctica de estadística En muchas ocasiones es inmediato ver que un algoritmo es mucho más rápido que otro que resuelve un mismo problema. Pero en otras ocasiones no es tan sencillo, especialmente cuando nos centramos en una talla dada y observamos que el tiempo varía con cada instancia del problema. Uno de los objetivos de esta práctica es aprender a medir tiempos para diversas instancias de un mismo problema con una misma talla. En función de la forma de tomar muestras de esta población (la población de las instancias de un problema para una talla fijada) podemos hablar de datos apareados o no. Como los datos obtenidos en esta práctica podrás aplicar las técnicas que estudias en la asignatura de Estadística. En esta sección te proporcionamos indicaciones concretas para que prepares los datos que debes llevar a la próxima práctica de Estadística. El objetivo de la práctica de Estadística es comparar dos versiones del algoritmo de ordenación Shellsort aplicado a vectores de una talla dada. Es decir, nos vamos a centrar en una sola talla y vamos a generar diversas instancias (distintos vectores de esa talla). La talla elegida es 3000 y vamos a generar 20 vectores y medir el tiempo utilizado para ordenarlos con dos versiones del algoritmo. La diferencia entre las dos versiones radica en la secuencia de saltos aplicados. void shell_sort_a (T A[], int size ) { insertion_sort_with_gap (A,size, ); insertion_sort_with_gap (A,size,463792); insertion_sort_with_gap (A,size,198768); insertion_sort_with_gap (A,size,86961); insertion_sort_with_gap (A,size,33936); insertion_sort_with_gap (A,size,13776); insertion_ sort_ with_ gap (A, size,4592); insertion_ sort_ with_ gap (A, size,1968); insertion_ sort_ with_ gap (A, size,861); insertion_ sort_ with_ gap (A, size,336); insertion_ sort_ with_ gap (A, size,112); insertion_sort_with_gap (A,size,48); insertion_sort_with_gap (A,size,21); insertion_sort_with_gap (A,size,7); insertion_sort_with_gap (A,size,3); insertion_sort_with_gap (A,size,1); y la versión B cambia en la secuencia de saltos aplicados, simplemente hemos eliminado algunos de los saltos: void shell_sort_b (T A[], int size ) { insertion_sort_with_gap (A,size,463792); insertion_sort_with_gap (A,size,86961); insertion_sort_with_gap (A,size,13776); insertion_ sort_ with_ gap (A, size,1968); insertion_ sort_ with_ gap (A, size,336); insertion_sort_with_gap (A,size,48); insertion_sort_with_gap (A,size,7); insertion_sort_with_gap (A,size,1);

8 5. Actividades en el laboratorio 5.1. Comparación de algoritmos Shellsort Estudia y utiliza el programa medirtiempos.cc para generar los datos que necesitarás en la asignatura Estadística para relizar un análisis de datos apareados y no apareados con una muestra de la población formada por 20 muestras de vectores de talla 3000 en cada caso Estudio del algoritmo Quicksort 1. Añade el algoritmo Quicksort en el programa que mide los tiempos para poder compararlo con las dos versiones de Shellsort. Utiliza la versión del algoritmo de partición que toma como pivote la mediana de tres elementos: inline void swap ( T &a, T& b) { T tmp =a; a=b; b= tmp ; T med3 (T v[], int low, int high ) { int cnt = ( low + high )/2; if (v[ cnt ] <v[ low ]) swap (v[ low ],v[ cnt ]); if (v[ high ]<v[ low ]) swap (v[ low ],v[ high ]); if (v[ high ]<v[ cnt ]) swap (v[ cnt ],v[ high ]); swap (v[ cnt ],v[high -1]); return (v[high -1]); inline int partition ( T v[], int low, int high ) { int izq =low, der =high -1; T piv = med3 (v,low, high ); izq ++; while (v[ izq ]< piv ); der - -; while (piv <v[ der ]); swap (v[ izq ],v[ der ]); while (izq < der ); swap (v[ izq ],v[ der ]); swap (v[ izq ],v[high -1]); return izq ; 2. Un estudio para tallas bajas de Inserción directa y de Quicksort, revela que el mejor comportamiento del segundo se manifiesta tempranamente. Aún así, se puede mejorar su comportamiento buscando un umbral óptimo de recursión, por debajo del cual se ordene el subvector mediante Inserción directa. Un método directo y fiable para estimar el umbral óptimo de recursión, consiste en calcularlo experimentalmente. Proponed un experimento que determine un umbral óptimo de recursión, y que al mismo tiempo indique la mejora de tiempos que se puede obtener para tallas del orden de 50,000. Como hipótesis de partida, suponed que el umbral buscado estará como mucho en n = 25, y como muy poco en n = 2. A continuación tienes el código de inserción directa: void InsertionSort ( T v[], int low, int high ) { int i,j; T aux ; for ( i = low +1; i <= high ; i ++) { aux =v[i]; for (j = i -1; j >= low && aux <v[j]; j - -) v[j +1]= v[j]; v[j +1]= aux ; 3. En ocasiones puede resultar adecuado estudiar el comportamiento de los algoritmos en función del número de comparaciones que se realizan entre elementos. Esto es especialmente importante cuando las

9 comparaciones entre elementos son costosas (comparaciones entre estructuras complejas, comparación de imágenes, etc.). Estudia el comportamiento de los algoritmos propuestos en la práctica calculando las comparaciones entre elementos. Para ello debes incluir contadores en dos de los algoritmos a comparar. 4. Como ejercicio opcional puedes probar y comparar la versión del algoritmo de partición que elige un pivote aleatorio del vector. 5. Como ejercicio opcional puedes añadir en la lista de algoritmos a comparar el algoritmo Mergesort Lectura de imágenes en formato OIF Se pretende realizar un programa que convierta del formato OIF al formato PPM. Para ello se pide que implementes el método read_oif en la clase ImageColor. Así mismo, deberás realizar un programa principal llamado oif2ppm que recibe el nombre de una imagen en formato OIF y escribe la misma imagen en formato ppm: $ oif2ppm ejemplo.oif > ejemplo.ppm Referencias [1] C. A. R. Hoare, Quicksort, Computer Journal, Vol. 5 (4), [2] R. Sedgewick, Implementing Quicksort Programas, Communications of ACM, Vol. 21 (10), [3] M. A. Weiss, Estructuras de datos y algoritmos, Addison-Wesley Iberoamericana, 1995.

Programación de Sistemas

Programación de Sistemas Programación de Sistemas Algoritmos de Ordenación Índice Por qué es importante la ordenación? Un par de ejemplos InsertionSort QuickSort Para cada uno veremos: En qué consisten, Casos extremos Eficiencia

Más detalles

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011 Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando

Más detalles

Cómo ordenar una lista de números?

Cómo ordenar una lista de números? Cómo ordenar una lista de números? Germán Ariel Torres Resumen. Este trabajo trata acerca de métodos y técnicas usadas para el ordenamiento eficiente de listas de números. Se analizan los métodos básicos,

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación Introducción Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

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

Tema 8: Algoritmos de ordenación y búsqueda

Tema 8: Algoritmos de ordenación y búsqueda Tema 8: Algoritmos de ordenación y búsqueda Objetivos: en este tema se presentan algoritmos que permiten buscar un elemento dentro de una colección y ordenar una colección en base a algún criterio (el

Más detalles

Metodología de la Programación II. Recursividad

Metodología de la Programación II. Recursividad Metodología de la Programación II Recursividad Objetivos Entender el concepto de recursividad. Conocer los fundamentos del diseño de algoritmos recursivos. Comprender la ejecución de algoritmos recursivos.

Más detalles

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS

ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática ALGORITMICA III Capitulo I ANALISIS DE ALGORITMOS Iván Medrano Valencia ANALISIS DE ALGORITMOS Un algoritmo es un

Más detalles

Curso Excel 2010 Rangos y tablas Teoría 3. Rangos y tablas... 1. Contenido... 1. Operaciones con rangos... 2. Copia de un rango...

Curso Excel 2010 Rangos y tablas Teoría 3. Rangos y tablas... 1. Contenido... 1. Operaciones con rangos... 2. Copia de un rango... RANGOS Y TABLAS Los rangos y tablas en Excel son la base de los tipos de libros más usados, como listados, bases de datos, resúmenes estadísticos, etc. En las últimas versiones se ha ido dando cada vez

Más detalles

Receta general para resolver problemas de sincronización con semáforos

Receta general para resolver problemas de sincronización con semáforos Receta general para resolver problemas de sincronización con semáforos La primera vez que te enfrentas a la tarea de implementar una solución a un problema de sincronización entre procesos, es normal que

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Bloques Repetitivos: Iteración

Bloques Repetitivos: Iteración Fuente: www.appinventor.org Traducción hecha con Google Traductor y mejorada por mi: piatticarlos@gmail.com Bloques Repetitivos: Iteración Una cosa para la que los ordenadores son buenos es la repetición

Más detalles

ALGORITMOS DE ORDENACIÓN Y BÚSQUEDA

ALGORITMOS DE ORDENACIÓN Y BÚSQUEDA 6 ALGORITMOS DE ORDENACIÓN Y BÚSQUEDA OBJETIVOS Después del estudio de este capítulo usted podrá: Conocer los algoritmos basados en el intercambio de elementos. Conocer el algoritmo de ordenación por inserción.

Más detalles

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I

Vectores y matrices. Fundamentos de Programación Fundamentos de Programación I Vectores y matrices Fundamentos de Programación Fundamentos de Programación I 1 Ejemplo de utilización n de vectores: gráfico de producción En una compañía nos han encargado escribir un programita que

Más detalles

Diseño y Admón. de Bases de Datos. Ingeniería Informática curso 2010/11

Diseño y Admón. de Bases de Datos. Ingeniería Informática curso 2010/11 Laboratorio 06. Objetivos: Representación interna de un BD. Tablas, índices e índices full-text. Sesiones: 1 (24 de noviembre de 2010) Ejercicio: 1. Representación interna: 1.1. Copiar al repositorio de

Más detalles

Primer Parcial de Programación 3 (1/10/2009)

Primer Parcial de Programación 3 (1/10/2009) Primer Parcial de Programación (/0/009) Instituto de Computación, Facultad de Ingeniería Este parcial dura horas y contiene carillas. El total de puntos es 0. En los enunciados llamamos C* a la extensión

Más detalles

Karel y Recursión. I. Entendiendo la Recursión

Karel y Recursión. I. Entendiendo la Recursión I. Entendiendo la Recursión Karel y Recursión Recursión es la forma en la cual se especifica un proceso basado en su propia definición. Siendo un poco más precisos, y para evitar el aparente círculo sin

Más detalles

Esteganografía En Imágenes Basado En Mascaras de Convolución Espacial. Universidad Nacional de Trujillo

Esteganografía En Imágenes Basado En Mascaras de Convolución Espacial. Universidad Nacional de Trujillo Esteganografía En Imágenes Basado En Mascaras de Convolución Espacial Universidad Nacional de Trujillo Resumen La Esteganografía toma su mayor auge a partir de la aparición de los ordenadores. En el caso

Más detalles

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h> Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en

Más detalles

Capítulo 3 Ordenación(Clasificación) y Búsqueda

Capítulo 3 Ordenación(Clasificación) y Búsqueda Capítulo 3 Ordenación(Clasificación) y Búsqueda 3.1 Ordenamiento Interno Los computadores emplean gran parte de su tiempo en operaciones de búsqueda y ordenamiento. Existen 2 métodos de ordenación: ordenación

Más detalles

MODELOS DE RECUPERACION

MODELOS DE RECUPERACION RECUPERACIÓN Y ORGANIZACIÓN DE LA INFORMACIÓN INGENIERÍA INFORMÁTICA RECUPERACIÓN Y ACCESO A LA INFORMACIÓN MODELOS DE RECUPERACION AUTOR: Rubén García Broncano NIA 100065530 grupo 81 1 INDICE 1- INTRODUCCIÓN

Más detalles

Software de Particle Tracking Version 1.0

Software de Particle Tracking Version 1.0 Software de Particle Tracking Version 1.0 Martín Pastor Laboratorio de Medios Granulares Departamento de Física y Matemática Aplicada Universidad de Navarra Enero, 2007 Índice general 1. Introducción 3

Más detalles

Guía rápida de Excel Tablas y gráficos dinámicos A. Roldán 2010

Guía rápida de Excel Tablas y gráficos dinámicos A. Roldán 2010 Tablas y gráficos dinámicos Tablas dinámicas Cambios en una tabla dinámica Filtrados Opciones de tabla Configuración de campo Otras operaciones Subtotales Gráficos dinámicos Tablas dinámicas Las tablas

Más detalles

<tipo> Tipo de dato de los elementos del vector

<tipo> Tipo de dato de los elementos del vector Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.

Más detalles

Capítulo 4 MEDIDA DE MAGNITUDES. Autor: Santiago Ramírez de la Piscina Millán

Capítulo 4 MEDIDA DE MAGNITUDES. Autor: Santiago Ramírez de la Piscina Millán Capítulo 4 MEDIDA DE MAGNITUDES Autor: Santiago Ramírez de la Piscina Millán 4 MEDIDA DE MAGNITUDES 4.1 Introducción El hecho de hacer experimentos implica la determinación cuantitativa de las magnitudes

Más detalles

Los modelos que permite construir el ANOVA pueden ser reducidos a la siguiente forma:

Los modelos que permite construir el ANOVA pueden ser reducidos a la siguiente forma: Ignacio Martín Tamayo 25 Tema: ANÁLISIS DE VARIANZA CON SPSS 8.0 ÍNDICE --------------------------------------------------------- 1. Modelos de ANOVA 2. ANOVA unifactorial entregrupos 3. ANOVA multifactorial

Más detalles

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña

Presentación. Programación I. Conceptos Avanzados de Programación. :: Prof. Yeniffer Peña Presentación Conceptos Avanzados de Programación :: Prof. Yeniffer Peña Unidad I: Conceptos Avanzados de Programación Recursividad: El concepto de recursividad va ligado al de repetición. Son recursivos

Más detalles

Preliminares. Tipos de variables y Expresiones

Preliminares. Tipos de variables y Expresiones Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un

Más detalles

CAPÍTULO 7 ALGORITMOS Y SU COMPLEJIDAD

CAPÍTULO 7 ALGORITMOS Y SU COMPLEJIDAD CAPÍTULO 7 ALGORITMOS Y SU COMPLEJIDAD La tarea de programación está ligada al objetivo de obtener algoritmos que resuelvan un problema con la mayor eficiencia posible; de hecho es sorprendente comprobar

Más detalles

Curso de Visual Basic 6.0 - Lección 1 Area Interactiva - www.areaint.com

Curso de Visual Basic 6.0 - Lección 1 Area Interactiva - www.areaint.com LECCIÓN 6 En esta lección vamos a familiarizarnos con las estructuras de repetición, las cuales nos sirven para realizar una misma instrucción un número determinado de veces o indeterminado dependiendo

Más detalles

Comencemos a programar con. Entrega 10. Estructuras de Control II

Comencemos a programar con. Entrega 10. Estructuras de Control II Comencemos a programar con VBA - Access Entrega 10 Estructuras de Control II Eduardo Olaz 10-2 Estructuras de Control, segunda parte Las Instrucciones While - - - Wend La estructura de bucle For Contador

Más detalles

Programación: QBASIC

Programación: QBASIC 1. QBASIC Programación: QBASIC Guía del alumno Qbasic es una versión moderna del lenguaje BASIC. Se trata de un lenguaje de alto nivel. En un lenguaje de alto nivel las instrucciones tienen un formato

Más detalles

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones.

Refactorizar (v) Reestructurar el software aplicando una secuencia de refactorizaciones. Refactorización Definición Refactorización (n) Cambio realizado a la estructura interna del software para hacerlo más fácil de comprender y más fácil de modificar sin cambiar su comportamiento observable.

Más detalles

Capítulo 2 Silueta. Figura 2.1 Tetera capturada por la cámara con la silueta resaltada

Capítulo 2 Silueta. Figura 2.1 Tetera capturada por la cámara con la silueta resaltada Capítulo 2 Silueta 2.1 Silueta La silueta de un objeto es muy importante porque es lo que nos da las pistas visuales de cómo es que está formado, nos dice dónde están sus límites y ayuda a diferenciar

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Proyecto de Diseño # 3 DISEÑO E IMPLEMENTACIÓN DE SISTEMAS ARITMÉTICOS MATERIAL ADICIONAL

Proyecto de Diseño # 3 DISEÑO E IMPLEMENTACIÓN DE SISTEMAS ARITMÉTICOS MATERIAL ADICIONAL INSTITUTO TECNOLÓGICO DE COSTA RICA ESCUELA DE INGENIERÍA ELECTRÓNICA IE-3308: LABORATORIO DE DISEÑO LÓGICO Prof. Ing. Luis C. Rosales Proyecto de Diseño # 3 DISEÑO E IMPLEMENTACIÓN DE SISTEMAS ARITMÉTICOS

Más detalles

Introducción a la Programación en MATLAB

Introducción a la Programación en MATLAB Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos

Más detalles

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016! INFORMÁTICA Práctica4. ProgramaciónbásicaenC. GradoenIngenieríaenElectrónicayAutomáticaIndustrial Curso2015H2016 v2.1(18.09.2015) A continuación figuran una serie de ejercicios propuestos, agrupados por

Más detalles

Introducción a Matlab

Introducción a Matlab Introducción a Matlab Visión en Robótica 1er cuatrimestre de 2013 En este apunte veremos las operaciones más comunes del entorno de programación Matlab. Se aprerán a manejar los aspectos básicos como saltos

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

Proyecto de Innovación Docente: Guía multimedia para la elaboración de un modelo econométrico.

Proyecto de Innovación Docente: Guía multimedia para la elaboración de un modelo econométrico. 1 Primeros pasos en R. Al iniciarse R (ver Figura 16), R espera la entrada de órdenes y presenta un símbolo para indicarlo. El símbolo asignado, como puede observarse al final, es > Figura 16. Pantalla

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

ARREGLOS DEFINICION GENERAL DE ARREGLO

ARREGLOS DEFINICION GENERAL DE ARREGLO ARREGLOS DEFINICION GENERAL DE ARREGLO Conjunto de cantidades o valores homogéneos, que por su naturaleza se comportan de idéntica forma y deben de ser tratados en forma similar. Se les debe de dar un

Más detalles

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net)

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net) Fundamentos de Programación II Tema 2. Recursividad Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de Ingeniería y Arquitectura Naturaleza

Más detalles

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR UNIDAD 3: ARITMÉTICA DEL COMPUTADOR Señor estudiante, es un gusto iniciar nuevamente con usted el desarrollo de esta tercera unidad. En esta ocasión, haremos una explicación más detallada de la representación

Más detalles

Charla No 3: Fórmulas de mayor uso.

Charla No 3: Fórmulas de mayor uso. 1 Charla No 3: Fórmulas de mayor uso. Objetivos generales: Explicar el uso de las funciones de mayor uso en MS-Excel Objetivos específicos: Autosuma. Asistente de fórmulas. Max y Min. Buscarv Contar Si

Más detalles

En muchas ocasiones, después de crear una hoja de cálculo, nos daremos cuenta de que nos falta alguna fila en medio de los datos ya introducidos.

En muchas ocasiones, después de crear una hoja de cálculo, nos daremos cuenta de que nos falta alguna fila en medio de los datos ya introducidos. 6.1. Insertar Filas En muchas ocasiones, después de crear una hoja de cálculo, nos daremos cuenta de que nos falta alguna fila en medio de los datos ya introducidos. Para añadir una fila, seguir los siguientes

Más detalles

Análisis asintótico: algoritmos recursivos e iterativos

Análisis asintótico: algoritmos recursivos e iterativos Análisis asintótico: algoritmos recursivos e iterativos Frank Sebastián Franco Hernández 22 de agosto de 2014 1. Análisis de tres algoritmos de ordenamiento 1.1. Algoritmo BubbleSort Este algoritmo funciona

Más detalles

Práctica 1 - Pista de Carreras 12407 - Programación II

Práctica 1 - Pista de Carreras 12407 - Programación II 1. Introducción Práctica 1 - Pista de Carreras 12407 - Programación II En esta práctica el objetivo es implementar una matriz de adyacencia para el juego Pista de Carreras. Con tal fin, primero hay que

Más detalles

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Árboles binarios de búsqueda, Table of Contents

Más detalles

C APÍTULO 1 Gestión de documentos

C APÍTULO 1 Gestión de documentos C APÍTULO 1 Gestión de documentos En este capítulo encontrará unas sencillas indicaciones para cocripción somera del entorno de trabajo de Word, así como una referencia rápida a las funciones de las teclas

Más detalles

Algoritmos y Estructuras de Datos II

Algoritmos y Estructuras de Datos II 16 de marzo de 2015 Contenidos 1 Análisis de algoritmos 2 3 La idea El algoritmo Ejemplo Análisis Ordenación por selección vs. inserción selección: a a[1,i) mínimos ordenados a[i,n] aún no seleccionados

Más detalles

Práctica 6: Utilización de Registros y Vectores

Práctica 6: Utilización de Registros y Vectores Práctica 6: Utilización de Registros y Vectores Objetivos de la práctica El objetivo de esta práctica es ejercitarse en el empleo de estructuras de datos de tipo registro y vector para modelar datos, así

Más detalles

Analisis de algoritmos

Analisis de algoritmos Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué

Más detalles

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera Lectura ORDENACIÓN DE ARREGLOS Con frecuencia se requiere clasificar u ordenar los elementos de un vector (arreglo unidimensional) en algún orden en particular. Por ejemplo, ordenar un conjunto de números

Más detalles

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03.

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03. INFORMÁTICA Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial Curso 2013-2014 v1.0 (05.03.14) A continuación figuran una serie de ejercicios propuestos, agrupados

Más detalles

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS UNA SESIÓN EN SPSS INTRODUCCIÓN. SPSS (Statistical Product and Service Solutions) es un paquete estadístico orientado, en principio, al ámbito de aplicación de las Ciencias sociales, es uno de las herramientas

Más detalles

Práctica 3: Programación con subrutinas

Práctica 3: Programación con subrutinas Práctica 3: Programación con subrutinas 3.1 Objetivos El objetivo de esta práctica es estudiar el soporte del ensamblador del ARM para la gestión de subrutinas, para lo que resulta necesario familiarizarse

Más detalles

Materia: Informática. Nota de Clases Sistemas de Numeración

Materia: Informática. Nota de Clases Sistemas de Numeración Nota de Clases Sistemas de Numeración Conversión Entre Sistemas de Numeración 1. EL SISTEMA DE NUMERACIÓN 1.1. DEFINICIÓN DE UN SISTEMA DE NUMERACIÓN Un sistema de numeración es un conjunto finito de símbolos

Más detalles

Capítulo 7: Distribuciones muestrales

Capítulo 7: Distribuciones muestrales Capítulo 7: Distribuciones muestrales Recordemos: Parámetro es una medida de resumen numérica que se calcularía usando todas las unidades de la población. Es un número fijo. Generalmente no lo conocemos.

Más detalles

PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS.

PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS. PRÁCTICA 5. SENTENCIAS DE CONTROL REPETITIVAS. 1. Introducción. En esta práctica veremos todos los conceptos explicados en la segunda parte del Tema 5 de teoría: las Sentencias de Control Repetitivas,

Más detalles

Problemas indecidibles

Problemas indecidibles Capítulo 7 Problemas indecidibles 71 Codificación de máquinas de Turing Toda MT se puede codificar como una secuencia finita de ceros y unos En esta sección presentaremos una codificación válida para todas

Más detalles

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información TEMA 1: SISTEMAS INFORMÁTICOS Parte 2: representación de la información Qué vamos a ver? Cómo se representa y almacena la información en un ordenador Cómo podemos relacionar la información que entendemos

Más detalles

Object 1. Threads en Java

Object 1. Threads en Java Object 1 Threads en Java Introducción En este artículo voy a explicar cómo se usan los threads en Java (también traducidos como "hilos de ejecución"). La intención no es solamente explicar cuáles son las

Más detalles

8. Sentencia return y métodos

8. Sentencia return y métodos 92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente

Más detalles

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape

Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape Herramientas Informáticas para la Documentación Práctica 1. Introducción al navegador Netscape Introducción y objetivos De modo muy resumido Internet es una red que interconecta redes de ordenadores. Conectándose

Más detalles

Para ponerlo en funcionamiento deberemos realizar los siguientes pasos:

Para ponerlo en funcionamiento deberemos realizar los siguientes pasos: Curso de Macros en Excel Nivel intermedio Como escribir una macro utilizando el Editor de Visual Basic. Como ejecutar una macro. Macros con libros. Movernos por un libro. Elementos repetidos Comparación

Más detalles

Tutoríal para el cálculo del volumen de trabajo ECTS en una asignatura en un modelo de simulación con hoja de cálculo Excel

Tutoríal para el cálculo del volumen de trabajo ECTS en una asignatura en un modelo de simulación con hoja de cálculo Excel Tutoríal para el cálculo del volumen de trabajo ECTS en una asignatura en un modelo de simulación con hoja de cálculo Excel Objetivos versión 2.0 (19 jun 2007) Agustín Romero Medina - Para que el profesor

Más detalles

PRIMERA PARTE LAS PRIMERAS PLANILLAS

PRIMERA PARTE LAS PRIMERAS PLANILLAS PRIMERA PARTE LAS PRIMERAS PLANILLAS El objetivo de este capítulo es tener una primera aproximación al programa. Conocerle la cara: cómo se ve, para qué sirve, cuáles son y cómo se usan las principales

Más detalles

Estructura de Datos. Unidad I Tipos de Datos

Estructura de Datos. Unidad I Tipos de Datos Estructura de Datos Unidad I Tipos de Datos Conceptos Básicos Algoritmo: es una secuencia finita de pasos o instrucciones ordenadas crono-lógicamente que describen un método para resolver un problema específico.

Más detalles

Ingeniería Superior de Informática

Ingeniería Superior de Informática Ingeniería Superior de Informática Asignatura: Visión Artificial Curso 2007/08 Práctica nº 1 : Fundamentos de la Image Processing Toolbox de MATLAB 1. BREVES DEFINICIONES... 1 2. IMÁGENES EN MATLAB Y LA

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

Repaso de matrices, determinantes y sistemas de ecuaciones lineales

Repaso de matrices, determinantes y sistemas de ecuaciones lineales Tema 1 Repaso de matrices, determinantes y sistemas de ecuaciones lineales Comenzamos este primer tema con un problema de motivación. Problema: El aire puro está compuesto esencialmente por un 78 por ciento

Más detalles

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Lenguaje C. Tipos de Datos Simples y Estructuras de Control Lenguaje C Tipos de Datos Simples y Estructuras de Control Lenguaje C C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje

Más detalles

Temario detallado. Conceptos generales de lenguajes y compiladores. Proceso de compilación de un programa en C++ bajo Code::Blocks

Temario detallado. Conceptos generales de lenguajes y compiladores. Proceso de compilación de un programa en C++ bajo Code::Blocks Temario detallado Programación básica en C++ Conceptos generales de lenguajes y compiladores Proceso de compilación de un programa en C++ bajo Code::Blocks Estructura básica de un programa en C++ Análisis

Más detalles

Módulo II - Excel. Identificando tipos de datos... 2. Introduciendo datos en las celdas... 3. Llenando automáticamente las celdas...

Módulo II - Excel. Identificando tipos de datos... 2. Introduciendo datos en las celdas... 3. Llenando automáticamente las celdas... Módulo II - Excel Índice Identificando tipos de datos... 2 Introduciendo datos en las celdas... 3 Llenando automáticamente las celdas... 4 Seleccionando un rango de celdas... 5 Seleccionando una fila o

Más detalles

Definición de clases: Herencia, polimorfismo, ligadura dinámica

Definición de clases: Herencia, polimorfismo, ligadura dinámica Tema 7 Definición de clases: Herencia, polimorfismo, ligadura dinámica Con alguna frecuencia es necesario definir clases de objetos entre las cuales hay elementos comunes. En una aplicación en la cual

Más detalles

Algoritmos. Autor: José Ángel Acosta Rodríguez

Algoritmos. Autor: José Ángel Acosta Rodríguez Autor: 2006 ÍNDICE Página Índice 1 Problema 1. Movimiento de figuras geométricas.2 Problema 2. Conversión decimal a binario....3 Problema 3. Secuencias binarias..4 Problema 4. Conversión a binario a octal...

Más detalles

Capitulo 12. Tira de bits

Capitulo 12. Tira de bits Capitulo 12. Tira de bits 12.1 Representación de números naturales (enteros positivos) base 10 base 2 base 16 decimal binario hexadecimal 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000

Más detalles

construcción de programas Prof. Eliana Guzmán U.

construcción de programas Prof. Eliana Guzmán U. Unidad II. Metodología para la construcción de programas Prof. Eliana Guzmán U. Semestre: A-2015 Introducción Resolver un problema con una computadora conduce a la escritura de un programa y a su ejecución.

Más detalles

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4 CAPÍTULO 4. Formas alternativas de escribir un texto........ Columnas Para fijar columnas se posiciona el Punto de Inserción donde se desee que comiencen las columnas, o bien se selecciona el texto que

Más detalles

Capítulo 3 DIVIDE Y VENCERÁS

Capítulo 3 DIVIDE Y VENCERÁS Capítulo 3 DIVIDE Y VENCERÁS 3.1 INTRODUCCIÓN El término Divide y Vencerás en su acepción más amplia es algo más que una técnica de diseño de algoritmos. De hecho, suele ser considerada una filosofía general

Más detalles

t i Q 7 Q 6 Q 5 Q 4 Q 3 Q 2 Q 1 Q 0

t i Q 7 Q 6 Q 5 Q 4 Q 3 Q 2 Q 1 Q 0 Clase 5 Un registro es un conjunto de n latch o Flip-Flops asociados que permiten almacenar temporalmente una palabra o grupo de n bit. Hay dos clases de registros típicos sincrónicos 1. el registro de

Más detalles

PRÁCTICA 4: IDENTIFICACIÓN Y CONTROL DE UN SERVOMECANISMO DE POSICIÓN CURSO 2007/2008

PRÁCTICA 4: IDENTIFICACIÓN Y CONTROL DE UN SERVOMECANISMO DE POSICIÓN CURSO 2007/2008 PRÁCTICA 4: IDENTIFICACIÓN Y CONTROL DE UN SERVOMECANISMO DE POSICIÓN CURSO 2007/2008 LABORATORIO DE CONTROL AUTOMÁTICO. 3 er CURSO ING. TELECOMUNICACIÓN 1. OBJETIVOS En esta práctica se pretende que el

Más detalles

Eligiendo algoritmos: El caso de ordenamiento

Eligiendo algoritmos: El caso de ordenamiento Eligiendo algoritmos: El caso de ordenamiento Horst H. von Brand * Universidad Técnica Federico Santa María Departamento de Informática Valparaíso, Chile vonbrand@inf.utfsm.cl Abstract The problem of sorting

Más detalles

Solución - práctico 10

Solución - práctico 10 Solución - práctico 10 Complejidad Ejercicio 1 a) Una implementación del algoritmo es la siguiente: /* Procedimiento que se encarga de realizar la unión de los dos conjuntos * ordenados der1 e izq1 son

Más detalles

EXPERIMENTACIÓN. Eduardo Jiménez Marqués

EXPERIMENTACIÓN. Eduardo Jiménez Marqués EXPERIMENTACIÓN Eduardo Jiménez Marqués 1 CONTENIDO: 1. Experimentación...3 1.1 Concepto...3 1. Definición...4 1.3 Dificultad...4 1.4 Ventaja...5 1.5 Planificación...5 1.6 Aplicaciones...5 1.7 Metodología...6

Más detalles

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador.

PRACTICA #1. Aprender a programar una interrupción software empleando C y/o Ensamblador. PRACTICA #1 Aprender a programar una interrupción software empleando C y/o Ensamblador. Aprender a manipular dispositivos externos (8253, 8255) desde C y/o ensamblador. PROCEDIMIENTO: Vamos a programar

Más detalles

Introducción a la Computación TFA

Introducción a la Computación TFA Introducción a la Computación TFA Departamento de Informática Facultad de Ciencias Físico, Matemáticas y Naturales- UNSL Lenguaje de Diseño de Algoritmos Estructura de Control Condicional Simple y Múltiple

Más detalles

Procesamiento Digital de Imágenes. Compresión de imágenes

Procesamiento Digital de Imágenes. Compresión de imágenes FICH, UNL - Departamento de Informática - Ingeniería Informática Procesamiento Digital de Imágenes Guía de Trabajos Prácticos 8 Compresión de imágenes 2010 1. Objetivos Analizar las características y el

Más detalles

Análisis de los datos

Análisis de los datos Universidad Complutense de Madrid CURSOS DE FORMACIÓN EN INFORMÁTICA Análisis de los datos Hojas de cálculo Tema 6 Análisis de los datos Una de las capacidades más interesantes de Excel es la actualización

Más detalles

Mi primer proyecto en Dev-C++

Mi primer proyecto en Dev-C++ Mi primer proyecto en Dev-C++ Para realizar esta actividad deberás disponer de un ordenador en el que esté instalado el Dev-C++. Debes ir realizando cada uno de los pasos indicados, en el mismo orden en

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

Computación Científica en Paralelo

Computación Científica en Paralelo Computación Científica en Paralelo Luis Miguel de la Cruz luiggix@gmail.com www.dci.dgsca.unam.mx/lmcs Unidad de Investigación en Cómputo Aplicado DGSCA-UNAM. Posgrado en Ciencia e Ingeniería de la Computación

Más detalles

Práctica 0. Emulador XENON de la computadora CESIUS

Práctica 0. Emulador XENON de la computadora CESIUS Práctica 0. Emulador XENON de la computadora CESIUS 1. Introducción El objeto de la presente práctica es permitir al alumno ensayar y familiarizarse con los conceptos de programación de computadoras digitales

Más detalles

Alvaro J. Riascos Villegas Universidad de los Andes y Quantil. Marzo 14 de 2012

Alvaro J. Riascos Villegas Universidad de los Andes y Quantil. Marzo 14 de 2012 Contenido Motivación Métodos computacionales Integración de Montecarlo Muestreo de Gibbs Rejection Muestreo Importante Metropolis - Hasting Markov Chain Montecarlo Method Complemento ejemplos libro: Bayesian

Más detalles

Matrices equivalentes. El método de Gauss

Matrices equivalentes. El método de Gauss Matrices equivalentes. El método de Gauss Dada una matriz A cualquiera decimos que B es equivalente a A si podemos transformar A en B mediante una combinación de las siguientes operaciones: Multiplicar

Más detalles

Análisis probabilístico y algoritmos aleatorizados

Análisis probabilístico y algoritmos aleatorizados Análisis probabilístico y algoritmos aleatorizados Johan Van Horebeek, horebeek@cimat.mx Análisis probabilístico: considerar el input de un algoritmo como de cierta distribución probabilística. Algoritmo

Más detalles