リストをつかってみよう

この講座こうざでは、変数へんすうのひとつである「リスト」をつかったプログラミングを勉強べんきょうします。

リストをつくる

変数へんすうは、データをいれる入いれものでした。リストは変数へんすうのひとつで、変数へんすうがならんだ変数へんすうです。ちょっとわかりにくいですね。では、じっさいにリストをつかってみましょう。つかってみればすぐわかるはずです。新あたらしいプロジェクト「ネコとじゃんけん」をつくります。

スクラッチ Scratch

データの中なかにある、「リストを作つくる」をクリックします。

スクラッチ Scratch

リスト名めいに「じゃんけん」と入力にゅうりょくしてOKをクリックしてください。

スクラッチ Scratch

リストにかんけいするコマンドが作成さくせいされるはずです。

スクラッチ Scratch

これで、うえの図ずのように「じゃんけん」という変数へんすうができました。入いれものがならんでいるのがリストのとくちょうです。今回こんかいは入いれものを3つだけつかいますが、じっさいは何個なんこでも入いれものを追加ついかすることができます。

では、つくったリストをつかってみましょう。

リストを初期化する

変数へんすうと同おなじように、リストも初期化しょきかしましょう。今回こんかいは、ネコとじゃんけんをしたいので、グー、チョキ、パーというデータでリストを初期化しょきかします。

スクラッチ Scratch

「データ」の中なかにある「thing を じゃんけん に追加ついかする」をおいてください。このコマンドによって、リストにデータをいれることができます。

スクラッチ Scratch

今回こんかいはグー、チョキ、パーをいれたいので、「thing を じゃんけん に追加ついかする」を3つならべて、それぞれのデータを「じゃんけん」に追加ついかします。

スクラッチ Scratch

実行じっこうするまえに、ステージをみてみると、リスト「じゃんけん」の中身なかみを見みることができます。リストをつくったばかりではからっぽですが、実行じっこうしてみると・・・

スクラッチ Scratch

リストの中なかに3つのデータが追加ついかされました。リストの中なかにあるデータは、追加ついかしたじゅんばんにならびます。

スクラッチ Scratch

これで、リスト「じゃんけん」には3つのデータがはいりました。では、さっそくこのリストをつかって、ネコとじゃんけんしてみましょう。

リストつかってじゃんけんしてみよう!

ネコにじゃんけんさせるにはどうすればいいでしょう? 今回こんかいは、ネコにリスト「じゃんけん」のなかにあるデータ(グー、チョキ、パー)のひとつを言いうようにします。今回こんかいのスペックは以下いかです。

  1. リスト「じゃんけん」をつくり、「グー」「チョキ」「パー」の3つのデータで初期化しょきかします。
  2. 実行じっこうするとネコが「グー」「チョキ」「パー」のどれかを言いいます。

ネコにおしゃべりさせるには「Hello!と言いう」コマンドをつかえばいいのはもう知しってますね。もんだいは「グー、チョキ、パーのどれかを言いう」ところです。

スクラッチ Scratch

「リストの中なかのどれか」をえらぶには、「データ」の中なかにある「1番目ばんめ(じゃんけん)」をつかいます。この「1」の部分ぶぶんは、下したのように入力にゅうりょくしたり、えらんだりできます。

  • 1や2といった数字すうじ ・・・ 数字すうじの場所ばしょにあるデータをえらびます。
  • 最後さいご ・・・ リストの最後さいごのデータ(最後さいごに追加ついかしたデータ)をえらびます。
  • 乱数らんすう ・・・ リストの中なかのどれかをえらびます。

今回こんかいは、どれかを言いいたいので、「乱数らんすう」をえらんでください。これで実行じっこうすると、ネコがリストの中のどれかをいいます。どれかをいうので、なにを言いうかは実行じっこうしないとわかりません。

これで完成かんせい! といいたいところですが、リストをつかう場合ばあいはやっておくことがあります。それは、「後処理あとしょり」です。後処理あとしょりは、スクリプトのさいごにやる処理しょりです。

スクラッチ Scratch

なぜ、後処理あとしょりが必要ひつようなのでしょうか? それは、上うえでつくったスクリプトを実行じっこうすればよくわかります。もう気きがついた人がいるかもしれませんが、2回かい実行じっこうすると、リストのデータは2倍ばいになってしまいます! スクリプトがおわっても、リストの中身なかみはそのままなので、初期化しょきかするたびにデータがどんどんふえてしまうのです。

スクリプトはリスト「じゃんけん」の「グー」、「チョキ」、「パー」だけをつかいます。もちろん、データがふえてもじゃんけんには問題もんだいありませんが、よけいなことをするスクリプトは、効率こうりつがわるくなりますし、よきせぬ動うごきをしてしまったり、バグとよばれる「プログラムの中なかの問題もんだい」ができてしまう可能性かのうせいがあるからです。

