【Scratch入門】リストの『挿入』・『削除』をじっくり理解する


※ 当ページには【広告/PR】を含む場合があります。
2021/11/29
2022/08/19
【Scratch入門】リストから数値データを使いこなす
【Scratch入門】スプライト・クローンの基本的な利用方法
タコキンのPスクール|リストの挿入・削除を理解する



以前の記事では、Scratchでリストを使うための基礎的な内容を解説していました。

合同会社タコスキングダム|蛸壺の技術ブログ
【Scratch入門】リストから数値データを使いこなす

Scratchのリストを使って、テキストから読み込んだ大量のデータを上手くプログラムで利用する方法を解説します。



Scratchの前身である
「Scratch2.0」 でもリストの機能はありましたが、Scratchでは新しいプログラミングブロックが追加されたり、一部の機能が使われなくなったりしています。
もしScratch2.0で作られたプロジェクトから、現行の3.0へ移行する場合、どのように機能変更があったを知らないと上手く動かない場合があります。
今回は
リストの「挿入」・「削除」機能 の使い方の注意点を踏まえて、使用方法を紹介していきます。



合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

要素をリストへ挿入する



とりあえず何かScratchプロジェクトを新規作成して、空のリストを
「れんしゅう」 という名前でプロジェクトで追加しておきましょう。

合同会社タコスキングダム|蛸壺の技術ブログ


リストを作成した場合、そのリストを操作するための色々なブロックをコマンドパレットに追加されているのが分かります。
ちなみに今回は普通のリストで使いますが、リストを新規作成する際には
すべてのスプライト用このスプライトのみ の2つのタイプから選べます。

合同会社タコスキングダム|蛸壺の技術ブログ


これは以前、
【Scratch基礎 x 変数】2つの変数(グローバル変数とローカル変数)について考える で解説した、 グローバル変数とローカル変数 と同じような扱い方をリストでも可能となっています。

合同会社タコスキングダム|蛸壺の技術ブログ
【Scratch入門】2つの変数(グローバル変数とローカル変数)について考える

Scratchの重要な概念であるグローバル変数とローカル変数の違いについて解説していきます。



リストでも
グローバルリストとローカルリスト の2種類があります。
意識的に使い分けるとプログラミングする人がより読みやすいプロジェクトにすることができます。
リストになにか要素を挿入するためのコマンドブロックは以下の2つになります。

合同会社タコスキングダム|蛸壺の技術ブログ

リストの最後へ挿入



一般にリスト操作としては、リストに加えたい要素をリストの最後へ挿入するのが普通です。
単純な例をやってみましょう。
まず、以下のようなブロックコードを用意します。

合同会社タコスキングダム|蛸壺の技術ブログ


リストに追加するのは何でもよいのですが、ここでは最初からあるグローバル変数の
変数 をそのまま使います。
このブロックをクリックするたびに、リストの最後尾へ要素が追加されていることが分かります。




と、何気なくリストを挿入に使った以下のコマンドブロックですが、

合同会社タコスキングダム|蛸壺の技術ブログ



Scratch以前のプロジェクトでは、このリストの最後に挿入するコマンドブロックが無かったようで、旧バージョンからScratchのプロジェクトに置き換えると、下のテクニックの内どちらかで対応する必要があります。

合同会社タコスキングダム|蛸壺の技術ブログ


Scratch2.0以前であれば、リストへの挿入に、
最初最後 が選択できるようなコマンドブロックがあったのですが、現バージョンでは無くなっています。


リストの最初へ挿入



別のリストへの挿入方法としては、リストの先頭へ新しい要素を追加していく方式もあります。
以下のようなプログラムブロックを組んで、このブロックをクリックしてみましょう。

合同会社タコスキングダム|蛸壺の技術ブログ



すると以下のように、要素を挿入するたびにリストの先頭へ新しい要素が挿入されて行く様子が確認できます。


ランダムなリストで挿入



Scratch2.0以前では、リストへ
乱数 番目に挿入という機能がありましたが、現在のバージョンでは無くなってしまったようです。
これと同じ操作をScratchでもやりたい場合には、以下の3つのブロックの用法の内どれかに置き換えると良いようです。

合同会社タコスキングダム|蛸壺の技術ブログ



簡単なプログラムでこのランダム挿入をやってみると、例えば以下のブロックを組んでみます。

合同会社タコスキングダム|蛸壺の技術ブログ



このプログラムブロックをクリックしていくと、




というように乱数を使ったリストの挿入が簡単にできます。
使いどころは少ないですが、知っているといざという時役に立つかも...?


リストの重複を考慮して挿入



リスト挿入の応用編で、重複している要素はそのまま追加したくない、というシチュエーションがあります。
そんなときには、

合同会社タコスキングダム|蛸壺の技術ブログ


のブロックを使うことで、リスト内に指定した要素が既にあるのか・無いのか判定することが可能です。
例えば、以下の
1〜5 までの乱数を要素として挿入していくことを考えましょう。

合同会社タコスキングダム|蛸壺の技術ブログ



このブロックをクリックするたびに乱数1から5までの数を挿入するのですが、既に挿入する数に重複があれば、その要素は挿入されることはありません。



合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

要素をリストから削除する



次にリストの削除操作に関して見ていきましょう。
削除に関連するコマンドブロックは以下の2種類です。

合同会社タコスキングダム|蛸壺の技術ブログ


このうち、
<リスト>の全てを削除する のブロックは、文字通りリストを一旦すべて消去して空にするコマンドです。

リストの最初から削除



前節の挿入では、リストの最後尾へ要素が挿入されるのが通常の使い方でしたが、リストからの削除でもっとも基本となるのは、
リスト先頭の要素の削除 です。
これは単純に先頭の要素(1番目)を削除するだけですので、

合同会社タコスキングダム|蛸壺の技術ブログ


を使えば良いです。


リストの最後から削除



リストの最後尾から消すためには少し工夫が必要です。
以下のコマンドブロックのどちらかの用法を利用します。

合同会社タコスキングダム|蛸壺の技術ブログ


これによって、最後尾の要素から優先的に削除することが可能です。


選択して削除




最後に、要素を選択的にリストから削除する方法も知っておきましょう。
リスト内の要素を検索して、最初に検索がヒットしたリストの番号を返すのが、

合同会社タコスキングダム|蛸壺の技術ブログ


というコマンドブロックになります。
なおこのブロックで検索した結果、該当の要素が無い場合には、
0(ゼロ) を返します。
このブロックを使って、選択的に要素を削除してみましょう。
以下が使用例になります。




なお、リストに重複した要素が複数合った場合には、リスト内で最初に検索された要素が消去されますので、検索結果すべての要素を一括して削除したい場合にはループで繰り返すなどもう少し工夫が必要になります。
興味があれば各自練習課題として取り組んで見てください。


合同会社タコスキングダム|蛸壺の技術ブログ【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

まとめ



今回は、Scratchのリスト操作の内、要素の「操作」・「削除」で良く利用するパターンを中心に解説していきました。
リストに使い慣れておくと、作成できるプログラムの幅が広がりますので、是非とも積極的に使いこなしていきましょう。


参考サイト

() の () 番目 (ブロック)|Scratch wiki