メニュー

logo

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

【第57回】ロータス博士のWinActor塾~多重ループ 基礎編

2022.01.19

ご無沙汰じゃのう!新年最初のWinActor塾の時間じゃぞ!

今年もWinActorの基礎を学んでもらえるように頑張るつもりじゃ。

応援よろしく頼みますぞ。

全然更新がなかったのでもう潰れたかと思いましたよ、この塾。

年末年始は忙しいからのう。勘弁しておくれ。

今日は多重ループの考え方について解説しようと思うぞ。

多重ループとは

多重ループはその名の通り、複数のループが重なっている部分を指します。

重なっているというのは、ループの中にループがある状態のことで

WinActorのシナリオでは次のような状態になります。

 

 

この図はループが2つ重なっているので、2重ループになります。

さらにこのループの中にループが入ると3重ループというように増え、

それらをまとめて多重ループと呼びます。

 

フォルダのように親子関係となるため、外側のループを親、内側のループを子と呼んだりもします。

え、なんですかこれ。やだなあ。

もう僕には使いこなせそうにないです。

ループの中にループだなんて・・・。

確かにこのフローを見たら複雑になりそうなのは目に見えておるのう。

しかし、これを覚えれば全てのシナリオに応用が効く。

とても大事なところなのじゃ。頑張ってついてきてほしい。

多重ループの流れを掴もう

とにかく、多重ループはフローの流れを見失わないことが大切です。

まずは多重ループに慣れるために、ループ内の処理が何度実行されるのか数えてみましょう。

 

1次元的な考え方

まずはこの2重ループの中の処理が何度実行されるのか考えてみましょう。

わかりやすいように、それぞれのループに色をつけました。

外側の緑色のループは10回。内側のオレンジのループも10回に設定しています。

 

 

 

これは直感的に回数がわかる人もたくさんいるじゃろう。

じゃが、頭の中でどう考えたかがポイントじゃ。

まずは単純に回数を1回ずつ数えていく方法から説明するぞ。

 

先ほどのフローを簡単な図におこしてみます。

 

 

全体像はこのようになりますね。 

ここからさらに「処理」に一番近い、オレンジループの部分だけを抜き取ってみましょう。

 

 

 

こうなると誰がどうみても10回のループですね。 

では矢印をくるくると辿って、左から順に並べて数えてみましょう。

 

 

1ループをオレンジの枠として並べました。

1ループ内に処理は1回なので、オレンジの枠の中に処理が1つ入っています。

処理は全部で10回ですね。ではこのまま元のフローに戻します。

 

あれ?なんだか見やすい!

普通のループみたいになってますね。

まあ、分解していくとこうなる。

ではこれも並べよう。

 

ちょっとちょっと博士!これはわかりにくいですよ!

こんなの数えてたら・・・。

ふぉっふぉっふぉ。冗談じゃよ。

オレンジ枠の中は10回とわかっているから

こんな感じに圧縮して・・・

 

 

緑枠のループが10回じゃから10個並べるぞ。

これでどうじゃ?

 

お、いいですね!すっきりしました。

10回の処理を10個・・・10×10で合計100回ってことですね!

正解じゃ!既にわかっていた人はたくさんいると思う。

なぜこんな回りくどいことをするのかと言われそうじゃが、これが本来の数え方じゃ。

人間の脳は優秀じゃから、最初のフローを見ただけで100回とわかる。

掛け算という技を無意識に使っておったのじゃ。

そうか・・・多重ループは回数を掛け算することで

一番内側にある処理の回数がわかるってことですね!

その通り!今のは掛け算のほうが楽ということに気付くためのステップじゃ。

実際にこのような数え方はしないが、あえて説明したのはそのためじゃ。

次のステップでは、最初から掛け算を使った考え方を説明しよう。

2次元的な考え方

ここで少し簡単に次元の話をしましょう。1次元は線、2次元は面というのを聞いたことがあるでしょうか?

次元は並ぶ方向の数と考えてください。先ほどの例だと、処理のブロックを左から右に一列に並べていました。

この場合、並ぶ方向が左から右の一方向しかないので1次元になります。

 

では、2次元の場合を考えるとどうでしょう。

左右を使ったのが1次元、それにもうひとつ並べる方向を加えると上下があります。

先ほど博士は100個を一列に並べようとしていましたが、これを2次元で考えると上下も使えますので

次のように並べることができます。

 

 

 

 

処理が左右と上下に並ぶことで面になっています。これが2次元の並べ方です。 

上下左右ではわかりにくいので、以降は縦と横と呼びますが、この考え方の重要な部分はその縦と横がある点です。

 

縦と横の並びというのは、表ととても相性が良いのです。

言い換えると、2重ループは表と相性が良いということです。

これは親ループと子ループがそれぞれ縦、横を担当できるという点にあります。

 

ここで上の図をもう一度見て欲しい。

緑の10は縦、オレンジの10は横の並びを表しておるな。

もともとこの色はループを見分けるために付けたものじゃから

最初のフローに当てはめるとこうなる。

 

 

親ループが縦、子ループが横を担当しておるのう。

どうじゃ?2重ループの使いどころが分かってきたのではないかな?

ループの中にループを入れるなんて・・・と思ってましたけど

こうしてみると、表に対しての処理で2重ループはすごく優秀なんですね。

実際に使ってみたいのじゃが、残念ながらここで時間じゃ。

次回はこの2重ループを使っていろいろとやってみよう!

練習問題も出そうと思うので是非挑戦してみて欲しい。

時間なら仕方ないですね。時間なら。

あーー残念だなあ!もうちょっと勉強したかったなあ!

喜んでるじゃろ・・・。

とまあ、ループは応用の幅がとても広い重要なノードじゃから

今回の内容をしっかり覚えて次回も頑張るのじゃぞ!

ではまたの!


 

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

最近の記事

カテゴリ

PAGETOP