• 検索結果がありません。

のプログラムを元にするとよいでしょう あるいは、授業の練習問題のスロットマシンを完成さ

ドキュメント内 7 : N p.1/105 (ページ 43-57)

課題 6. 機敏な自律ロボッ

提出状況と傾向

19 人中 5 人提出 (SOI 学生含む ) 傾向と総評

ひとりしか完成させることができませんでした

ヒントがあり過ぎたせいかも知れませんが、考える時間が足りなかった人が多い ようです

授業では、最後にはホワイトボードに PAD を描いたので、本当は、みんな作 れたはずだと思います

ほとんど PAD = Logo だからです

もしかしたら PAD のレベルでの理解が不足しているのではないかと思い、今 日は PAD のおさらいをしました

今日は、問題を整理して表現し、自然にプログラムを導いていく手法を紹介し ます

今週の改善点

Thumb Up! のとき、フルネームを表示しないようにし

ました

また、スライドのタイトルにみなさんの名前が現れ ないようにしました

みなさんのプライバシーを保護する施策の一環です

SOI では、これからもみなさんのプライバシーを守

りつつ、インターネットを用いた知の共有のあり方

を探求していきますので、みなさんもぜひ、ご協力

ください

今週の Thumb Up! 1

植木さんの作品

とりあえず、出来たということが素晴らしいです

あとは、人間にとって読みやすいプログラムを書くことを心がけましょう 字下げ (indentation) を活用しましょう

注釈も書きましょう (少なくとも手続きとその引数と戻り値の意味) 字下げについては、このマテリアルでの書き方を参考にしてください

PAD が右に伸びるような場合、1 段下げて書きます

このマテリアルでは、スペースの都合上、注釈はほぼ省略しています その代わり、ではないですが、プログラムの意味の説明はしています

今日のメニュー

はじめに

前回のおさらい 課題レビュー

状態遷移図で描く

練習問題 : ストップウォッチ 課題の出題

実習

状態遷移図で描く

強力なシステム表現手法

p 状態遷移図の例

・腕時計のストップウォッチ機能  の使い方です

・ボタンを押すと、状態が変わる  様子を描いています

・状態に応じて、ボタンは  違った意味を持ちます

計測を始めます

計測をストップ します

ラップタイム を表示します

計測をストップ します

計測を再開 します

計測を再開 します リセットします

計測中 ラップタイム

ラップタイム 計測

時間

基準時間

ラップタイム をクリアします

p 状態遷移図とは

物の一生を絵で描きます

前ページの絵よりも簡略化した図形で描きます 物の状態がどう変化していくかに注目します

○の中にその状態を表す言葉を書いて、状態を表します

実は形は何でもよいのですが、□だと PAD と混乱するかも知れないので、こ の授業では状態を○で表すことにします

どんなイベントでどのように状態が変化するかを考えます ST で状態 S から状態 T への遷移を表します

矢印の上にイベントの説明を書きます

物について理解する上で役立つツールです

どのくらい役立つか、ということを表すエピソードを紹介すると . . .

p ペットボトルの o 状態遷移図

空で ない

・現在入っている量に注目

・売ったり捨てると所有者が変わるので、

製造する

リサイクルする

現在の量 > 0

現在の量 == 0 飲む

飲む

捨てる 売る

存在して

いない

p 状態遷移図の考え方

描き方

物 (この授業の場合は Cricket) に注目 物に何が起こるかな?

それによって、物の状態はどう変わるかな? 物の状態 = 変数の組が持つ値の範囲

· : ペットボトルの状態 = < 現在の量, 所有者 >

デジタルコンピュータのプログラミングの本質は、表現したい物を、デジタ ル (=数値表現) な変数の組として捉えることです

イベントの説明の書き方

この授業では次のように書くことにします イベント 処理

スロットマシンの例で

見てみましょう

p やってみよう

1 から 9 までの数字を 3 桁、揃えるスロットマシンを 作ってください

ハードウェアの構成

タッチセンサー (スイッチ) をセンサーポート a につなぎます 4 桁ディスプレイをバスポートにつなぎます

使い方 ( 仕様 )

1. スイッチを押すと、4 桁ディスプレイに 3 桁のデタラメな数が表示され、め まぐるしく変化します

2. 1 秒ごとに、次のことが起きます

1 の位、10 の位、100 の位の順に数字が確定していきます ビープ音が鳴ります

3. 数が 3 つ揃ったらあなたはラッキー!

4. 何度でも繰り返し遊べます

p スロットマシンの o 状態遷移図

100の位まで 決まっている

10の位まで 決まっている

1の位が 決まっている

すべての位が 決まってない

ボタン

→開始

1秒経過

→1の位を決める 細かな時間

→回す

細かな時間

→回す

細かな時間 1秒経過 →回す

→10の位を  決める 1秒経過

→100の位を  決める ボタン→停止

動いて

いない

p 方針を決める

状態遷移図をブレイクダウンしていく方針を考えます 状態はどんな変数で表されるかを考えます

確定された数が状態を表しています

ふたり (when/run タスク ) で実行することを考えます

when タスクは次のことを行ないます 1 秒経過するのを待ち構えます

1 の位から順に、リールの数を確定します

100 の位まで確定したら、数を表示して、スイッチが押されるのを待ちます run タスクは次のことを行ないます

まず、スイッチが押されるのを待ちます

それから、スロットマシンのリールをめまぐるしく表示させます ふたつのタスクの間でやりとりされる情報は?

when タスクから run タスクへ、確定された数が伝わる必要があります when タスクと run タスクは状態を共有するということですね

変数で状態を表現する

fixed: 確定されたリールに表示されている数

確定していないリールに対応する桁の数字は 0 とし

ます

ドキュメント内 7 : N p.1/105 (ページ 43-57)