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

2025年9月4日

ユーバーの「Scratchで小・中学校のプログラミング」Vol.22 <スクラッチで小さい順に並べかえ(改造)>

ユーバープログラミングスクールの中村里香代表による、小学校のプログラミング授業で使ってほしいプログラミング言語Scratch(スクラッチ)の学習動画第22回。
今回は<上級者>向け、Scratchでデータを並べかえるソートのプログラムの3回目です。これまでに作成した「大きい順」に並べかえるコードを、今回は「小さい順」に改造します。

前回までの振り返りと小さい順にソートする流れの確認

バブルソートで小さい順に並べかえるには

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

この比較と入れ替えの処理を、「データの個数−1」回繰り返すことで並び替えが完了します。
小さい順にソートする処理の流れ「例:3 → 2 → 1」

1回目(全体):
① 1番目の「3」と2番目の「2」を比較 → 入れ替え(2番目の方が小さい)
→「2 → 3 →1」
② 2番目の「3」と3番目の「1」を比較 → 入れ替え(3番目の方が小さい)
→「2 →1 →3」
ここまでで一番右側の値(最大)が決定
2回目(一番右を除く):
③ 1番目の「2」とつ2目の「1」を比較 → 入れ替え(2番目の方が小さい)
→「1 → 2 →3」
小さい順の完成


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

「大きい順」に並び替えをする定義の振り返り

前回までにScratchの「ブロックを作る」機能で「引数」付きのブロック「おおきい(ばんごう:引数)」を作りました。引数とは実行時に指定値を渡すための仕組みです。


最初に、変数「つぎのばんごう」には「(ばんごう:引数)+1」の値を代入します。
つまり引数が「1」の時、「つぎのばんごう」は「2」となるので次のようにリストの1番目と2番目を比較することになります。

リスト「ブロック番号」の「ばんごう」番目の値より、「つぎのばんごう」番目の値の方が大きいとき、次の処理を行います。

・変数「おおきいかず」にリスト「ブロック番号」の変数「つぎのばんごう」番目を代入
・変数「ちいさいかず」にリスト「ブロック番号」の引数「ばんごう」番目を代入
・リスト「ブロック番号」の引数「ばんごう」番目を変数「おおきいかず」で置き換え
・リスト「ブロック番号」の変数「つぎのばんごう」番目を変数「ちいさいかず」で置き換え

定義「小ささを比べる(ばんごう)」に改造


次の部分を変更することで小さい順にソートします。

【条件の変更】
「ばんごう」番目の値と「つぎのばんごう」番目の値を比較し、「つぎのばんごう」の値の方が小さい場合に、入れ替え処理を行います。

【条件が真の時の実行内容の変更】
・変数「ちいさいかず」にリスト「ブロック番号」の変数「つぎのばんごう」番目を代入
・変数「おおきいかず」にリスト「ブロック番号」の引数「ばんごう」番目を代入
・リスト「ブロック番号」の引数「ばんごう」番目を変数「ちいさいかず」で置き換え
・リスト「ブロック番号」の変数「つぎのばんごう」番目を変数「おおきいかず」で置き換え

定義「小ささを比べる(ばんごう)」を使って5つのデータを並び替える


1回目(全体):
はじめに引数に「1」を指定してリストの1番目と2番目を比較、2番目が小さい時に入れ替える。引数を1ずつ増やして「4」(4番目と5番目のデータの比較と入れ替え)まで繰り返す。
5番目の値が確定

2回目(5番目を除く)
同様に引数「1」(1番目と2番目のデータの比較と入れ替え)〜引数「3」(3番目と4番目のデータの比較と入れ替え)まで繰り返す。
4番目の値が確定

3回目(4番目を除く)
同様に引数「1」(1番目と2番目のデータの比較と入れ替え)〜引数「2」(2番目と3番目のデータの比較と入れ替え)まで繰り返す。
3番目の値が確定

4回目(3番目を除く)
引数に「1」(1番目と2番目のデータの比較と入れ替え)で実行する。
ソートの完成!

繰り返しと変数を使って、リストのデータ個数の増減へ対応


繰り返す回数は「データの個数−1」回であり、繰り返すごとに比較回数が1回ずつ減っていくという点は変わりません。
繰り返しの回数は、「リストの長さ」ブロックを使うことで、データ数の増減にも自動で対応します。

はじめに変数「くらべるかいすう」に繰り返す回数を代入するために、「(ブロック番号)のながさ」ブロックから「1」を減算した値を代入します。

【1回分の比較と入れ替え部分の処理】
変数「ばんごう」を使いデータの位置を指定します。流れは以下のとおりです。

・変数「ばんごう」に1を代入
<次の処理を「くらべるかいすう」回繰り返す>
・定義「小ささを比べる(ばんごう)」で比較と入れ替え
→1回目は「ばんごう」が「1」なので1番目と2番目が対象
→2回目は「ばんごう」が「2」なので2番目と3番目が対象

・変数「ばんごう」を1増やす

【「データの個数-1」回、処理を繰り返す】
1回分の比較と入れ替えが終わったら、変数「くらべるかいすう」を1つ減らし、再び同じ処理を繰り返します。変数「くらべるかいすう」が0になるまで、「くらべるかいすう」を減らしながらこうして繰り返します。

今回は、ソートのまとめとして振り返りをしながら「小さい順」の並べかえに改造しました。

授業での活用

Scratchはゲームづくりだけでなく、子どもたちのアイデアを表現したり、調べたことを発表したりと、さまざまな教育活動に活用できるツールです。

今回は、これまでの2回に引き続き、バブルソートの仕組みの解説と、ステップごとにプログラムを完成させる体験を通して、より深い理解を目指す学習に取り組みました。

作業の中で規則性を発見したり、効率化を図るために試行錯誤したりするプロセスから、子どもたちは多くの学びを得られると考えています。

ぜひ、授業だけでなくクラブ活動や探究学習など、さまざまな場面で試してみてください。

スクラッチの使い方

変数とは

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

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

関連URL

「うさプロオンライン」

ユーバー

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

アーカイブ

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