必要ひつようのないデータや、必要ひつようのない処理しょりをスクリプトに書かくのは、かっこよくありません。

スクラッチ Scratch

どんどんふえてしまうデータをふせぐためには、スクリプトがおわったときに、使つかいおわったデータをおかたづけする「後処理あとしょり」します。ここでは、「1番目ばんめを じゃんけん から削除さくじょする」をつかってください。さきほど登場とうじょうした「1番目ばんめ(じゃんけん)」とおなじく、「1」の部分ぶぶんは、

  • 1や2といった数字すうじ ・・・ 数字すうじの場所ばしょにあるデータをえらびます。
  • 最後さいご ・・・ リストの最後さいごのデータ(最後さいごに追加ついかしたデータ)をえらびます。
  • すべて ・・・ リストにあるすべてのデータをえらびます。

をえらべます。今回こんかいはリストの中なかにあるデータをすべておかたづけしたいので、「すべて 番目ばんめを じゃんけん から削除さくじょする」にします。これで、実行じっこうしたあとにリストの中なかがからっぽになります。

「すべて 番目ばんめを じゃんけん から削除さくじょする」は、「みどりのはたがくりっくされたとき」のあとで実行じっこうしても問題もんだいありません。スクリプトのまえでやることを「前処理まえしょり」といいます。今回こんかいの場合ばあい、前まえでリストをきれいにしても、後あとでしても、どちらでも問題もんだいありません。

れんしゅうもんだい1: ゴミの日のよてい

ここで、変数へんすうをつかったれんしゅうもんだいをやります。ネコが1しゅうかんのゴミの日ひのよていをはなすスクリプトです。以下いかのスペックをプログラミングしてください。プロジェクト名めいは「ゴミの日ひのよてい」です。

  1. リスト「いっしゅうかん」とリスト「よてい」と変数へんすう「データのじゅんばん」をつくります。
  2. 前処理まえしょりで、リスト「いっしゅうかん」とリスト「よてい」の中にあるデータをすべて削除さくじょします。
  3. リスト「いっしゅうかん」をつくり、「げつようびは、」「かようびは、」「すいようびは、」「もくようびは、」「きんようびは、」「どようびは、」「にちようびは、」の7つのデータで初期化しょきかします。
  4. リスト「よてい」をつくり、「もえるゴミ」「びん・カン・プラゴミ」「しげんゴミ」「おやすみ」「もえるゴミ」「おやすみ」「おやすみ」の7つのデータで初期化しょきかします。
  5. 実行じっこうするとネコが「げつようびは、もえるゴミ」「かようびは、びん・カン・プラゴミ」「すいようびは、・・・」と、にちようびまで順番じゅんばんに7回かい予定よていを言いいます。

ポイントは、ふたつのリストをつかうところです。ふたつのリストからとってきたデータを、「演算えんざん」にある「hello と world」でつなぎます。また、今回こんかいのように○回かいくりかえしたいときは、「制御せいぎょ」にある「○回かい繰くり返かえ返こうざす」コマンドをつかいます。

答こたえは ↓ にあるけど、まずはみないで自分じぶんでつくってみよう!

↓

↓

↓

↓

↓

↓

↓

れんしゅうもんだい1: 答え

スクラッチ Scratch

リストをふたつと変数へんすうをひとつつかうもんだいです。それぞれを初期化しょきかしてから、ネコによていをしゃべらせています。

スクラッチ Scratch

このプログラムのリストと変数へんすうは、上うえのようなイメージになります。「いっしゅうかん」も「よてい」もつめこんだ順番じゅんばんにならんでいます。どちらもリストの長ながさ(大おおきさ)は7です。それぞれのリストを同おなじ順番じゅんばんでとりだすために、変数へんすう「いまの場所ばしょ」をつかいます。

「いまの場所ばしょ」の初期値しょきち(はじめの数字すうじ)は1です。この変数へんすうでは、リストのどの場所ばしょにいるのかをおぼえておきます。「いまの場所ばしょ」は1ずつふえて、リストのさいごである7まで順番じゅんばんにすすみます。こうするとこで、リストの中なかのデータすべてをとってくることができます。こういったリストの場所ばしょを意味いみする変数を「インデックス」といいます。

スクラッチ Scratch

リストと変数へんすうで、データのじゅんびはできました。では、いよいよネコにしゃべってもらいます。

言いってほしいことは、リスト「いっしゅうかん」の1~7までのデータと、リスト「よてい」の1~7までのデータですね。「データ」にある「1番目ばんめ(いっしゅうかん)」と「1番目ばんめ(よてい)」をもってきて、それぞれの「1」の部分ぶぶんに「データ」にある変数へんすう「いまの場所ばしょ」をおいてください。これで、両方りょうほうのリストの「いまの場所番目ばしょばんめ」のデータはとれました。

