pg06

iPad のショートカットによるプログラミング(補足編)

前回(第5回)の課題作成のヒントを掲載しておく。

ショートカットユーザーガイド https://support.apple.com/ja-jp/guide/shortcuts/welcome/ios

ショートカットApp アクションリファレンス https://350ml.net/shortcuts/

スクリプティング アクション 計算式 https://note.com/u2_note/n/n3bc4c2311adf

例)

金額を入力して10%を加え端数を四捨五入する


金額を入力する計算アクション

計算の「数字」の部分を長押しするとメニューが表示されるので、「毎回尋ねる」を選ぶ

マジック変数を表示させた状態

消費税率をメニューから選択できるようにした例。

大学のWebから教員の氏名を取得して一覧表示する例)

URL https://www.nagoya-bunri.ac.jp/cgi-bin/teacher/index.cgi

←実行例)

関連事項:

テキスト処理

正規表現 (パターンマッチ)

←で表示されている名前は教員のメールアドレスにも使われている。


@nagoya-bunri.ac.jp を名前に結合したものが教員用メールアドレス。

メールアドレスを結合するアクションを追加したバージョン

Swift Playgrounds(続き)

コードを学ぼう1 の 「for ループ」 に取り組む。


課題1

コードを学ぼう1の目次を表示して進めたところまでが分かるような画面(目次にチェックマークが付く)のスクリーンショットを撮りWebclassにアップロードする。

課題2

テンプレート「図形」を利用して、以下のコードを作成する。

Circle の プロパティを 制御変数 i を利用して 適当に変更してみる。

基本形 同じ場所に円が重なっている。

ドラッグして移動してみること。

for の制御変数 i がInt型(整数型)で値が 0 1 2 となるため、図形の座標用の値 0.0 1.0 2.0 (Double型)として使用できない。

そのため、Double(i) を利用してDouble型に変換してから座標 Point に使用している。

color をランダムに設定する例。 Color.random() を使用した。

第6回の内容はここまで。


以下に for ループの応用例について記載する。

興味がわいた受講生は取り組んでみて欲しい。


テンプレートの図形に他の図形コードのサンプルが記載されているのでコピーして利用するとよい。

メニューの 「>」をタップして表示。

forループの応用例

2重ループで内側のfor の処理を外側の for の処理で繰り返す。下の例では「y 方向に縦に並べる」内側の処理を外側のforでx方向に横に並べている

circle.center.x や circle.center.y で 〇の中心座標の x y を直接指定できる。Point(x: 0, y: 0 )で座標を作成しなくて済む。

次のコードでは関数 gap を定義して利用している。

gap関数 は i: でスキマを開ける回数、gap: でスキマ1個の大きさ(x方向なら幅、Y方向なら高さ)を引数で指定するとスキマ全体の距離を計算(掛け算)する。

i: がマイナスの値の場合、スキマを開ける方向は逆転する。

gap(i: 1, gap: 10) なら サイズ10の隙間を1個分を計算する。

func gap(i: Int, gap: Double) -> Double の関数宣言部分について:

末尾の -> Double は関数の返却値の型の宣言。

関数の計算結果を返却値として関数を呼び出した(利用した)側のプログラムで使用することができる。

以下のコードでは〇の座標の設定にgap関数を使用している。

let で〇などのオブジェクト名前を付けたように var でデータに名前を付けることができる。

下のコードで

var spread = 0.0

の部分は 変数名 spread で 初期値 0.0 の変数を宣言している。変数の型の宣言は省略されているが、初期値と同じDouble型になる。

for の x も var と同じく値の変更が可能な変数である。型はInt型。

この x はループが繰り返されるたびに自動的に+1されて増えて行く。

var で宣言された変数の値を変更するにはコードで、

spread += 0.5

と書けばよい。このコードで spread は元の値から 0.5 増えた値に変化する。

for ループの制御変数 i を利用して色を変更する例を示す。

Color( red: 0 , green: b, blue: 0 , alpha: 1)

red: 0 赤色成分の値 0~1を指定。

green: ここに 0.1 * Double(i) と書くと以下のコードでは 0.1 0.2 ... 1.0 と変化することになる。

blue: 0 青色成分の値 0~1を指定。

alpha: 1 透過度の指定。1で不透過。0で透明。0.5なら半透明。


circle.center.y = Double(2*i) の部分は、 2*Double(i) と書いてもよい。

for ループの処理が終了すると、各図形を処理していた変数名 circle は利用できなくなる(変数名の有効範囲外)。

そこで、ループが終わった後でも 生成した各図形を処理するために 配列と呼ばれるデータ保存領域を用意しておき、各図形を登録しておくとよい。

以下のコードでは 配列 を利用した例。詳細は次回に解説。

課題3

チャレンジ の ブロック崩し に取り組む(次回の予習)