COMPUTACION 2009 Clase 6 Clase 7.

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Método de ordenación por inserción
Programación de Computadores
Sesión 13 Tipos de datos Estruturados Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Programación de Computadores
Programación de Computadores
Procesamiento de cadenas
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
ALGORITMOS DE ORDENAMIENTO
Diseño y análisis de algoritmos
Metodología de la Programación
Resolución de Problemas y Algoritmos Buffer - Read & Readln
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
Curso de Programación 1 Plan 97
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Unidad 4: Análisis de algoritmos (parte II)
MÉTODOS DE CLASIFICACION
PROGRAMACION DE ESTRUCTURAS DE DATOS
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos de Búsqueda
Teoría de lenguajes y compiladores
C lase 10 COMPUTACION /17/2014Computacion - Fac. Ingeniería2  Ademas de los ya vistos (tipos simples), puede usarse como parámetros variables.
Ordenación, Clasificación
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Clase 12 COMPUTACION 2009 Tipos de Datos PASCAL Estructurados Simples Primitivos No primitivos Estáticos Integer Real Char Boolean String Archivos Registros.
Unidad II Aplicaciones con Arreglos en Java y C++
M.C. Yalu Galicia Hdez. (FCC/BUAP)
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
ESTRUCTURA DE DATOS EN JAVA
Estructuras de Datos Arreglos.
Clase 10: Estructuras de datos y arreglos.
Programación I Universidad Nacional de Luján
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Programación en Pascal
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Sesión 17 Tipos de datos Estruturados Arreglos de Registros Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Resolución de Problemas y Algoritmos Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca - Argentina.
ELO3201 Contenedores Biblioteca Estándar de Templates Agustín J. González ELO320 Contenido Contenedores: Vector, List, Deque, Stack, Queue, Priority Queue,
COMPUTACION 2009 C lase 4 Programa PASCAL SENTENCIAS DATOS Expresiones Tipos Declaración de variables Declaración de variables Asignación Entrada/Salida.
Aplicación de estructuras de datos
Programación I Arreglos II- Matrices.
75.40 Algoritmos y Programación I
Ordenación y Búsqueda.
Teoría – Alejandro Gonzalez
Arreglos Programación I MC Beatriz Beltrán Martínez.
Programación I Arreglos. Los elementos de un arreglo son todos del mismo tipo de dato (todos integer o real o char o registros o aún arreglos)
Definir un vector Forma general Variable=[tipo]*tamaño Tipo: es el valor inicial con el cual quedarán llenas todas las posiciones creadas del vector. Tamaño:
Tema 8: Tipos de Datos Estructurados I
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Vectores y Matrices.
COMPUTACION 2009 Clase 6 Clase 6.
Matrices Prof. Flor Narciso Departamento de Computación
Vectores y Matrices.
Fundamentos de Programación
Estructura de datos I CIS - UABJB.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Computación I. CI-2125 Tema VII
ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández

ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 5.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

COMPUTACION 2009 Clase 6 Clase 7

Computación - Facultad de Ingeniería Funciones low y high TYPE vector=array [1..30] of longint; VAR vec:vector; Begin vec[32]:=23456; Range check error !!! La extensión es de 1 a 30 Para verificar el rango puede usar las funciones low y high que devuelven los extremos de la extensión (o rango). Writeln(low(vec)); {devuelve 1} Writeln(high(vec)); {devuelve 30} 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Arrays y strings Los strings son vectores de caracteres. Es posible acceder a los caracteres de un string mediante una sintaxis de array. Los string están indexados desde 0, pero el primer carácter se encuentra en la posición 1. Cadena:=‘Este es un ejemplo de string’; C:=cadena[4]; {e} D:=cadena[10]; {n} Writeln(cadena[0]); Error:element zero can’t be accessed 4/12/2017 Computación - Facultad de Ingeniería

