メニュー

logo

カチシステムはお客様に寄り添った
システム開発と支援サービスを提供し
「やさしい最先端」を創造します。

【第32回】ロータス博士のWinActor塾~変数と配列Ⅱ

2021.03.01

配列とは

いよいよ配列がどんなものか解説していくぞ。

丁寧に説明するのでしっかり覚えよう。

前回の記事を読んでいない方はこちらから

 

配列とは、データを一列に並べたもののことを指します。

変数と同じように、作成することでデータを格納することができます。

 

例えば「a」という名前の変数があるとします。前回の説明を思い出してみましょう。

変数は箱のようなものなので、イメージとしてはこのようになります。

 

 

変数には必ず名前を付ける必要があります。

同じような箱が複数あった場合に、任意の箱を指定できなくなってしまうためです。

配列もデータを格納できる箱というイメージですが、変数と異なるところは複数のデータが一列に並んでいる点です。

もちろん配列にも名前が必要です。「a」という配列を想像してみましょう。

配列「a」は次のようなイメージになります。

 

 

箱が繋がっているように見えますね。 

もしくは「a」という箱が5つの部屋に分かれたというイメージでしょうか。これが配列の正体です。

重要なのは、データを格納できる部屋が複数あり、それが連続して繋がっているもの、ということです。

これら全体を「a」と呼びます。 

 

イメージはわかりました。

でもデータが5つ入れられるなら、5つぶん名前を付けないと取り出せなくなるのでは?

良いところに気が付いたのう。

ここからが配列の面白いところなのじゃ。

 

配列には、それぞれの部屋に番号が振られます。

この部屋ひとつひとつを配列の要素と呼びます。

さきほどの「a」という配列の場合は次のようになります。

 

 

各要素に連続した数字が割り振られています。

この0~4の数字を添字(そえじ)もしくはindex(インデックス)と呼びます。

 

配列の要素の合計をその配列の要素数と呼びます。この例では要素数は5になります。

添字は0から始まるので、要素数をNとすると、添字の最後はN-1となることに注意しましょう。

 

ここまでをまとめると次のようになります。

 

 

要素数はいくつでも増やすことができます。

aという配列の2番目のデータが欲しい場合、a[1]のデータになるので、配列名の「a」とインデックス「1」を指定します。

配列にデータを格納・更新したり、配列からデータを取得する場合は、必ずインデックスが必要になることを覚えておきましょう。

ループとの組み合わせ

ここまでの説明で配列がどんなものがわかったかな?

聞きなれない言葉が多かったかもしれんが、イメージは伝わったと思う。

だいたいわかりました!

でも要素数5の配列に5つのデータを入れるなら

変数を5つ作っても同じじゃないでしょうか。

そうくると思ったぞ!

なぜ配列が重宝されるのか、それはループとの相性が非常に良いからなのじゃ。

ではループと配列の組み合わせについて学んでいこう。

 

ループとカウンタの有用性

 

まずはループとカウンタについて簡単におさらいしましょう。

ループは、指定した回数、もしくは無限に処理を繰り返すフローのことでした。

そして、繰り返しの中で加算していく数値をカウンタと呼びます。

 

ループと条件分岐については過去の記事をご参照ください

 

 

例えば、1から10という数値を表示したい場合は

次のようなフローになるぞ。

「i」という変数を準備し、ループに入る前に0にします。

そして、ループする毎にiを+1することで、1ループ目には1、2ループ目には2を表示することができます。

表示した後は、条件分岐でiが10より少ない場合にループすることで

10まで表示したらループから抜けるようになります。

 

 

ポイントは「iを+1する」という部分。

何ループ目でもやることが同じだからこのようなことができるのじゃが

一番重要なのは、iが数字であることじゃ。

数字じゃないとなにかまずいんですか?

うむ。次の例を考えてみてくれ。

 

月曜~金曜を表示するフローを考えてみましょう。

1~10はループを利用することで簡単にフローを作成することができましたが

月~金をループで表示しようとした場合はどのようなことが起きるでしょうか。

 

1→2と変化する場合は1を加算、同様に2→3と変化する場合も1を加算するので、先ほどの例はうまくいきました。 

しかし、今回は月~金なので、1を加算しても意味がありません。 

月→火とするにはどうすればよいのでしょうか。 

 

数字じゃないだけでこんなことに・・・

月だったら火みたいな条件分岐をたくさん入れればなんとか・・・うーん

どうじゃ、難しいじゃろう。

これをループでどうにかしたい場合でも配列なら解決できるのじゃ。

 

インデックスとカウンタ

 

それでは、配列を利用してこの問題を解決しましょう。

配列の使い方さえわかっていれば、難しいことではありません。

次のようなデータが入った配列を考えてみてください。

 

 

それぞれの要素に月~金というデータが入った「曜日」という名前の配列を作成しました。 

最初に表示したいのは「月」なので、曜日の1番目のデータが必要です。

配列のルールに従うと、月は曜日[0]と指定できます。さらに、火は曜日[1]となります。

これを改めて図にすると次のようになります。

 

 

インデックスに注目してください。 

配列のインデックスは0から始まり、順番に割り振られるものでした。

月~金は順番に配列に格納されているので、月→火とするにはインデックスを1加算すればよいということになります。

 

ループカウンタをインデックスに指定して取得することで、月~金を順番に表示することができるのです。

 

i をループカウンタとすると

曜日[i]

と表すことができます。

こんなやり方があったなんて・・・

配列ってすごいんですね!

うむ、配列はたくさんの可能性を秘めておる!

ループにできずに複雑化してしまっているシナリオも、これできれいになるかもしれんぞ。

最後にフローを確認して今回はおしまいじゃ。

「i」という変数を準備し、ループに入る前に0にします。

インデックスは0から始まるので、まず曜日という配列を表示します。

インデックスの最後は要素数-1となるため、インデックスが4で表示を終えたらループを抜ける必要があります。

従って、ループに戻る条件はi<4となります。

 

 

 

これで配列がループと相性抜群で、連続したデータを扱うことに長けているものだと

理解してもらえたと思う。

次回は、実際にこのシナリオをWinActor上で作成してみるぞ!

できることが広がった気がします!

次回が楽しみですね!


 

関連記事こちらの記事も合わせてどうぞ。

最近の記事

カテゴリ

PAGETOP