条件分岐
条件分岐とは、プログラムの実行経路を変えるための方法です。条件分岐を使用することで、プログラムは、特定の条件を満たしている場合には、特定の処理を行い、そうでない場合には、別の処理を行うことができます。
条件分岐は、次のような場面でよく使用されます。
- 数値が特定の範囲内かどうかを判定する場合
- 文字列が特定の値を含んでいるかどうかを判定する場合
- 数値が偶数か奇数かを判定する場合
- 配列の要素が特定の値を含んでいるかどうかを判定する場合
条件分岐の種類
条件分岐には、次のような種類があります。
- if文:条件式が真の場合に処理を実行する条件分岐です。
- if-else文:条件式が真の場合に1つの処理を実行し、偽の場合に別の処理を実行する条件分岐です。
- if-elseif-else文:複数の条件を指定し、それらの条件に応じて処理を分岐する条件分岐です。
- if式:論理式が成立したブロックの最後の値を、式の値とします。
- 三項演算子:条件 a が真(true)なら b を、偽なら c を値とする処理です。
- switch/case文:複数の値を指定し、それらの値に応じて処理を分岐する条件分岐です。(※juliaにはありません)
if文
juliaでは、if文を使用して条件分岐を行います。次のような形式で使用します。
if 条件式
# 条件式が真の場合の処理
else
# 条件式が偽の場合の処理
end
上記のように、if文の後には条件式を記述します。条件式が真の場合、if文の中に記述された処理が実行されます。条件式が偽の場合、else文の中に記述された処理が実行されます。
また、elseif文を使用することで、複数の条件を指定し、それらの条件に応じて処理を分岐することができます。次のような形式で使用します。
if 条件式1
# 条件式1が真の場合の処理
elseif 条件式2
# 条件式2が真の場合の処理
elseif 条件式3
# 条件式3が真の場合の処理
else
# 条件式1,2,3が偽の場合の処理
end
if文の使用例
# 条件式
cond = true
# if文
if cond
# 条件が真の場合の処理
println("This is the true branch.")
else
# 条件が偽の場合の処理
println("This is the false branch.")
end
このコードを実行すると、次のような出力が得られます。
This is the true branch.
このように、if文を使用することができます。ただし、Juliaでは、if文の条件式の結果が真であるか偽であるかを判定するために、明示的な比較演算子を使用する必要はありません。例えば、上記のコードでは、cond変数が真であるかどうかを判定するために、cond == trueといった比較演算子を使用していません。その代わりに、単純にcond変数自体が真であるかどうかを判定しています。
if式
if式は、論理式が真の場合のブロックの最後の値を、式の値とするものです。
#数値代入
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では、三項演算子を次のような構文で使用します。
変数 = 条件式 ? 式1 : 式2
上記の構文では、変数に条件式が真の場合には、式1が代入されます。また、条件式が偽の場合には、式2が代入されます。たとえば、次のようなプログラムを考えます。
# 変数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> a = false ? print(1) : print(2)
2
julia> a
julia> typeof(a)
Nothing
以上では条件式で判断したあと、その条件式にあったほうの命令を実行しています。
つまり処理の分岐をしていることがわかります。
なお、aがnothingなのはprintの戻り値が無いためです。
juliaでは、三項演算子を使用することで、条件に応じて処理を分岐することができます。また、三項演算子を使用することで、コードを簡潔に書くことができます。