プロデルで始める日本語プログラミング言語入門(#3) 「判断する – もし – 」

プロデルでプログラミング入門連載の第3話です。今回は、条件に応じて、実行することを分ける判断文について紹介します。前回は、変数を使って値を記憶する機能を説明しましたが、変数に入った値に応じて、実行するプログラムを切り替える方法をご紹介します。

その前に…「文」と「式」の話

その前に、これからよく出てくる「文」と「式」という言葉について説明します。プロデルのプログラムは、文と式が組み合わさって書かれています。

文とは

文とは、命令の単位です。基本的に1つの文は、1つの指示を表しています。プロデルでは、プログラムの1行に付き、1つの文を書きます。

「ようこそ!」と表示する

また「。」を使うことで一行に2つ以上の文を書くこともできます。

「こんにちは」と報告する。「さようなら」と報告する

文には、いくつかの種類があり、「呼び出し文」「代入文」「もし文」「繰り返し文」をよく使います。すでにご紹介した文もありますが、このシリーズで残りの文も紹介していきます。

プロデルでは、文を実行する時に必要な情報となる単語の組み合わせを「式」と言います。すでに紹介した計算式や変数、数字は、「式」の一種です。プロデルでは、文を実行する時に、その文に書かれた式を評価(計算)して、その結果を使って文の指示を実行します。

1+1 「こんにちは」 プレゼント

また、数字(123など)や文字列(「こんにちは」) を定数と呼びます。定数も式の一種です。

条件分岐する「もし文」

指定した条件に応じて実行するプログラムを変えるには、判断文(もし文)を使います。例えば、変数の内容に応じて表示する内容など変える、といった用途にもし文を使います。

もし文は、次のように書きます。

もし《条件式》なら
  《実行するプログラム》
もし終わり

もし文では、《条件式》の条件を満たしたときに《実行するプログラム》を実行してくれます。条件を満たしたときのプログラムは、『もし○なら』から『もし終わり』の間に、書いていきます。

例えば、次のように書くと「点数」変数の値が100の時に「満点!」と表示されます。

点数は、100
もし点数が100なら
	「満点!」と表示する
もし終わり

満点!は点数が100の時だけに表示されます。例えば「点数」変数に100以外の値を入れて実行すると、メッセージは表示れません。

条件を満たさなかったとき

もし文では、『そうでなければ』と書くと、その前の条件を満たさなかったときに実行するプログラムを書くこともできます。

点数は、100
もし点数が100なら
	「満点!」と表示する
そうでなければ
	「頑張りましょう」と表示する
もし終わり

たくさんの条件を書く

条件を満たさなかったときに、さらに別の条件を満たすかどうか判断することもできます。その場合は、「他でもし」を使います。

次のプログラムでは、点数が100点ではなく、60点以上だった時に「よく頑張りました!」と表示します。「変数」の数値を変えて実行してみましょう。

点数は、75
もし点数が100なら
	「満点!」と表示する
他でもし点数が60以上なら
	「よく頑張りました!」と表示する
そうでなければ
	「頑張りましょう」と表示する
もし終わり

「もし」文にたくさんの条件を書いた場合には、条件が上から順番に判断されることに注意しましょう。また条件を満たすと、それ以降に書かれた条件は判断されず「もし終わり」までジャンプします。

「もし終わり」を使わずに書くには

なお、プログラムが一行で納まる場合には「もし終わり」は不要です。

もし点数が100なら「満点!」と表示する
そうでなければ「頑張りましょう」と表示する

また、プログラムを『 』という記号を使って「もし終わり」を使わずに書くこともできます。

もし点数が100なら『
  「満点!」と表示する
』
そうでなければ、『
  「頑張りましょう」と表示する
』

サンプル: おみくじゲームを作る

「もし文」を使って、おみくじゲームを作ってみましょう。

「くじ」変数に0から5までの値が入れて、0なら大吉、1なら凶、2なら小吉、それ以外は「中吉」といった具合に、くじの結果を表示するプログラムを作ります。

くじは、3
もしくじが0なら
   「大吉」と表示する
他でもしくじが1なら
   「凶」と表示する
他でもしくじが2なら
   「小吉」と表示する
そうでなければ
   「中吉」と表示する
もし終わり

「くじ」の値を変えながら実行してみましょう。

ただ「くじ」の内容を手動で書き直して実行するのは、面白くありません。そこで具体的な数値を入れる代わりに『0から5までの乱数』と書き直してみましょう。「乱数」を使うと0から5までのサイコロを振ってその結果を「くじ」に代入してくれます。

くじは、0から5までの乱数

「乱数」を使うと、いちいち「くじ」の数字を書き直さなくても、実行する度に数値をランダムに決めてくれます。

条件式の書き方

もし文の《条件式》に書く条件式には、値が等しいかどうかだけでなく、大小比較などの条件も書けます。

単純な条件式

□と◇は、式(変数や数字、文字列、計算式など)を表します。

条件式の表記意味
□が◇
□=◇
□と◇が等しい
□≠◇□と◇が等しくない
□が◇より大きい
□>◇
□が◇より大きい
□が◇より小さい
□が◇未満
□<◇
□が◇より小さい
□が◇以上
□≧◇
□が◇以上
□が◇以下
□≦◇
□が◇以下

複雑な条件式

上記の単純な条件式を2つ組み合わせて、「かつ」や「または」と言った複数の条件を一度に判断することもできます。なお条件式は( )で囲んで書くこともできます。

条件式の表記意味
《条件式》でない《条件式》を満たさないとき
《条件式1》または《条件式2》
《条件式1》あるいは《条件式2》
《条件式1》か《条件式2》のどちらかが正しい
《条件式1》かつ《条件式2》《条件式1》と《条件式2》のどちらも正しい

例えば、複雑な条件式を使うと、2つの変数の値を一度に判別することもできます。

国語は、50
数学は、70
合格点は、60
もし国語が合格点以上かつ数学が合格点以上なら
	「合格です」と表示する
そうでなければ
	「不合格です」と表示する
もし終わり

『~でない』を使うと、条件を満たさないときにだけという意味になります。

英語は、50
合格点は、60
もし英語が合格点以上でなければ
	「追試です」と表示する
もし終わり

※『でないなら』を『でなければ』と書くこともできます。

サンプル: 時刻に合わせて挨拶を変える

今の時刻に合わせて挨拶してくれるプログラムを作ってみましょう。『今の時』と書くと、PCの時計の時刻から「時」の部分を調べてくれます。「時針」変数に、今の時刻の時(0~23)の数値が入っているので、もし文を使って「時針」変数の値に応じて時刻を判断して挨拶を変えることができます。

時針は、今の時
もし時針が11未満なら
	「おはようございます」と表示する
他でもし時針が17未満なら
	「こんにちは」と表示する
そうでなければ
	「こんばんは」と表示する
もし終わり

(補足) 分岐文

プロデルには、「もし文」に似た機能を持つ文として「分岐文」があります。分岐文を使うと、ひとつの変数について処理を分けるプログラムを簡潔に書けます。

おみくじゲームを分岐文を使って書き直した例文を紹介します。

くじは、0から5までの乱数
くじについて分岐
0の場合
   「大吉」と表示する
1の場合
   「凶」と表示する
2の場合
   「小吉」と表示する
他の場合
   「中吉」と表示する
分岐終わり

練習問題!

前回のボディマス指数(BMI)の計算プログラムで、計算したBMIに応じて「痩せ型」「普通」「肥満」のどれかを判定するプログラムを作ってみましょう。BMIの判定は次の表の通りに作ってみましょう。

BMI値判定
18.5未満痩せ型
18.5〜25未満普通
25以上肥満

まとめ

「もし文」を使うことで、変数の値を判定して実行する事を変える方法を紹介しました。条件判断は、プログラミングでよく使う機能ですので、書き方が分からなくなったときは、この記事を思い出して下さい。

次回もお楽しみに。

※当ブログの記事の著作権はゆうとにあります。プロデルに関係が無い目的で、文章や図表,プログラムを複製したり改変して掲載することを堅く禁止します

  • いいね (122)
  • 続編を読みたい (54)

コメントを残す