Anda di halaman 1dari 48

Arreglos

MSc. Cesar Luza Montero.


cluza@uigv.edu.pe
Objetivos de aprendizaje
• Al final de la sesión, el estudiante:
• Elabora programas para implementar y manipular arreglos
(unidimensionales, bidimensionales y tridimensionales).

2
Contenido
• Concepto de Arreglo
• Vectores
• Matrices

3
Concepto de Arreglo
• Resuelva el siguiente problema:
• Leer 3 números enteros, obtener el promedio de ellos. Mostrar por
pantalla dicho promedio y, también, mostrar los números ingresados que
sean mayores que dicho promedio.
• Ahora, con 10 números, después con 50 números
• Es posible resolver este problema con lo aprendido sobre tipos de
datos simples? ¿Por qué?

4
Concepto de Arreglo
Un Arreglo es una colección finita y ordenada de
elementos homogéneos

0 1 2 3 …….. N

Finito: tiene un limite, es Ordenado: debe Homogeneo: todos los


decir, debe definirse el definirse el primer elementos son del mismo tipo
número máximo de elemento, el segundo, el (todos enteros, todos
elementos que contendrá el tercero, …y el n-esimo booleanos, etc.) pero nunca
arreglo. elemento una combinación de distintos
tipos

5
Concepto de Arreglo
Por ejemplo, para un vector de
enteros: HOMOGENEO

Datos del mismo tipo


FINIT0

int DATO[ 4 ] ;

DATO 10 5 20 80
0 1 2 3

ORDENADO

Uso de índices

6
Concepto de Arreglo
• Un arreglo tiene dos partes: los elementos y los índices
• Elementos: son los valores que se almacenan en cada una de las
casillas.
• Índices: permiten hacer referencia a los elementos. Puede ser
cualquier tipo ordinal (entero, carácter, enumerado)

09 15 12

0 1 2 n

7
Concepto de Arreglo
Ejemplo

Sea el arreglo V

09 15 12 20 30 10

0 1 2 3 4 5 n

V[1] hace referencia al elemento 1 del arreglo, es decir 15

8
Tipos de Arreglo
Unidimensionales / vectores vec 10 5 20 80

mat 56 7
Bidimensionales / matrices
9 10

mul
Multidimensionales 8 15 1
20 5 22

9
Tipos de Arreglos

10
Tipos de Arreglos

11
Declaración de Arreglos
• En C++
• <tipo> nombre [tamaño]; //Vector
• <tipo> nombre [tamañoX][tamañoY]; // Matriz
• <tipo> nombre [tamañoX][tamañoY][tamañoZ]; // 3 dimensiones
Ejemplo
int V [10];
Int M [3][4]:
Int T [4][5][6];

12
Declaración de Arreglos

13
Autoevaluación
1. ¿Qué es un arreglo?
2. ¿Qué significa que un arreglo sea finito, homogéneo y ordenado?
3. Declare tres vectores de enteros, caracteres, reales, con 50
elementos.
4. Declare un vector para guardar el apellido paterno de los
estudiantes de la asignatura de estructura de datos.
5. Declare un matriz de enteros de 3 filas y 4 columnas.

14
Contenido
• Concepto de Arreglo
• Vectores
• Matrices

15
Vectores
Vector de enteros 10 5 20 80

Vector de cadenas UIGV UNMSM UNI USIL

Vector de reales 3.4 70.0 20 4.4

09087 05678 02013 08077


Vector de Carlos María Ana Pablo
registros 10 15 11 17

16
Vectores
• Indexación: Podemos acceder a cada uno de los elementos de un
vector utilizando un índice.
• El índice indica la posición del elemento dentro del vector.
• En C++ el primer elemento es siempre el índice 0.
• Ejemplo:
Int a[10];
1º Elemento : a[0]
2º Elemento : a[1]
3º Elemento : a[2]
...
10º Elemento : a[9] // es el ultimo

17
Vectores
• Sea el vector: float A[8];
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7]
16.0 12.0 6.0 8.0 2.5 12.0 14.0 -54.5
1ro. 2do. 3er. 4to. 5to. 6to. 7mo. 8vo.

cout << A[0]; Muestra el valor de A[0], o sea 16.0.


