Arduino-arrays

提供:Dev Guides
移動先:案内検索

Arduino-配列

アレイは、同じタイプの連続したメモリロケーションのグループです。 配列内の特定の場所または要素を参照するには、配列の名前と配列内の特定の要素の位置番号を指定します。

以下の図は、11個の要素を含むCという整数配列を示しています。 これらの要素のいずれかを参照するには、配列名の後に角括弧([])で特定の要素の位置番号を指定します。 位置番号は、正式には添え字またはインデックスと呼ばれます(この番号は、配列の先頭からの要素の数を指定します)。 最初の要素の添え字は0(ゼロ)であり、ゼロ要素と呼ばれることもあります。

したがって、配列Cの要素はC [0](「C sub zero」と発音)、C [1]、C [2]などです。 配列Cの最高の添え字は10で、これは配列の要素数(1)より1少ない値です。 配列名は、他の変数名と同じ規則に従います。

配列の要素

添え字は、整数または整数式(整数型を使用)でなければなりません。 プログラムが式を添え字として使用する場合、プログラムは式を評価して添え字を決定します。 たとえば、変数aが5に等しく、変数bが6に等しいと仮定すると、ステートメントは配列要素C [11]に2を追加します。

添え字付き配列名は左辺値であり、配列以外の変数名と同様に、代入の左側で使用できます。

与えられた図の配列Cをより詳しく調べてみましょう。 配列全体の名前はCです。 その11個の要素は、C [0]〜C [10]と呼ばれます。 C [0]の値は-45、C [1]の値は6、C [2]の値は0、C [7]の値は62、C [10]の値は78。

配列Cの最初の3つの要素に含まれる値の合計を印刷するには、次のように書きます-

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

C [6]の値を2で除算し、結果を変数xに割り当てるには、次のように記述します-

x = C[ 6 ]/2;

配列の宣言

配列はメモリ内のスペースを占有します。 配列に必要な要素の型と要素の数を指定するには、次の形式の宣言を使用します-

type arrayName [ arraySize ] ;

コンパイラは適切な量のメモリを確保します。 (メモリを予約する宣言は、定義としてより適切に知られていることを思い出してください)。 arraySizeは、ゼロより大きい整数定数でなければなりません。 たとえば、整数配列Cの11個の要素を予約するようにコンパイラに指示するには、宣言を使用します-

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

配列は、非参照データ型の値を含むように宣言できます。 たとえば、文字列型の配列を使用して文字列を格納できます。

配列を使用した例

このセクションでは、配列を宣言、初期化、操作する方法を示す多くの例を示します。

例1:配列を宣言し、ループを使用して配列の要素を初期化する

プログラムは、10要素の整数配列 n を宣言します。 行a〜bは、配列要素をゼロに初期化するために For ステートメントを使用します。 他の自動変数と同様に、自動配列は暗黙的にゼロに初期化されません。 最初の出力ステートメント(行c)は、後続のforステートメント(行d〜e)で印刷された列の列見出しを表示し、表形式で配列を印刷します。

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’) ;
   }
}

結果-次の結果が生成されます-

Element Value

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

0

0

例2:初期化子リストを使用した宣言での配列の初期化

配列の要素は、配列名の後に等号と括弧で区切られたコンマ区切りの初期化子のリストを続けることにより、配列宣言で初期化することもできます。 このプログラムは、初期化リストを使用して10個の値で整数配列を初期化し(行a)、配列を表形式(行b〜c)で出力します。

//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’) ;
   }
}

結果-次の結果が生成されます-

Element Value

0

1

2

3

4

5

6

7

8

9

a

32

27

64

18

95

14

90

70

60

37

例3:配列の要素を合計する

多くの場合、配列の要素は、計算で使用される一連の値を表します。 たとえば、配列の要素が試験の成績を表す場合、教授は配列の要素を合計し、その合計を使用して試験のクラス平均を計算できます。 プログラムは、10要素の整数配列 a に含まれる値を合計します。

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) ;
}

結果-次の結果が生成されます-

Total of array elements: 849

配列はArduinoにとって重要であり、さらに注意が必要です。 配列に関連する次の重要な概念は、Arduinoに明確である必要があります-

S.NO. Concept & Description
1

Passing Arrays to Functions

関数に配列引数を渡すには、角括弧なしで配列の名前を指定します。

2

Multi-Dimensional Arrays

2次元の配列(つまり、添字)は、多くの場合、行と列に配置された情報で構成される値のテーブルを表します。