COMPUTACION Clase 6 2009 Clase 7 Funciones low

  • Slides: 36
Download presentation
COMPUTACION Clase 6 2009 Clase 7

COMPUTACION Clase 6 2009 Clase 7

Funciones low y high TYPE vector=array [1. . 30] of longint; VAR vec: vector;

Funciones low y high TYPE vector=array [1. . 30] of longint; VAR vec: vector; Range check error !!! Begin La extensión es de 1 a 30 vec[32]: =23456; 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} 2/27/2021 Computación - Facultad de Ingeniería 2

Arrays y strings Los strings son vectores de caracteres. n Es posible acceder a

Arrays y strings Los strings son vectores de caracteres. n Es posible acceder a los caracteres de un string mediante una sintaxis de array. n Los string están indexados desde 0, pero el primer carácter se encuentra en la posición 1. n 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 2/27/2021 Computación - Facultad de Ingeniería 3

VECTORES PARALELOS: ejemplo Sean los siguientes datos: Apellido y n. MARTINEZ, Juan GONZALEZ Pedro

VECTORES PARALELOS: ejemplo Sean los siguientes datos: Apellido y n. MARTINEZ, Juan GONZALEZ Pedro ALONSO Maria ALONSO Marcelo Depto. 4 A 1 B 2 D 5 H Expensas 50 $ 100 $ 30 $ 120 $ Pagó? Si No Si 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. MARTINEZ, Juan GONZALEZ Pedro ALONSO Maria ALONSO Marcelo Ay.

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

VECTORES PARALELOS: Apellido y n. MARTINEZ, Juan GONZALEZ Pedro ALONSO Maria ALONSO Marcelo Ay.

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

Vectores paralelos ØLos vectores paralelos pueden ser usados para almacenar grupos de datos de

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 2/27/2021 4 A 50 $ Si Computación - Facultad de Ingeniería Grupo de datos de un propietario 7

Vectores paralelos ØCada una de las características de un grupo (por ejemplo Nombre, Dirección,

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 4 A 50 $ Si Estos datos están asociados entre si (son todos del mismo propietario) y NO deben mezclarse con los datos de otro propietario. 2/27/2021 Computación - Facultad de Ingeniería 8

Vectores paralelos Ø Como se tiene varios grupos de datos (p. e. varios propietarios),

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. 2/27/2021 Computación - Facultad de Ingeniería 9

VECTORES PARALELOS: ejemplo Apellido y n. MARTINEZ, Juan GONZALEZ Pedro ALONSO Maria ALONSO Marcelo

VECTORES PARALELOS: ejemplo Apellido y n. MARTINEZ, Juan GONZALEZ Pedro ALONSO Maria ALONSO Marcelo Depto. 4 A 1 B 2 D 5 H Expensas 50 $ 100 $ 30 $ 120 $ Pagó? Indice 1 Si 2 No Si 3 si 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 Vec 1=array[1. . 100] of string[25]; Vec 2=array[1. . 100] of

Program vect_paralelo; Type Vec 1=array[1. . 100] of string[25]; Vec 2=array[1. . 100] of real; Vec 3=array[1. . 100] of boolean; Var Depto, Ay. N: vec 1; Expen: vec 2; Pago: vec 3; 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. ’);

For i: =1 to N do Begin Writeln(‘Departamento ‘, i); Write(‘Apellido y nom. ’); readln(Ay. N[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(Ay. N[i], depto[i], expen[i]); end.

Procesamiento elemental de datos n n Uno de los procedimientos más comunes y útiles

Procesamiento elemental de datos n 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. Ordenar es el proceso de reorganizar un conjunto dado de objetos en una secuencia determinada. 2/27/2021 Computación - Facultad de Ingeniería 13

Procesamiento elemental de datos n n n La colocación en orden de una lista

Procesamiento elemental de datos n n n 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. 2/27/2021 Computación - Facultad de Ingeniería 14

Procesamiento elemental de datos n n La búsqueda puede diseñarse de manera más eficiente

Procesamiento elemental de datos n n 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, ordenamiento clasificados en tres modalidades: 1) Inserción 2) Intercambio 3) Selección. 2/27/2021 Computación - Facultad de Ingeniería 15

