Tema07_Arreglos

download Tema07_Arreglos

of 16

Transcript of Tema07_Arreglos

Universidad Nacional Autnoma de Nicaragua - Len Facultad de Ciencias y Tecnologa Departamento de Computacin Lgica de Programacin

ArreglosLic. Luis Ernesto Daz Beteta

Nota: Todos los ejemplos mostrados en este folleto fueron probados utilizando PseInt con la versin liberada el 2011-08-01. Adems se a tratado de apegarse de la mejor forma posible a la sintaxis de la versin del interpretador de Pseudocdigo que utiliza esta versin de PseInt.

GeneralidadesEn los temas anteriores se ha manejado el concepto de variable como todo campo que permite que el contenido que se encuentra almacenado en el espacio de memoria asignado a dicho campo, pueda ser alterado en el transcurso de la ejecucin del programa. Debemos comprender que a una variable se le asigna un espacio en memoria donde se puede guardar de forma temporal un nico valor, bien sea numrico, carcter o lgico. Frecuentemente tenemos la necesidad de almacenar una coleccin de datos del mismo tipo. Por ejemplo, cuando se leen las notas de los estudiantes de un curso en particular. Los datos siempre que estn relacionados se pueden organizar en estructuras, de tal manera que podemos tener un conjunto de datos numricos, lgicos, o caracteres manejados a travs de un mismo nombre. Una estructura de datos es la organizacin que reciben los datos para que sean tratados como una unidad, esta unidad recibe el nombre de arreglo. Un arreglo es un conjunto finito de componentes del mismo tipo, los cuales se diferencian o relacionan a travs de un subndice. Todos los elementos del arreglo estn ubicados de forma consecutiva y tienen el mismo tamao o espacio en memoria y por lo tanto igual forma de almacenamiento.

ConceptodearregloUn arreglo se define en forma abstracta como una coleccin finita de elementos homogneos ubicados de consecutivamente en memoria. Entindase por finito que todo arreglo tiene una cantidad especifica de elementos y por homogneos que todos los elementos pertenecientes al arreglo son del mismo tipo, por ejemplo, un arreglo puede almacenar enteros o caracteres pero no ambos. A cada uno de los datos que se almacenan en el arreglo se le llama elemento del arreglo y se enumeran consecutivamente por medio de valores enteros a los que llamamos ndices. Al ndice ms pequeo del arreglo se le denomina limite_inferior (lower) y al alto se le denomina limite_superior (upper). Los elementos del arreglo pueden ser de cualquier tipo de dato o campo. Un arreglo puede contener, por ejemplo, la edad de los alumnos de una clase o las temperaturas de cada da de un mes en una ciudad determinada.

DeclaracindeunarregloLos arreglos se declaran igual que cualquier otro tipo de variable, excepto que se le debe indicar al compilador el tamao o longitud del mismo. Para indicar al compilador el tamao o longitud del arreglo se debe hacer seguir al nombre del arreglo el tamao encerrado entre corchetes. La sintaxis para declarar un arreglo es:

Dimensionnornbre_arreglo[tamao(,tamao,...)];

Donde: Dimension, es la palabra reservada del lenguaje que indica que se esta declarando un arreglo. nombre_arreglo, corresponde al identificador por medio del cual podemos referenciar al arreglo. tamao, es la cantidad de elementos que ser capaz de almacenar el arreglo.

Atencin Obsrvese que en la sintaxis de declaracin de un arreglo tenemos una parte encerrada dentro de parntesis, esto indica que esa parte es opcional. El por que de esto, se explicara en la parte de clasificacin de un arreglo. Al declarar un arreglo es necesario indicarle al compilador la longitud (tamao) del mismo ya que el compilador reservara espacio de memoria suficiente para almacenar a cada uno de los elementos del arreglo. Ejemplos de declaracin de arreglos:Dimension a[5]; //se declara un arreglo capaz de almacenar 5 elementos Dimension z[10]; //se declara un arreglo capaz de almacenar 10 elementos Dimension mi_arreglo[8]; //se declara un arreglo capaz de almacenar 8 elementos

