9 - Matrices
Versión en video (2:38 min):
Pseudocódigo
9 - Matrices
Cuando necesitamos manejar muchos datos, generalmente hay soluciones más efectivas que tener muchas variables. Por ejemplo, si hay que guardar 10 números, resultará incómodo usar 10 variables llamadas n1, n2, n3, n4, n5, n6, n7, n8, n9, n10; si se trata de 100 números, puede pasar de resultar incómodo a ser totalmente inviable. En esos casos, será más eficiente almacenar esos 100 datos "juntos", formando lo que se conoce como una "matriz", en vez de usar 100 variables distintas.
La palabra "matriz" es una traducción del inglés "array". Algunos autores lo traducen alternativamente como tabla, vector o incluso "arreglo".
Normalmente, en una matriz podremos acceder individualmente a cada uno de sus elementos usando corchetes: el primer dato sería algo como "dato[1]".
Como primer contacto, se puede crear una matriz de 3 elementos, guardar datos en sus 3 posiciones y mostrar el primer dato y el tercero así:
Algoritmo Matriz3
Dimension datos[3]
datos[1] <- 10
datos[2] <- 25
datos[3] <- 50
Escribir "El primer dato es ", datos[1]
Escribir "Y el tercero es ", datos[3]
FinAlgoritmo
Como una matriz puede contener muchos datos, es frecuente recorrerlas de forma repetitiva, empleando una orden "para". Así un ejemplo que nos pida 6 datos y luego los muestre en orden contrario al que se han introducido podría ser:
Algoritmo MostrarAlReves
Dimension datos[6]
Para i <- 1 Hasta 6 Hacer
Escribir "Dime el dato numero ", i
Leer datos[i]
FinPara
Escribir "Los datos al reves son: "
Para i <- 6 Hasta 1 Con Paso -1 Hacer
Escribir datos[i]
FinPara
FinAlgoritmo
Que mostraría algo como:
(Haremos ejemplos más avanzados como parte de los ejercicios)
Ejercicio de repaso propuesto 9.1: Crea un programa que pida un número al usuario un número de mes (por ejemplo, el 4) y diga cuántos días tiene (por ejemplo, 30). Debes usar una matriz.
Ejercicio de repaso propuesto 9.2: Haz un programa que pida al usuario 5 datos, los guarde en una matriz y luego muestre su media (la suma de los 5 datos, dividida entre 5).
Ejercicio de repaso propuesto 9.3: Crea una versión ampliada del ejercicio 9.2, en la que se pida al usuario 5 datos, se guarden en una matriz y finalmente se calcule su media, se muestre ésta y se muestren también los valores mayores que la media).
Ejercicio de repaso propuesto 9.4: Si has estudiado lo que es un vector, crea un programa que reserve espacio para dos vectores de 3 componentes, pida al usuario sus valores y calcule la suma de ambos vectores (su primera componente será x1+y1, la segunda será x2+y2 y así sucesivamente).
Ejercicio de repaso propuesto 9.5: Si has estudiado lo que es un vector, prepara un programa que reserve espacio para dos vectores de 3 componentes, pida al usuario sus valores y calcule su producto escalar (x1·y1+ x2·y2+x3·y3).
Ejercicio de repaso propuesto 9.6: Haz un programa que pida al usuario 7 números enteros y calcule (y muestre) cuál es el mayor de ellos. Nota: para calcular el mayor valor de una matriz, hay que comparar cada uno de los valores que tiene almacenados con el que hasta ese momento es el máximo provisional. El valor inicial de este máximo provisional no debería ser cero (porque el resultado sería incorrecto si todos los números son negativos), sino el primer elemento de la matriz.
Ejercicio de repaso propuesto 9.7: Crea un programa que prepare un array con 10 datos prefijados, luego pregunte al usuario qué dato desea buscar, avise si ese dato no aparece, y que en caso contrario diga cuántas veces se ha encontrado.
También se pueden crear arrays "de dos dimensiones" (por ejemplo, 3 filas y dos columnas), que se acercan más al concepto matemático de matriz:
Algoritmo Matriz32
Dimension datos[3,2]
datos[1,1] <- 10
datos[2,1] <- 25
datos[3,1] <- 50
datos[1,2] <- 11
datos[2,2] <- 26
datos[3,2] <- 51
Escribir "El primer dato en la primera columna es ", datos[1,1]
Escribir "Y el ultimo de la segunda columna ", datos[3,2]
FinAlgoritmo
Ejercicio de repaso propuesto 9.8: Crea un programa que pida al usuario dos bloques de 10 números cada uno (usando un array de dos dimensiones). Después deberá mostrar el mayor dato que se ha introducido en cada uno de esos dos bloques.
Ejercicio de repaso propuesto 9.9: Si has estudiado álgebra matricial, haz un programa que calcule el determinante de una matriz de 2x2, a partir de datos que introduzca el usuario.
Ejercicio de repaso propuesto 9.10: Si has estudiado álgebra matricial, prepara un programa que calcule el determinante de una matriz de 3x3.