Arduino - matrices

Una matriz es un grupo consecutivo de ubicaciones de memoria que son del mismo tipo. Para hacer referencia a una ubicación o elemento en particular en la matriz, especificamos el nombre de la matriz y el número de posición del elemento particular en la matriz.

La ilustración que se muestra a continuación muestra una matriz de enteros denominada C que contiene 11 elementos. Puede hacer referencia a cualquiera de estos elementos dando el nombre de la matriz seguido por el número de posición del elemento particular entre corchetes ([]). El número de posición se denomina más formalmente subíndice o índice (este número especifica el número de elementos desde el principio de la matriz). El primer elemento tiene el subíndice 0 (cero) y, a veces, se le llama elemento ceros.

Por lo tanto, los elementos de la matriz C son C [0] (se pronuncia "C sub zero"), C [1], C [2] y así sucesivamente. El subíndice más alto en la matriz C es 10, que es 1 menos que el número de elementos en la matriz (11). Los nombres de matriz siguen las mismas convenciones que otros nombres de variable.

Un subíndice debe ser una expresión entera o entera (usando cualquier tipo integral). Si un programa usa una expresión como subíndice, entonces el programa evalúa la expresión para determinar el subíndice. Por ejemplo, si asumimos que la variable a es igual a 5 y que la variable b es igual a 6, entonces la declaración suma 2 al elemento de matriz C [11].

Un nombre de matriz con subíndice es un valor l, se puede usar en el lado izquierdo de una asignación, al igual que los nombres de variables que no son de matriz.

Examinemos la matriz C en la figura dada, más de cerca. El nombre de la matriz completa es C. Sus 11 elementos se denominan C [0] a C [10]. El valor de C [0] es -45, el valor de C [1] es 6, el valor de C [2] es 0, el valor de C [7] es 62 y el valor de C [10] es 78.

Para imprimir la suma de los valores contenidos en los primeros tres elementos de la matriz C, escribiríamos -

Serial.print (C[ 0 ] + C[ 1 ] + C[ 2 ] );

Para dividir el valor de C [6] por 2 y asignar el resultado a la variable x, escribiríamos -

x = C[ 6 ] / 2;

Declaración de matrices

Las matrices ocupan espacio en la memoria. Para especificar el tipo de elementos y el número de elementos requeridos por una matriz, use una declaración de la forma -

type arrayName [ arraySize ] ;

El compilador reserva la cantidad adecuada de memoria. (Recuerde que una declaración, que reserva memoria, se conoce más propiamente como definición). ArraySize debe ser una constante entera mayor que cero. Por ejemplo, para decirle al compilador que reserve 11 elementos para la matriz de enteros C, use la declaración -

int C[ 12 ]; // C is an array of 12 integers

Se puede declarar que las matrices contienen valores de cualquier tipo de datos que no sean de referencia. Por ejemplo, se puede usar una matriz de tipo cadena para almacenar cadenas de caracteres.

Ejemplos que utilizan matrices

Esta sección ofrece muchos ejemplos que demuestran cómo declarar, inicializar y manipular matrices.

Ejemplo 1: Declaración de una matriz y uso de un bucle para inicializar los elementos de la matriz

El programa declara una matriz de enteros de 10 elementos n. Las líneas a-b usan aForinstrucción para inicializar los elementos de la matriz a ceros. Como otras variables automáticas, las matrices automáticas no se inicializan implícitamente a cero. La primera declaración de salida (línea c) muestra los encabezados de las columnas impresas en la declaración for subsiguiente (líneas d-e), que imprime la matriz en formato tabular.

Example

int n[ 10 ] ; // n is an array of 10 integers

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) // initialize elements of array n to 0 {
      n[ i ] = 0; // set element at location i to 0
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // output each array element's value {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

Result - Producirá el siguiente resultado -

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

Ejemplo 2: inicialización de una matriz en una declaración con una lista de inicializadores

Los elementos de una matriz también se pueden inicializar en la declaración de la matriz siguiendo el nombre de la matriz con un signo igual a y una lista de inicializadores separados por comas y delimitados por llaves. El programa utiliza una lista de inicializadores para inicializar una matriz entera con 10 valores (línea a) e imprime la matriz en formato tabular (líneas b – c).

Example

// n is an array of 10 integers
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 } ;

void setup () {

}

void loop () {
   for ( int i = 0; i < 10; ++i ) {
      Serial.print (i) ;
      Serial.print (‘\r’) ;
   }
   for ( int j = 0; j < 10; ++j ) // output each array element's value {
      Serial.print (n[j]) ;
      Serial.print (‘\r’) ;
   } 
}

Result - Producirá el siguiente resultado -

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

Ejemplo 3: suma de los elementos de una matriz

A menudo, los elementos de una matriz representan una serie de valores que se utilizarán en un cálculo. Por ejemplo, si los elementos de una matriz representan calificaciones de examen, un profesor puede desear sumar los elementos de la matriz y usar esa suma para calcular el promedio de la clase para el examen. El programa suma los valores contenidos en la matriz de enteros de 10 elementosa.

Example

const int arraySize = 10; // constant variable indicating size of array
int a[ arraySize ] = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
int total = 0;

void setup () {

}
void loop () {
   // sum contents of array a
   for ( int i = 0; i < arraySize; ++i )
      total += a[ i ];
   Serial.print (“Total of array elements : ”) ;
   Serial.print(total) ;
}

Result - Producirá el siguiente resultado -

Total of array elements: 849

Las matrices son importantes para Arduino y deberían necesitar mucha más atención. Los siguientes conceptos importantes relacionados con la matriz deben ser claros para un Arduino:

S.NO. Concepto y descripción
1 Pasar matrices a funciones

Para pasar un argumento de matriz a una función, especifique el nombre de la matriz sin corchetes.

2 Matrices multidimensionales

Las matrices con dos dimensiones (es decir, subíndices) a menudo representan tablas de valores que constan de información organizada en filas y columnas.