プログラミン は、ブロックを積んでプログラムを作る環境です(kodama-lab.com/lecture/programin/)。 下のボタンを押すと、そのアルゴリズムがすでに組み上がった状態で開きます。 「▶ はじめる」を押すと、いま動いているブロックが光りながら、変数とリストの中身が キャラクタの吹き出しに出ます。
ブロックはドラッグで並べ替えたり、数値を書きかえたりできます。 探すデータや並べ替えるデータを変えて、手数がどう変わるかを見てください。 「⏩ すぐ動かす」は、開いた直後に自動で走り出します。
| 番号 | アルゴリズム | プログラミン |
|---|---|---|
| 3 | 3つの制御構造 順次・分岐・くりかえしを 1 本の流れとして動かす | ▶ 開く ⏩ すぐ動かす |
| 4 | 変数トレース t を使って a と b を入れかえる。1 行ずつ値が変わるのを追う | ▶ 開く ⏩ すぐ動かす |
| 5 | 1 から N までの総和 sum に足しこんでいく、くりかえしの基本形 | ▶ 開く ⏩ すぐ動かす |
| 6 | フィボナッチ数列 a と b をずらしながら 10 項まで並べる | ▶ 開く ⏩ すぐ動かす |
| 7 | 最大公約数 ① 試し割り 2 から順に割ってみて、両方を割り切れた最大の数を探す | ▶ 開く ⏩ すぐ動かす |
| 7 | 最大公約数 ② ユークリッドの互除法 あまりで置きかえていく。最小公倍数まで出す。① と手数をくらべる | ▶ 開く ⏩ すぐ動かす |
| 8 | 線形探索 先頭から順に。添字は 0 から始めないと先頭を見落とす | ▶ 開く ⏩ すぐ動かす |
| 8 | 2 分探索 範囲を lo と hi で持ち、半分ずつ捨てる。8 個なら 3 回で見つかる | ▶ 開く ⏩ すぐ動かす |
| 9 | バブルソート となりどうしを入れかえる。1 周ごとに右端が確定していく | ▶ 開く ⏩ すぐ動かす |
| 10 | 選択ソート(最小法) 最小値を探して先頭と入れかえる。入れかえの回数がバブルより少ない | ▶ 開く ⏩ すぐ動かす |
| 11 | クイックソートの分割 基準より小さい組と大きい組に分ける、1 回ぶん。全体は再帰でこれをくり返す | ▶ 開く ⏩ すぐ動かす |
| 13 | スタックとキュー 同じ 1,2,3 を入れて、出てくる順のちがい(LIFO と FIFO)を見る | ▶ 開く ⏩ すぐ動かす |
| 15 | 計算量をくらべる 64 個を半分にし続けると 6 回で 1 個。O(log N) と O(N) のちがい | ▶ 開く ⏩ すぐ動かす |
探索や並べ替えを書くには、条件で分かれることと配列が要ります。 そこでプログラミンに次のブロックを足しました(もとからあるブロックはそのままです)。
リストの「○ ばんめ」は 0 から数えます。 授業の Array[0] と同じで、 先頭は 0 ばんめです(8「線形探索」の、1 から始めると先頭を見落とす話がそのまま当てはまります)。
1・2・12 は考え方の説明で、動かす手順そのものがありません。 14「ハノイの塔」は再帰(自分自身を呼び出すこと)が必要ですが、 プログラミンには手続きを呼ぶブロックがないため、いまは対象外です。 ハノイの塔の動きは、教材ページの 14の再生バーで 1 手ずつ確かめてください。