Procesamiento elemental de datos En cada familia se distinguen dos versiones: n n un

Procesamiento elemental de datos En cada familia se distinguen dos versiones: n n un método simple y directo, 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. 2/27/2021 Computación - Facultad de Ingeniería 16

Procesamiento elemental de datos n En general, para arreglos con pocos elementos, los métodos

Procesamiento elemental de datos n 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. 2/27/2021 Computación - Facultad de Ingeniería 17

Objetivos del Ordenamiento n n n El propósito principal de un ordenamiento es el

Objetivos del Ordenamiento n n n 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 queden en una secuencia tal que represente un orden, orden el cual puede ser numérico, alfabético, ascendente o descendente. 2/27/2021 Computación - Facultad de Ingeniería 18

Inserción n n El fundamento de este método consiste en insertar los elementos no

Inserción n 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. 2/27/2021 Computación - Facultad de Ingeniería 19

program insercion; type vector=array[0. . 40] of integer; var vec: vector; n, i, j,

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 INSERCION begin WRITE('Ingrese elemento ', i, ' '); READLN(vec[i]) end;

FOR i: =2 TO n DO begin aux: =vec[i]; {vec[i] es el que se

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 begin vec[j]: =vec[j-1]; j: =j-1 INSERCION end; vec[j]: =aux (orden end; ascendente) FOR i: =1 TO N DO WRITE(vec[i], ' '); READLN END.

Explicación: 1) 2) 3) 4) Se ordena un elemento del vector por vez (desde

Explicación: 1) 2) 3) 4) Se ordena un elemento del vector por vez (desde 2, 3, … hasta n). Son ordenamientos parciales. Se supone inicialmente, que el 1 er 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)

Intercambio n n El método de intercambio se basa en comparar los elementos del

Intercambio n n 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. 2/27/2021 Computación - Facultad de Ingeniería 23

Algoritmo burbuja n n Este algoritmo compara elementos consecutivos del arreglo uno con respecto

Algoritmo burbuja n n 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 2/27/2021 Computación - Facultad de Ingeniería 24

program burbuja; type vector=array[1. . 100] of integer; var vec: vector; k, aux, i,

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); BURBUJA FOR i: =1 TO n do begin WRITE('Ingrese elemento ', i, ' '); READLN(vec[i]) end;

 FOR k: =1 TO N-1 DO{N-1 pasadas} FOR i: = 1 to N-k

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 begin aux: =vec[i]; vec[i]: =vec[i+1]; vec[i+1]: =aux; end; FOR i: =1 TO N DO WRITE(vec[i], ' '); READLN BURBUJA END.

Selección n 1) 2) Los métodos de ordenación por selección se basan en dos

Selección n 1) 2) 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. 2/27/2021 Computación - Facultad de Ingeniería 27

{Seleccion *********} for i: =1 to n-1 do begin menor: =vec[i]; posmenor: =i; for

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

Búsqueda n n La búsqueda es una operación que tiene por objeto la localización

Búsqueda n n 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. 2/27/2021 Computación - Facultad de Ingeniería 29

Búsqueda n Siendo el array de una dimensión o lista una estructura de acceso

Búsqueda n 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: 1) búsqueda secuencial 2) búsqueda binaria. 2/27/2021 Computación - Facultad de Ingeniería 30

Búsqueda secuencial n n n La búsqueda secuencial es la técnica más simple para

Búsqueda secuencial n n n 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. 2/27/2021 Computación - Facultad de Ingeniería 31

Búsqueda secuencial n n Si el arreglo no posee ningún orden en particular, existe

Búsqueda secuencial n n 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. 2/27/2021 Computación - Facultad de Ingeniería 32

Búsqueda binaria n Si el arreglo está ordenado, se puede utilizar la técnica de

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

Búsqueda binaria n n La búsqueda binaria es el método más eficiente para encontrar

Búsqueda binaria n n 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. 2/27/2021 Computación - Facultad de Ingeniería 34

Búsqueda binaria n n n Si no ocurre así, el elemento buscado será mayor

Búsqueda binaria n n n 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. 2/27/2021 Computación - Facultad de Ingeniería 35

{BUSQUEDA BINARIA} min: =1; max: =n; Se ha obviado la entrada de datos WHILE

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