las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la...

32

Upload: priscila-de-pena

Post on 18-Apr-2015

3 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas
Page 2: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas de datos, y el cómputo de vectores y matrices, y muchos otros propósitos.

Von Neumann escribió el primer programa de ordenación de un arreglo en 1945.

Los primeros languajes de programación de alto nivel incluyendo Fortran (1957), Cobol (1960)y Algol tenían soporte para arreglos multidimensionales, también C (1972).

Page 3: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Los arreglos son usados para implementar vectores matemáticos y matrices, así como otros tipos de tablas rectangulares. Muchas bases de datos, pequeñas y grandes, consisten o incluyen arreglos unidimensionales cuyos elementos son registros.

Page 4: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Un arreglo o arreglo es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos del arreglo. Desde el punto de vista lógico un arreglo se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).

En principio, se puede considerar que todos los arreglos son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez arreglos (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de arreglos multidimensionales, aunque los más fáciles de imaginar son los de una, dos y tres dimensiones.

Page 5: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

0 1 2 3 4 5 6 7 8 9

Arreglo con 10 elementos

Todo arreglo se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del arreglo. Dichas posiciones son llamadas índice.

Existen tres formas de indexar los elementos de una matriz:Indexación base-cero (0): En este modo el primer elemento del arreglo será la componente cero ('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el arreglo tiene 'n' componentes la última tendrá como índice el valor 'n-1'. El arreglo es un ejemplo típico que utiliza este modo de indexación.

Page 6: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Indexación base-uno (1): En esta forma de indexación, el primer elemento del arreglo tiene el índice '1' y el último tiene el índice 'n' (para un arreglo de 'n' componentes).

Indexación base-n (n): Este es un modo versátil de indexación en la que el índice del primer elemento puede ser elegido libremente, en algunos lenguajes de programación se permite que los índices puedan ser negativos e incluso de cualquier tipo escalar.

Page 7: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Almacena los elementos del arreglo en posiciones de memoria continua

Tienen un único nombre de variable que representa a todos los elementos, y éstos a su vez se diferencian por un índice o subíndice.

Acceso directo o aleatorio a los elementos individuales del arreglo.

Page 8: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Pasos para utilizar un arregloDeclarar el arregloCrear el arreglo Inicializar los elementos del arregloUsar el arreglo

Page 9: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

La representación de un elemento en un arreglo se suele hacer mediante el identificador del arreglo seguido del índice entre corchetes, paréntesis o llaves:

Ejemplos:arreglo[índice_1,índice_2...,índice_N]

Java, Perl

arreglo[índice_1][índice_2]...[índice_N]

C, C++, PHP

Page 10: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

La forma de acceder a los elementos del arreglo es directa; esto significa que el elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento (en contraposición, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rápida a ese elemento).

Para trabajar con arreglos muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles o ciclos.

Page 11: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Pseudocódigo que recorre un arreglo

i = 0 mientras (i < longitud) #Se realiza alguna operación con el arreglo en la i-ésima

posición f(v[i])

i=i+1 fin_mientras

Page 12: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Lo más común es que un arreglo tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de arreglo y del lenguaje de programación un arreglo podría tener una cantidad variable de datos. En este caso, se les denomina arreglos dinámicos, en oposición, a los arreglos con una cantidad fija de memoria asignada se los denomina arreglos estáticos.

Page 13: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

int v[5]; int i; for (i=0 ; i<5 ; i++) { v[i] = 2*i; }

Page 14: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

0 1 2 3 4

0 2 4 6 8

Page 15: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Un arreglo de una dimensión (unidimensional), también llamado vector o fila, es un tipo de datos estructurado compuesto de un número determinado de elementos, de tamaño fijo y elementos homogéneos (del mismo tipo). La característica de tamaño fijo se refiere a que el tamaño del arreglo debe ser conocido en tiempo de compilación.

Page 16: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Por ejemplo, si deseamos conservar las calificaciones de los 50 estudiantes de un examen de estructura de datos, se necesita reservar 50 posiciones de memoria, dar un nombre al arreglo y a cada uno de los 50 estudiantes asignarles una posición o índice del arreglo.

calif[0] 10

calif[1] 9

calif[2] 8

calif[3] 9

calif[n] 10

Page 17: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Un arreglo bidimensional (tabla o matríz) es un arreglo con 2 índices.

calif[0] 10 9

calif[1] 9 8

calif[2] 8 9

calif[3] 9 9

calif[n] 10 10

Page 18: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

<data type> array_name[size_of_array];

char game_map[4];

Page 19: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

int emp_code[3];

Page 20: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Los arreglos unidimensionales pueden ser inicializados en 2 formas: Inicializados en la declaración Inicializados por asignación

Page 21: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

<data type> array_name[size_of_array] = {element 1, element 2, ...};

char game_map[3] = {'S', 'R', 'D'};

Page 22: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

char game_map[3]; game_map[0] = 'S';game_map[1] = 'R';game_map[2] = 'D';

Page 23: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

array_name[index_of_element];

array_name[index_of_element] = value;

game_map[0]; //valor de 'S'

game_map[1]; //valor de ' R'

game_map[2]; //valor de 'D'

Page 24: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Tratar de acceder a un elemento con un índice fuera de los límites de un arreglo provocará un fallo en la ejecución.

Page 25: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

<data type> array_name[size_of_first_dimension][size_of_second_dimension] ...

Este ejemplo declara un arreglo multidimensional de 10 columnas por 10 filas de tamaño.

char game_map[10][10];

Este ejemplo declara un arreglo de 3 dimensiones (10x10 en el plano horizontal y 5 en el plano vertical):

char game_map[10][10][5];

Page 26: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

Pueden inicializarse también al momento de la declaración o por asignación.

<data type> array_name[size_of_dimension1][size_of_second_dimension2] ... = {

{element 1, element 2, element 3, …},... }};

Page 27: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

char game_map[2][4];

Page 28: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

char game_map[2][4] = { {'x', 'b', 'f', ''} , {'b', 't', '' } };

Page 29: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

int game_map[2][4];

game_map[0][0]=1; game_map[0][1]=2;game_map[0][2]=3; game_map[0][3]=4game_map[1][0]=6; game_map[1][1]=7; game_map[1][2]=5;

Page 30: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

//ciclo x la primera dimensión

for (i = 0; i < 10; i++) {

   //ciclo x la segunda dimensión

   for (j = 0; j < 10; j++) {

     //ciclo por la tercera dimensión

     for (k = 0; k < 10; k++)

          int_array[i][j][k]) = i * j * k;

     }

}

Page 31: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

array_name[dim1_index][dim2_index] ... [dimn-1_index];

array_name[index1][index2] ... [index s-1] = value;

game_map[1][1] = 't';

Page 32: Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas

for (i = 0; i < 10; i++) {

     for (j = 0; j < 10; j++) {

          printf("%c", game_map[i][j]);

     }

}