> For the complete documentation index, see [llms.txt](https://kurohasu.gitbook.io/fsharpabout/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kurohasu.gitbook.io/fsharpabout/basic/if.md).

# 条件分岐

条件分岐には\
・条件式で判断するif文\
・定数の値で判断するmatch文\
の2種類があります

### if文

if文は「もし○○だったら...」というように条件式を見て判断します\
上から順に判断されていくので重要な条件から記述していくと良いかもしれません\
3の倍数の時はFizz!,5の倍数の時はBuzz!,15の倍数の時はFizzBuzz!!,それ以外は数字を表示するプログラムを例に見ていきましょう

```
構文: 
if 条件式1 then
    条件式1が成り立つときの処理...

elif 条件式2 then
    条件2が成り立つときの処理...

...
else
    全部当てはまらない時の処理...
    
if x%15=0 then
    printfn "FizzBuzz!!"
    
elif x%3=0 then
    printfn "Fizz!"
    
elif x%5=0 then
    printfn "Buzz!"
    
else
    printfn "%d" x 
```

### match文

match文は「式の結果が○○だったら...」というように値を見て判断します\
変数だけでなく識別子やレコードを使った分岐もできます\
アンダーバーを使用すると記述されていない全ての値とマッチします\
また、whenを追加することで条件を追加することが出来ます

```
構文:
match <式> with
    |状態1->
        状態1の処理...
...

    |_->
        全て当てはまらない時の処理...

*その他の場合
    |状態2|状態3->
        状態2or状態3の処理...
        
    |状態4&状態5->
        状態4and状態5の処理...

    |状態6 when 状態6に関する条件式->
        条件式が成り立つときの処理...
```

####

### 実装例

「FizzBuzz」というゲームを元にif文とmatch文を使った例を見てみましょう\
FizzBuzzは3の倍数の時は「Fizz」、５の倍数の時は「Buzz」3の倍数かつ5の倍数の時は「FizzBuzz」と言い、それ以外は数字を言うというものです（プログラミングの勉強をするとしばしば登場します）\
それではif文とmatch文を使って実装してみましょう

```fsharp
// if文を使って実装
let mutable count=1
for count=1 to 100 do    
    if count%15=0 then
        printfn "FizzBuzz!!\n"
    
    elif count%3=0 then
        printfn "Fizz!\n"
        
    elif count%5=0 then
        printfn "Buzz!\n"
        
    else
        printfn "%d\n" count
        
```

```fsharp
// match文を使って実装
let mutable count=1
for count=1 to 100 do
    match count with
        |n when n%15=0->        //countをnとして15で割り切れたら処理
            printfn "FizzBuzz!!\n"
        
        |n when n%3=0->
            printfn "Fizz!\n"

        |n when n%5=0->
            printfn "Buzz\n"

        |_->
            printfn "%d\n" count
        
```

3行目にfor\~と書いてあるのは1\~100までの数字を繰り返すためのループ制御です\
次ページではループについて紹介していきます<br>
