1. トップ
  2. ズームイン
  3. ユーバーの「Scratchで小・中学校のプログラミング」Vol.20 <スクラッチで大きい順に並べかえ①(手動)>

2025年8月21日

ユーバーの「Scratchで小・中学校のプログラミング」Vol.20 <スクラッチで大きい順に並べかえ①(手動)>

ユーバープログラミングスクールの中村里香代表による、小学校のプログラミング授業で使ってほしいプログラミング言語Scratch(スクラッチ)の学習動画第20回。
今回は<上級者>向け、Scratchでデータを大きい順に並べ替えるソートのプログラムに挑戦します。

バブルソートとは

データを大きい順や小さい順に並べ替えることをソートと言います。


いくつかの手法がありますが、今回は、1つずつ隣どうしのデータを比較し入れ替えを繰り返すことで並べかえる「バブルソート」を紹介します。

繰り返す回数は、「データの個数-1」回です。具体的に2→1→3という並びの3つのデータを大きい順に並べかえていきます。データが3個なので比較と入れ替えを「3個-1」で2回繰り返します。


1回目:
①はじめに1番目のデータと2番目のデータを比べます。2番目の方が大きい場合は、データを入れ替えます。同じあるいは1番目の方が大きい場合は何もしません。
例の場合は、1番目が「2」、2番目が「1」ということで何もしません。

②次に2番目のデータと3番目のデータを比べて同様に処理します。
例の場合は、2番目が「1」、3番目が「3」ですから入れ替えをして「2→3→1」となります。
ここまでで1回目の処理は完了し、一番右側の値(最小)が決定しました。2回目は一番右側のデータは入れ替え対象としません。

2回目:
③1番目のデータと2番目のデータを比べて同様に処理します。例の場合は、1番目が「2」、2番目が「3」ですから入れ替えをして「3→2→1」となり大きい順の並べかえが完成しました。

ソートのプログラムに挑戦

リスト「ブロック番号」の1番目と2番目を比較して入れ替える

Scratchの「リスト」を使って、バブルソートのプログラムに挑戦します。今回は、あらかじめ数値をリスト「ブロック番号」に格納しておきました。視覚的にもわかりやすくするために、個数分のブロックを積み上げたイラストを、リストの並びと揃えて表示するプログラムを用意しています。
*リストは、変数の一種で、複数の値をまとめて保存できる便利なしくみです。

まずは、1回目の1、2番目の比較と入れ替えからです。

ブロック番号の1番目より2番目が大きいか調べる条件を作ります。この条件に合うときに次のことを行います。

・変数「おおきいかず」にリスト「ブロック番号」の2番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の1番目を代入
・リスト「ブロック番号」の1番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の2番目を変数「ちいさいかず」で置き換え


リスト「ブロック番号」の2番目と1番目を比較して入れ替える

次に1回目の2、3番目の比較と入れ替えを続けます。

ブロック番号の2番目より3番目が大きいか調べる条件を作ります。この条件に合うときに次のことを行います。

・変数「おおきいかず」にリスト「ブロック番号」の3番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の2番目を代入
・リスト「ブロック番号」の2番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の3番目を変数「ちいさいかず」で置き換え


2回目の処理:リスト「ブロック番号」の1番目と2番目を比較して入れ替える

2回目の1、2番目の比較と入れ替えでソートを完成します。

ブロック番号の1番目より2番目が大きいか調べる条件を作ります。この条件に合うときに次のことを行います。

・変数「おおきいかず」にリスト「ブロック番号」の2番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の1番目を代入
・リスト「ブロック番号」の1番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の2番目を変数「ちいさいかず」で置き換え


比較と入れ替えを定義にする

同様のブロックを複数回作るのは冗長なので、定義としてまとめていきます。Scratchの「ブロックを作る」ボタンを押して新しいブロックを作ります。このときに「引数」を設定することで、そのブロックの実行時に指定値を渡すことが可能になります。例では「大きさを比較(ばんごう:引数)」ブロックを作っています。

1、2番目の比較と入れ替えのブロックを利用して定義にしていきますが、リストの「1番目」の部分を引数(ばんごう)で指定します。

冒頭で変数「つぎのばんごう」には「(ばんごう)+1」を代入しておきます。こうしておいて「2番目」の部分は変数「つぎのばんごう」で指定していきます。

定義「大きさを比べる(ばんごう)」では、(1)番目を引数「ばんごう」で指定し、(2)番目を変数「つぎのばんごう」に変更しました。


定義を活用してソートする

まずは、1回目の1、2番目の比較と入れ替えを「大きさを比べる(1)」で実行します。

1回目の2、3番目の比較と入れ替えを「大きさを比べる(2)」で実行します。

2回目の1、2番目の比較と入れ替えを「大きさを比べる(1)」で実行しソートを完成します。


今回は、バブルソートのプログラムを紹介しました。ここまででかなりスッキリしましたがデータの数が増えるたびに「大きさを比べる(ばんごう)」のブロックを組み直す必要がありますし、値が多くなると煩雑になります。次回は、変数と繰り返しを使って値の増減にも対応可能なコードに改造しようと思います。

授業での活用

Scratchはゲームづくりだけでなく、子どもたちのアイデアを表現したり、調べたことを発表したりと、さまざまな教育活動に活用できるツールです。
今回ご紹介した「大きい順に並べ替える」プログラムは、データの整理やアルゴリズムの基礎に触れることができる内容です。
子ども達からはゲームの得点やクリアスピードのランキングを知りたいという声をよく聞きます。そういった興味や関心をきっかけに、自分でプログラムを作ることで、仕組みへの理解がぐっと深まるのではないでしょうか。処理は少し冗長に感じるかもしれませんが、順を追ってソートの仕組みを理解するためにも重要なステップです。次回は繰り返しを使い効率的なプログラムへと段階的に進めます。
ぜひ、授業だけでなくクラブ活動や探究学習など、さまざまな場面で試してみてください。

スクラッチの使い方

変数とは

<筆者プロフィール>
ユーバー株式会社 代表 中村里香
2017年4月、すべての子どもが楽しく学べるプログラミング教育を目指し、ユーバー株式会社を設立。プログラミング教室運営、クラウド型学習サービス「うさプロオンライン」の提供、教材開発、講師育成支援、体験イベントの開催などを行う。環境に左右されない学びの機会を届けるため、教育現場や企業と連携し活動中。

ご質問・お問い合わせ info@yuber.jp 中村宛(ご質問は該当記事のURLを添えてください)

関連URL

「うさプロオンライン」

ユーバー

自律的な学習者への第一歩に 自己効力感の向上 活用事例多数紹介 すらら 活用事例のご紹介
Benesse AIドリル x デジタルテストの導入事例大公開!
Windows11 生成AI時代に知っておきたい! 教育現場へ導入すべきPCとは? Copilot+PC
ユーバー株式会社

アーカイブ

  • ICT要員派遣はおまかせ!ICTまるごとサポート 詳細はこちら
  • 事例紹介作って掲載します。 ICT教育ニュースの楽々 事例作成サービス