Llegados a este punto, vamos a ver la siguiente estructura de datos, la cual deriva directamente de las listas: las matrices. Las matrices son muy importantes en el desarrollo de videojuegos, ya que se trata de un buen elemento sobre el que representar el espacio.
Matrices
A grandes rasgos, podemos ver una matriz como una lista de listas. ¿Se entiende esto? Quizás la siguiente imagen ayude a comprenderlo:

Creación
Si nos fijamos en la imagen anterior, no debería de costar mucho deducir cómo se crea una matriz: creamos una lista con la dimensión de las filas deseadas, y luego, para cada posición de la lista, una nueva con el número de columnas deseadas. Crear una matriz 3·3 quedaría así en Python:
matriz = [] for i in range(3): matriz.append([0] * 3)
Lectura
Para acceder a los elementos de una matriz (ya sea para leerlos o editarlos) se utiliza el operador [], al igual que en las listas. Pero ojo, las matrices tienen dos dimensiones, por lo que se usará de la forma matriz[][]. Sabiendo esto, sólo necesitamos un bucle que recorra las filas y las columnas:
for i in range(3): for j in range(3): print(matriz[i][j])
Dimensión
No existe un operador o función que nos proporcione la dimensión de la misma. No obstante, podemos obtenerla mediante la función len(), la cual ya se ha comentado anteriormente. En el caso de las matrices, mediante len(matriz) obtendremos el número de filas, mientras que con len(matriz[0]) obtendremos el número de columnas.
Operaciones con Matrices
A continuación veremos unos algoritmos de ejemplos de las principales operaciones entre matrices.
Suma
La suma es la más sencillas de ellas. Simplemente consiste en sumar el elemento de ambas matrices que ocupa la misma posición. Pero cuidado, para que dos matrices se puedan sumar, han de tener la misma dimensión. De lo contrario, la suma resulta imposible. Veamos el código para sumar dos matrices de dimensión m·n:
for i in range(m): for j in range(n): resultado[i][j] = matrizA[i][j] + matrizB[i][j]
Producto
Aquí la cosa ya se complica un poco más. Para poder multiplicar dos matrices, el número de columnas de la primera matriz ha de ser igual al número de filas de la segunda, es decir, las dimensiones de la operación han de ser p·q * q·r. La matriz resultante tendrá las dimensiones p·r. Para calcular cada elemento de la matriz resultado, se utiliza la siguiente fórmula:

Os recuerdo que para programar las matemáticas van a ser necesarias sí o sí. Muchas operaciones ha codificar suelen consistir en sumatorios, por lo que quizás debáis practicar un poco su uso. El expuesto anteriormente se codificaría de la siguiente manera:
for i in range(p): for j in range(r): for k in range(q): resultado[i][j] += matrizA[i][k] * matrizB[k][j]
Ejercicio 10
Escribe un programa que le solicite al usuario dos matrices (de cualquier dimensión), para a continuación poder realizar la suma o el producto de las mismas (si es posible). Tras finalizar, deberá mostrar la matriz resultado por pantalla.
Solución
Con esto dejamos aparcadas las estructuras de datos, y ya estamos listos para comenzar con lo que de verdad dará a nuestros programas todo su potencial: las funciones.
¡Nos leemos!
#04 / Fundamentos de la Programación
- Estructuras de Datos (Matrices)
- Funciones
- Funciones (Recursividad)
- Estructuras de Datos (Registros)
- Ficheros
- ANEXO – Ejercicios Resueltos
Proyecto Final – LIFE, el Juego de la Vida
¿Quieres estar al día de todo lo publicado en el blog?
Para ello puedes suscribirte a mi canal RSS y/o seguirme en mis Redes Sociales.
