Arduino - Arrays

Uma matriz é um grupo consecutivo de locais de memória que são do mesmo tipo. Para fazer referência a um determinado local ou elemento na matriz, especificamos o nome da matriz e o número da posição do elemento específico na matriz.

A ilustração a seguir mostra uma matriz de inteiros chamada C que contém 11 elementos. Você se refere a qualquer um desses elementos fornecendo o nome da matriz seguido pelo número da posição do elemento específico entre colchetes ([]). O número da posição é mais formalmente chamado de subscrito ou índice (este número especifica o número de elementos desde o início da matriz). O primeiro elemento tem subscrito 0 (zero) e às vezes é chamado de elemento zeros.

Assim, os elementos da matriz C são C [0] (pronuncia-se “C sub zero”), C [1], C [2] e assim por diante. O maior subscrito na matriz C é 10, que é 1 a menos que o número de elementos na matriz (11). Os nomes de array seguem as mesmas convenções de outros nomes de variáveis.

Um subscrito deve ser um inteiro ou uma expressão inteira (usando qualquer tipo integral). Se um programa usa uma expressão como subscrito, o programa avalia a expressão para determinar o subscrito. Por exemplo, se assumirmos que a variável a é igual a 5 e que a variável b é igual a 6, então a instrução adiciona 2 ao elemento C do array [11].

Um nome de array subscrito é um lvalue, ele pode ser usado no lado esquerdo de uma atribuição, assim como os nomes de variáveis ​​que não são de array.

Vamos examinar a matriz C na figura fornecida, mais de perto. O nome de todo o array é C. Seus 11 elementos são referidos como C [0] a C [10]. O valor de C [0] é -45, o valor de C [1] é 6, o valor de C [2] é 0, o valor de C [7] é 62 e o valor de C [10] é 78

Para imprimir a soma dos valores contidos nos três primeiros elementos da matriz C, escreveríamos -

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

Para dividir o valor de C [6] por 2 e atribuir o resultado à variável x, escreveríamos -

x = C[ 6 ] / 2;

Declaração de matrizes

Matrizes ocupam espaço na memória. Para especificar o tipo dos elementos e o número de elementos exigidos por uma matriz, use uma declaração do formulário -

type arrayName [ arraySize ] ;

O compilador reserva a quantidade apropriada de memória. (Lembre-se de que uma declaração que reserva memória é mais apropriadamente conhecida como definição). O arraySize deve ser uma constante inteira maior que zero. Por exemplo, para dizer ao compilador para reservar 11 elementos para a matriz C inteira, use a declaração -

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

Os arrays podem ser declarados como contendo valores de qualquer tipo de dados sem referência. Por exemplo, uma matriz de tipo string pode ser usada para armazenar strings de caracteres.

Exemplos usando matrizes

Esta seção fornece muitos exemplos que demonstram como declarar, inicializar e manipular matrizes.

Exemplo 1: Declarando um Array e usando um Loop para inicializar os elementos do Array

O programa declara uma matriz inteira de 10 elementos n. As linhas a – b usam aFordeclaração para inicializar os elementos da matriz para zeros. Como outras variáveis ​​automáticas, os arrays automáticos não são inicializados implicitamente com zero. A primeira instrução de saída (linha c) exibe os títulos das colunas impressas na instrução for subsequente (linhas d – e), que imprime a matriz em 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 - Isso produzirá o seguinte resultado -

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

Exemplo 2: Inicializando um Array em uma Declaração com uma Lista de Inicializadores

Os elementos de uma matriz também podem ser inicializados na declaração da matriz, seguindo o nome da matriz com um sinal de igual e uma lista de inicializadores separados por vírgula delimitada por chaves. O programa usa uma lista de inicializadores para inicializar um array inteiro com 10 valores (linha a) e imprime o array em formato tabular (linhas 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 - Isso produzirá o seguinte resultado -

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

Exemplo 3: Somando os Elementos de um Array

Freqüentemente, os elementos de uma matriz representam uma série de valores a serem usados ​​em um cálculo. Por exemplo, se os elementos de uma matriz representam notas de exames, um professor pode desejar totalizar os elementos da matriz e usar essa soma para calcular a média da classe para o exame. O programa soma os valores contidos no array inteiro 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 - Isso produzirá o seguinte resultado -

Total of array elements: 849

Os arrays são importantes para o Arduino e precisam de muito mais atenção. Os seguintes conceitos importantes relacionados ao array devem ser claros para um Arduino -

S.NO. Conceito e descrição
1 Passando Arrays para Funções

Para passar um argumento de matriz para uma função, especifique o nome da matriz sem colchetes.

2 Matrizes multidimensionais

Matrizes com duas dimensões (ou seja, subscritos) geralmente representam tabelas de valores que consistem em informações organizadas em linhas e colunas.