Scratch:ランキングボード(考え中・・・)
完成サンプル
-
https://scratch.mit.edu/projects/227056247/
-
キーを2回連打してタイムを記録リストに記録し、結果を昇順にソートする。
-
概要
-
前提:リストがあつかえること。
-
注意点:小学生には非常に難しいので、興味をもった子にのみ教えるのがよいかもしれない。
-
空のリストに対して、データが昇順になるように新規の記録データを追加していく。
-
コードはわかりやすさを重視、IF分の条件は省略しないなど、効率は無視している。もっといいやり方、教え方はいくらでもあると思う・・・。
-
ソートロジックはバブルソートもどきのつもり、、、
学習のポイント
-
ソートアルゴリズムの基礎、データ構造。
-
ややこしいが、具体的なデータでデータ数が2になるまでくらいまでを順をおって考えている。3までを考えてみた方がわかりやすかもしれない。
指導手順
準備
-
連打ゲーム、早押しゲームなどを作るか、既存のものをひらく。
-
ソートのために変数「リストの順位」を作り、旗をクリックした直後に1になるようにする。ここまでのサンプルは下記。

- 下記のスクリプトを書く。(カウントダウン後、メッセージを送る。)


- 動きを確認。
ソートと記録のロジックを作る。
<記録リストのデータ数が0の時の処理を記述>
- リストに記録データをついかする。

<記録リストのデータ数が1の時の処理を記述>
現在の記録とリスト内のデータを比較し、
-
今回の記録の方が小さければ、リスト内のデータと同じ位置に今回の記録を挿入する。
-
今回の記録の方が大きければ、リスト内のデータの最後に今回の記録を挿入する。

<記録リストのデータ数が2以上の時の処理を記述>
現在の記録とリスト内のデータを上から順に比較し、
-
今回の記録の方が小さければ、リスト内のデータと同じ位置に今回の記録を挿入する。
-
今回の記録の方が大きければ、リスト内の次のデータとの比較にすすむ。
-
ただし、2の時、もし、リスト内部の最後のデータに達していれば、次のデータはないので、リストの最後に今回の記録を追加して終了する。

参考
- 連打ゲームを作った生徒がソートしたがったので、作ってみた。