ClasificacindeunarregloComo hemos mencionado anteriormente un arreglo al momento de su declaracin debe poseer un tamao o longitud ya que el compilador asignara la memoria suficiente para poder almacenar cada uno de los elementos del arreglo. Un arreglo adems de poseer un tamao tambin posee una dimensin, de tal forma que un arreglo puede clasificarse de forma general en: vectores (arreglos de una sola dimensin) o arreglos dimensionales (arreglos que tienen ms de una dimensin). Arreglos unidimensionales o vectores Un vector es un arreglo donde los elementos que lo conforman estn dispuestos bajo un mismo concepto de clasificacin (fila o columna), es decir, los datos estn organizados de una manera lineal, por lo que para hacer referencia a un elemento del arreglo es necesario un nico ndice, que indique la posicin relativa del elemento en el arreglo. Grficamente un vector puede ser representado como fila o como columna, por ejemplo si tenemos la siguiente declaracin:Dimension Vector[6];

El arreglo llamado vector puede ser representado por medio de cualquiera de las siguientes formas:

En el apartado Concepto de arreglo, se hablo sobre limite_inferior o lower y limite_superior o upper. Normalmente el valor de lower es cero y el valor de upper es el equivalente al tamao del arreglo menos la unidad, en otras palabras si el tamao del arreglo es de 6 elementos lower posee el valor 0 y upper el valor 5 (n-1, siendo n el tamao del arreglo)

Atencin Cabe sealar que normalmente los arreglos inician en la posicin 0 y terminan en la posicin n-1. Estas posiciones de los ndices del arreglo esta dada por el lenguaje de programacin que se utilice PseInt tiene como posicin inicial o lower la 1 y como posicin final o upper el tamao del arreglo o n. Esto ltimo va en dependencia de la versin de PseInt que se este utilizando ya que en versiones recientes los rangos de los ndices van de 0 a n-1.

Arreglos dimensionales Se considera arreglo dimensional a todo aquel que posee ms de una dimensin, normalmente se distinguen los arreglos de dos dimensiones como bidimensionales y arreglos de ms de dos dimensiones como multidimensionales. A los arreglos de dos dimensiones (bidimensionales) se les conoce como matrices y son estructuras de datos que organizan su informacin en forma de tablas, es decir, los elementos que la conforman estn dispuestos bajo dos conceptos de clasificacin (fila y columna). Para poder indicar el lugar donde se encuentra un determinado elemento, es necesario utilizar dos ndices: uno para indicar el rengln o fila y otro para indicar la columna. Puede mirarse una matriz como un vector de vectores; por lo tanto, es un conjunto de componentes en el que se necesitan dos subndices para identificar un elemento que pertenezca al arreglo. Por ejemplo, si tenemos un arreglo llamado matriz de dos dimensiones como se muestra a continuacin:Dimension matriz[3, 6];

Grficamente podemos representar al arreglo bidimensional como se muestra a continuacin: 0 0 1 2 1 2 3 4 5

Un arreglo bidimensional N * M tiene N filas y M columnas; por lo tanto, tiene N * M elementos dispuestos interiormente en memoria en forma sucesiva. Al declarar un arreglo de ms de dos dimensiones o multidimensional es todo aquel que posee ms de dos dimensiones. Por ejemplo podemos declarar un arreglo de tres dimensiones llamado matriz_multi de la siguiente forma:Dimension matriz_multi[2][4][3]

A continuacin se presenta un ejemplo grfico de un arreglo multidimensional de N x M x 3

ManipulandoelcontenidodeunarregloDos operaciones bsicas pueden ser llevadas a cabo sobre los elementos de un arreglo, estas son: Almacenamiento: establecer un valor al elemento del arreglo. Extraccin: se obtiene el valor de un elemento del arreglo

Atencin Durante la edicin de este documento se utilizo la versin de PseInt liberada en 2011-08-01 y esta versin se utiliza la versin del interprete de pseudocdigo que se muestra:

Esta versin (1.3 20110801) del interprete tiene como valor para el limite_inferior 1 y como valor para el limite_superior el tamao indicado al momento de definicin de el arreglo

Por ejemplo, si definimos un arreglo llamado array con un tamao de tres elementos como se muestra a continuacin:Dimension array[3];

Son validos los ndices que estn en el rango de 1 a 3, es decir, que si intentamos acceder a la posicin 0 o posicin 4 del arreglo llamado array se producir un error. Operacin de almacenamiento en un arreglo Esta nos permite almacenar un valor en la posicin que se indique por medio del ndice, por ejemplo: si tenemos un arreglo llamado mi_vector con un tamao de tres elementos y queremos almacenar en la posicin 1 el valor 10, la sentencia sera:mi_vector[1]