とってきたデータをつなぐために、「演算えんざん」の「hello と world」をつかいます。「hello」には「いまの場所 番目ばしょばんめ (いっしゅうかん)」をおいて、「world」には「いまの場所 番目ばしょばんめ(よてい)」をおきます。これで、「いっしゅうかん」と「よてい」をつなぐことができましたね。

「見みた目め」にある「Hello! と1秒言びょういう」をおいて、「Hello!」の部分ぶぶんに、上うえでつなげたデータをおきます。さらにこれを「制御せいぎょ」にある「○回繰かいくり返かえす」の中なかにおきましょう。

さいごに、「データ」にある「いまの場所ばしょを 1 ずつ変かえる」をおきます。こうしないと、ずっと月曜日げつようびになってしまいますからね。

これで完成かんせい。実行じっこうして動作どうさを確認かくにんしましょう。

とくべつもんだい1: ひらがなのひょう

スクラッチ Scratch

ネコが、ひらがなのひょうをつかって、「あかさたな~」というように、ひらがなをよみあげていくスクリプトをつくります。

スペックは以下いかです。

  1. ネコが、ひらがなを横向よこむきにしゃべります。たとえば、「あかさたなはまらやらわ」や「うくすつぬふむゆるう」というふうにはなすのです。
  2. ひらがなをはなすために、ひらがなのひょうをリスト「ひらがな」でつくります。ひらがなの中なかには、ひとつめ「あいうえお」、ふたつめ「かきくけこ」・・・というようにひらがなデータをいれましょう。
  3. ネコが、「あいうえお」のどの場所ばしょからはなすかはわかりません。「あか~」「いき~」「うく~」「えけ~」「おこ~」のどれかを1回かいはなします。

ヒント: ひらがなのひょうを横よこにうごくためには、「もじのばしょ」と「ぎょうのばしょ」のふたつの変数へんすうがひつようです。「もじのばしょ」が「2」であれば、「あ行ぎょうの2番目ばんめ」「か行の2番目ばんめ」・・・とたどることで、「いきしちに~」という文字もじをとることができます。

ヒント: 1番目ばんめのデータをとりだすためには、「1 番目ばんめ (world)の文字もじ」をつかいます。たとえば、「あいうえお」という変数へんすう「あ行ぎょう」があるなら、「3 番目 ばんめ(あ行ぎょう)の文字もじ」は「う」になります。

ヒント: とりだした文字もじをおいておくために変数へんすう「いうこと」がひつようです。ここにとりだした文字もじをおいていきます。ここではリストではなく変数へんすうをつかってください。たとえば、変数へんすう「いうこと」に「あ」をいれたとして、つぎに「か」をいれて「あか」というように、「変数へんすう と 新あたらしい文字 もじをつないで 変数へんすう にいれる」には、どうすればよいでしょう?

ヒント: どの場所ばしょからはなすかわからないようにするには「乱数らんすう」をつかいます。乱数らんすうは、「演算えんざん」にある「1 から 10 までの乱数らんすう」とつかいます。ひとつの行ぎょうは5文字もじなので、1~5の乱数らんすうがあればよいはずです。

ちょっとむずかしいもんだいですが、ひとつずつスペックをプログラミングすればできるはずです。がんばれ!

とくべつもんだいの答こたえはこちらで100円えんで販売はんばいしています。ページの下したにある「購入こうにゅうして続つづきをみる」へすすんでください。購入方法こうにゅうほうほうはこちらを参考さんこうにどうぞ。答えには、とくべつじょうほう(あたらしいコマンドや、ちょっとした技わざなど)も書かいています。

この講座で学んだこと

  1. リストは変数へんすうがならんだ変数へんすうです。
  2. リストにデータを追加ついかすると、追加ついかした順番じゅんばんにデータはならびます。さいごに追加ついかしたデータは、リストにさいごになるのです。
  3. 乱数らんすうは、どれかの数字すうじです。なにがでるかは実行じっこうしないとわかりません。
  4. 前処理まえしょりはスクリプトの実行前じっこうまえにやる処理しょりです。後処理あとしょりは、スクリプトのさいごにやる処理しょりです。前処理まえしょりや後処理あとしょりでは、データをきれいにおかたずけする処理しょりなどをします。
  5. 必要ひつようのないデータや、必要ひつようのない処理しょりをスクリプトに書かくのは、問題もんだいになる可能性かのうせいがあるので、かっこよくないです。
  6. プログラムの中なかにできてしまった問題もんだいを「バグ」といいます。バグとは「虫むし」のことです。虫むしが問題もんだいをおこしてしまうのです。
  7. リストの場所ばしょを意味いみする変数へんすうを「インデックス」といいます。

リストはデータを効率的こうりつてきにつかう、いい方法ほうほうです。変数へんすうとリストをつかえば、スクリプトはよりいっそうおもしろい動うごきになります。

コメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。