もう一人のY君

主にiPhoneのショートカットアプリのレシピやTipsなどを書いています. たまに数学の記事も書きます.

もう一人のY君 MENU  MENU

【ショートカット】「繰り返す」アクションについて

181011_00

 今回はショートカットアプリの「繰り返す」のアクションについてです.

 言ってみればwhile文なんですが, whileとは異なる性質があります.

 

ショートカット

ショートカット

  • Apple
  • 仕事効率化
  • 無料

※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.

 レビュー時のバージョン : v2.0

 

スポンサーリンク

 

 

処理を繰り返す

181011_01

 「繰り返す」アクションの説明は画像の通りで

 

  • 含まれるアクションを指定された回数実行する
  • 入力:すべて(オプション)
  • 結果:すべて

 

となっています.

 

 

181011_02a

 具体例として, 初期値0の変数xに3回だけ1を足し合わせるショートカットを作ってみました.

 ①変数は初期値がない(null)状態で演算を行ってもnullのままになってしまうため, 予め変数定義と共に初期値を入れておきます.

 

 繰り返しの回数は適当に3回にしました.

 デフォルトのままだと-+のボタンをタップして回数を決めることになりますが, 回数表示をタップすることで任意の変数あるいはマジック変数を指定することも可能です.

 

 ②はアクションの入力に1を代入し, 現在のxに代入, 「変数を取得」で再びxを指定することでよくあるプログラミング言語で書くところの

 

x = x+1

 

になります.

 

 繰り返しが終わったら改めてその結果をxに代入し, 結果を確認するために(今回は)「結果を表示」に追加します.

 今回の場合, 「結果を表示」で直接変数xを表示するならば③は必須ではありません.

 

 

181011_03

 実行すると望む値が表示されました.

 

 

繰り返しの結果はどうなっているのか

181011_04

 上の例では繰り返し終了後, わざわざ変数xをアクションの入力に上書きし, それを結果に表示していました.

 でもそんな手間をするくらいならマジック変数で直接繰り返しの結果を表示しても理屈としては良いはずです.

 

 

181011_05

 しかし結果は画像の通りで繰り返しごとの結果がすべて表示されました.

 どうやらメジャーなプログラミング言語とは違い, マジック変数「繰り返しの結果」は結果を配列にして入力に渡すようです.

 そのためそのまま表示すると画像の通り, 今回は3回繰り返したのでそれぞれの結果をすべて表示してしまったのです.

 入力が既に配列となっているため, 他の変数に渡して表示しても結果は同じです.

 

 従って, 繰り返しの最後の値ただ一つを取り出すには先程のように, 繰り返しのアクション後に対応する変数をそのまま使うか, 「変数を取得」で一旦入力へ渡す必要があります.

 

 もし扱いを誤ると, エラーではありませんがすべての配列がリストメニューとして表示され, どの配列を採用するかを選択するよう求められることになります.

 結果を表示したい場合は兎も角, そこから先まだ処理がある場合は不都合極まりないです, 状況に合わせてマジック変数を使うべきかどうかを判断する必要があります.

 

 

例:平均値を求めるショートカット

 「繰り返し」の仕組みが少し分かったところで, これを利用して標本数を指定し, 値を入力してその平均値を求めるショートカットを作ってみました.

 

 

181011_06 

 まずはイニシャル部分です.

 ①は繰り返しの中で使うカウンタ, ②は標本値を入れる変数です.

 その後「入力を要求」で標本数を入力させ, 繰り返しに移動します.

 

 

181011_07

 繰り返しの回数は直前の「入力を要求」で入力した数を代入します.

 先程定義したカウンタ変数を標本値の入力の前にカウントアップし(③), 「入力を要求」を追加してここに入力した値を変数xに上書きします(④).

 

 

181011_08

 入力の値を明確にするため, 繰り返し後に「変数を取得」で標本値を足し合わせた結果となっている変数xを入力に渡し(⑤), 標本数で割り(⑥), 「結果を表示」などで好きな表示にします(⑦).

 

 

181011_10

 実行して結果を確かめましょう.

 

 

 理屈ではわからなくもないですが, デフォルトで配列にしてしまうのはなんとも不便ですね.

 最初の画像の通り, こんなこと説明にも書いてません.

 プログラミングや電子部品等のデータシートは往々にしてまわりくどいかき回しで長文だったりするんですが, 簡素すぎる説明も考えものです.

 

 因みに, 平均値を求めるアクションはデフォルトで存在するため, わざわざ上のようにやる必要はありません.