Juliaで学ぶプログラミング入門 制御／条件分岐

# 条件分岐
条件分岐とは、プログラムの実行経路を変えるための方法です。条件分岐を使用することで、プログラムは、特定の条件を満たしている場合には、特定の処理を行い、そうでない場合には、別の処理を行うことができます。

条件分岐は、次のような場面でよく使用されます。

- 数値が特定の範囲内かどうかを判定する場合
- 文字列が特定の値を含んでいるかどうかを判定する場合
- 数値が偶数か奇数かを判定する場合
- 配列の要素が特定の値を含んでいるかどうかを判定する場合

## 条件分岐の種類
条件分岐には、次のような種類があります。

- if文：条件式が真の場合に処理を実行する条件分岐です。
- if-else文：条件式が真の場合に1つの処理を実行し、偽の場合に別の処理を実行する条件分岐です。
- if-elseif-else文：複数の条件を指定し、それらの条件に応じて処理を分岐する条件分岐です。
- if式：論理式が成立したブロックの最後の値を、式の値とします。
- 三項演算子：条件 a が真(true)なら b を、偽なら c を値とする処理です。
- switch/case文：複数の値を指定し、それらの値に応じて処理を分岐する条件分岐です。（※juliaにはありません）

## if文
juliaでは、if文を使用して条件分岐を行います。次のような形式で使用します。

```julia
if 条件式
    # 条件式が真の場合の処理
else
    # 条件式が偽の場合の処理
end

```
上記のように、if文の後には条件式を記述します。条件式が真の場合、if文の中に記述された処理が実行されます。条件式が偽の場合、else文の中に記述された処理が実行されます。

また、elseif文を使用することで、複数の条件を指定し、それらの条件に応じて処理を分岐することができます。次のような形式で使用します。
```julia
if 条件式1
    # 条件式1が真の場合の処理
elseif 条件式2
    # 条件式2が真の場合の処理
elseif 条件式3
    # 条件式3が真の場合の処理
else
    # 条件式1,2,3が偽の場合の処理
end
```

### if文の使用例

```julia
# 条件式
cond = true

# if文
if cond
    # 条件が真の場合の処理
    println("This is the true branch.")
else
    # 条件が偽の場合の処理
    println("This is the false branch.")
end

```
このコードを実行すると、次のような出力が得られます。
```julia
This is the true branch.

```

このように、if文を使用することができます。ただし、Juliaでは、if文の条件式の結果が真であるか偽であるかを判定するために、明示的な比較演算子を使用する必要はありません。例えば、上記のコードでは、cond変数が真であるかどうかを判定するために、cond == trueといった比較演算子を使用していません。その代わりに、単純にcond変数自体が真であるかどうかを判定しています。

### if式
if式は、論理式が真の場合のブロックの最後の値を、式の値とするものです。
```julia
#数値代入
x=400

#条件式
m=if x >= 1000
         "x は 1000 以上"
       elseif x >= 500
         "x は 500 以上"
       elseif x >= 100
         "x は 100 以上"
       else
         "x は 100 未満"
       end

# m="x は 100 以上"
```
### 三項演算子
三項演算子は、3つの式から構成される演算子です。
条件 a が真(true)なら b を、偽なら c を値とする処理です。
juliaでは、三項演算子を次のような構文で使用します。
```julia
変数 = 条件式 ? 式1 : 式2

```

上記の構文では、変数に条件式が真の場合には、式1が代入されます。また、条件式が偽の場合には、式2が代入されます。たとえば、次のようなプログラムを考えます。


```Julia
# 変数xの値を指定
x = 1

# 三項演算子を使用して、条件に応じて処理を分岐
result = x == 1 ? "xの値は1です" : "xの値は1ではありません"

# 結果を表示
println(result) #"xの値は1です"

```

上記のプログラムでは、変数xの値を指定しています。その後、三項演算子を使用して、xの値が1の場合と1ではない場合に応じて処理を分岐しています。この例では、xの値が1の場合には、「xの値は1です」という文字列が代入されます。また、xの値が1ではない場合には、「xの値は1ではありません」という文字列が代入されます。最後に、結果を表示しています。

ところでなぜ三項演算子は条件分岐なのでしょうか？

以下は式の代わりに出力を分岐している例です。

```julia
julia> a = false ? print(1) : print(2)
2
julia> a

julia> typeof(a)
Nothing

```
以上では条件式で判断したあと、その条件式にあったほうの命令を実行しています。
つまり処理の分岐をしていることがわかります。
なお、aがnothingなのはprintの戻り値が無いためです。

juliaでは、三項演算子を使用することで、条件に応じて処理を分岐することができます。また、三項演算子を使用することで、コードを簡潔に書くことができます。

## 参考図書
[１から始めるプログラミング](https://amzn.to/3HHR7Yv)
<a href="https://www.amazon.co.jp/1%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8B-Julia%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E9%80%B2%E8%97%A4-%E8%A3%95%E4%B9%8B/dp/433902905X?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-1&linkCode=li3&tag=buzz06-22&linkId=8f7deba521f52f812d35ecdbe756cc10&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=433902905X&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=433902905X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[Juliaプログラミングクックブック](https://amzn.to/3PFfb0a)
<a href="https://www.amazon.co.jp/Julia%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF-%E2%80%95%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%80%81%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%80%81%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97%E3%81%BE%E3%81%A7-Bogumi%C5%82-Kami%C5%84ski/dp/4873118891?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-2&linkCode=li3&tag=buzz06-22&linkId=4e34b4b620932164412ec18acff914a8&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873118891&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=4873118891" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[天才プログラマー タンメイが教える Julia超入門](https://amzn.to/3FJRpeW)
<a href="https://www.amazon.co.jp/%E5%A4%A9%E6%89%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC-%E3%82%BF%E3%83%B3%E3%83%A1%E3%82%A4%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B-Julia%E8%B6%85%E5%85%A5%E9%96%80-Tanmay-Bakshi/dp/4807920219?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-10&linkCode=li3&tag=buzz06-22&linkId=bf79aa67b5c5956c8fd26f9436401dc6&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4807920219&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=4807920219" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />