Computer-programming-arrays
コンピュータープログラミング-配列
5つの整数を保存する必要がある状況を考えてみましょう。 プログラミングの単純な変数とデータ型の概念を使用する場合、 int データ型の5つの変数が必要であり、プログラムは次のようになります-
#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);
}
5つの整数を保存する必要があるため、それは簡単でした。 ここで、5000個の整数を保存する必要があると仮定しましょう。 5000個の変数を使用しますか?
そのような状況に対処するために、ほとんどすべてのプログラミング言語は array と呼ばれる概念を提供します。 配列はデータ構造であり、同じデータ型の要素の固定サイズのコレクションを格納できます。 配列はデータのコレクションを格納するために使用されますが、配列を同じタイプの変数のコレクションと考える方が便利な場合がよくあります。
number1、number2、…、number99などの個々の変数を宣言する代わりに、整数型の配列変数 number を1つ宣言し、number1 [0]、number1 [1]、…、number1 [99 ]個々の変数を表します。 ここで、0、1、2、….. 99は var 変数に関連付けられた index であり、配列で使用可能な個々の要素を表すために使用されています。
すべての配列は、連続したメモリ位置で構成されています。 最下位アドレスは最初の要素に対応し、最上位アドレスは最後の要素に対応します。
配列を作成する
Cで配列変数を作成するには、プログラマーが要素のタイプとその配列に格納される要素の数を指定します。 Cプログラミングで配列を作成するための簡単な構文を以下に示します-
type arrayName [ arraySize ];
これは「単一次元配列」と呼ばれます。 arraySize はゼロより大きい整数定数でなければならず、 type は任意の有効なCデータ型にすることができます。 たとえば、 int 型の number という10要素の配列を宣言するには、このステートメントを使用します-
int number[10];
ここで、_number_は可変配列で、最大10個の整数を保持するのに十分です。
配列の初期化
あなたはCの配列を1つずつ、または次のように単一のステートメントを使用して初期化することができます-
int number[5] = {10, 20, 30, 40, 50};
中括弧\ {}の間の値の数は、角括弧[]の間の配列に対して宣言する要素の数より大きくすることはできません。
配列のサイズを省略すると、初期化を保持するのに十分な大きさの配列が作成されます。 したがって、あなたが書く場合-
int number[] = {10, 20, 30, 40, 50};
前の例で作成したのとまったく同じ配列を作成します。 以下は、配列の単一の要素を割り当てるための例です-
number[4] = 50;
上記のステートメントは、配列の5番目の要素番号に50の値を割り当てます。 すべての配列は、ベースインデックスとも呼ばれる最初の要素のインデックスとして0を持ち、配列の最後のインデックスは、配列の合計サイズから1を引いたものになります。 次の画像は、上記で説明した配列の図的表現を示しています-
配列要素へのアクセス
配列名にインデックスを付けることにより、要素にアクセスします。 これは、配列の名前の後に角かっこ内に要素のインデックスを配置することによって行われます。 たとえば-
int var = number[9];
上記のステートメントは、配列から10番目の要素を取得し、 var 変数に値を割り当てます。 次の例では、上記の3つの概念すべてを使用しています。 配列の作成、割り当て、アクセス-
#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;
}
上記のコードをコンパイルして実行すると、次の結果が生成されます-
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
Javaの配列
以下は、Javaで作成された同等のプログラムです。 Javaは配列をサポートしていますが、 new 演算子を使用してJavaで配列を作成する方法には少し違いがあります。
次のプログラムを実行して出力を確認することができますが、出力は上記のCの例で生成された結果と同一である必要があります。
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;
}
}
}
上記のプログラムが実行されると、次の結果が生成されます-
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
Pythonの配列(リスト)
Pythonには配列の概念がありませんが、代わりにPythonは list と呼ばれる別のデータ構造を提供します。これは他の言語の配列と同様の機能を提供します。
以下は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
上記のプログラムが実行されると、次の結果が生成されます-
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