Algoritmos y Programación — Parte VI

Arreglos Bidimensionales (matrices)

Juan Manrique
3 min readApr 28, 2019

Un arreglo bidimensional o matriz es una estructura de datos de un mismo tipo ordenados secuencialmente en forma de tabla mediante filas y columnas. Son un caso especial de arreglos multidimensionales en el que cada valor del arreglo que representa la matriz es, a su vez, un arreglo que contiene datos del mismo tipo. Por lo general, las matrices poseen filas de igual cantidad de elementos, lo que les permite representar un rectángulo (matriz rectangular) o un cuadrado (matriz cuadrada), pero puede que no siempre sea así.

Para acceder a un elemento de una matriz deben especificarse el nombre del arreglo que lo representa, seguido de dos índices: fila y columna, encerrados entre corchetes de la forma “[fila][columna]”. Es importante recordar que el índice debe ser un valor de tipo entero comprendido entre 0 y el número de elementos de cada fila menos uno (longitud — 1) y que primero se especifica la fila y luego la columna, siguiendo exactamente la misma regla pero con la longitud de las columnas. De esta forma, el algoritmo para recorrer la matriz podrá recorrer todos sus elementos correctamente. Es muy usual recorrer las matrices haciendo uso de dos (2) iteradores anidados: uno para moverse a través de las filas y otro para moverse a través de las columnas.

Declarar una matriz

# Declaración de una matriz en Ruby (declaración formal)
mi_matriz = Array.new # Crea un arreglo vacío
mi_arreglo = Array.new # Crea un arreglo vacío
mi_matriz[0] = mi_arreglo # Representa una matriz 0x0 (vacía)
mi_matriz.push(mi_arreglo) # Equivalente a la línea anterior (no usar ambas)# Declaración de una matriz en Ruby (declaración literal)
mi_matriz = [[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]] # Crea una matriz 4x3 con los valores indicados
mi_matriz2 = [[3, 4], [7, 12]] # Crea una matriz 2x2 con los valores indicadosmi_matriz3 = [[7, 9, 8], [10, 1], [3]] # Crea una matriz no cuadrada

Llenar automáticamente una matriz nueva

# Crea una matriz 6x3 de N° aleatorios entre el 0 y el 9 (forma 1)matriz = []
for i in 0..5 do
aux = []
for j in 0..2 do
aux[j] = rand(10)
end
matriz[i] = aux
end
# Crea una matriz 6x3 de N° aleatorios entre el 0 y el 9 (forma 2)matriz = []
for i in 0..5 do
matriz[i] = []
for j in 0..2 do
matriz[i][j] = rand(10)
end
end

Acceder a valores de una matriz

# Declaración de una matriz en Ruby (declaración literal)
mi_matriz = [[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]] # Crea una matriz 4x3 con los valores indicados
puts mi_matriz[1][2] # Muestra el valor 5 (2da fila, 3ra columna)

Modificar valores de una matriz

# Modifica el valor de la 3ra fila 1ra columna de la matriz
mi_matriz[2][0]
# Recorre toda la matriz cambiando cada valor por un valor aleatorio
for i in 0..mi_matriz.length — 1 do
for j in 0..mi_matriz[i].length — 1 do
mi_matriz[i][j] = rand(20)
end
end

Mostrar todos los valores de una matriz

# Recorre toda la matriz mostrando cada valor
for i in 0..mi_matriz.length — 1 do
for j in 0..mi_matriz[i].length — 1 do
puts mi_matriz[i][j]
end
end

La publicación anterior trata sobre Arreglos. La siguiente será Funciones.

Ejercicios propuestos

  1. Escriba el código Ruby que genere dos (2) matrices 10x10 de números enteros aleatorios y realice la suma de dichas matrices dejando el resultado en una tercera matriz.
  2. Escriba el código Ruby que genere una matriz 15x15 de números enteros aleatorios y retorne la suma de sus elementos impares.
  3. Escriba el código Ruby que genere una matriz 15x15 de números enteros aleatorios e intercambie sus filas por sus columnas.
  4. Escriba el código Ruby que genere una matriz 15x15 de números enteros aleatorios e rote sus filas y columnas 90 grados hacia la derecha, convirtiendo sus filas en columnas.

--

--

Juan Manrique

SW developer. Coding Mentor @academia_hack. Agile promoter. Writer. Simplifier. Motivator. Venezuelan Rums Expert Evangelist. At your services.