Vectores y Matrices
Arreglo:
es una estructura de datos que almacena
bajo el mismo nombre (variable) a una colección
finita de datos del mismo =po (numéricos o
alfanuméricos, pero no una combinación de
dis=ntos =pos).
Los Arreglos pueden ser Uni-‐, Bi-‐ o Mul=-‐
dimensionales.(vector, tabla, etc.)
Caracterís=cas
•
Almacena los elementos en posiciones con.guas.
•
Tienen un mismo nombre de variable o iden.ficador, que
representa a todos los
elementos.
•
Los elementos son referenciados mediante un índice que
especifica el lugar que ocupa cada elemento.
•
Se .ene acceso directo aleatorio a los elementos
individuales del arreglo.
•
En el contexto de este curso lo trataremos como una
estructura de datos está.ca, se les
asigna una can=dad fija
de memoria cuando se declara la variable.
VECTORES
Arreglos unidimensionales
•
Ejemplo: Se necesitan almacenar las
calificaciones que obtuvieron 50,
alumnos.
Para hacerlo se necesita reservar 50
posiciones de memoria, dar un nombre al
arreglo y a cada uno de los 50 estudiantes
asignarles una calificación.
Uso del índice de un arreglo
•
Cada elemento del vector se puede procesar
como si fuera una variable simple.
•
El valor del índice indica cual es el elemento que
se está referenciando, a través de ellos pueden
realizarse las siguientes operaciones:
–
Asignar valores a un elemento del vector
A[1]
ß
25
B[i]
ß
“rojo”
Estado[100*j-‐1]
ß
falso
Leer a[1], b[i]
–
U=lizar en expresiones elementos de vectores
»
Max
ß
A[n]
»
A[1]
ß
A[1]+A[n]
»
A[i]
ß
A[i]*j+3
»
si (A[n]<50) entonces...
–
Mostrar elementos de vectores
»
Mostrar (“el elemento 1 del vector es”, A[1])
Uso del índice de un arreglo
Uso del índice de un arreglo
•
Los índices de un arreglo deben ser un
intervalo de =po simple:
–
entero,
–
lógico,
–
carácter,
–
enumerado o
Operaciones con Arreglos
•
Los arreglos no se pueden leer/escribir en una
sola sentencia. La lectura o escritura de un
arreglo se debe hacer elemento a elemento, y
para realizar estas operaciones se deben leer
o visualizar los componentes de un arreglo
mediante estructuras repe==vas, haciendo
variar el índice.
Operaciones con Arreglos
•
El vector debe ser dimensionado. Al dimensionar un vector le decimos a la
máquina que reserve los espacios de memoria necesarios para los
elementos del vector.
•
Los problemas relacionados con vectores tendrán casi siempre esta forma
Inicio
Definir Vector
Leer dimensión del vector
Dimensionar Vector
Cargar Vector
Procesamiento de los elementos del vector
Imprimir Vector
fin
•
Por lo tanto, vamos a tener tres
desde...fin desde
bien diferenciados:
–
Un bucle para la carga
–
Un bucle para el proceso
–
Un bucle para la impresión
Carga de un vector
•
Ejercicio: Cargar un vector de 30 componentes.
inicio
Definir V,l como Enteros
dimensionar V[30]
para I
ß
1 hasta 30 hacer
leer V[I]
fin-‐para
fin
También se puede u=lizar
mientras y repe=r
inicio
Definir V como Entero
Definir l como Entero
dimensionar V[30]
l
ß
1
mientras l<= 30 hacer
leer V[I]
l
ß
l+1
fin-‐mientras
Fin
inicio
Definir V como Entero
Definir l como Entero
dimensionar V[30]
l
ß
1
repe=r
leer V[I]
l
ß
l+1
hasta (l>30)
fin
Procesando un vector
inicio
Definir l,D como Enteros
Definir suma, promedio, H como Reales suma ß 0
leer D
Dimensionar H[D]
Para I ß 1 hasta D Hacer
leer H [I]
finPara
Para I ß 1 hasta D Hacer suma ß suma + H[I]
finPara
promedio ß suma / D Para I ß 1 hasta D
Escribir H[I]
finPara
Escribir "La suma de los elementos del vector es", suma
Escribir "El promedio es:", promedio
fin
Ejercicio: Leer un vector de D componentes reales. Hallar la suma y el promedio de los elementos del vector.
Suma=0
D=Input(‘ingrese D:’);
H=zeros(D);
for i=1:D,
H(i)=input(‘ingrese elemento’);
End
for i=1:D,
suma=suma+H(i);
End
Promedio=suma/D;
for i=1:D,
disp(H(i));
End
Disp(‘la suma da: ‘); Disp(suma);
Disp(‘el prom. Es: ‘); Disp(promedio);
Matrices
•
Un array bidimensional o matriz es un conjunto de datos
homogéneos (todos del mismo =po), cada uno de los cuales
debe referenciarse por dos índices. Los índices determinan la
posición de una fila y una columna.
Dimensionamiento y Carga de una matriz
•
Así como un vector =ene que ser nombrado y
dimensionado antes de ser u=lizado, una
matriz también.
•
La instrucción para dimensionar una matriz es:
dimensionar
nombre
[filas,columnas]
ej.: Definir mat como Real
dimensionar mat[5,6]
Carga de una Matriz
•
La carga de datos se realiza de la misma forma que un
vector, por medio de un bucle;
•
solo que en este caso, vamos a necesitar 2 bucles; uno
que recorra las filas y otro las columnas:
definir mat como Real
dimensionar mat[5,6]
para fila
ß
1 hasta 5 hacer
para columna
ß
1 hasta 6 hacer
leer mat[fila, columna]
fin-‐para
fin-‐para
MAT (1, 1)
MAT (1, 2)
MAT (1, 3)
MAT (1, 4)
MAT (1, 5)
MAT (1, 6) aqui termina el primer bucle de columnas comienza el segundo bucle para recorrer la segunda fila
MAT (2, 1)
MAT (2, 2)
MAT (2, 3)
MAT (2, 4)
MAT (2, 5)
MAT (2, 6) aquí termina el segundo bucle de columnas
comienza el tercer bucle para recorrer la tercera fila MAT (3, 1) MAT (3, 2) MAT (3, 3) MAT (3, 4) MAT (3, 5) MAT (3, 6)
comienza el cuarto bucle para recorrer la cuarta fila
MAT(4, 1) MAT(4, 2) MAT(4, 3) MAT(4, 4) MAT(4, 5) MAT(4, 6)
comienza el quinto bucle para recorrer la quinta fila
MAT(5, 1)
MAT(5, 2)
MAT(5, 3)
MAT(5, 4)
MAT(5, 5)
MAT(5, 6) -‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐-‐ Fin de ambos bucles
• Una matriz también puede recorrerse por
columnas, invir=endo el orden de anidamiento de los bucles: Bucle filas Bucle columnas Bucle Columnas Bucle filas
Carga e Impresión de una Matriz
inicio
Definir cankilas, cantcolumnas, fila, columna como Enteros
leer can9ilas, cantcolumnas
Definir MAT como String
-‐-‐-‐-‐-‐-‐ se define
dimesionar MAT[can9ilas, cantcolumnas]
-‐-‐-‐-‐-‐-‐ se dimensiona
Para filaß 1 hasta can9ilas Hacer
Para columnaß 1 hasta cantcolumnas Hacer
leer MAT[fila,columna] -‐-‐-‐-‐-‐-‐-‐ lectura
fin-‐para
fin-‐para
Para fila
ß
1 hasta can9ilas Hacer
Para columna
ß
1 hasta cantcolumnas Hacer
imprimir MAT[fila,columna]
-‐-‐-‐-‐-‐-‐-‐-‐ impresión
fin-‐para
fin-‐para
fin
Procesando una matriz.
inicio
Definir cankilas, cantcolumnas, i,j,suma como Enteros Definir promedio como Real
leer can9ilas, cantcolumnas Definir M como Entero
dimensionar M[ can9ilas, cantcolumnas]
Para i ß 1 hasta can9ilas Hacer
Para jß 1 hasta cantcolumnas Hacer
leer M[i, j]
fin-‐para
fin-‐para
Para iß 1 hasta can9ilas Hacer
Para jß 1 hasta cantcolumnas Hacer
sumaß suma + M[i, j]
fin-‐para
fin-‐para
promedio ß suma / (can9ilas * cantcolumnas) Escribir ‘El promedio es: ‘, promedio
Procesando una matriz en Matlab
FuncKon PromMat
can9ilas= input(‘Ingrese la canKdad de filas’); cantcolumnas=input(‘Ingrese la canKdad de columnas’);
M=zeros(can9ilas,cantcolumnas); suma=0;
for i = 1:can9ilas,
for j=1:cantcolumnas,
M(i, j)=rand();
end
end
for i = 1:can9ilas,
for j=1:cantcolumnas,
suma=suma + M(i, j);
end
end
promedio =suma / (can9ilas * cantcolumnas)
for i = 1:can9ilas,
for j=1:cantcolumnas,
disp(M(i, j));
end
end