pg06
テーマ Swift Playgrounds でプログラム学習
準備:
iPad を iOS11 にアップデートして、Swift Playgrouds をapp store からダウンロードしておく
関連資料: ※Swift Playgroudsが日本語に対応する以前の紹介記事です。
動画で解説 【日本語解説】Swift PlayGrounds - Learn to Code 1
Swift Playgroundsの使い方・日本語訳のブログ Swift Playgrounds JP
Swift Playgroundsの解説連載記事 Swift Playgroundsで学ぶiOSプログラミング ― 第10回 iPad版Swift Playgroundsはダウンロードしないと損
※4ページ目に、「最後は白紙から完全オリジナルに挑戦」の解説有り
Swift Playgroundsの学習教材の作成方法 新プログラミング学習アプリ「Swift Playgrounds」をはじめよう
演習内容:
課題1
・NBU-WiFiに接続する。(教材をネットからダウンロードするため)
・Swift Playgrounds を起動する。
・☆(Featured) コードを学ぼう から、 「コードを学ぼう1 Swiftの基本(Learn to Code 1 Fundamentals of Swift)」を開く(入手 GET :ダウンロードする)
・コードを学ぼう1(Learn to Code 1) を開いて取り組む。
予定時間 30分。時間になったら、次の課題2の説明をはじめます。
授業中の目標: コマンド Commands編 の最後の問題まで進む。
※30分では、この画面の例の様に、 関数 Functions編の最後の課題までたどり着かないと予想。
※時間が足りない部分は宿題とします。
※コードを学ぼう1を全て済ませることを推奨します。 途中で止めてもかまいませんが、なるべく進めてください。
※取り組んだ問題のうち、一番最後の問題のスクリーンショットを撮って、来週までに課題として提出する。
※ヒント: 最後の問題の回答の一部がこの画像に表示されている。
※ヒント: 最後の問題の回答の一部がこの画像に表示されている。
ヒント集:
・Run My Code コードを実行する
・Byte バイト キャラクターの名前 キャラクターをタップするとモデルをチェンジできる
・画面内の全ての宝石を回収し、スイッチを指示されたとおり(全てON)の状態にできたらクリア
・歯車アイコン → Reset Page で、問題を初期化(元の状態に戻す)
・時計アイコン → バイトのアニメーションスピード(プログラムの実行速度)の調整
Commands コマンド編
Adding a New Command 新しいコマンドを加える
moveForward() ムーブフォワード 前進
turnLeft() ターンレフト その場で左に向いて向きを変える
collectGem() コレクトジェム 宝石を集める。 宝石のあるマスに既にいる時だけ、宝石を取る。
Toggling a Switch スイッチを切り替える
toggleSwitch() トグルスイッチ スイッチの増すにいる場合、 OFFのスイッチ→ONに ONのスイッチ→OFFに 切り替える。
※スイッチを2回切り替えると元の状態に戻ります。
PortalPractice ワープポータルの練習
パズル要素。ポータルのマスにはいると、同じ色のポータルにワープ移動する。そのとき、向きは変わらない。
Finding and Fixing Bugs バグを見つけて修正する
プログラムは既に書き込まれている。
まず実行してみる。
バイトの動きを観察して、問題がクリアされるように、コードを直す。
Bug Squash Practice
同上
Toggling a Switch スイッチ切り替え
練習用のコマンドが多目の問題
The Shortest Route 最短距離
Funtions 関数編
Composing a New Behavior 新しい行動を構成する
右を向くコマンドは無い。 → turnLeft() を3回で右に向かせる
Creating a New Function ファンクションを作成する。ファンクション:機能または関数
Collect, Toggle Repeat 集めて、切り替えて、繰り返し
集めて、切り替えて、繰り返し + 向きを変える までをファンクションとして定義
ファンクションを4回呼び出す
Across the Board
ヒント: バイトは壁を乗り越えられない。崖からも落ちない。
ファンクションを2つ作成する
Nesting Patterns
ファンクションから、別のファンクションを呼びだす
Slotted Stairways
練習問題
Treasure Hunt
練習問題。 ヒント ↑の画像参照
課題2
+ボタンから、新しい課題を作成。Create Playground
画面下部のアイコン テンプレート を選択
図形 Shapes
解説:
let circle = Circle()
Circle()は標準の半径(5)と色で画面中央に円を作成するコマンド
let circle = で円に名前を circle と付けておく
※名前を重複して付けることはできない
図形につけた名前の利用方法:
circle. radius 円の半径
circle. color 円の色
circle. draggable = true 円はドラッグ可能 true で yes / false で no
対話 Answers
show("メッセージ文字列")
メッセージを画面に表示するコマンド。
表示するメッセージを " "で囲んで文字列データにする。
show は ( ) の中に置かれたデータを表示する。(コマンドに渡すデータを引数という)
ask("メッセージ文字列")
画面にメッセージ入力ボックスを表示する。
入力が完了するまで、プログラムをブロック(一時停止)する。
文字を入力して画面の Submit をタップすると、入力が完了し次の処理に進む。
let x = ask("メッセージ文字列") 入力された文字列に x という名前をつける
"Apple" + x 文字列の後ろに x の文字列を結合する。
x が "Pen" なら "Apple" + x の計算結果は "ApplePen"
※ 変数名について:
プログラム言語によっては、変数名の付け方は規則で制限される。
例)
・半角のアルファベット英数字と ‗ (アンダースコア)を使用できる
・先頭の文字は数字は使えない
・if や for などの予約語は使えない
Swiftの変数名で利用可能な文字について https://utano.jp/entry/2014/10/swift_language_reference_identifiers/
グラフ作成 Graphing
LinePlot() はグラフを作成するコマンド
縦軸・横軸名も自動的に作成される
() の中で、グラフデータの作成方法を指示できる。
yData: 数値,・・・は名前付き引数と呼ばれるもので、ここではY軸の値を並べてグラフを作成している。
function: 関数オブジェクト を利用すると、データを与える代わりに、グラフの式でグラフを作成できる。関数オブジェクトは funcで定義した名前で指定する。関数の引数は不要。
例) function: f1(x) はダメ function: f1 はOK
return x*x xの2乗を計算して f1(x) の値とする。return は Swiftの予約語。
※ 関数定義のプログラムの入力方法 func キーワードを入力後、関数名を記入、キーワード func をタップして 引数と肩の入力 や 戻り値の型の入力を選択
課題3
+ボタンから、新しい課題を作成。
画面下部のアイコン チャレンジ を選択
例) スパイラル 」Spirals の2ページ目
円の半径(軌道の円、動いている円)の値を修正してみる。1.0や2.0などキリの良い数字のほか、1.1や5.1など整数から少しずれた数や、5と7などお互いに素な関係の数を指定するとよい。
例) ブロック崩し Brick Breaker の3ページ目
if 分による処理の分岐
if row.isEven 行が偶数番目であることをチェック
下から数えて偶数番目(0,2,4,6・・・)の行のブロックは
if column.isEven 列が偶数番目であることをチェック
さらに分岐処理
左から数えて偶数番目の列 は 青色
そうでなければ 緑色
そうでない場合
下から数えて奇数番目(1,3,5,・・・)の行のブロックは
ブロックの色は 赤色
brick.strength = 1 でブロックの耐久力(壊れるまでのヒット回数)を1回に設定している。
課題提出
WebClassの第6回課題 に以下の3つのスクリーンショットをアップロードしてください。
1.コードを学ぼう1 Learn to Code 1 の達成状況
・この画像 の様に、クリアした課題が分かるようにスクリーンショットをとる
・画面内に、作成したコード(一部でOK)が表示されるようにスクロールしておく(工夫した部分を表示)
2.テンプレート( Answers か Graphing か Shapes )からPlaygroundを作成する。
・提出用のPlayground を1つ選び(一番工夫したもの)、スクリーンショットをとる
・条件: 画面内に、作成したコードと実行画面が写っていること。
3.チャレンジ課題
Swift Playgrounds のメニューから チャレンジ 課題を 1つ 選んで取り組む。
できたところまででOK
例)
・Spirals の2ページ目。サイクロイド を描くプログラム。
trackRadius(軌道、定円の半径)と wheelRadius(車輪、動円の半径) の数値を調整して、さまざまな図形の描画を試す。
実行画面(複雑化の方向に工夫した図形)とプログラムをスクリーンショットで提出。
・Brick Breaker の3ページ目。ブロック崩しのプログラム。
ブロックの色、配置などを変えてみる。
・その他、Blink の白紙状態から全て作成、2.で提出していないテンプレートをチャレンジ課題として作成、など。