前回は、プログラミングで必須の ”ループ処理” について解説しました。
今回取り上げる 条件文 もループ処理と並ぶ、プログラミングで必須の処理方法です。
ただ、未経験の人には難しいところもあり
- 急に難易度が上がった気がする!
- プログラミングを勉強したけど、条件文(if文)は自信が無いんです、、
という人も多いのではないかと思います。
しかしながら
”変数”、”ループ処理”、”条件文” が使えるようになると
プログラミングで出来る事の幅が大きく広がります!
ですので、お子さんには簡単なところからでも良いので、是非とも覚えていっていただきたいと思います。
そのためにこの記事では、押さえるべきポイントを明確にしながら、初心者の方でもお子さんに説明できるようになっていただけるように、分かり易く説明していきます。
- 条件文を理解して、さらにプログラミングについて理解を深めたい人
- 子供がプログラミング勉強してるので、条件文を説明してあげたい!という人
- 条件文はどういうものかとどういう時に使うのかを知ることができる
- 子供に、条件文について説明ができるようになる
最初から記事の内容を全て理解する必要はありません
まずは条件文ってどんな感じのもので、どういう時に使うのか
そのあたりが何となくわかればOKです。
if文ってどんなの?
if文とは、「もし○○の時は□□をする」というような
条件によってやることを変えるような処理のことを言います。
イメージしやすいように例を挙げると
例1:信号を渡る or 渡らない
例えば信号を渡る時もそのひとつです
信号を渡る時は、以下のような条件によって 渡る or 渡らない を変えていると言えます。
- 「もし青信号の時は渡る」
- 「もし赤信号の時は渡らない」
例2:天気によって傘をどうするか
例えば天気と傘の関係もそのひとつと言えます
天気によって、傘を持って行くかどうかを下記のように判断したりしていると思います。
(実際には色々なことが影響してもっと複雑な判断をしているはずですが、、)
- 「もし晴れの時は手ぶら(持って行かない)」
- 「もし曇りの時は傘を持って行く」
- 「もし雨の時は傘をさして行く」
”条件式” を理解しよう
if文を使う上で大事になってくるのが ”条件式” です。
”条件文” と ”条件式” って、字が良く似ててややこしいのですが
どっちが条件文で、どっちが条件式、というのは覚えなくても良いので
条件式の役割りだけを、何となく覚えておいてもらったらOKです。
条件式とは
条件式とは、数値や文字列を比較してある条件を「満たす or 満たさない」で判定する式のことです。
例えば下記のようなものです
- 気温が〇〇℃以上かどうか
- 信号の色が〇色であるかどうか
- 年齢が〇〇歳未満かどうか
先ほど説明しましたように、if文(条件文)は「もし○○の時は□□をする」というものでしたが
その中の ”もし〇〇の時” の部分で条件式が使われます。
”真” と ”偽”
条件式は、条件を満たすかどうかを判定した後
条件を満たす場合は「真(しん)」
条件を満たさない場合は「偽(ぎ)」
という2種類の判定結果を返してくれます。
if文(条件文)では、この真偽どちらの結果が返ってきたかによって、その後の処理を変えるということをやっている訳です。
条件式の種類
色々な条件(状態)を表現するために、条件式にはいくつかの種類があります。
プログラムを作る時は、状況によってこれら条件式を使い分けていくことになります。
ここでは良く使われる条件式を紹介します。
プログラミング言語によって使える条件式や表現方法が微妙に異なる場合もありますが
ここで挙げるものの考え方は、あらゆるプログラミング言語で共通したものになります。
等しい
2つの数値、2つの文字列 が等しい場合に 真 (True) を返す。
- 12 と 12 は等しい? ⇒ 真 (True)
- 10 と 11 は等しい? ⇒ 偽 (False)
- “りんご” と “りんご” は等しい? ⇒ 真 (True)
- “りんご” と “りんごあめ” は等しい? ⇒ 偽 (False)
等しくない
2つの数値、2つの文字列 が等しくない場合に 真 (True) を返す。
- 12 と 12 は等しくない? ⇒ 偽 (False)
- 10 と 11 は等しくない? ⇒ 真 (True)
- “りんご” と “りんご” は等しくない? ⇒ 偽 (False)
- “りんご” と “りんごあめ” は等しくない? ⇒ 真 (True)
より大きい(より小さい)
1つめの数値 が 2つめ数値 より大きい(小さい) 場合に 真 (True) を返す。
- 12 より 12 は大きい? ⇒ 偽 (False)
- 10 より 11 は大きい? ⇒ 真 (True)
- 10 より 18 は小さい? ⇒ 偽 (False)
- 11 より 9 は小さい? ⇒ 真 (True)
以上(以下)
1つめの数値 が 2つめ数値 以上(以下) の場合に 真 (True) を返す。
- 12 は 12 以上? ⇒ 真 (True)
- 10 は 11 以上? ⇒ 偽 (False)
- 10 は 18 以下? ⇒ 真 (True)
- 11 は 9 以下? ⇒ 偽 (False)
含む
文字列などに指定の要素が含まれる場合に 真 (True) を返す。
- “りんご” は “りんごあめ” に含まれる? ⇒ 真 (True)
- “みかん” は “オレンジジュース” に含まれる? ⇒ 偽 (False)
if文 を段階的に理解しよう
if文は、複数に条件分岐する場合などに少しプログラムがごちゃごちゃして、慣れない人には分かり難いので、初めての人でも分かり易いように段階的に説明していきます。
① 1分岐:条件を満たす時だけ処理をする
一番単純なものは
「ある条件を満たした時だけ処理をする」という場合です。
条件を満たさない場合は、なにもしないで次の処理に移ります。
Scratchの場合は、下記のブロックを使って表現します
② 2分岐:条件を満たす時は○○、それ以外は□□をする
次に、条件を満たさない場合の処理も加えたものです
「ある条件を満たした時は○○をして、満たさない時は□□をする」という場合です。
2つの分岐先のいずれかの処理が必ず実行されます。
Scratchの場合は、下記のブロックを使って表現します
③ 複数分岐:条件1を満たす時は○○、条件2を満たす時は□□、、、
それ以上の分岐をさせたい場合は、条件を複数用意します
「条件1を満たす時は○○をする、条件2を満たす時は□□をする、条件3を~、、」といった具合です。
Scratchの場合は、下図のようにブロックを2つ以上組み合わせて表現します。
下記は、3つに分岐する
「条件1を満たす時は○○をする、
条件2を満たす時は□□をする、
いずれの条件も満たさない時は△△をする」
という場合の例です。
※4分岐以上はさらにブロックを重ねていくことで表現可能です。
以上が if文(条件文)の基本的な形です。
複雑な分岐も基本的には、上記で説明した方法を駆使すれば実現可能です。
Scratchでif文を実際に使ってみよう
今回もScrach(スクラッチ)を使って、実際にif文(条件文)を体験してみたいと思います。
前回までで作成した「BMI計算プログラム(ループ有)」を使って説明していきます。
(ご覧になってない方は、先にこちら↓を見ていただくと理解しやすいです)
やりたいこと
前回まではBMIだけを表示していましたが
今回はBMIによって肥満度を判定できるように変更したいと思います。
日本肥満学会が定めている下表の基準を使用します。
本当は、上記基準では肥満には1度から4度までのレベルがありますが
今回はひとまとまりにしてプログラム作成をします。
Scratchでは、BMIを表示させた後に、判定した肥満度を表示させるようにしたいと思います。
まずはどのような条件分岐になるかを考える
先ほどの肥満度分類表を、条件式に当てはめて考えてみましょう。
そうすると下記のようになるかと思います。
- BMIが(0より大きく)18.5より小さい ➡ 低体重
- BMIが(18.5以上で)25より小さい ➡ 標準体重
- BMIが 25以上 ➡ 肥満(今回1~4度は統合)
BMIの値によって 3つに分岐させるプログラムを書けば良さそうですね。
プログラムに ”if文” を追加しよう
では実際にScratchでif文を追加していきましょう。
2分岐のブロックを2つ重ねる
今回は、3条件に分岐させたいので、Scratchでは 2分岐ブロックを2つ重ねて表現します。
2分岐(if…else)ブロックは下図赤枠のブロックになります。
まず、この2分岐ブロックを、中央(コードエリア)の空いているスペースで2つに重ねてください
つまり下図のような状態ですね。
BMIを変数に入れるように修正
現状は、BMIを計算と同時に表示をしていましたが
肥満度の計算にも使えるように、変数に入れるように修正します。
まずはその変数を作成します。
「変数を作る」ボタンから ”BMI” という名前の変数を作ってください。
(変数の作り方が分からない方は 第5回 の記事をご覧ください)
下図のように、 ブロックを「体重変数に代入しているブロックの下」に挿入します。
挿入した ブロックに、一番下の「表示ブロック」に入っている ブロックを移動して入れ込みます
この時、変数名に BMI を選択するのを忘れずに。
一番下の「表示ブロック」には、BMIの変数を入れておきます。
if文に ”条件式” を追加しよう
ではここで、先ほど説明した ”条件式” を使っていきます。
Scratchでの条件式は下図のあたりのブロックを使うのですが、今回のように数の大きさを比較したい時は枠で囲った3種類のブロックを使います。
もう一度、肥満度の判定はどのような条件だったのかを確認しておきましょう
- BMIが(0より大きく)18.5より小さい ➡ 低体重
- BMIが(18.5以上で)25より小さい ➡ 標準体重
- BMIが 25以上 ➡ 肥満(今回1~4度は統合)
この判定条件を、プログラミング用に分かり易く書き直すと下記のようになります。
これをもとに、条件式を作っていきましょう。
まず、 ブロックを下図のようにひとつ目の条件式にセットしましょう
ひとつめの条件式は「BMI < 18.5」なので下図のようになります。
ふたつめの条件式「BMI < 25」も同じように設定します(下図参照)
条件式分岐後の処理を設定する
3つの条件分岐先に、 ブロックをセットし
それぞれ、判定結果を言うように設定しましょう。(下図参照)
作った if文ブロック を組み込んで仕上げ用
下図のように、作成した if文ブロック一式 をメインのプログラムの一番最後に組み込みましょう。
完成したプログラムは下図のとおりです。
作ったプログラムの動作確認
では作ったプログラムを実際に動かして確認してみましょう。
右上の 🏴マークをクリックするとプログラムが実行されます。
「身長」と「体重」入力すると「BMI」を計算して
「BMI」の値によって 3つに分岐し 判定結果を表示してくれるはずです。
いかがでしょうか、かなりプログラミングらしくなった気がしませんか?
このように、if文(条件文)はプログラムの表現を広げることができる
非常によく使う、大事な処理なのでぜひ覚えましょう!
いきなり完成後のプログラムを見ると複雑でややこしく見えますが、ひとつずつ順を追って見ていくと理解しやすかったのではないでしょうか?
このように、分からなくなった時は、ひとつずつ順番に整理していくのもプログラミングをする時のコツのひとつです!
まとめ
今回はif文(条件文)について解説しました。
if文(条件文)が使えるようになると、プログラミングで出来る事の幅が一気に広がりますので
ぜひ覚えて、お子さんに説明してあげてください!
コメント