Programación informática: matrices

Considere una situación en la que necesitamos almacenar cinco números enteros. Si usamos los conceptos de tipo de datos y variables simples de programación, entonces necesitamos cinco variables deint tipo de datos y el programa será el siguiente:

#include <stdio.h>

int main() {
   int number1;
   int number2;
   int number3;
   int number4;
   int number5;
   
   number1 = 10;      
   number2 = 20;   
   number3 = 30;   
   number4 = 40; 
   number5 = 50;     

   printf( "number1: %d\n", number1);
   printf( "number2: %d\n", number2);
   printf( "number3: %d\n", number3);
   printf( "number4: %d\n", number4);
   printf( "number5: %d\n", number5);
}

Era simple, porque teníamos que almacenar solo cinco números enteros. Ahora supongamos que tenemos que almacenar 5000 números enteros. ¿Vamos a utilizar 5000 variables?

Para manejar tales situaciones, casi todos los lenguajes de programación proporcionan un concepto llamado array. Una matriz es una estructura de datos que puede almacenar una colección de elementos de tamaño fijo del mismo tipo de datos. Una matriz se usa para almacenar una colección de datos, pero a menudo es más útil pensar en una matriz como una colección de variables del mismo tipo.

En lugar de declarar variables individuales, como número1, número2, ..., número99, simplemente declara una variable de matriz numberde tipo entero y utilice número1 [0], número1 [1] y ..., número1 [99] para representar variables individuales. Aquí, 0, 1, 2, ..... 99 sonindex asociado con var variable y se utilizan para representar elementos individuales disponibles en la matriz.

Todas las matrices constan de ubicaciones de memoria contiguas. La dirección más baja corresponde al primer elemento y la dirección más alta al último elemento.

Crear matrices

Para crear una variable de matriz en C, un programador especifica el tipo de elementos y el número de elementos que se almacenarán en esa matriz. A continuación se muestra una sintaxis simple para crear una matriz en programación C:

type arrayName [ arraySize ];

Esto se llama matriz unidimensional . losarraySize debe ser una constante entera mayor que cero y typepuede ser cualquier tipo de datos C válido. Por ejemplo, ahora para declarar una matriz de 10 elementos llamadanumber de tipo int, usa esta declaración -

int number[10];

Aquí, el número es una matriz de variables, que es suficiente para contener hasta 10 números enteros.

Inicialización de matrices

Puede inicializar una matriz en C uno por uno o usando una sola declaración de la siguiente manera:

int number[5] = {10, 20, 30, 40, 50};

El número de valores entre llaves {} no puede ser mayor que el número de elementos que declaramos para la matriz entre corchetes [].

Si omite el tamaño de la matriz, se crea una matriz lo suficientemente grande como para contener la inicialización. Por lo tanto, si escribe -

int number[] = {10, 20, 30, 40, 50};

Creará exactamente la misma matriz que hizo en el ejemplo anterior. A continuación se muestra un ejemplo para asignar un solo elemento de la matriz:

number[4] = 50;

La declaración anterior asigna el elemento número 5 en la matriz con un valor de 50. Todas las matrices tienen 0 como índice de su primer elemento, que también se llama índice base y el último índice de una matriz será el tamaño total de la matriz menos 1. La siguiente imagen muestra la representación pictórica de la matriz que discutimos anteriormente:

Acceso a elementos de matriz

Se accede a un elemento indexando el nombre de la matriz. Esto se hace colocando el índice del elemento entre corchetes después del nombre de la matriz. Por ejemplo

int var = number[9];

La declaración anterior tomará el décimo elemento de la matriz y asignará el valor a varvariable. El siguiente ejemplo utiliza los tres conceptos mencionados anteriormente, a saber. creación, asignación y acceso a matrices -

#include <stdio.h>
 
int main () {
   int number[10]; /* number is an array of 10 integers */
   int i = 0;
 
   /* Initialize elements of array n to 0 */         
   while( i < 10 ) {
	
      /* Set element at location i to i + 100 */
      number[ i ] = i + 100;
      i = i + 1;
   }
   
   /* Output each array element's value */
   i = 0;
   while( i < 10 ) {
	
      printf("number[%d] = %d\n", i, number[i] );
      i = i + 1;
   }
   
   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Matrices en Java

A continuación se muestra el programa equivalente escrito en Java. Java admite matrices, pero hay una pequeña diferencia en la forma en que se crean en Java utilizando elnew operador.

Puede intentar ejecutar el siguiente programa para ver el resultado, que debe ser idéntico al resultado generado por el ejemplo de C anterior.

public class DemoJava {
   public static void main(String []args) {
      int[] number = new int[10];
      int i = 0;
      
      while( i < 10 ) {
		
         number[ i ] = i + 100;
         i = i + 1;
      }

      i = 0;
      while( i < 10 ) {
         System.out.format( "number[%d] = %d\n", i, number[i] );
         i = i + 1;
      }
   }
}

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

number[0] = 100
number[1] = 101
number[2] = 102
number[3] = 103
number[4] = 104
number[5] = 105
number[6] = 106
number[7] = 107
number[8] = 108
number[9] = 109

Matrices (listas) en Python

Python no tiene un concepto de Array, en su lugar Python proporciona otra estructura de datos llamada list, que proporciona una funcionalidad similar a las matrices en cualquier otro idioma.

A continuación se muestra el programa equivalente escrito en Python:

# Following defines an empty list.
number = []
i = 0

while i < 10:
   # Appending elements in the list
   number.append(i + 100)
   i = i + 1

i = 0
while i < 10:
   # Accessing elements from the list
   print "number[", i,  "] = ", number[ i ]
   i = i + 1

Cuando se ejecuta el programa anterior, produce el siguiente resultado:

number[ 0 ] =  100
number[ 1 ] =  101
number[ 2 ] =  102
number[ 3 ] =  103
number[ 4 ] =  104
number[ 5 ] =  105
number[ 6 ] =  106
number[ 7 ] =  107
number[ 8 ] =  108
number[ 9 ] =  109