情報1 2006.9.4 第1回:状態遷移 その1 1 準備 • Moodleのアドレスが変わりました – http://moodle.crew.sfc.keio.ac.jp – 情報1の2学期のページにログインしてみよう • Squeakを最新版に更新しましょう – 現在の最新バージョンは1.1.3です – 情報1の2学期のページにダウンロードのリンクが あります – ついでにZドライブを整理しましょう 2 ITクラフトマンシップ • ITクラフトマンシップ(経済産業省) – 日本語プログラミングとSqueakによるソフトウェア 開発プロジェクト体験講座 • 小学生から高校生まで • ことだま on Squeak を活用し,抽象的なアルゴリズム と実践的なプログラミングを学習する – 経済産業省のプレスリリース 3 2学期の授業内容 • 状態遷移の設計・実装 – 状態遷移図を使ったプログラムの設計方法 – 状態変数を使ったプログラムの実装方法 • 複数の要素を扱うアルゴリズムの設計・実装 – 並び替え(ソート) – 検索(サーチ) • ミニプロジェクト – 複数メンバーによる協調作業 – スケジューリングとProject Management 4 2学期の授業スケジュール 第1回 9/4 状態遷移 その1 第2回 9/11 状態遷移 その2 第3回 9/25 アルゴリズム その1 第4回 10/2 アルゴリズム その2 第5回 10/16 アルゴリズム その3 第6回 10/30 ミニプロジェクト 第7回 11/6 ミニプロジェクト 第8回 11/13 ミニプロジェクト 第9回 11/20 ミニプロジェクト 第10回 11/27 ミニプロジェクト ※ タイピングテストの再試験は9/11を予定しています 5 今回と次回の授業の目標 • 状態とは何かについて考えてみよう • 状態遷移図を使ってプログラムを設計してみ よう • 状態変数を用いて,設計したプログラムを実 装してみよう 6 ストップウォッチを作ってみよう • 皆さんに見せるストップウォッチと同じ動きをするも のを作ってください • 見た目はこだわらずに,動作することを第一に考え てください • 制限時間は30分 7 動作チェックと採点(20点満点) • 1. 停止しているストップウォッチのスタート・ストップ ボタンを押すと計測が始まりますか? ここまでで5点獲得 • 2. 計測中にスタート・ストップボタンを押すと計測が 止まりますか?(停止と計測の再開が何度でもでき ますか?) ここまでで5点獲得 • 3. 停止している時にリセットボタンを押すと時間がリ セットされますか? ここまでで5点獲得 • 4. 計測中にリセットボタンを押しても計測中のままで すか? ここまでで5点獲得 8 何が難しいのか • ポイント – 「スタート・ストップボタン」は名前の通り,1つで2つの役割 を持っている – 「リセットボタン」は常にリセット機能が動作してはならない 1. ボタンの役割はストップウォッチ の状態で決まる 2. ボタンを押すとストップウォッチ の状態が変わる 9 状態遷移図 • プログラムの状態と遷移(移り変わり)を表現 するための設計図法 角の丸い長方形 → 1つの状態を表現する 黒丸 → 遷移先の状態が初期状態 矢印 → 状態が変わる(遷移)を表現する do → その状態の時に繰り返す処理 イベント → 遷移が起こるきっかけ アクション → 遷移が起こる時に1回だけ行う処理 10 例:スーパーマリオの状態遷移図 11 例:スクリプトの状態遷移図 • スクリプトを作り,全スクリプトツールを使って 検証してみましょう 12 個人課題 • ストップウォッチの状態遷移図を書いてみま しょう – 1人で取り組むこと – 配布した設計シートに記入すること – 授業後に回収します 13 相互レビューと完成版の作成 • ペアになって作業すること – 相棒と自分の状態遷移図と見比べてみよう • • • • 状態(とdoの内容)は? 遷移は? イベントは? アクションは? – 2人の状態遷移図の良いトコどりをして,ペアで1 枚,完成版の状態遷移図を完成させましょう – 配布した設計シートに記入すること – 授業後に提出してもらいます 14 プログラムを作るときの手順 どんなプログラムを作るか考える(分析) どうやってそのプログラムを作るか考える(設計) プログラムを作る(実装) 作ったプログラムを検証する(テスト) 15 ある大学生が書いた状態遷移図 • レビューしてみましょう 16 レビュー結果 • 初期状態はどの状態? • 停止中や数値増加中にリセットボタンを押し たらどうなるの? • 数値一定の時にスタート・ストップボタンを押 したらどうなるの? • 「数値の増加が止まる」は書く必要がない(書 いてなければ増えない) 17 修正後の状態遷移図 18 更にレビューしてみましょう • 停止中と数値一定は1つの状態にできる – 「数値一定」状態の動作 • リセットボタンを押すと – 停止中へ遷移する – 数値を0にする まったく同じ • スタート・ストップボタンを押すと – 数値増加中へ遷移する – 「停止中」状態の動作 • リセットボタンを押すと – 遷移しない – 数値を0にしても問題なし • スタート・ストップボタンを押すと – 数値増加中へ遷移する 19 洗練した状態遷移図 • 単純な方が間違いが発見しやすい • 単純な方が実装が簡単 20 次回の予定 • いよいよ,設計したストップウォッチを実装し てみよう • タイピングテストの再試験を予定している人 は最後の練習をしておいてください 21 今日の授業はおしまい お疲れ様でした 22 実装の方略 • 変数を使ってストップウォッチの状態を記憶し ておく • ボタンクリックによって行われる状態遷移とア クションは各ボタンのスクリプトに定義する • 各状態のdoを1つのスクリプトにまとめる(常 に繰り返し実行しておく) 23 実装その1:状態の記憶 • 状態を記憶しておくために変数を利用 – ビューアーの上部の「V」をクリックし,状態という 名前で変数を作成する • 各状態を状態変数の値で表現する – 状態=1 → 停止中 – 状態=2 → 計測中 24 実装その2:do • 各状態のdoはストップウォッチの1つのスクリ プトにまとめて,繰り返し実行する(チクタクさ せる) • 状態が計測中(状態=2)の時だけ,計測を行 う(数値を増加させる) 25 実装その3:アクションと遷移 • 各アクションと状態遷移はボタンのスクリプトに組み 込む • スクリプトをマウスダウン実行にするのを忘れず に! – リセットボタンが押された • 停止中の場合 → 数値を0へリセットする • 計測中の場合 → なにもしない – スタート・ストップボタンが押された • 停止中の場合 → 計測中へ状態を遷移させる(状態=2) • 計測中の場合 → 停止中へ状態を遷移させる(状態=1) 26 参考:各ボタンのスクリプト • リセットボタン • スタート・ストップボタン 27 課題 • 基本課題 – ダッシュゲームを作りなさい • ボタンを押す(笛を吹く)と部員の走る向きが反転し,画像も切り替わる – ヒント • 部員を作るには3つのオブジェクトが必要です • 見た目を変えるためには「見た目を似せる」タイルを使いましょう • 応用課題 – ストップウォッチを改造し,リセットボタンをリセット・スプリットボタンに 変更しなさい ※ 状態遷移図で設計してから実装すること 28
© Copyright 2024 ExpyDoc