miércoles, 8 de julio de 2020

Estructura de Datos Arreglos

Unidad 5:

*Conocer las estructuras de datos

*Trabajar con arreglos unidimensionales o vectores.

*Realizar operaciones con arreglos unidimensionales o vectores.

*Trabajar con arreglos bidimensionales o matrices

*Conocer los arreglos multidimensionales.

*Entender el almacenamiento e arreglos en memoria.

Arreglos Unidimensionales:

Un arreglo unidimensional o vector, es un conjunto finito, consecutivo  y organizado de elementos homogéneos, es decir, elementos pertenecientes en un mismo tipo de dato.

*Finito: El arreglo tiene un número determinado de elementos.

*Homogéneo: Todos los elementos del arreglo son del mismo tipo.

*Organizado: Existe una forma de referenciar cada elemento del arreglo y de acceder a cada uno de sus elementos de manera independiente.

*Consecutivo: Por la parte en que e almacena o representa un vector en la memoria del computador, en posiciones consecutivas de la memoria.

Para referenciar cada elemento de un arreglo se usa el índice, que es un valor que directa o indirectamente referencia la posición del elemento dentro del arreglo.

Los índices deben ser de cualquier tipo de datos escalar, porque en un escalar se puede definir un orden y entre dos elementos consecutivos no puede haber infinitos elementos. Un ejemplo de datos escalares son los enteros y caracteres. Normalmente, como índices se van a utilizar números enteros.

Par referenciar un elemento de un arreglo se usa el nombre del arreglo y entre corchetes ([]) el índice que determina la posición de ese elementos en el arreglo.

El rango o longitud de un vector o arreglo lineal es la diferencia entre el índice de valor máximo en el arreglo y el índice de valor mínimo +1. Normalmente, los índices comienzan a enumerarse desde 0 o 1 , como el valor mínimo del índice. Dependiendo del lenguaje de programación.

Los arreglos se almacenan siempre en posiciones consecutivas de memoria y se puede acceder a cada elemento del arreglo de manera independiente, a través de los índices. Un índice no tiene porqué ser un valor constante, puede ser también una variable o una expresión que al ser evaluada devuelva un valor escalar que se encuentre entre índice menor y el índice mayor del arreglo o ambos inclusive.

Definición de un Arreglo o Vector:

Para definir un arreglo, se da el nombre del arreglo, el rango de sus índices y el tipo de los datos que contiene, Esto es:

<nom_arreglo>: arreglo [rango] de <tipo>

Ejemplo:

sueldo: arreglo[8] de real

i:entero

i=2

sueldo[i]=23.5


Operaciones con Vectores:

Se usa la declaración del vector

Ventas: arreglo [12] entero

Gráficamente se representa:

1

2

3

4

5

6

7

8

9

10

11

12

 

Asignar datos a una posición del arreglo dada por un índice. La sintaxis de esta operación es:

<nom_arreglo> [indice] = valor

Ejemplo: asignar el valor de 105 a la posición 5 del vector:

ventas[5] = 105

Lectura y escritura de datos:

Consiste en usar una posición cualquiera del arreglo definida por un indice para operaciones de entrada y salida.

La sintaxis para estas operaciones es:

Leer<nom_arreglo> [indice]

Escribir <nom_arreglo> [ indice]

Ejemplo:

Desde i =1 hasta 12

Escribir “Introduzca las ventas del mes” i

Leer ventas [i]

Fin desde

Desde i = 1 hasta 12

Escribir “ventas del mes” i “=” ventas [i]

Fin desde

Recorrido o Acceso secuencial de un arreglo:

Consiste en pasar todas las posiciones del arreglo para procesar su información usualmente, se usa el ciclo “Desde”  para recorrer el vector.

La sintaxis de esta operación es:

Desde indice =1 Hasta Rango Arreglo

<Acciones con el arreglo>

Fin Desde


Ejemplo: Sumar 300 a las ventas de cada mes.

