1. トップ
  2. 動画ニュース
  3. ユーバーの「Scratchで小・中学校のプログラミング」Vol.21 <スクラッチで大きい順に並べかえ②(繰り返しで自動化)>

2025年8月28日

ユーバーの「Scratchで小・中学校のプログラミング」Vol.21 <スクラッチで大きい順に並べかえ②(繰り返しで自動化)>

ユーバープログラミングスクールの中村里香代表による、小学校のプログラミング授業で使ってほしいプログラミング言語Scratch(スクラッチ)の学習動画第21回。
今回は<上級者>向け、Scratchでデータを大きい順に並べ替えるソートのプログラムの2回目です。変数と繰り返しを活用しソートするデータの増減にも対応します。

前回の振り返り

バブルソートとは

「バブルソート」は、データを大きい順や小さい順に並べかえるソートの手法の1つで、1つずつ隣どうしのデータを比較し入れ替えを繰り返すことで並べかえを完成します。
この比較と入れ替えの処理を、「データの個数−1」回繰り返します。
大きい順にソートする処理の流れ「例:2 → 1 → 3」

1回目(全体):
① 1番目の「2」と2番目の「1」を比較 → 何もしない(1番目の方が大きい)
→「2 → 1 →3」
② 2番目の「1」と3番目の「3」を比較 → 入れ替え(3番目の方が大きい)
→「2 → 3 → 1」
ここまでで一番右側の値(最小)が決定

2回目(一番右を除く):
③ 1番目の「2」とつ2目の「3」を比較 → 入れ替え(2番目の方が大きい)
→「3 → 2 → 1」
大きい順の完成


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

リスト「ブロック番号」の1回分の入れ替えのプログラム

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つ減らし、
再び「1回分の比較と入れ替えの処理」を繰り返します。
変数「くらべるかいすう」が0になるまで、「くらべるかいすう」を減らしながらこうして繰り返し完成します。

今回は、バブルソートの第2回として、データの個数が増減しても自動で対応できるようにするプログラムを紹介しました。次回は、ソートのまとめとして「小さい順」に並べかえるように改造してみたいと思います。

授業での活用

Scratchはゲームづくりだけでなく、子どもたちのアイデアを表現したり、調べたことを発表したりと、さまざまな教育活動に活用できるツールです。
今回は前回の並べ替えプログラムから一歩進み、繰り返しを使って処理を効率化する方法に取り組みました。作業の規則性に気づいたり、自分なりに工夫を加えたりすることで、プログラミングの理解がさらに深まります。
ぜひ、授業だけでなくクラブ活動や探究学習など、さまざまな場面で試してみてください。

スクラッチの使い方

変数とは

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

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

関連URL

「うさプロオンライン」

ユーバー

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

アーカイブ

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