INTRODUCCIÓN
Arreglos unidimensionales
y multidimensionales


Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen en ella.

Las estructuras de datos son muy importantes en los sistemas de computadora. Los tipos de datos más frecuentes utilizados en los diferentes lenguajes de programación son:

 

 

Los tipos de datos simples pueden ser organizados en diferentes estructuras de datos: estáticas y dinámicas. Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Las estructuras de datos dinámicas no tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas.

 

Una característica importante que diferencia a los tipos de datos es la siguiente: los tipos de datos simples tienen como característica común que cada variable representa a un elemento; los tipos de datos estructurados tienen como característica común que un identificador (nombre) puede representar múltiples datos individuales, pudiendo cada uno de éstos ser referenciado independientemente.

De una dimensión (vector)

Un array es un conjunto finito y ordenado de elementos homogéneos. La propiedad “ordenado” significa que el elemento primero, tercero…, enésimo de un array puede ser identificado. Los elementos de un array son homogéneos, es decir, del mismo tipo de datos. Un array puede estar compuesto de todos sus elementos de tipo cadena, otro puede tener todos sus elementos de tipo entero, etc.

El tipo más simple de array es el array unidimensional o vector. Un vector de una dimensión denominado NOTAS que consta de n elementos se puede representar por la Figura 1.1

 

El subíndice o índice de un elemento (1, 2, …, i, n) designa su posición en la ordenación del vector.
El valor mínimo permitido de un vector se denomina límite inferior  del vector y el valor máximo permitido se denomina límite superior.
El número de elementos de un vector se denomina rango del vector.

Ejemplo:
Un vector que representa las frutas que se venden en un supermercado:

Los vectores se almacenan en memoria central de la computadora en un orden adyacente. Así, un vector de cincuenta números denominados NUMEROS se representa gráficamente por cincuenta posiciones de memoria sucesivas.

 

Operaciones con vectores:
Las operaciones que se pueden realizar con vectores durante el proceso de resolución de un problema son:

  • Asignación
  • Lectura/escritura
  • Recorrido
  • Actualizar
  • Ordenación
  • Búsqueda

Las operaciones implican el procesamiento o tratamiento de los elementos individuales del vector.

Las notaciones algorítmicas son:

tipo
nombre_array :  array [liminf . . limsup] de tipo

 

 

donde:
nombre_array             nombre válido del array
liminf . . limsup             límites inferior y superior del rango del array
tipo                               tipo de datos de los elementos del array: entero, real carácter

tipo
nombres :  array [1 . . 10] de carácter
var
N: nombres

 

 

 

Significa que NOMBRES es un array (vector) unidimensional de diez elementos (1 a 10) de tipo carácter.

  • ASIGNACIÓN

La asignación de valores a un elemento del vector se realizará con la instrucción de asignación
vector [34] Ñ 12
vector[34] := 12

  • LECTURA / ESCRITURA

La lectura/escritura de datos en arrays u operaciones de entrada/salida normalmente se realizan con estructuras repetitivas, aunque puede también hacerse con estructuras selectivas.
lee(vector[3])
escribe(vector[3])

  • RECORRIDO (acceso secuencial):

A la operación de efectuar una acción general sobre todos los elementos de un vector se la denomina recorrido del vector. Estas operaciones se realizan utilizando estructuras repetitivas, cuyas variables de control (por ejemplo, I) se utilizan como subíndices del vector (por ejemplo, S[I]). El incremento del contador del bucle producirá el tratamiento sucesivo de los elementos del vector.
desde IÑ1 hasta 20 hacer
lee( vector[I] )
fin_desde

Los elementos del vector se pueden leer también con bucles mientras  o  repetir.



La salida o escritura de vectores se representa de un modo similar.
desde IÑ1 hasta 20 hacer
escribir( vector[I] )
fin_desde

  • ACTUALIZAR

La operación de actualizar un vector puede constar a su vez de tres operaciones elementales:

Añadir    elementos

Borrar     elementos

Insertar   elementos

Se denomina añadir datos a un vector, la operación de añadir un nuevo elemento al final del vector. La única condición necesaria para esta operación consistirá en la comprobación de espacio de memoria suficiente para el nuevo vector; dicho de otro modo, que el vector no contenga todos los elementos con que fue definido al principio del programa.

La operación de insertar un elemento  consiste en introducir dicho elemento en el interior del vector. En este caso se necesita un desplazamiento previo hacia abajo para colocar el elemento nuevo en su posición relativa.

La operación de borrar un elemento al final del vector no presenta ningún problema; el borrado de un elemento del interior del vector provoca el movimiento hacia arriba de los elementos inferiores a él para reorganizar el vector.

De dos dimensiones (tablas/matrices)

El array bidimensional se puede considerar como un vector de vectores. Es, por consiguiente, un conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es significativo y en el que se necesita especificar dos subíndices para poder identificar cada elemento del array.
Para evitar la ambigüedad, los elementos de un array bidimensional se referencían con dos subíndices: el primer subíndice se refiere a la fila y el segundo subíndice se refiere a la columna.
Por ejemplo:

