pg01
参考: https://t.co/dar9BzdySC ブロックプログラミングでパズルを解くGoogle Doodle
参考:https://home.jeita.or.jp/is/algo アルゴロジック
参考: http://pictogramming.org/ ピクトグラミング つくってみた
コンピューターを使わない情報教育 → コンピューターサイエンスアンプラグド
例) データの並べ替え
アルゴリズムの学習では情報をコンピュータを使って処理する方法(整理など)を学ぶ。情報の処理の手順を定めたものを アルゴリズム という。
アルゴリズムに従ってプログラムを作成しコンピュータで情報を処理(プログラムを実行)することができる。
→手順を考える段階では、コンピューターもプログラムも必要ない。
アンプラグドな演習の紹介:
・コンピュータサイエンス カードマジック → 幽体離脱透視術 テーブルに並べてカードから適当に1枚裏返したものを、部屋の外にいるマジシャンが当てる。
ネタばらし: パリティチェック(誤り検出・誤り訂正・冗長符号)
プログラム言語Scalaによるパリティチェックのデモ・並び替えネットワーク 時間内に仕事を終えろ
プログラム言語Scalaによるデータの並べ替えの例ゲームでプログラミング教育
ゲームの内容がコンピュータ内部の動作、メモリやCPU、論理回路の概念に基づくもの
・マインクラフト レッドストーン回路 https://code.org/minecraft
・ヒューマン・リソース・マシン iOSアプリ(英語版のみ) Nintendo SwitchのDLコンテンツ(日本語版有り)プレイ動画(youtube)
・CargoBot iPadのパズルアプリ、次回紹介予定
・Swift Playgrounds iPadのアプリ、プログラミング入門で扱う予定
・Alice CG+プログラミングによるゲーム制作教育ツール 参照:ランディ・パウシュ「最後の授業」 全訳記事 書籍の紹介記事
第1回演習テーマ(1/2)
アルゴリズム を プログラミング言語のコード を使用せずに表現する
物理シミュレータ Algodoo による情報処理的ステージ制作
プログラム言語を使わずに、ボールの動きを制御する。
ボールは、重力や、モーター、歯車、回転板などによって運ばれるものとする。
演習0:
・作品の例を探す: Algodoo 装置 や Phun 装置 で動画を検索して課題制作の参考にする。 (Phun は、Algodoo の古いVersionの名前)
・チュートリアル動画: https://www.youtube.com/watch?v=yVVzDIVcsTU
・ようこそ!のメニューウインドウから、「チュートリアル」を利用してAlgodooの基本を学ぶこともできます。
ようこそ!メニューが表示されない場合は、歯車アイコン→基本設定→「ようこそ!」のメニュー画面を開く から表示できます。
演習1:
・ 実習室PCから、Algodooを起動する。
簡単に操作方法をデモするので、一緒にマネしながら操作してみる。操作説明動画1(起動方法・基本操作)
※ 講義用Webを見ながら、Algodoo を操作するには、F11キーを押して全画面表示を解除してWindow表示に切り替えます。 または、Winキーでタスクバー表示、 Winキー + D でデスクトップを表示するとよいでしょう。
操作説明動画2(回転軸・モーター化・コピー)操作説明動画3(ピストン機構・バネ装置)
演習2:
・空中に浮かぶ 傾いた板 を作成。 ボールを転がす(再生ボタンでスタート)。 カップで受ける(ゴール)。
・ボールを2個に増やす。2個ともカップに入るように調整する。
うまく行かない場合、ボールのサイズや、板の位置・傾きなどを調整してください。
*プログラム言語によるプログラミングでも、プログラム作成→実行・動作確認→調整(エラー修正、バグ修正)→実行確認 のサイクルを繰り返します。
演習3:
・スタート時点で先を進むボールが、途中で抜かされ、あとからカップインするように、仕掛けを加える(各自で工夫、アイディア交換、共有推奨)
*問題の解決方法は1つとは限りません。シンプルで応用のきく解決方法を見つけたら(他人のやり方でもOK)、皆に広めましょう。
**今回の課題は、 偶然できた でもOKとします。
演習4:
・スタート地点のボールを3個に増やしてみましょう。 逆の順番で、カップインしましたか?
うまくできていたら、逆向きに並べ替える装置(手順)について、言葉で表現してみましょう。
*このように先に発生したデータの処理を先送りにして、あとから来たデータを先に処理し、結果的に、一番最初に発生したデータが一番最後に処理される仕組みを スタック と呼びます。
**ボールの個数を増やしていくと、装置から溢れて、処理がうまく行かなくなりますね? スタックがあふれることを スタックオーバーフローといいます。
***スタックの様に後から到着したものを先に処理して、先に到着したものを後回しにする処理を Last In First Out (LIFO)と呼びます。
****通常の待ち行列(到着順の処理)は、キュー(Que)といい、First In First Out(FIFO)と呼びます。
演習5:
・ステージ全体を横に移動し、空いた場所に別の装置を作成してください。
作成テーマ1:
ボールのアニメーション。
無限ループになっていること。
例)
ゴール地点から、スタート地点にボールを戻す仕掛け など。
*繰り返し処理(ループ)は、プログラミングによる処理の重要な特徴です。
ループアニメーション作品を作ってみましょう。
Algodooにサウンド機能は有りませんが、音声処理ができるプログラミング言語ならループ音源装置を作成できるでしょう。
または(テーマ1を作成する代わりに)、
作成テーマ2:
予想外の地点に移動するボールのアニメーション。
例)
ゴールを複数用意する。
多数の障害物、回転羽板などと衝突した結果、ボールの僅かなスタート位置のズレや、スタートするタイミングで偶然ゴールするようにする。(ゴールする確率を下げる)
ようするに、パチンコ台の作成。(玉を発射する装置は有っても無くてもどちらでもよい。バネやフリッパーをつけてもよい。)
*いくつかの条件をクリアして(ゲートの通過成功・失敗など)、情報を選別し結果を判定する処理は、プログラムの課題の定番です。
**Algodooによる物理シミュレーションで、ボールがたどり着きやすい場所、たどり着きにくい場所を調べてみましょう。
→多数の球を打ち出して観察できるような装置を作成します。
テーマ1とテーマ2を組み合わせた作品でもOKです。
例)
スタートから無限ループでボールを発射する。
ヒント) テーマ1の作成例 https://twitter.com/_kobashi/status/781101085020741632?lang=ja この例のような複雑な仕組みだと、おそらく授業中には完成しません(微調整に時間がかかる)。
ボールを弾き飛ばして上に登らせる。https://twitter.com/_kobashi/status/781779590767271936
レイヤー(部品の重なり設定)を2枚使う。ボールは、レイヤー1の板と、レイヤー2の板に衝突する設定にする。レイヤー2の板は、レイヤー1の板とは衝突せずにすり抜ける。https://twitter.com/_kobashi/status/781783268207190016
チェーンにブラシツールで、ボールをひっかける部品を取り付ける。https://twitter.com/_kobashi/status/781793323191152640
テーマ1の制作をする受講生は、 回転する板 で ボールを弾いて飛ばす など、もっとシンプルな方法を探すとよいでしょう。
↓ バグっているので、一部だけ参考にしてください。
保存前の準備:
時間を巻き戻す。(採点はスタートボタンを押して動作確認します)
ステージ全体が表示されるように倍率を設定する。
課題提出方法: Algodoo の ファイルメニューから シーンを保存を選ぶ。
デスクトップやH:ドライブ(ユーザホーム)に保存できない不具合がある。以下の手順で保存する。
1.タイトル を入力(学籍番号、日本語は使わないこと)
2.フォルダ選択アイコンをクリック
3.フォルダ選択ダイアログの 左リスト から 学籍番号 のフォルダをクリックして選ぶ
4.Choose ボタンを押す
5.保存する ボタンを押す
Webclassの第1回課題の 問1 にファイルをアップロードしてください。
1.ファイルを選択 ボタンを押す。
2.ファイルエクスプローラが開くので、以下の画像のように操作してファイルを選ぶ
1.このアイコンは押さなくてよい(既にファイルエクスプローラーは開いているので)
2.ローカルディスク(C:) を左側に並んだフォルダから選ぶ
3.ユーザー を左側に並んだフォルダから選ぶ
4.自分の学籍番号 のフォルダを左側に並んだフォルダから選ぶ
5.Algodooで保存したファイル(拡張子 phz)を選ぶ
6.開く ボタンを押す
7.提出するボタン を押す
Webclassの画面に 提出されました と表示されたら提出完了。
提出後にも ファイルを再アップロード することで提出したファイルを更新することができます。
Q&A
Q: ファイルの保存先がわかりません
A: タスクバー の ファイルエクスプローラー からWebclassへのアップロード手順の画像を参考に探してください。
ローカルディスク(C:)のユーザーフォルダ内の学籍番号のフォルダ内にAlgodooの保存ファイルが見つからない場合は、以下を探してみてください。
ファイルが保存されている可能性のある場所1: ユーザーホームディレクトリ(H:)のAlgodooフォルダ内のscenesフォルダ
ファイルが保存されている可能性のある場所2: ドキュメント内のAlgodooフォルダ内のscenesフォルダ
ファイルが保存されている可能性のある場所1: ローカルディスク(D:)のAlgodooフォルダ内のscenesフォルダ
Q: 物体の落下スピードが遅くなった。
歯車や回転軸のモーターが回らない、または回転が遅くなった。
A: Algodooのシーンがズームアウト(雲の大きさなどで確認する)しすぎている場合があります。
マウスホイールでシーンの表示サイズを小さくしてください。
(巨大な物体が落下している様子を遠くから観察すると、ゆっくり落ちているように見えます。
巨大な物体を回転させるためのモーターのパワー(トルク)が足りない場合があります。
巨大な歯車はモーターの回転力を最大にしても速く回すことはできません。)
第1回演習テーマ(2/2)
ガイダンスで紹介したサイト Programming Language Influence Network」https://programminglanguages.info/influence-network/ 2019年版
を使用して、プログラム言語を1つ検索する。
どのような言語を検索するかは受講生に任せる。
例えば、興味があるプログラム言語や2年生以降の科目で登場するプログラム言語を調べてみよう。
検索結果を 「スクリーンショット」 で撮影して、Webclass の設問3にアップロードする。
スクリーンショットの撮影方法:
画面の下端のタスクバーを右クリックして、Windows Inkワークスペース ボタンを表示 を選ぶ。
タスクバーの Windows Ink ボタンを押して、 画面スケッチ を利用する。
必要な範囲を 切り取り(クロップ)して ファイルに保存する。
ファイル名は学籍番号など適当な名前でOK。
保存したスクリーンショット画像ファイルを Webclassにアップロードする。