Arduino - tablice

Tablica to kolejna grupa lokalizacji pamięci, które są tego samego typu. Aby odwołać się do określonej lokalizacji lub elementu w tablicy, określamy nazwę tablicy i numer pozycji konkretnego elementu tablicy.

Poniższa ilustracja przedstawia tablicę liczb całkowitych o nazwie C, która zawiera 11 elementów. Odwołujesz się do dowolnego z tych elementów, podając nazwę tablicy, po której następuje numer pozycji konkretnego elementu w nawiasach kwadratowych ([]). Numer pozycji jest bardziej formalnie nazywany indeksem lub indeksem (liczba ta określa liczbę elementów od początku tablicy). Pierwszy element ma indeks 0 (zero) i jest czasami nazywany elementem zerowym.

Zatem elementy tablicy C to C [0] (wymawiane jako „C poniżej zera”), C [1], C [2] i tak dalej. Najwyższy indeks w tablicy C to 10, czyli o 1 mniej niż liczba elementów w tablicy (11). Nazwy tablic są zgodne z tą samą konwencją, co inne nazwy zmiennych.

Indeks dolny musi być wyrażeniem całkowitym lub całkowitym (przy użyciu dowolnego typu całkowitego). Jeśli program używa wyrażenia jako indeksu dolnego, program ocenia wyrażenie, aby określić indeks. Na przykład, jeśli założymy, że zmienna a jest równa 5, a zmienna b jest równa 6, to instrukcja dodaje 2 do elementu tablicy C [11].

Nazwa tablicy z indeksem to wartość l, może być używana po lewej stronie przypisania, tak jak nazwy zmiennych niebędących tablicami.

Przyjrzyjmy się bliżej tablicy C na podanym rysunku. Nazwą całej tablicy jest C. Jej 11 elementów jest oznaczonych jako C [0] do C [10]. Wartość C [0] to -45, wartość C [1] to 6, wartość C [2] to 0, wartość C [7] to 62, a wartość C [10] to 78.

Aby wydrukować sumę wartości zawartych w pierwszych trzech elementach tablicy C, napisalibyśmy -

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

Aby podzielić wartość C [6] przez 2 i przypisać wynik do zmiennej x, napisalibyśmy -

x = C[ 6 ] / 2;

Deklarowanie tablic

Tablice zajmują miejsce w pamięci. Aby określić typ elementów i liczbę elementów wymaganych przez tablicę, użyj deklaracji formularza -

type arrayName [ arraySize ] ;

Kompilator rezerwuje odpowiednią ilość pamięci. (Przypomnijmy, że deklaracja, która rezerwuje pamięć, jest lepiej znana jako definicja). ArraySize musi być stałą liczbą całkowitą większą od zera. Na przykład, aby nakazać kompilatorowi zarezerwowanie 11 elementów na tablicę liczb całkowitych C, użyj deklaracji -

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

Można zadeklarować, że tablice zawierają wartości dowolnego typu danych nie będącego odniesieniem. Na przykład tablica typu string może służyć do przechowywania ciągów znaków.

Przykłady z wykorzystaniem tablic

Ta sekcja zawiera wiele przykładów, które pokazują, jak deklarować, inicjować i manipulować tablicami.

Przykład 1: Deklarowanie tablicy i użycie pętli do inicjalizacji elementów tablicy

Program deklaruje 10-elementową tablicę liczb całkowitych n. Linie a – b używają aForinstrukcja, aby zainicjować elementy tablicy do zer. Podobnie jak inne zmienne automatyczne, tablice automatyczne nie są niejawnie inicjowane do zera. Pierwsza instrukcja wyjściowa (wiersz c) wyświetla nagłówki kolumn dla kolumn wydrukowanych w następnej instrukcji for (wiersze d – e), która drukuje tablicę w formacie tabelarycznym.

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 - To da następujący wynik -

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

Przykład 2: Inicjowanie tablicy w deklaracji za pomocą listy inicjalizującej

Elementy tablicy można również zainicjować w deklaracji tablicy, następując po nazwie tablicy ze znakiem równości i rozdzieloną nawiasami klamrowymi listą inicjatorów. Program używa listy inicjalizacyjnej do zainicjowania tablicy liczb całkowitych z 10 wartościami (wiersz a) i wyświetla tablicę w formacie tabelarycznym (wiersze 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 - To da następujący wynik -

Element Value

0

1

2

3

4

5

6

7

8

9

32

27

64

18

95

14

90

70

60

37

Przykład 3: Sumowanie elementów tablicy

Często elementy tablicy reprezentują serię wartości używanych w obliczeniach. Na przykład, jeśli elementy tablicy reprezentują oceny z egzaminu, profesor może zechcieć zsumować wszystkie elementy tablicy i użyć tej sumy do obliczenia średniej z egzaminu. Program sumuje wartości zawarte w 10-elementowej tablicy liczb całkowitycha.

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 - To da następujący wynik -

Total of array elements: 849

Tablice są ważne dla Arduino i powinny wymagać dużo więcej uwagi. Następujące ważne pojęcia związane z tablicą powinny być jasne dla Arduino -

S.NO. Koncepcja i opis
1 Przekazywanie tablic do funkcji

Aby przekazać argument tablicy do funkcji, określ nazwę tablicy bez żadnych nawiasów.

2 Tablice wielowymiarowe

Tablice z dwoma wymiarami (tj. Indeksami dolnymi) często reprezentują tabele wartości składające się z informacji ułożonych w wierszach i kolumnach.