VECTORES PARALELOS: ejemplo Sean los siguientes datos: Apellido y n. Depto. Expensas Pagó? MARTINEZ,Juan 4 A 50 $ Si GONZALEZ Pedro 1 B 100 $ No ALONSO Maria 2 D 30 $ Si ALONSO Marcelo 5 H 120 $ si Se desea tener un listado de los propietarios que no han pagado las expensas. Imprimir apellido y nombre, departamento y deuda.

VECTORES PARALELOS: Apellido y n. Depto. Expensas Pagó? MARTINEZ,Juan 4 A 50 $ Si GONZALEZ Pedro 1 B 100 $ No ALONSO Maria 2 D 30 $ Si ALONSO Marcelo 5 H 120 $ si AyN Depto Expen Pago Colección de datos del mismo tipo: string Colección de datos del mismo tipo: string Colección de datos del mismo tipo: real Colección de datos del mismo tipo: booleano

VECTORES PARALELOS: Apellido y n. Depto. Expensas Pagó? MARTINEZ,Juan 4 A 50 $ Si GONZALEZ Pedro 1 B 100 $ No ALONSO Maria 2 D 30 $ Si ALONSO Marcelo 5 H 120 $ si AyN Depto Expen Pago (vector de (vector de (vector de (Vector String) string) reales) booleano)

Computación - Facultad de Ingeniería Vectores paralelos Los vectores paralelos pueden ser usados para almacenar grupos de datos de diferentes tipos. Las características asociadas a cada grupo pueden ser representadas apropiadamente con esta estructura de datos. Por ejemplo, un grupo puede estar constituido por los datos de un propietario, o datos sobre un libro o datos sobre un alumno, etc. MARTINEZ,Juan 4A 50 $ Si Grupo de datos de un propietario 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Vectores paralelos Cada una de las características de un grupo (por ejemplo Nombre, Dirección, Autor, etc.) deben almacenarse y recuperarse de manera tal de mantener la integridad de los datos. MARTINEZ,Juan 4A 50 $ Si Estos datos están asociados entre si (son todos del mismo propietario) y NO deben mezclarse con los datos de otro propietario. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Vectores paralelos Como se tiene varios grupos de datos (p.e. varios propietarios), se puede almacenar en un vector la misma característica correspondiente a cada grupo. Esto se puede hacer con cada una de las características. De ahí la noción de vector paralelo. Para almacenar y recuperar los ítems de cada unidad, se usan componentes del mismo índice en cada uno de los vectores paralelos. 4/12/2017 Computación - Facultad de Ingeniería

VECTORES PARALELOS: ejemplo Apellido y n. Depto. Expensas Pagó? Indice MARTINEZ,Juan 4 A 50 $ Si GONZALEZ Pedro 1 B 100 $ No ALONSO Maria 2 D 30 $ Si ALONSO Marcelo 5 H 120 $ si 1 2 3 4 Si el índice es igual a 1, el primer grupo de datos está representada en las primeras componentes de cada uno de los cuatro vectores.

Program vect_paralelo; Type Vec1=array[1..100] of string[25]; Vec2=array[1..100] of real; Vec3=array[1..100] of boolean; Var Depto,AyN:vec1; Expen:vec2; Pago:vec3; N,I,J,k:integer; Aux:char; Begin Write(‘Cant. de deptos’);Readln(N);

For i:=1 to N do Begin Writeln(‘Departamento ‘,i); Write(‘Apellido y nom.’);readln(AyN[i]); Write(‘Nro. De departamento’); readln(depto[i]); Write( ‘Expensas ‘); readln(expen[i]); Write(‘Ingrese S si pago, N sino pago’); REPEAT Readln(aux) UNTIL (aux=‘S’) or (aux=‘N’); pago[i]:=aux=‘S’; end; for i:=1 to N do if not(pago[i]) then writeln(AyN[i],depto[i],expen[i]); end.

Procesamiento elemental de datos Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la clasificación u ordenación de los mismos. Ordenar es el proceso de reorganizar un conjunto dado de objetos en una secuencia determinada. 4/12/2017 Computación - Facultad de Ingeniería

