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.で提出していないテンプレートをチャレンジ課題として作成、など。