Desde i=1 Hasta 12

Ventas [i] =Ventas [i] +300

Fin Desde

 

Actualización de un Arreglo:

Añadir Datos: Es un caso especial de una operación de inserción de un elemento de un arreglo, donde el elemento nuevo se agrega después de la última posición que contiene información valida en el arreglo. Para  hacer esta operación es necesario si el arreglo actualmente tiene k posiciones de información valida, tenga un tamaño de al menos k+1 para que se pueda añadir otro elemento a continuación del elemento en la posición k.

Sintaxis:

<nom_arreglo> [k+1]=valor

 Insertar Datos:

Consiste en introducir un elemento a una posición del interior del arreglo, para lo cual será necesario desplazar una posición a la derecha a todos los elementos que estén a la derecha de donde se va a insertar el elemento, esto con el fin de conservar el orden relativo entre los elementos.

Para que se pueda insertar un nuevo elemento en el arreglo si ya existen n elementos con información en el arreglo, el arreglo tendrá que tener un tamaño de al menos n+1para poder insertar el nuevo elemento.

c

r

h

j

n

o

 

 

 

Al insertar g en la cuarta posición queda:

c

r

h

g

j

n

o

 

 

Si k es la posición donde se va a insertar el nuevo elemento, n es el número de elementos validos en el arreglo en el momento de la inserción y suponiendo un tamaño mínimo de n+1 , el algoritmo de inserción es:

Desde i=n  hasta k con decremento 1

A [i+1] = A [i]

Fin Desde

A[k] = valor

 

Ejemplo: Insertar 300 correspondiente a las ventas del mes 5.

Desde i= 11 hasta 5 con decremento 1

Ventas [ i + 1 ]= ventas [i]

Fin Desde

Ventas [5]=300

 Eliminar Datos:

Para eliminar un elemento de un arreglo, si ese elemento está posicionado al final del arreglo, no hay ningún problema, simplemente si el tamaño del arreglo era n , ahora hay que considerar que el tamaño del arreglo es n-1.

Si el elemento a eliminar ocupa cualquier otra posición entonces se tendrá que desplazar una posición a la izquierda, todos los elementos situados a la derecha del elemento a borrar, para que el arreglo quede organizado.

c

e

f

k

m

p

 

 

Al borrar el elemento k queda

c

e

f

m

p

 

 

 

 

Suponiendo que el número de elementos validos actualmente es “n” y que se desea borrar el elemento de la posición k.

Desde i = k hasta n-1

A [i] = A [i+1]

Fin Desde


Ejemplo: Eliminar ventas registradas en el mes 4 y desplazar las de los mese subsiguientes hacia la izquierda.

Desde i=4 Hasta 11

Ventas[i]= ventas [i+1]

Fin Desde

El número de los elementos validos  n es ahora n=n-1

 

 Arreglos Bidimensionales:

En un arreglo unidimensional o vector cada elemento es referenciado por un indice, en un arreglo bidimensional cada elemento se va a referenciar por dos índices.

La representación lógica de un arreglo bidimensional es una matriz de dimensiones M XN don M es el número de filas de la matriz y N es el número de columnas, es decir la primera dimensión indica las filas y la 2 dimensión indica las columnas. Al acceder a un elemento que ocupa la fila I ,J  se está accediendo al elemento que ocupa la fila i y la columna j.

Un arreglo bidimensional  de M x N  elementos es un conjunto de M x N elementos, todos del mismo  tipo, cada uno de los cuales es referenciado a través de 2 subíndices. El primer subíndice varía entre 1 y M 0 entre  0 hasta M-1 , dependiendo desde donde comience el indice .El segundo indice varía entre 1 y N o entre 0 y N-1.

En general se puede definir un arreglo de 2 dimensiones de la siguiente manera:

<nombre_arreglo>: arreglo [rango-filas, rango-columnas] <tipo de dato>

Ejemplo: Representación de una matriz de las ventas mensuales de 5 años.