Procesamiento elemental de datos La colocación en orden de una lista de valores se llama ordenamiento. Por ejemplo, se podría disponer una lista de valores numéricos en orden ascendente o descendente, o bien una lista de nombres en orden alfabético. La localización de un elemento de una lista se llama búsqueda. 4/12/2017 Computación - Facultad de Ingeniería

Procesamiento elemental de datos La búsqueda puede diseñarse de manera más eficiente después de que la lista ha sido ordenada. Existen varios métodos para ordenamiento, clasificados en tres modalidades: 1) Inserción 2) Intercambio 3) Selección. 4/12/2017 Computación - Facultad de Ingeniería

Procesamiento elemental de datos En cada familia se distinguen dos versiones: un método simple y directo, fácil de comprender pero de escasa eficiencia respecto al tiempo de ejecución, y un método rápido, más sofisticado en su ejecución por la complejidad de las operaciones a realizar, pero mucho más eficiente en cuanto a tiempo de ejecución. 4/12/2017 Computación - Facultad de Ingeniería

Procesamiento elemental de datos En general, para arreglos con pocos elementos, los métodos directos son más eficientes (menor tiempo de ejecución) mientras que para grandes cantidades de datos se deben emplear los llamados métodos rápidos. 4/12/2017 Computación - Facultad de Ingeniería

Objetivos del Ordenamiento El propósito principal de un ordenamiento es el de facilitar las búsquedas de los miembros del conjunto ordenado. Ejemplos: guía telefónica, padrón electoral, bibliotecas, diccionarios, etc. El ordenar un grupo de datos significa mover los datos para que queden en una secuencia tal que represente un orden, el cual puede ser numérico, alfabético, ascendente o descendente. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Inserción El fundamento de este método consiste en insertar los elementos no ordenados del arreglo en subarreglos del mismo que ya estén ordenados. Dependiendo del método elegido para encontrar la posición de inserción tendremos distintas versiones del método de inserción. 4/12/2017 Computación - Facultad de Ingeniería

program insercion; type vector=array[0..40] of integer; var vec:vector; n,i,j,aux:integer;   BEGIN WRITE('Ingrese el valor de n '); READLN(n); FOR i:=1 TO n do begin WRITE('Ingrese elemento ',i,' '); READLN(vec[i]) end; INSERCION

FOR i:=2 TO n DO begin aux:=vec[i];{vec[i] es el que se ord.} j:=i; WHILE (j>1) and (vec[j-1]>aux) DO vec[j]:=vec[j-1]; j:=j-1 end; vec[j]:=aux FOR i:=1 TO N DO WRITE(vec[i],' '); READLN END. INSERCION (orden ascendente)

Explicación: INSERCION (orden ascendente) Se ordena un elemento del vector por vez (desde 2,3,… hasta n). Son ordenamientos parciales. Se supone inicialmente, que el 1er elemento esta ordenado. El elemento que debe ser ordenado se inserta en el orden que le corresponde dentro del vector parcialmente ordenado. Para lograrlo, desde la posición donde está el elemento a ordenar, se controla (hacia la ‘Izquierda’)los elementos que sean mayores del quiero insertar. En cuanto encuentre un elemento menor, almaceno el elemento en la posición siguiente a ese menor. Se controla con la variable j. Se debe hacer un corrimiento correcto para no perder datos. También se verifica si estoy en la posición 1(que es la ultima que se controla.) INSERCION (orden ascendente)

Computación - Facultad de Ingeniería Intercambio El método de intercambio se basa en comparar los elementos del arreglo e intercambiarlos si su posición actual o inicial es contraria a la deseada. Pertenece a este método el de la burbuja clasificado como intercambio directo. Aunque no es muy eficiente para ordenar listas grandes, es fácil de entender y muy adecuado para ordenar una pequeña lista de unos 100 elementos o menos. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Algoritmo burbuja Este algoritmo compara elementos consecutivos del arreglo uno con respecto del otro, si es mayor o menor según el tipo de ordenamiento y los cambia de posición. Este proceso se repite recorriendo todo el arreglo para posicionar un solo dato, por lo que es necesario repetirlo para los demás datos del arreglo 4/12/2017 Computación - Facultad de Ingeniería

