08 のリストを使った追加課題で質問があります。
①リストにない言葉が入力された場合、「それはないよ」と言うプログラムをこのように作成しました。
https://scratch.mit.edu/projects/802342757/
②その後、テクスタフォーラムを参考にして、リストにない言葉を聞かれた後にもう一度探しているものを聞くプログラムをこのように作成しました。
https://scratch.mit.edu/projects/802348157/
②のようにすると、1番目に間違って2番目に正解しても「それはないよ」と返されてしまいます。
お手本通りにするとうまくいくのですが、最初に「変数を0ではなく1にする」理由と、それはないよ…の後を「変数を1ずつ変える」のではなく「変数を1にする」理由は何でしょうか?(キャプチャの青枠内)
まず最初の変数を"1"にしなくてはいけない理由は、リストの番号"1"~"3"番目を見たいからです。
最初の変数を0にしてしまうと、リストの番号0から始まって1,2番目を見て終了してしまうため、3番目が参照されることがなくなってしまいます。
ですが"1ずつ変える"の位置を変えると、0からスタートしてもリストの1~3すべてを綺麗に見るようにすることもできます。
そして"それはないよ"の後を「変数を1ずつ変える」のではなく「変数を1にする」理由は、全く同じ処理を3回させるために変数をリセットさせる必要があるからです。
添付画像が分かりやすいと思いますが、一度変数をリセットしないと、繰り返しの処理が入ったときに変数の情報を引き継いでしまい、上手にリストの中身を見ることができません。
この課題や他の課題でも、緑の旗が押されたときのすぐ後に変数や座標を指定していましたが、あれは前の情報を引き継がないようにするためで、今回のプログラムでは"それはないよ"の後にこの動作が特殊に入っています。
ご回答ありがとうございます。図解でとても分かりやすく、理解できました。
一点だけ追加質問なのですが、この部分→「"1ずつ変える"の位置を変えると、0からスタートしてもリストの1~3すべてを綺麗に見るようにすることもできます」について、どこに置いたらできるのか分からなかったので教えていただけますか?
またその際、"それはないよ”の後の「変数を1にする」の部分は、「変数を0にする」にしてもうまく行くのでしょうか?
それとも、0からスタートしてもこの部分は「変数を1」にしないとダメなのでしょうか?
よろしくお願いいたします。
位置に関しては、「もしリストの○番目=答えなら」の地点で変数が1になっている必要があるため、この動作よりも前に置く必要があります。
例えば「探しているものを聞く」の直後に置けば、0から始まっても、「もしリストの○番目=答えなら」に来るまでに+1されているため、1,2,3番目が参照されます。
また、「それはないよ」の後の変数を帰るのは、プログラム開始時の変数リセットと同じ役割のため、最初に「変数を1」にした場合は「それはないよ」の後も「変数を1」にする必要があります。