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.ファイルを選択 ボタンを押す。

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にアップロードする。