program burbuja; type vector=array[1..100] of integer; var vec:vector; k,aux,i,N:integer; BEGIN WRITE('Ingrese el valor de n '); READLN(n); FOR i:=1 TO n do begin WRITE('Ingrese elemento ',i,' '); READLN(vec[i]) end; BURBUJA

FOR k:=1 TO N-1 DO{N-1 pasadas} FOR i:= 1 to N-k DO begin IF vec[i]> vec[i+1] THEN aux:=vec[i]; vec[i]:=vec[i+1]; vec[i+1]:=aux; end; FOR i:=1 TO N DO WRITE(vec[i],' '); READLN END. BURBUJA

Computación - Facultad de Ingeniería Selección Los métodos de ordenación por selección se basan en dos principios básicos: Seleccionar el elemento más pequeño (o más grande) del arreglo. Colocarlo en la posición más baja (o más alta) del arreglo. A diferencia del método de la burbuja, en este método el elemento más pequeño (o más grande) es el que se coloca en la posición final que le corresponde. 4/12/2017 Computación - Facultad de Ingeniería

Selección (orden ascendente) {Seleccion *****************}   for i:=1 to n-1 do begin menor:=vec[i]; posmenor:=i; for k:=i+1 to n do IF vec[k]<menor THEN menor:=vec[k]; posmenor:=k end; vec[posmenor]:=vec[i]; vec[i]:=menor; Se ha obviado la entrada de datos El menor se pone a la izquierda Selección (orden ascendente)

Computación - Facultad de Ingeniería Búsqueda La búsqueda es una operación que tiene por objeto la localización de un elemento dentro de la estructura de datos. A menudo un programador trabaja con grandes cantidades de datos almacenados en arreglos y en algun momento puede resultar necesario determinar si un arreglo contiene un valor que coincide con algún valor clave buscado. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Búsqueda Siendo el array de una dimensión o lista una estructura de acceso directo y a su vez de acceso secuencial, encontramos dos técnicas que utilizan estos dos métodos de acceso, para encontrar elementos dentro de un array: búsqueda secuencial búsqueda binaria. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Búsqueda secuencial La búsqueda secuencial es la técnica más simple para buscar un elemento en un arreglo. Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado (clave). Se empieza con la primera casilla del arreglo y se observa una casilla tras otra hasta que se encuentra el elemento buscado o se han visto todas las casillas. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Búsqueda secuencial Si el arreglo no posee ningún orden en particular, existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento, como en el último. El método de búsqueda secuencial funciona bien con arreglos pequeños o para arreglos no ordenados. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Búsqueda binaria Si el arreglo está ordenado, se puede utilizar la técnica de alta velocidad de búsqueda binaria, donde se reduce sucesivamente la operación eliminando repetidas veces la mitad de la lista restante. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Búsqueda binaria La búsqueda binaria es el método más eficiente para encontrar elementos en un arreglo ordenado. El proceso comienza comparando el elemento central del arreglo con el valor buscado. Si ambos coinciden finaliza la búsqueda. 4/12/2017 Computación - Facultad de Ingeniería

Computación - Facultad de Ingeniería Búsqueda binaria Si no ocurre así, el elemento buscado será mayor o menor en sentido estricto que el central del arreglo. Si el elemento buscado es mayor se procede a hacer búsqueda binaria en el subarreglo superior Si el elemento buscado es menor que el contenido de la casilla central, se debe cambiar el segmento a considerar al segmento que está a la izquierda de tal sitio central. 4/12/2017 Computación - Facultad de Ingeniería

{BUSQUEDA BINARIA}   min:=1; max:=n; WHILE min<max DO begin j:=(min+max)div 2; IF x>vec[j] THEN min:=j+1 ELSE max:=j; end; IF x=vec[min] THEN writeln('Se encontro el elemento ', x) writeln('No se encontro el elemento', x); Se ha obviado la entrada de datos Se busca si el elemento x está en el vector vec Los datos están ordenados