Ventas: arreglo [5,12] real

El tamaño resulta de la multiplicación de su rango de filas por su rango de columnas:

Tamaño n x m = 5x12 = 60

En memoria sin embargo todos los elementos del arreglo se almacenan en posiciones continuas.

Matriz de ventas 5x12, total de 60 elementos.


1

2

3

4

5

6

7

8

9

10

11

12

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

4

 

120

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

Ventas [4,2] =120

En memoria se almacenan los elementos de forma consecutiva:

1,1

1,2

1,3

1,4

1,5

1,6

1,7

1,8

1,9

 

 

Manejo de Matrices:

Colocar el valor de cero a todos los elementos de una matriz

Esta es una operación útil cuando se desea inicializar todos los elementos de la matriz a un valor dado, usualmente ese valor es cero, aunque bien podría ser cualquier otro valor valido.

Sintaxis:

M : arreglo [m,n] entero

Var i ,j : entero

Desde i =1 hasta m

Desde j=1 hasta n

M [ i, j]=0

Fin Desde

Fin Desde

Ejemplo: Inicializar la matriz de ventas mensuales para 5 años

Ventas: arreglo [5,12] entero

Var i, j: entero

     Desde i =1 hasta 5

           Desde j=1 hasta 12

              Ventas [i, j]=0

            Fin Desde

    Fin Desde


Colocar el valor de cero a todos los elementos de una fila dada

En este caso se mantiene fija la fila y se recorren las columnas asignándoles un valor suministrado , usualmente ese valor es cero.

Sintaxis:

M: arreglo [m,n] entero

Var i , j : entero

I=fila

Desde j=1 Hasta n

     M [i , j] = 0

Fin Desde

 

Ejemplo: Inicializar ventas mensuales del año 3.

Ventas: arreglo [5 ,12] entero

Var i , j : entero

i=3

Desde j=1 Hasta 12

M [i ,j] =0

Fin Desde

En este caso se le asignó el valor de cero a los elemento de la tercera fila de la matriz ventas.

 

Arreglo Multidimensionales:

Un arreglo multidimensional es una matriz de 3 o más dimensiones .Si se tiene un arreglo de N dimensiones, donde cada dimensiones de tamaño  d1,d2,dn…..el número del arreglo será d1x,d2x,xdn.

Para acceder  los elementos de una arreglo se utilizan n índices, cada uno de los cuales referencia a una posición dentro de una dimensión siempre según el orden de la declaración.

En memoria, el arreglo se sigue almacenando en posiciones consecutivas

La declaración de un arreglo multidimensional será:

Nom_arreglo : arreglo[rango 1,rango 2 …..rango n] tipo

Ejemplo: Definir una matriz de ventas mensuales de 5 años para 3 vendedores y asignar a las ventas del mes 10 del cuarto año para el vendedor 2 la cantidad de 1000.5

Ventas: arreglo [3, 5, 12] real

Ventas [2, 4, 10] =1000.5


Almacenamiento de arreglo en Memoria:

Un arreglo en memoria siempre se almacena en posiciones continuas a partir de la dirección base de comienzo del arreglo, la cual se asigna cuando se declara una variable del tipo arreglo.

El tamaño que ocupa el arreglo en memoria es el producto del producto de sus elementos

Ventas: arreglo [5,12] real

Tamaño n x m = 5x12 = 60

 

En el caso de un arreglo multidimensional, también se almacena en posiciones continuas de memoria. Su tamaño será el producto de sus elementos por el tamaño requerido para representar cada elemento en memoria.

Ejemplo:

 

Arreglo [3, 5, 12] enteros

Si se asume que cada entero necesita 2 byte para ser almacenados y se tiene un total de 3x5x12=180 elementos , entonces 180x2=360 bytes de memoria.

2 bytes x (3x5x12) elementos=360 bytes

 

 

                                                                                                                                                 

 

 

 

 

 

 

 

 








No hay comentarios:

Publicar un comentario