PRIMG0001
 毎週金曜日、プログラミングのちょっとした講座を記しています。
 ここでは、小学校から「プログラミング」が必須項目になってしまったため、お父さん・お母さん・おじいちゃん・おねえちゃんが子供に「プログラミング」教えることができるように、ここでこっそりと勉強してしまおうという企画です。
 今週は「条件」について勉強していきましょう。
前回はド定番である「Hallo word」を表示させてみました。その応用として「Hallo word!」の次に「Hallo Japan!」を表示するところまで勉強しました。今回はこれをちょっと応用しながら「条件」について勉強していきます。

 まずは「条件分岐」です。条件分岐はある条件によって処理を分けるというものです。例えば、

 今日は弁当をもってきたか?
 もってきた場合はそのまま会社に行く
 持ってこない場合はコンビニによる

といったものです。このような条件分岐には「If」文という命令を使います。If分の使い方は
 If 条件 then 
 条件に当てはまる処理
 else
 条件に当てはまらない処理
 end if 
という使い方をします。If文で条件を指定した場合は必ず全体の処理の終わりに「end if」を入れます。つまり、Ifとend ifはひとつのセットになります。

 それでは、前回の「Hallo word!」、「Hallo Japan!」のプログラムを使って応用していきましょう。
 前回の「Hallo word!」、「Hallo Japan!」の表示プログラムです。
Sub 表示1()
 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01

 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

End Sub
 このプログラムに「hensu01」という変数を使って、この「hensu01」が2の場合だけ「Hallo word!」、それ以外の場合は「Hallo japan!」を表示させるプログラムに変えてみましょう。
 まずは上記のプログラムに「hensu01」という変数を使いますので、この「hensu01」の変数を定義しましょう。この「hensu01」は整数で良いので、
 

 dim hensu01 as integer
といった定義になります。これを上のプログラムに組み込みます。
Sub 表示1()
 dim hensu01 as integer

 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01

 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

End Sub

 次にこの「hensu01」に値を入れます。この値を最初は「1」としましょう。
 

 hensu01 = 1
 ここで間違わないでください。1 = hensu01 ではありません。前回も記した通り、右から左に値が入ります。これをプログラムに追加します。

Sub 表示1()
 dim hensu01 as integer
 hensu01 = 1

 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01

 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

End Sub

 それでは、この「hensu01」が2の場合だけ「Hallo word!」、それ以外の場合は「Hallo japan!」を表示させるには 「hensu01」が「2」になった場合のIf 文を作ります。Ifの条件のところは次のようになります。
 If hensu01 = 2

 ここでおやっ?と思った人もいるでしょう。先ほど「=」の使い方で値の代入の場合、右から左なのに、逆じゃない?とおもうかもしれませんが、条件の場合、「=」の右側が固定の値となります。つまり、左の値が右になっているかといった使い方になります。ちょっと混乱しそうですが、値の代入は右から左、比べるときは左から右に戻してみるといった風に覚えてください。この条件に当てはまる場合は

 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01
 
 の処理を行いますので、この処理の前に「then」を付けます。

それ以外は

 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

の処理を行いますので、この前に「else」を付けます。「then 」を「~ならば」、「else」を「~でないならば」と覚えると良いです。

そして条件全体の最後に「ここで条件が終わりだよ」という「end if」を付けます。これらをプログラムに組み込むと


Sub 表示1()
 dim hensu01 as integer
 hensu01 = 1

 If hensu01 = 2
 
 then
 dim moi01 as string
 moji01 = "Hallo word!"
 MsgBox moji01

 else
 dim moi02 as string
 moji02 = "Hallo japan!"
 MsgBox moji02

 end if
End Sub

 となります。ここでちょっとテクニックです。このようなIf文などを使用した場合、どこまではこのIf文の範囲か見やすくするために、If文の間はちょっと命令文字の頭のスペースを少し開け、後ろに下げます。そうすることによって見やすくなります。

Sub 表示1()
 dim hensu01 as integer
 hensu01 = 1

 If hensu01 = 2
 
  then
   dim moi01 as string
   moji01 = "Hallo word!"
   MsgBox moji01

  else
   dim moi02 as string
   moji02 = "Hallo japan!"
   MsgBox moji02

 end if
End Sub

 こうすると範囲が見やすくなりました。これで一回実行してみてください。hensu01が1の状態であるため、「Hallo japan!」が表示されます。

HALLOJPN


  次にhensu01の値の代入「hensu01 = 1」を「hensu01 = 2」に変更して実行してみてください。今度は「Hallo word!」が表示されます。

HALLO01

If文の中にIf文を組み込むことができます。

   dim moi03 as string
   moji03 = "Hallo USA!"
   MsgBox moji03
というのを追加し、hensu01が3の場合「Hallo USA!」を表示させてみましょう。この場合、hensu01が2の場合ではなく、3の場合になりますので、else以降にまたIf文を挿入させます。したがって、下記のようになります。


Sub 表示1()
 dim hensu01 as integer
 hensu01 = 1

 If hensu01 = 2
 
  then
   dim moi01 as string
   moji01 = "Hallo word!"
   MsgBox moji01

  else

   If hensu01 = 3 

 then
            dim moi03 as string
    moji03 = "Hallo USA!"
    MsgBox moji03

   else
    dim moi02 as string
    moji02 = "Hallo japan!"
    MsgBox moji02
   end if

 end if
End Sub
 となります。

 上記のように条件がいくつも出てくると、If文で条件を分けるにはちょっと難しくなり、混乱してきます。そこで、複数の条件はある場合は「Select 変数 Case 条件 End Select」を使います。

  使い方は
Select 変数
Case 条件1
 条件1に当てはまった場合の処理
Case 条件2
 条件2に当てはまった場合の処理
・・・
Case Else
 どの条件にも当てはまらなかった場合の処理
End Select

 となります。これを使うことですっきりと見やすくなります。先ほどの
Sub 表示1()
 dim hensu01 as integer
 hensu01 = 1

 If hensu01 = 2
 
  then
   dim moi01 as string
   moji01 = "Hallo word!"
   MsgBox moji01

  else

   If hensu01 = 3 

 then
            dim moi03 as string
    moji03 = "Hallo USA!"
    MsgBox moji03

   else
    dim moi02 as string
    moji02 = "Hallo japan!"
    MsgBox moji02
   end if

 end if
End Sub

を「Select」を使ってすっきりさせると、

Sub 表示1()
 dim hensu01 as integer
 hensu01 = 1

 Select hensu01

 Case 2
  dim moi01 as string
  moji01 = "Hallo word!"
  MsgBox moji01

 Case 3
       dim moi03 as string
  moji03 = "Hallo USA!"
  MsgBox moji03

 Case else 
    dim moi02 as string
  moji02 = "Hallo japan!"
  MsgBox moji02
 End select

End Sub

 となります。すっきりしました。ちょっとここまでで、ややこしくなったと思いますので、今回は終わりにしましょう。来週は「処理の移動」と「繰り返し処理」を説明します。また来週