Un array bidimensional M, también denominado matriz o tabla, se considera que tiene dos dimensiones y necesita un valor para cada subíndice para poder identificar un elemento individual. En notación estándar, normalmente el primer subíndice se refiere a la fila del array, mientras que el segundo subíndice se refiere a la columna del array. Es decir, B[I, J] es el elemento de B que ocupa la Iª  fila y la Jª columna, como se indica en la Figura 1.2.

 

 

Los arrays de dos dimensiones son muy frecuentes: las calificaciones de los estudiantes de una  clase se almacenan en una tabla NOTAS de dimensiones NOTAS[20, 5] , donde 20 es el número de alumnos y 5 el número de asignaturas.

Tres  o más dimensiones.

Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta n-dimensiones.  Los conceptos de rango de subíndices y número de elementos se pueden ampliar directamente desde arrays de una y dos dimensiones a estos arrays  de orden más alto. En general, un  array  de n-dimensiones requiere que los valores de la n subíndices puedan ser especificados a fin de identificar un elemento individual del array. Si cada componente de un array tiene n subíndices, el array se dice que es sólo de n-dimensiones.

 

Ejemplo: Un  array de tres dimensiones puede ser uno que contenga los datos relativos de número de estudiantes de la universidad ALFA de acuerdo a los siguientes criterios:

  • cursos (primero a quinto)
  • sexo
  • diez facultades

El array  ALFA puede ser de dimensiones 5 por 2 por 10 (o 10´5´2 o 10´2´5, 2´5´10, etc).

Almacenamiento de un array

Debido a que la memoria de la computadora es lineal, un array multidimensional debe estar linealizado para su disposición en el almacenamiento. Los lenguajes de programación pueden almacenar los arrays en memoria, de dos formas: orden de fila mayor y orden de columna mayor.
El medio más natural en que se leen y almacenan los arrays  en la mayoría de los compiladores es el denominado orden de fila mayor. Por ejemplo, un array B[1:2, 1:3]

 

 

EJERCICIO # 1: OPERACIONES CON ARREGLOS.

HERRAMIENTAS, MATERIALES Y EQUIPOS:

  • Hojas blancas, lápiz
  • Lenguaje C#
  • Pc
PROCEDIMIENTO:
  • Resuelva cada uno de los ejercicios de acuerdo al procedimiento que se indica.
  • Elabore el algoritmo de cada uno de los problemas planteados.
  • Codifique los algoritmos en Lenguaje C#.
  • Compruebe que la ejecución y sus resultados  sean correctos.
EVIDENCIAS:
        Documentos:
  • Hoja de presentación
  • Algoritmos de cada uno de los ejercicios.
  • Diagramas de Flujo de cada método.
  • Impresión del Código en el lenguaje C#.
  • Impresión de la ejecución. (Pantalla con resultados)
  • Conclusión.
         Programas:
  • Toda la carpeta
  • Todos los ejercicios serán entregados en un solo disco. (El disco debe traer su etiqueta correspondiente).

PLANTEAMIENTO DE PROBLEMAS:

  • Determinar la frecuencia de aparición de cada letra en un texto tecleado por el usuario.
  • Escribir un programa que usa tablas para multiplicar matrices. El programa leerá cuatro valores enteros de la consola y los pondrá en una matriz entera 2 x 2. A continuación leerá otros cuatro valores enteros de la consola y los pondrá en una segunda matriz entera 2 x 2. Luego multiplicará las dos matrices, almacenando el resultado en una tercera matriz entera 2 x 2. Finalmente, imprimirá la matriz resultante en la consola.

La fórmula para multiplicar dos matrices A y B es la siguiente:

 

    1. Escribir un programa que permita obtener el número de elementos positivos de una tabla.
    2. Se dispone de N temperaturas almacenadas en un array. Se desea calcular su media y obtener el número de temperaturas mayores o iguales que la media.
    3. Una empresa tiene diez almacenes y necesita crear un algoritmo que lea las ventas mensuales de los diez almacenes, calcule la media de ventas y obtenga un listado de los almacenes cuyas ventas mensuales son superiores a la media.
    4. Cada alumno de una clase de Lic. en Computación tiene notas correspondientes a ocho asignaturas diferentes. Escribir un programa que permita calcular la media de cada alumno.

Conclusión.

Un array (vector, lista o tabla) es una estructura de datos que almacena un conjunto de valores, todos del mismo tipo de datos. Un array de una dimensión, también conocido como array unidimensional o vector, es una lista de elementos del mismo tipo de datos que se almacenan utilizando un único nombre. En esencia, un array es una colección de variables que se almacenan en orden en posiciones consecutivas en la memoria de la computadora.
Un array unidimensional (vector) es una estructura de datos que se puede utilizar para almacenar una lista de valores del mismo tipo de datos.
Un array de dos dimensiones (tabla) se declara listando el tamaño de las filas y de las columnas junto con el nombre del array y el tipo de datos que contiene.