if文| プログラミングの砂場

プログラミング学習やタイピング練習に役立つツールを公開しているサイトです。

if文

条件分岐には、if文がよく使われます。

if文のほかにもswitch文なども使われますが、ここでは基本的なif文を使って「条件分岐」を実現してみましょう。

目次

1. if文

「if文」には「if」「else if」「else」という3つのキーワードが登場します。

それぞれの使い方を見ていきましょう。

1-1. if

「if」は、あたえられた条件が真(true)のときに実行される「ブロック」を持ちます。

if( ブロック実行条件式 ) {
    ブロック実行条件式が真のときに実行されるブロック
}

次のプログラムを実行してみてください。

let x=1
if( x == 1 ) {
    print("xは1です")
}

結果は、「xは1です」と表示されますよね。

このif文の「ブロック実行条件式」は「x == 1」(xが1と等しい)となっています。

xには1が代入されているので、「ブロック実行条件式」は「真(true)」と評価されて、結果的にブロック内が実行されています。

ちなみに、xに1以外のものが代入されている場合は、「ブロック実行条件式」が「偽(false)」と評価されるので、ブロック内は実行されません。

では、「x」が「1」の場合と「2」の場合で表示を分けたい場合はどうするのでしょう?

それには、「else if」を使います。

1-2. else if

「else if」も、あたえられた条件が真(true)のときに実行される「ブロック」を持ちます。

「else if」は、それ単体で使う事はできません。

「else if」は、「if」とセットで使い、分岐条件を増やすことができます。

「else if」は、「if」ブロックが終わった位置に書きます。

そして、「else if」はつづけて、いくつでも書くことができます。

if( ブロック実行条件式1 ) {
    ブロック実行条件式1が真のときに実行されるブロック
}
else if( ブロック実行条件式2 ) {
    ブロック実行条件式1が偽で、ブロック実行条件式2が真のときに実行されるブロック
}
else if( ブロック実行条件式3 ) {
    ブロック実行条件式1と2が偽で、ブロック実行条件式3が真のときに実行されるブロック
}
.
.
.
.

「if-else if」を使ったプログラムの処理の流れは、

「ブロック実行条件式1」が「真」なら「ブロック実行条件式1のブロックを実行して終わり」、「偽」なら「ブロック実行条件式2」へ

「ブロック実行条件式2」が「真」なら「ブロック実行条件式2のブロックを実行して終わり」、「偽」なら「ブロック実行条件式3」へ

「ブロック実行条件式3」が「真」なら「ブロック実行条件式3のブロックを実行して終わり」、「偽」なら.....

といった感じで、上から順に「ブロック実行条件式」が評価され行き、「真」だったブロックのみが実行されて一連の「if-else if」文の処理が終わります。

要するに、ifも含め先に「真」となったブロックのみが実行されるということです。

次のプログラムを実行してみてください。

let x=2
if( x == 1 ) {
    print("xは1です")
}
else if( x == 2 ) {
    print("xは2です")
}
else if( x == 3 ) {
    print("xは3です")
}

結果は、「xは2です」と表示されます。

「x」の値を「3」に変えたらどうなりますか?

結果は、「xは3です」と表示されます。

では、「x」を「4」として実行するとどうですか?

結果は、なにも表示されません。

「x」は1でも2でも3でもないので、全ての条件が「偽」になるためprintが実行されずに、なにも表示されませんでした。

でも、「x」が「1~3」以外のときも何か表示させたい場合もありますよね?

そんなときは、「else」を使います。

1-3. else

「else」は、その前にある「ifやelse ifの条件全て」が「偽」のときに実行されるブロックです。
(どの条件にもあてはまらなかったときに実行されるブロック)

「else」も「else if」と同じく、それ単体で使う事はできません。

「else」は、「if」または「if-else if」とセットで使います。

「else」は、ifブロックが終わった位置に続けて書くか、else ifブロックが終わった位置に書きます。

「else」はいつでも、「if文」の最後に書くということです。

ifのみの場合

if( ブロック実行条件式 ) {
    ブロック実行条件式が真のときに実行されるブロック
}
else {
    ブロック実行条件式が偽のときに実行されるブロック
}

if-else ifの場合

if( ブロック実行条件式1 ) {
    ブロック実行条件式1が真のときに実行されるブロック
}
else if( ブロック実行条件式2 ) {
    ブロック実行条件式1が偽で、ブロック実行条件式2が真のときに実行されるブロック
}
else {
    どのブロック実行条件式も偽のときに実行されるブロック
}

下のプログラムを実行してみてください。

let x=1000
if( x == 1 ) {
    print("xは1です")
}
else if( x == 2 ) {
    print("xは2です")
}
else if( x == 3 ) {
    print("xは3です")
}
else {
    print("xは1でも2でも3でもないです")
}

結果は、「xは1でも2でも3でもないです」が表示されます。

「x」には「1000」が代入されていますね。

「x」の値はどの条件にもあてはまらないので、「else」ブロックが実行されることになります。

1-4. 入れ子のif文

また、「if文」は、入れ子(ネスト)にすることもできます。

入れ子(ネスト)にすることによって、もっと複雑な条件を作ることができます。

下は、「x」の値が、「1以上100以下」なら「xは1以上100以下です」を表示するというプログラムです。

let x=50
if( x >= 1 ) {
    if( x <= 100 ) {
        print("xは1以上100以下です")
    }
}

最初に「x」が「1以上」かが評価され「真」なら、そのブロック内に処理が移行して、「100以下」がが評価されます。

上の例は、別の書き方として、条件をつなぎ合わせて一つのifにまとめることもできます。

let x=50
if( x >= 1 && x <= 100 ) {
    print("xは1以上100以下です")
}

入れ子(ネスト)にして書くのがいいのか、つなぎ合わせて書くのがいいのかはケースバイケースです。

慣れないうちは、入れ子(ネスト)の方が理解しやすいかもしれません。

2. 試してみよう

下のプログラムを、「x」が「0」のときに「1以上ではない」と表示し、「x」が「1000」のときに「1以上だが100を超えています」と表示するように修正してみてください。

let x=50
if( x >= 1 ) {
    if( x <= 100 ) {
        print("xは1以上100以下です")
    }
}

2-1. 答え例

let x=50
if( x >= 1 ) {
    if( x <= 100 ) {
        print("xは1以上100以下です")
    }
    else {
        print("1以上だが100を超えています")
    }
}
else {
    print("1以上ではない")
}

3. まとめ

「if文」を使って条件分岐する処理を書きました。

「if」は、あたえられた条件が真(true)のときに実行される「ブロック」を持ちます。

「else if」も、あたえられた条件が真(true)のときに実行される「ブロック」を持ちます。

「else if」は、「if」とセットで使い、分岐条件を増やすことができます。

「else」は、その前にある「ifやelse ifの条件全て」が「偽」のときに実行されるブロックです。

「else」は、「if」または「if-else if」とセットで使います。

「if文」は、入れ子にすることができます。


次は、「繰り返し処理」についてです。


TOP