制御文

ライン公式アカウント
オンラインレッスンのお得なクーポン配信しています!
 
このチャプターの目次
プログラムの処理の流れを制御する命令文のことを制御文と言います。制御文は以下の3つの種類に分けることができます。
  • 順次
    • 上から順番に流れていく処理のこと。
  • 分岐
    • ある条件を満たした場合と満たさない場合で異なる処理をすること。
  • 繰り返し
    • 同じ処理を繰り返し実行すること。
これら3種類の制御文を組み合わせてプログラムを記述していきます。

分岐処理

  • if文
    • 「もし〇〇だったら××という処理をする」という命令文です。
  • switch文
    • 「いくつかの処理の中から1つを選んで実行する」命令文です。

if文

if文は、指定された条件が真である場合に、特定の処理を実行するために使用されます。
条件式は、trueまたはfalseの真偽値型の値を返します。条件式を満たす場合にはtrue、満たさない場合にはfalseとなります。
条件式がtrueの場合に実行する処理は、中括弧 内に記述されます。条件式が偽の場合、elseの中括弧 内の処理が実行されます。条件式を満たさなかった場合に特に実行する処理がなければ、省略することも可能です。
条件式は、比較演算子、論理演算子と組み合わせて記述します。
上記の条件式は、「変数aが0より大きい場合に処理を行う」if文です。
上記の条件式は、「変数aが0より大きくかつ10より小さい場合に処理を行う」if文です。
💡
ローカル変数について
からまでの間をブロックまたはスコープと言います。処理のまとまりをで括ります。
条件を満たした時に実行する処理は、ココから→、ココまで←だよ、ということを示しています。
このスコープ内で変数を宣言する場合には注意点があります。
  • 同じ名前の変数名を繰り返し宣言することはできません。
    • 上記は、の間で変数strを宣言しているプログラムです。strという変数を繰り返し宣言することはできません。
  • 宣言したスコープの中でのみ有効です。
    • if文のスコープの中で宣言した変数numは、if文の外では使用できません。
このの間で宣言した変数を、ローカル変数と呼びます。

else if文

if文は「もし〇〇だったら××という処理をする」という意味でした。else ifは、〇〇じゃなかった場合の条件を増やすことができます。
if文のブロックとelseのブロックの間に書きます。このような、より多くの分岐を行う処理を多分岐処理と言います。
この例では、変数の値に応じて成績を評価しています。まず、90以上の場合は「優秀です!!」と表示されます。次に、80以上90未満の場合は「良いです!」と表示されます。さらに、70以上80未満の場合は「普通です。」と表示されます。最後に、70未満の場合は「不合格です…」と表示されます。

switch文

switch文では、if文の多分岐処理と同じように値に応じて処理を分岐させることが可能です。
switchの後ろのの値が、caseのところのに一致する場合にはを、に一致する場合にはを実行します。句に制御が移り、その下の命令文が実行されます。いずれにも一致しなかった場合には、の下の命令文が実行されます。if文でいうところのと同じような役割になります。式には通常、変数が指定されることが多いです。
caseの値1、値2、またはdefaultの後の記号は、セミコロンではなくて、コロンになりますので注意してください。
このコードは、与えられたスコアに基づいてメッセージを表示するプログラムです。
  • 文による条件分岐
    • 文は、ある式の結果に基づいて複数のケースを比較し、該当するケースのブロックを実行します。このプログラムでは、与えられたスコアを10で割った商を評価式として使用しています。
  • 文によるケースの比較
    • 文は、評価式の結果と比較されます。評価式の結果がの値と一致する場合、そののブロックが実行されます。
  • 文による終了
    • のブロック内で処理を実行した後、文を実行すると文が終了します。これにより、他のブロックの実行を防ぎます。
これは、Main5クラスのif文のサンプルをswitch文に書き換えたプログラムです。

繰り返し処理

while文

指定された条件が満たされている間、特定の処理を繰り返し実行するために使用されます。while文の基本的な構文は以下の通りです。
条件式が真の場合には、ブロックの中の命令文が実行されます。条件式が偽になるまでループが継続されます。
条件式はif文と同じように比較演算子や論理演算子を使います。
このプログラムでは、変数を初期化して1から始め、while文を使用して5以下の範囲で繰り返し処理を行っています。ループの中では、現在のの値が表示され、が1ずつ増加します。ループはが5になるまで続きます。
出力結果は以下のようになります。
このように、while文を使用することで、指定された条件が真である限り繰り返し処理を行うことができます。

do〜while文

while文の補足です。while文に似た繰り返しの命令文でdo〜while文があります。
先頭にというキーワードがあり、条件式とは文末に来ています。条件式を満たしている間は処理を繰り返すという点は変わりませんが、先頭に条件式がないため、初回のループでは条件式が評価されません。そのため、条件式の結果に関係なく初回は必ず実行されます。これがwhile文との違いです。
変数の初期値を5に設定しました。最初のループでは条件式は関係ありませんので、3行目のが実行され、画面に5が出力されます。4行目でiがインクリメントされ6になります。5行目で条件式が評価され、満たさないのでdo〜while文が終了します。

for文

for文は特定の範囲の間処理を繰り返すという命令文です。
for文の後ろの括弧()の中が「;」(セミコロン)で区切られ3つの部分に分かれています。
  • 初期化処理
    • 主に変数の初期化などを行います。for文の初回に一度だけ実行される処理になります。
  • 条件式
    • 繰り返しを行う条件を記述します。
  • 後処理
    • 繰り返しの処理が実行された後に実行させたい処理を記述します。
初期化処理では変数に1を代入しています。条件式ではが5以下の間、後処理では変数をインクリメントしています。これはの値が1から5までの5回、処理を繰り返すことを意味します。
これは、Main7クラスのwhile文のサンプルをfor文に書き換えたプログラムです。
for文では、初期化処理と条件式、後処理を1行にまとめて書けるため、非常に簡潔に記述することができます。