メニュー

logo

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

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

2021.03.12

配列を使う前に

今回は、実際に配列とループを利用したシナリオを作成していくぞ。

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

 

もしかして、シナリオを作成したくても手元にWinActorがない、なんて方はおるかな?

RoTASでは無料トライアルも用意されておる。是非利用して欲しいぞ。

WinActorを入手して、塾を最初から見直すのも良いかもしれん!

セミナーも人気ですね!

ロボットを作成に役立つ考え方や情報が満載ですよ!

 

配列を扱うためのノード

 

配列は変数のように専用の操作ウィンドウ等がなく、すべてノードで操作します。

配列は、まず最初に中をきれいにする(初期化)必要があり、その後でデータを入れていきます。

そしてシナリオ内の必要な場所で、他の変数にデータを取り出して使用します。

以下に、主に使用するノードとその役割を表で示します。

 

 

ノード名役割
1次元配列操作(初期化)

指定した配列のデータをクリアします。

配列を使用する前に必ず実行する必要があります。

1次元配列操作(情報挿入) 指定した配列の指定したインデックスにデータを挿入します。 
1次元配列操作(情報更新) 指定した配列の指定したインデックスにあるデータを置き換えます。 
1次元配列操作(情報取得) 指定した配列の指定したインデックスにあるデータを取得し、変数に格納します。 
1次元配列操作(指定インデックスの情報初期化)

指定した配列の指定したインデックスにあるデータをクリアします。

中には空文字が入ります。 

1次元配列操作(ダンプ)

指定した配列の中のデータをテキストファイルとして出力します。

マイドキュメント内のWinActorフォルダに「配列名.txt」ファイルが作成されます。 

 

これらのノードは NTTATライブラリ > 03_変数 > 02_辞書と配列 にあります。 

 

 

情報挿入と情報更新の違い

 

1次元配列操作(情報挿入)と1次元配列操作(情報更新)はどちらのノードも配列内のデータを操作するノードです。

しかし、既にデータが入っているインデックスに対して操作を行う場合に用途が分かれます。

 

情報挿入は、指定したインデックスに新規に要素を作成します。

作成されたデータより後ろはインデックスが1つずつずれていきます。

 

では「あ~お」を1文字ずつ入れた「ひらがな」という配列を例に

どのように変わるのかを見てみよう。

「あ~お」が入れられた下図のような配列「ひらがな」の

インデックス番号2に「か」という新しい文字を入れるシナリオをそれぞれのノードで実行すると…

 

情報挿入の場合

 

ひらがな[2]に「か」を入れます。

情報挿入の場合、後に続くデータが押し出されて1つずつずれます。

このノードは、既存のデータをそのままに、新しいデータを配列の途中に追加したい場合に利用します。

 

「う」のインデックス番号はもともと2じゃったが、今は3になっておる。「え」と「お」も同様じゃな。

このようにデータの中身とインデックスの紐付けがずれることに注意じゃ。

インデックスはあくまで先頭から数えた番号ということですね!

 

情報更新の場合

 

挿入に対して、情報更新は既存のデータを上書きする形になります。データの位置がずれることはありません。

上書きですので、指定したインデックスにもともと入っていたデータは消えてしまいます。

 

とはいえ、あらかじめ配列にデータを入れて準備しておき

それを利用するだけなら特に気にすることはないじゃろう。

途中でどうしても配列の中のデータをいじる必要が出てきた場合は注意しよう。

末尾にデータを追加する分には変わりませんね。

実践!曜日を順番に表示するシナリオ

やりたいこと

 

・月~金までの5つのデータを持つ配列を作成する

・ループを利用して順番に表示されるようにする

 

変数の準備

 

それでは早速シナリオを作成していきましょう。

まずは配列を扱うために必要な変数を用意します。

以下の2つの変数を作成し「インデックスカウンタ」の初期値には「0」を設定しておきます。

 

 

 

 

配列の初期化

 

変数を作成したら、配列用のノードを配置していきます。

まずは初期化が必要なので「1次元配列操作(初期化)」のノードをシナリオの先頭に配置します。

このノードはプロパティに設定する項目がありませんので配置するだけになります。

 

 

 

配列にデータを設定する

 

初期化の次は配列にデータを入れていきます。

「1次元配列操作(情報挿入)」を配置し、プロパティを次のように設定しましょう。 

 

 

 

これを配列の要素ぶん(今回は月~金なので5ノード)繰り返します。

全ての設定値を以下に示します。

 

順番使用ノード配列名インデックス情報
1 1次元配列操作(情報挿入) 曜日 月 
1次元配列操作(情報挿入)  曜日  火 
1次元配列操作(情報挿入)  曜日  水 
1次元配列操作(情報挿入)  曜日  木 
1次元配列操作(情報挿入)  曜日  金 

 

変数の初期値を入れるのと同じ感覚じゃな。

インデックスが0から始まることを忘れないように。

これも自動で入力したいですね…。

要素がたくさん増えたら大変そう。

Excelからの転記の要領で、配列に読み取った値をセットしていくといった使い方も可能じゃぞ。

これは少し難易度が上がるので、今回は手入力で頑張るのじゃ。

すべてのノードの設定を終えると、シナリオフローは次のようになっています。

※わかりやすいようにグループ化しています。

 

 

ループを利用しての表示

 

ここまできたら、残るは表示のみです。 

配列に設定したデータを順番に表示させていきます。 

 

シナリオの続きに「繰り返しグループ」を配置しましょう。

プロパティは「回数」を指定し、値に「5」を入力します。

 

 

設定ができたら、繰り返しグループの中に「1次元配列操作(情報取得)」を配置します。 

プロパティは次のように設定します。インデックスと取得情報の項目には、準備しておいた変数を指定しましょう。

 

 

 

この状態で、インデックスカウンタには変数の初期値として「0」が入っているため

曜日[0]のデータが「情報表示用」という変数に格納されることになります。 

あとはこの「情報表示用」変数を 待機ボックスなどで表示させましょう。

 

 

 

 

これで配列内のデータを取得して表示することができるようになりました。 

しかし、このままではインデックスが「0」のままループされてしまいます。

ループ内の最後にインデックスカウンタを+1加算するためのカウントアップを入れましょう。

 

 

 

 

 

繰り返しグループ内の処理が完成しました。繰り返しグループ内の全体はこのようになります。

 

 

 

また、フローチャート全体はこのようになりました。

 

同じシナリオが作成できたかな?

問題なければ動かしてみよう。曜日[ループカウンタ]の値を取得して表示するようになっておるから

1ループ目は曜日[0]の「月」、2ループ目は曜日[1]の「火」と表示されていくはずじゃ。

 

実行結果

 

 

※月~金の5ループ目まで表示されれば成功です

博士!同じように表示されました!

これで僕も配列マスターですね!

うむ、素晴らしい!

次は2次元配列を覚えて配列プロフェッショナルを目指すのじゃ!

え、まだ上があるんですか…。

配列は奥が深いですね。

 

 

 


 

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

最近の記事

カテゴリ

PAGETOP