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 – subrango
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
Fin
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 disp(‘El Promedio es: ‘); Disp(promedio);