A[3] = 25.0; Guarda el valor 25.0 en A[3].
sum = A[0] + A[1]; Guarda la suma de A[0] y A[1], osea 28.0, en la variable sum.
sum += A[2]; Suma A[2] a sum. El Nuevo valor de sum es 34.0.
A[3] += 1.0;. Suma 1.0 a A[3]. El Nuevo A[3] es 26.0.
A[2] = A[0] + A[1]; Guarda la suma de A[0] y A[1] en A[2]. El Nuevo A[2] es 28.0

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7]


16.0 12.0 28.0 26.0 2.5 12.0 14.0 -54.5
1ro. 2do. 3er. 4to. 5to. 6to. 7mo. 8vo.

18
Vectores
Otra forma de declaración en C++
• Ejemplo:
const int MAX = 10;
...
int VectorInt [MAX];

19
Vectores
• Declaración de 4 vectores para la producción en una fabricación

const int numEmp = 10; // numero de empleados


bool enVacaciones [numEmp];
Int diasVacaciones [numEmp];
enum dia {domingo, lunes, martes, miércoles, jueves, viernes,
sabado};
dia DiaLibre [numEmp];
float horasPlanta[7];

20
Vectores
• Ejemplo de arreglos paralelos
enVacaciones diasVacaciones diaLibre
[0] true [0] 10 [0] Lunes
[1] False [1] 12 [1] Miércoles
[2] true [2] 3 [2] Martes
[3] False [3] 8 [3] Viernes
[4] true [4] 15 [4] Viernes
[5] False [5] 5 [5] Lunes
[6] true [6] 6 [6] Jueves
[7] False [7] 9 [7] Lunes
[8] true [8] 10 [8] Martes
[9] False [9] 15 [9] Jueves

21
Vectores
• Ejemplo de arreglo con índice enumerado

horasPlanta
HorasPlanta [domingo] 0.0
HorasPlanta [lunes] 8.0
HorasPlanta [martes] 16.0
HorasPlanta [miercoles] 24.0
HorasPlanta [jueves] 8.0
HorasPlanta [viernes] 16.0
HorasPlanta [sábado] 0.0

22
Inicialización de Vectores
Sea las declaraciones siguientes:
const int SIZE = 7;
int scores[SIZE] = {100, 73, 88, 84, 40, 97};
char grades[] = {'A', 'C', 'B', 'B', 'F', 'A'};
char myName[SIZE] = {'F', 'R', 'A', 'N', 'K'};
Represente gráficamente los vectores

23
Recorrido en Vectores
Acceso secuencial a los elementos de un vector
• El recorrido o procesamiento a todos los elementos de un vector es en orden
secuencial, comenzando con el primer elemento (subíndice 0).
• Para ingresar datos en un vector, imprimir su contenido, o realizar otras
tareas de procesamiento secuencial, use un bucle for cuya variable de
control de bucle (i) también sea el subíndice del vector (X [i]).
• Al aumentar el valor de la variable de control de bucle en 1, se procesa el
siguiente elemento del vector
• Ejemplo:
const int MAX = 10;
int X [MAX];
for(i = 0; i < MAX; i++)
X[i] = 0;

24
Recorrido en Vectores
Asignando 0 a todos los elementos de un vector
int a[10];
int i;
for(i = 0; i < 10; i++)
a[i] = 0;
Lectura
for (i = 0; i < 10; i++)
cin>> a[i];
Escritura
for (i = 0; i < 10; i++)
cout << a[i];

25
Recorrido en Vectores
• Lectura
int i;
for (i=0;i<n;i++)
{
cout <<endl<<"ingrese elemento "<< i << " : ";
cin >> V[i];
}

• Escritura
int i;
for (i=0;i<n;i++)
{
cout <<endl<<"Elemento "<< i << " : ";
cout << V[i]<<endl;
}

26
Recorrido en Vectores
Otro ejemplo

Represente gráficamente el vector

27
Recorrido en Vectores

28
Recorrido en Vectores

29
Recorrido en Vectores

30
Operaciones en Vectores
Primitiva para el vector t con N elementos
y una variable VALOR
Primer I0

Lectura VALOR  t [ i ]

Avanzar ii+1

Verificar final i<N

Escribir T [ i ]  VALOR

Ultimo I  N -1

31
Operaciones en Vectores
• Actualización
• Añadir
• Eliminar
• Insertar

• Ordenación
• Búsqueda

