前回、①に戻り、共通鍵暗号方式と公開鍵暗号方式の違いを整理しました。今回は、科目Bに戻り、以前学んだ配列の応用として「多次元配列(行列)」の操作を整理します。
多次元配列とは
以前整理した配列は、値が1列に並んだ「1次元配列」でした。多次元配列は、この配列をさらに複数まとめて、行と列のような形で管理できるようにしたものです。代表的なのが、行と列で構成される「2次元配列(行列)」です。
2次元配列の考え方
2次元配列は、値を「行(横方向)」と「列(縦方向)」で管理します。ある値にアクセスするときは、「配列名[行の添字][列の添字]」というように、2つの添字を指定します。
以前整理した1次元配列の添字と同じく、多くの場合、行・列とも先頭は添字0から数えます。この点を思い違えると、参照する位置がすべてずれてしまうため、問題文の定義を必ず確認するようにしています。
具体例で確認する
例えば、次のような2次元配列を考えます。
data[0][0]=1 data[0][1]=2 data[1][0]=3 data[1][1]=4
この場合、data[0][1]は1行目・2列目の値である2を指し、data[1][0]は2行目・1列目の値である3を指します。行と列、どちらの添字が先に書かれているかを、問題文の定義に沿って正確に読み取ることが大切です。
行列の計算(足し算)
多次元配列を使った代表的な処理として、行列どうしの足し算があります。行列の足し算は、同じ位置(同じ行・同じ列)にある値どうしを、それぞれ足し合わせる、という操作です。
以前整理した繰り返し処理(for)を、行方向・列方向それぞれに使うことで、すべての位置の値を、順番に処理していくことができます。「繰り返しの中に、さらに繰り返しがある」という、二重の繰り返し構造がよく使われます。
トレースするときの注意点
多次元配列のトレース問題では、「今、どの行・どの列を処理しているか」を、常に意識して追うようにしています。
二重の繰り返しになっている場合、外側の繰り返しと内側の繰り返しを混同しやすいため、外側が1回進むごとに、内側の繰り返しがすべて終わっている、という順序を、書き出しながら確認しています。
学習してみた感想
多次元配列は、1次元配列の理解がそのまま土台になっている単元でした。ただ、二重の繰り返しになると、頭の中だけで追うのはかなり難しく、実際にマス目を描いて、どの順番で処理が進むかを書き出す練習が欠かせないと感じました。
次回は、トレース問題の解き方(手を動かして追う練習法)を整理します。
