リストをつかってみよう

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

リストをつくる

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

スクラッチ Scratch

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

スクラッチ Scratch

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

スクラッチ Scratch

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

スクラッチ Scratch

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

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

リストを初期化する

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

スクラッチ Scratch

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

スクラッチ Scratch

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

スクラッチ Scratch

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

スクラッチ Scratch

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

スクラッチ Scratch

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

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

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

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

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

スクラッチ Scratch

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

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

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

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

スクラッチ Scratch

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

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

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

スクラッチ Scratch

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

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

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

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

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

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

スクラッチ Scratch

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

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

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

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

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

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

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

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

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

この講座で学んだこと

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

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

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

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