「またまた私です。説明し忘れたことがあったんですよ。変数とメモリアドレッシングについて説明しますね。あまり深く掘り下げるつもりはないですが、少なくとも何か 1 つは覚えておくといいでしょう。」

「'何か理解できれば、それでよし。理解できなくても、大丈夫' という先生のアプローチに納得です。」

「愛は強要できませんよね?当然のことです。きみの惑星でもそうじゃないですか?」

「いいえ、私たちのアプローチは違います。勉強はやりたかったらやります。でも、やりたくなくても嫌々やります。」

「なんて遅れた勉強の仕方なんですか!それだとエネルギーと時間がたくさん無駄になるし、良い結果もでませんよ。」

「確かに無駄にしてますね。悲しくなる話はやめておきましょう。」

「了解。では、Excel を想像してください。誰でも知ってるあの Excel です。Excel シートはセルで構成されています。各セルにはそれぞれ一意の識別子があります (A1、A2、…B1、B2 など)。セルの識別子が分かっていれば、いつでもそれに値を書き込んだり、そこに保管されている値を取得したりできます。実は、コンピューターのメモリも同じように整理されているんですよ。」

メモリアドレッシングと変数 - 1

「ここまで問題ありません。」

「プログラムそのものとプログラムのデータは、プログラムの実行中にメモリに保管されます。すべてのコンピューターメモリは小さなセル、つまりバイトに分割されます。各セルには 0、1、2、3 といった一意の識別子、つまり数字 (数字は 0 から始まる) が関連付けられています。セルの番号が分かっていれば、それにデータを保存する、またはそこからデータを取得する、といったことができます。一部のセルにはプログラムのコード、つまりプロセッサーに対する一連のコマンドが保管されます。他のセルにはプログラムが使用するデータが保管されます。各セルの番号はその 'アドレス' と呼ばれます。」

「教授からプロセッサーとコマンドについて聞きましたが、細かいことはまだです。」

「プロセッサーはメモリに読み込まれるコマンドを実行することができます。プロセッサーに対するコマンドは、'セルからデータを取得しろ、それを使って何らかのアクションを実行しろ、結果を他のセルに送信しろ' といった内容がほとんどです。数百ものシンプルなコマンドを組み合わせて、複雑なんだけれども役に立つというコマンドを作ります。」

「でも、どうしてそんなことをする必要があるんですか?」

「コードの中で変数が宣言されると、それに未使用のメモリが割り当てられます。通常は数バイト分のメモリです。変数を宣言するには、プログラムがその中に保管する情報のタイプ (数字、テキスト、他のデータなど) を指定する必要があります。扱いやすくするために、各変数に一意の名前が割り当てられます。」

「変数は名前であり、タイプであり、メモリの一部であり、値でもあるってことですか?」

「そのすべてがひとまとめになっているんですよ。例をいくつか見てみましょうか。」

コード 説明
1
String s;
この行では s と名付けた変数を作成しています。テキストを保管するために使うので、その型を String として宣言しています
同じ関数やクラスの中で同じ名前の変数を 2 つ宣言することはできません。
2
String s2 = "私はディエゴです";
この行では s2 と名付けた String 型の変数を作成すると同時に "私はディエゴです" という値を割り当てています
3
int a;
ここでは a と名付けた変数を作成しています。そのデータ型はそれに保管されるデータの型に合わせないといけません。int というデータ型は integer (整数) を略したものです。
4
int b = 4;
ここでは b と名付けた変数を作成しています。そのデータ型 (int) は整数を保管するためのものです。即座に 4 という値が変数に割り当てられています。

「ディエゴからタスクをいくつか受け取ってますので、少しずつやっていきましょう。」