前回の記事でDNCLの「7 論理演算」~「8 繰り返し」までご説明しました
今回も「なでしこ」というサイトの「なでしこ3簡易エディタ」を使ってプログラムを書いていきます
必ず1行目に半角で「!DNCL2」もしくは全角で「!DNCL2」と記述してください

引用元:なでしこ3簡易エディタ
著作権:kujirahand
演習問題2
これまで学習した知識を使って以下のプログラムを作ってみましょう
ルール1)変数iimachigaiを0にする
ルール2)”「たこ焼き」って10回入力して”と尋ねて、入力した値を変数kaitouに代入する
ルール3)もしルール2で入力した変数kaitouの値が「たこ焼き」じゃなかったら、変数iimachigaiを1にしてルール5へ移動する
ルール4)もしルール2で入力した変数kaitouの値が「たこ焼き」だったらルール2へ戻る
ただし、ルール2を10回終えたらルール5へ移動する
ルール5)もし変数iimachigaiが1だったら「今たこ焼きじゃなくて「●●」って言ったよ」と表示する(●●はルール2で間違えて入力した「たこ焼き」じゃない値)
ルール6)もし変数iimachigaiが0だったら”鯛を焼いた食べ物の名前は?”と訪ねてkaitou2に代入する
ルール7)ルール6で入力したkaitou2が「たい焼き」だったら「ひっかかったなバカめ」と表示し、
ルール6で入力したkaitou2が「焼き魚」だったら「正解おめでとう」と表示し、ルール6で入力したkaitou2が「たい焼き」でも「焼き魚」でもなかったら「違うよ」と表示する

以下はプログラムを実行したときのイメージ

上の質問を10回繰り返す
【上の質問に「たこ焼き」じゃない値を入力した場合】


上の質問で「たこ焼き」を10回入力した場合、さらに以下の質問を表示

【上の質問に「たい焼き」と入力した場合】


【上の質問に「焼き魚」と入力した場合】


【上の質問に「たい焼き」でも「焼き魚」でも無い値を入力した場合】


演習問題2ヒント:考え方
まず「たこ焼き」と10回入力させる部分のプログラムを作成する
変数iimachigaiは10回間違えずに「たこ焼き」と言えたか確認するためのフラグ変数であり、間違えた場合はiimachigai = 1 としてループを抜け、間違えたかどうかの判定は比較演算「 != 」を用いて以下のように記述する
もし、kaitou != “たこ焼き”ならば:
iimachigae = 1を実行し、抜ける。
つぎに「たこ焼き」と10回正しく言えたか言えなかったか条件分岐する部分のプログラムを作成する
変数iimachigaiが0の場合(10回正しく言えた場合)は「鯛を焼いた食べ物の名前は?」という質問に対するkaitou2の3パターンでさらに条件分岐しそれぞれのメッセージを表示し、変数iimachigaiが1の場合(10回正しく言えなかった場合)は 以下のようにkaitouの中身を含めたメッセージを表示する
もし、iimachigae == 1ならば:
表示する(”今たこ焼きじゃなくて「”, kaitou , “」って言ったよ”)
演習問題2解答
!DNCL2
iimachigai = 0
iを1から10まで1ずつ増やしながら繰り返す:
"「たこ焼き」って10回入力して"と尋ねてkaitouに代入
もし、kaitou != "たこ焼き"ならば:
iimachigae = 1を実行し、抜ける。
もし、iimachigae == 1ならば:
表示する("今たこ焼きじゃなくて「", kaitou , "」って言ったよ")
そうでなければ:
"鯛を焼いた食べ物の名前は?"と尋ねてkaitou2に代入
もし、kaitou2 == "たい焼き"ならば:
表示する("ひっかかったな、バカめ")
を実行し、そうでなくもし kaitou2 == "焼き魚" ならば:
表示する("正解おめでとう")
そうでなければ:
表示する("違うよ")
9 配列
変数は1つの値しか保存できませんでしたが、複数の値をまとめて保存するには配列を使用します
配列を使用するには、配列名 = [値1,値2,値3] とします(値が3つだった場合の例)
配列名は1文字目をローマ字大文字とし、2文字目以降をローマ字小文字とします
また、変数の時と同様に値が文字の時は ” ” で値をはさみ、数字の時は ” ” で値をはさみません
例えば値が文字の場合は Fruits = [“りんご”,”バナナ”,”みかん”]のようにし
値が数字の場合は Test = [95,48,72]のようにします
配列の中身を扱うときは配列名[数字]として、配列内の数字を左から数えた番号で指定します
この数字は要素番号と言ったり添字(そえじ)と言い、1からではなく0から数えるのが一般的です
例えば上の例のFruits配列の場合、Fruits[0]はりんご、Fruits[1]はバナナ、Frutis[2]はみかんです
要素番号 | 0 | 1 | 2 |
Fruits | りんご | バナナ | みかん |
ここで1点注意があります
配列の要素番号(または添字)は0から数えるのが一般的と言いましたが、プログラミング言語によっては1から数えるプログラミング言語もありますし、設定で0からか1からか指定できるプログラミング言語もあります
DNCLの学習の最初になでしこ3簡易エディタは共通テストのプログラミング言語DNCLに対して互換性があるとご説明しましたが、配列の要素番号の数え方は異なっております
なでしこ3簡易エディタでは配列の要素番号は0から数えますが、2025年の共通テストの問題では配列の要素番号は1から数える問題でしたので、恐らく2026年度以降も共通テストでは1から数える問題となると予想していますので、そこだけは注意してください
配列の要素番号は変数名を使うこともできます
!DNCL2
Sikoku = ["香川県","高知県","愛媛県","徳島県"]
"0~3のどれかの数字を入力してください"と尋ねてkenに代入
表示する(Sikoku[ken])
上記のように記述し、「▶実行」ボタンをクリックすると以下のような入力フォームが表示されるので値を入力して「OK」をクリックすると結果が表示されます








配列とループを組み合わせることも出来ます
また、配列の中身の個数は 要素数(配列名) で表せます
!DNCL2
Okane = [1,5,10,50,100,500,1000,2000,5000,10000]
表示する("日本のお金の種類を表示します")
iを0から9まで1ずつ増やしながら繰り返す:
表示する(Okane[i],"円")
表示する("種類は全部で",要素数(Okane),"種類です")
上記のように記述し、「▶実行」ボタンをクリックすると以下の結果が表示されます

配列の中身を書き換えることも出来ます
!DNCL2
Color = ["赤","青","白","黄","緑"]
表示する(Color[2])
Color[2] = "金"
表示する(Color[2])
上記のように記述し、「▶実行」ボタンをクリックすると以下の結果が表示されます

ここまでの内容をちゃんと理解できているか確認するため、次回は演習問題3に取り組んでもらいます
すぐに解答を見ないで自分でよく考えて実際にプログラムを書いてみてください
コメント