プログラミング 第5回 制御構文(もし~)
前回の問題の解答
このBMIのプログラムは今回さらにバージョンアップさせます。
今回学ぶこと
・「条件分岐」の制御構文
・ 余りを表す記号「%」
・「≦」の半角入力は「<=」、「≧」の半角入力は「>=」
・ 整数変換
・「≠」の半角入力は「!=」「<>」
だんだん難しい内容に入っていきますがしっかり学んでいきましょう。
今回は「制御構文」というものを学習します。
「制御構文」とは、プログラムの途中で条件によって分岐させたり、繰り返させたりするものです。
実は、今までやったことのある繰り返しの命令も制御構文です。
「条件分岐」の制御構文
それでは条件によって分岐する制御構文がどのようなものか見ていきましょう。
条件分岐の構文は「もし、(条件)ならば」「違えば」という形で使います。「もし」の後の「、」はなくても大丈夫です。
条件が真のとき(条件を満たすとき)は「ならば」の後ろの処理を行い、条件が偽のとき(条件を満たさないとき)は「違えば」の後ろの処理を行います。
この例では条件の「N=5」を満たしているので「ならば」の後ろの処理を行っています。
試しに1行目を「N=3」としてみると、条件「N=5」を満たしていないので「違えば」の後ろの処理が行われます。
余りを表す記号「%」
次に、前提として「%」という記号の計算を説明します。
「%」は余りを表す記号です。
このような感じで計算式の余りを取り出すことができます。
この「%」を使って、「入力した数が奇数か偶数かを判断するプログラム」を作ります。
ある数を2で割った余りが0ならば偶数、0でなければ奇数ですよね。
「尋ねる」関数を使ってプログラムを作りました。実行ボタンを押したときに出てくるダイアログ(別枠)に0以上の整数を入力すると、その数が偶数か奇数かを教えてくれます。
ただ、このプログラムでは「3.6」など小数を入力すると2で割った余りが0ではないので「奇数です」と表示されてしまいます。その点は修正したいので、もう少し条件分岐の構文について学んでいきます。
条件は複数設定することもできます。
「もし、(条件1)ならば(条件1を満たすときの処理)」
「違えば、もし、(条件2)ならば(条件1を満たさず条件2を満たすときの処理)」
・・・繰り返し・・・
「違えば、(すべての条件を満たさないときの処理)」
という感じで入力していきます。「、」はなくてもいいです。
また、「以上以下」の記号は「≧」「≦」の他に「>=」「<=」も使えます。半角のときは「>=」「<=」の方が入力しやすいですね。
整数変換
「整数変換」という関数についても説明しておきます。
「整数変換」はその名の通り小数点以下を切り捨てて値を整数にします。ただ、算数的な切り捨てではなく、小数点以下をないものとして扱います。
「0で小数点切下げ」という関数を以前に紹介しましたが、こちらは算数的な意味の切り捨てです。
正の値のときは「整数変換」と「0で小数点切下げ」は同じ結果になりますが、負の値のときは異なる結果になります。
要するに「整数変換」は小数点以下を無視したいときに使う関数です。
この「整数変換」を使えば、入力した数字が整数かどうか判断することができます。
「整数変換する前の値」と「整数変換した後の値」が等しければ、その数は整数といえますね。
逆に、「整数変換する前の値」と「整数変換した後の値」が等しくなければ、その数は整数ではありませんね。
これで入力した数が整数かどうかを判断するプログラムができました。
それでは、先ほど作った「入力した数が奇数か偶数か判断するプログラム」を修正していきましょう。
整数以外を入力したときに「0以上の整数を入力してください」と警告文が出るようにします。
先ほどの整数変換を使い、整数変換前と整数変換後が違う値のときは整数ではないので、「0以上の整数を入力してください」と警告するように条件1を設定しました。
条件2以降は条件1が偽のとき(入力した数が整数のとき)の処理となります。「%」を使って余りを計算していきます。
ちなみに「≠」を半角で入力するときは「!=」や「<>」を使います。「!=」と「<>」は少し働きが違うのですが、数値を扱う場合はどちらでも大丈夫です。
これでだいたい完成しているのですが、負の数を入力したときも「0以上の整数を入力してください」と警告文が出るようにします。
「N<0」という条件を1つ付け加えるだけでOKです。
これで「0以上の整数を入力したときに奇数か偶数か判断してくれるプログラム」が完成しました。
ちなみに0は偶数なので、0を入力したときは「偶数です」と表示されます。
負の数も奇数・偶数で分類できますが、このプログラムは「0以上の整数」で作っています。
今回は少し難しかったかもしれませんが、それだけより高度なプログラムに近づいているということですね。
それでは今回の課題です。
問題1
「整数を入力してください」と尋ねて、「入力した数が3の倍数かどうか判断するプログラム」を作ってください。負の整数や0も3の倍数かどうか判断するようにしてください。小数を入力したら警告されるようにしてください。
問題2
前回の課題で作った「BMIを教えてくれるプログラム」に肥満度を判定する機能を追加しましょう。
世界保健機関(WHO)の判定基準は次の通りです。
下に一部を入力した画像を載せます。続きを入力して完成させてください。
「 」の中にカッコを入れるには『 』を使います。「 」の中に「 」は使えません。