Matrices en programación
Las matrices están diseñadas para almacenar muchos valores juntos.
¿Qué es un array?
Una matriz es una colección de valores.
La imagen a continuación muestra cómo podemos pensar en una matriz llamada myFruits, con los valores 'banana', 'apple' y 'orange' almacenados dentro de ella.
Cada valor de una matriz tiene una posición, llamada índice, que comienza en 0.
A continuación se muestra cómo se crea la matriz myFruits, utilizando código Python:
El primer valor 'banana' se posiciona en el índice 0 de la matriz.
¿Qué puedo hacer con una matriz?
Las matrices facilitan el trabajo con grupos de valores en comparación con el uso de una variable separada para cada valor.
Entonces, en lugar de crear 3 variables:
fruit1 = 'banana'
fruit2 = 'apple'
fruit3 = 'orange'
Podemos simplemente crear una matriz:
myFruits = ['banana','apple','orange']
Con una matriz, puedes:
- Almacena una colección de números, palabras u objetos.
- Accede a cualquier valor mediante su índice (posición).
- Lee, actualiza, inserta o elimina cualquier valor de la matriz.
Vea cómo se puede crear y utilizar una matriz en las secciones siguientes.
Creando una matriz
Al crear una matriz, debemos especificar el nombre de la matriz y los valores dentro de ella.
Aquí se explica cómo se puede crear la matriz myFruits utilizando diferentes lenguajes de programación:
Python:
myFruits = ['banana','apple','orange']
JavaScript:
const myFruits = ['banana','apple','orange'];
Java:
String[] myFruits = {"banana","apple","orange"};
C++:
string myFruits[] = {"banana","apple","orange"};
Run Example »
En el código Python anterior:
myFruitses el nombre del array.- El signo igual
=almacena los valores del lado derecho del array. - Los corchetes
[ ]indican que estamos creando un array. 'banana','apple','orange'son los valores dentro del array, separados por comas.
Nota: Al crear una matriz en lenguajes de programación como C/C++ y Java, se debe indicar el tipo de datos de los valores dentro de la matriz.
Operaciones de matriz
Las matrices se pueden leer y manipular de muchas formas diferentes. Aquí hay algunas cosas comunes que puedes hacer con una matriz:
| Operación | Descripción |
|---|---|
| read | Leer un valor de un índice en la matriz. |
| update | Actualiza el valor existente en una posición de índice de matriz. |
| insert | Insertar un nuevo valor en la matriz, además de los valores existentes. |
| remove | Elimina un valor de la matriz en una posición de índice determinada. |
| length | Nos da el número de valores en el array. El número de valores es la longitud del array. |
| loop | Visita cada valor de la matriz, utilizando un bucle. |
Vaya a las secciones a continuación para ver cómo se ve el código para estas operaciones de matriz en diferentes lenguajes de programación.
Lectura de un valor de matriz
Para leer un valor de matriz, usamos el nombre de la matriz con el índice del valor que queremos leer entre paréntesis, de esta manera myFruits[0].
Resultado: '{{ result }}'
También debemos usar un comando para escribir myFruits[0] en la consola/terminal, para que podamos ver el resultado, y esto se hace de forma un poco diferente dependiendo del lenguaje de programación.
Python:
myFruits = ['banana','apple','orange']
print(myFruits[0])
JavaScript:
const myFruits = ['banana','apple','orange'];
console.log(myFruits[0]);
Java:
String[] myFruits = {"banana","apple","orange"};
System.out.println(myFruits[0]);
C++:
string myFruits[] = {"banana","apple","orange"};
cout << myFruits[0];
Run Example »
Actualización de un valor de matriz
Para actualizar un valor en una matriz, usamos el nombre de la matriz con la posición de índice del valor que queremos actualizar, como esto myFruits[0], y luego usamos el signo igual = para almacenar un nuevo valor allí.
Así es como se puede actualizar un valor de matriz en el índice 0 en diferentes lenguajes de programación:
Python:
myFruits = ['banana','apple','orange']
myFruits[0] = 'kiwi'
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits[0] = 'kiwi';
Java:
String[] myFruits = {"banana","apple","orange"};
myFruits[0] = "kiwi";
C++:
string myFruits[] = {"banana","apple","orange"};
myFruits[0] = "kiwi";
Run Example »
Inserción de un valor de matriz
Para insertar un valor en una matriz, además de los valores existentes, necesitamos:
- El nombre de la matriz
- Un comando para realizar la operación de inserción
- El valor que se insertará
Cuando insertamos de esta manera, el nuevo valor se inserta al final de la matriz.
El comando para insertar un valor en una matriz varía un poco entre los lenguajes de programación.
Python:
myFruits = ['banana','apple','orange']
myFruits.append('kiwi')
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.push('kiwi');
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.add("kiwi");
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.push_back("kiwi");
Run Example »
Un array dinámico es un array que puede cambiar de tamaño, como ocurre con las operaciones de inserción y eliminación. En estos casos, usamos ArrayList en Java y vector en C++.
También se puede agregar un valor a una posición específica en una matriz, usando el índice, de la siguiente manera:
Python:
myFruits = ['banana','apple','orange']
myFruits.insert(1,'kiwi')
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.splice(1,0,'kiwi');
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.add(1,"kiwi");
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.insert(myFruits.begin() + 1, "kiwi");
Run Example »
Eliminar un valor de matriz
Se elimina un valor de matriz especificando el índice del que debe eliminarse el valor.
Así es como se puede eliminar un valor de matriz colocado en el índice 1 en diferentes lenguajes de programación:
Python:
myFruits = ['banana','apple','orange']
myFruits.pop(1)
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.splice(1,1);
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.remove(1);
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.erase(myFruits.begin() + 1);
Run Example »
También se puede eliminar un valor del final de una matriz, sin utilizar el índice (excepto para Java), de la siguiente manera:
Python:
myFruits = ['banana','apple','orange']
myFruits.pop()
JavaScript:
const myFruits = ['banana','apple','orange'];
myFruits.pop();
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
myFruits.remove(myFruits.size()-1);
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
myFruits.pop_back();
Run Example »
Encontrar la longitud de una matriz
Siempre puedes comprobar la longitud de una matriz:
Resultado: {{ result }}
Así es como se encuentra la longitud de una matriz en diferentes lenguajes de programación:
Python:
myFruits = ['banana','apple','orange']
print(len(myFruits))
JavaScript:
const myFruits = ['banana','apple','orange'];
console.log(myFruits.length);
Java:
ArrayList<String> myFruits = new ArrayList<String>();
myFruits.add("banana");
myFruits.add("apple");
myFruits.add("orange");
System.out.println(myFruits.size());
C++:
vector<string> myFruits = {"banana", "apple", "orange"};
cout << myFruits.size();
Run Example »
Recorriendo una matriz en bucle
Consulte esta página para obtener una explicación de qué es un bucle.
Recorrer una matriz significa mirar cada valor dentro de ella.
Aquí se explica cómo podemos recorrer la matriz myFruits utilizando un bucle for, imprimiendo cada valor:
Resultado:
Hay más de una forma de recorrer una matriz, pero usar un bucle for es quizás la forma más directa y compatible con todos los lenguajes de programación, como esta:
Python:
myFruits = ['banana','apple','orange']
for fruit in myFruits:
print(fruit)
JavaScript:
const myFruits = ['banana','apple','orange'];
for (let fruit of myFruits) {
console.log(fruit);
}
Java:
String[] myFruits = {"banana", "apple", "orange"};
for (String fruit : myFruits) {
System.out.println(fruit);
}
C++:
string myFruits[] = {"banana", "apple", "orange"};
for (auto fruit : myFruits) {
cout << fruit + "\n";
}
Run Example »
Otra forma de recorrer una matriz es usar un bucle for con una variable de conteo para los índices, como esto:
Python:
myFruits = ['banana','apple','orange']
for i in range(len(myFruits)):
print(myFruits[i])
JavaScript:
const myFruits = ['banana','apple','orange'];
for (let i = 0; i < myFruits.length; i++) {
console.log(myFruits[i]);
}
Java:
String[] myFruits = {"banana", "apple", "orange"};
for (int i = 0; i < myFruits.length; i++) {
System.out.println(myFruits[i]);
}
C++:
string myFruits[] = {"banana", "apple", "orange"};
int size = sizeof(myFruits) / sizeof(myFruits[0]);
for (int i = 0; i < size; i++) {
cout << myFruits[i] + "\n";
}
Run Example »
Otras cosas que podemos hacer al recorrer matrices es descubrir si "Bob" aparece en una matriz de nombres, o podemos recorrer una matriz de comestibles, por ejemplo, para encontrar la suma total que debemos pagar por ellos.
A continuación se muestra un ejemplo de cómo recorrer una matriz de nombres en busca de "Bob".
Python:
listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice']
for i in range(len(listOfNames)):
print(listOfNames[i])
if listOfNames[i] == 'Bob':
print('Found Bob!')
break
JavaScript:
let listOfNames = ['Jones','Jill','Lisa','Stan','Bob','Alice'];
for (let i = 0; i < listOfNames.length; i++) {
console.log(listOfNames[i]);
if (listOfNames[i] === 'Bob') {
console.log('Found Bob!');
break;
}
}
Java:
String[] listOfNames = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};
for (int i = 0; i < listOfNames.length; i++) {
System.out.println(listOfNames[i]);
if (listOfNames[i] == "Bob") {
System.out.println("Found Bob!");
break;
}
}
C++:
string listOfNames[] = {"Jones", "Jill", "Lisa", "Stan", "Bob", "Alice"};
int size = sizeof(listOfNames) / sizeof(listOfNames[0]);
for (int i = 0; i < size; i++) {
cout << listOfNames[i] + "\n";
if (listOfNames[i] == "Bob") {
cout << "Found Bob!\n";
break;
}
}
Run Example »
En el código anterior, la instrucción break detiene el bucle al encontrar "Bob". Por eso no se imprime "Alice".
Definición estricta de una matriz
Los arrays presentes en lenguajes modernos como Python o JavaScript son flexibles, lo que significa que pueden crecer, reducirse y contener diferentes tipos de valores. Otros lenguajes de programación, como C y Java, requieren una definición más estricta de los arrays.
Una definición más estricta de una matriz significa que, además de ser una colección de valores, una matriz también es:
- Longitud fija
- Mismo tipo de datos para todos los valores
- Almacenados contiguos en la memoria
Longitud fija significa que la longitud de la matriz (la cantidad de valores dentro de la matriz) no se puede cambiar.
Al usar el lenguaje de programación C, por ejemplo, si ha creado un array de 4 valores, su longitud (4) es fija y no se puede modificar. Por lo tanto, si desea insertar un quinto valor al final del array, debe crear un nuevo array de 5 valores, colocar los 4 valores originales y colocar el quinto valor al final del nuevo array, donde ahora tenga espacio.
Mismo tipo de datos significa que todos los valores de la matriz deben ser del mismo tipo, por lo que todos deben ser números enteros, por ejemplo, o números decimales, o caracteres, o cadenas, o algún otro tipo de datos.
Tener el array almacenado contiguo en memoria significa que los valores se almacenan uno tras otro en un bloque de memoria, como un grupo de amigos que viven uno al lado del otro en la misma calle. Lea más sobre cómo se almacenan los arrays en memoria aquí.
El uso de matrices en su forma estricta brinda al usuario control total sobre cómo se ejecuta realmente el programa, pero también dificulta realizar ciertas cosas y lo hace más propenso a errores.
Cuando se necesita una funcionalidad de matriz más flexible/dinámica en lenguajes como C o Java, los desarrolladores a menudo utilizan bibliotecas para ayudarlos a obtener la funcionalidad de matriz dinámica ampliada que buscan.
En los ejemplos de código de esta página, para lograr una longitud de matriz dinámica que nos permita insertar y eliminar valores, hemos utilizado Listas de Python, Matrices de JavaScript, ArrayList de Java y Vectores de C++.