32
Operaciones en Vectores

33
Operaciones en Vectores

34
Operaciones en Vectores

35
Autoevaluación
1. Declare un vector de 10 elementos para guardar las direcciones
de correo electrónico de los estudiantes

36
Contenido
• Concepto de Arreglo
• Vectores
• Matrices

37
Matrices
• Matriz o Tabla
• Es un vector de vectores (array bidimensional)
Columna 0 Columna 1 Columna 2 ... Columna n-1
0

Fila 1

Fila n-1

38
Matrices
• Declaración
• TipoDato nombre M [nfilas] [ncolumnas];

Ejemplo
Int A [2][3];
char L [4][5] ;

39
Matrices
Declaración
char m[2][3]; // forma una tabla de dos filas y tres columnas
// cada fila es un arreglo de una dimensión
Nombre del grupo
m // indica la localización del grupo en la memoria
Nombre de las filas
m[0] // primera fila -> indica la localizacion de la fila dentro del grupo
m[1] // segunda fila -> indica la localizacion de la fila dentro del grupo
Nombre de los elementos
m[0][0] // primer elemento
m[0][1] // segundo elemento
m[0][2] // tercer elemento
m[1][0] // cuarto elemento
m[1][1] // quinto elemento
m[1][2] // sexto elemento

40
Matrices
• Inicializando
• Int A [2][3] = {10, 20, 30, 40, 50, 60};
0 1 2
0 20 30
1 40 10 60

• cout << A[1][2];


• cout << A[0][1];
Otra forma de inicializar
• Int A [2][3] = {{10, 20, 30}, {40, 50, 60}};

41
Recorrido en Matrices
Acceso secuencial a los elementos de un matriz
• El recorrido o procesamiento a todos los elementos de una matriz es en orden
secuencial, se puede realizar por filas o por columnas y debe realizar con dos
bucles anidado.

Ejemplo de Recorrido por Filas

const int MaxFil =3, MaxCol= 5;


int X [MaxFil][MaxCol];

Int i, j ;
for(int i=0;i<MaxFil;i++){
for(int j=0;j<MaxCol;j++){
X[i][j]=0;
}
}

42
Recorrido en Matrices
Asignando 0 a todos los Lectura
elementos de una matriz for(i = 0; i < 10; i++) {
int a[10] [7]; for(j= 0; j < 7; j++) {
int i, j; cin >> a[i] [j];
for(i = 0; i < 10; i++) { }
for(j= 0; j < 7; j++) {
}
a[i] [j] = 0;
Escritura
}
for(i = 0; i < 10; i++) {
}
for(j= 0; j < 7; j++) {
cout << a[i] [j];
}
}

43
Recorrido en Matrices
Ejercicio
• Hacer un programa para rellenar una matriz pidiendo al usuario el número
de filas y columnas, Posteriormente mostrar la matriz en pantalla.

44
Matrices

45
Arreglo tri dimensionales
Declaracion
double w[2][2][3]; // forma dos tablas de dos filas y tres columnas
// cada fila es una secuencia de tres elementos
// cada fila es un arreglo de una dimension
// la declaracion indica que hay dos arreglos de dos dimensiones
// los arreglos de dos dimensiones tienen a su vez dos arreglos de una dimension
Nombre del grupo
w // indica la localizacion del grupo en la memoria
Nombre de las tablas
w[0] // primera tabla // indica la localizacion de la tabla dentro del grupo
w[1] // segunda tabla. indica la localizacion de la tabla dentro del grupo
Nombre de las filas
w[0][0] // primera tabla, primera fila
w[0][1] // primera tabla, segunda fila
w[1][0] // segunda tabla, primera fila
w[1][1] // segunda tabla, segunda fila
Nombre de los elementos
w[0][0][0] // primer elemento
w[0][0][1] // segundo elemento
w[0][0][2] // tercer elemento
w[0][1][0] // cuarto elemento
w[0][1][1] // quinto elemento
w[0][1][2] // sexto elemento
w[1][0][0] // septimo elemento
w[1][0][1] // octavo elemento
w[1][0][2] // noveno elemento
w[1][1][0] // decimo elemento
w[1][1][1] // undecimo elemento 46
w[1][1][2] // duodecimo elemento
Preguntas

47
47
48 48

Anda mungkin juga menyukai