基本構文

条件分岐 if

条件分岐は if, elseif, else を利用して処理する。処理の終わりに end を入れる。

x = 21

if x % 2 == 0
    println("x is an even number.")
elseif x % 2 == 1 && x > 20
    println("x is an odd number.")
    println("x is greater than 20.")
else
    println("x is an odd number.")
    println("x is less than or equal 20.")
end
## x is an odd number.
## x is greater than 20.

ある要素が配列に含まれるかどうかを調べて、含まれば何らかの処理を行う例。

y = ["tRNA", "mRNA", "rRNA", "ncRNA"]

x = "DNA"
if x in y
    println("$x exists")
end

x = "mRNA"
if x in y
    println("$x exists")
end
## mRNA exists

ループ for

for ループを利用して、行列の各行または各列に対して処理を行う例。

x = [1 2 3 4; 5 6 7 8; 9 10 11 12]
## 3x4 Array{Int64,2}:
##  1   2   3   4
##  5   6   7   8
##  9  10  11  12

for i in 1:size(x, 1)
    println(sum(x[i, :]))
end
## 10
## 26
## 42

for j in 1:size(x, 2)
    println(mean(x[:, j]))
end
## 5.0
## 6.0
## 7.0
## 8.0

continuebreak の利用例。数値が 10 未満ならば処理を行わずに、20 を超えれば処理を終了させ、ループから抜ける。

for i in 1:50
    if i < 10
        continue
    elseif i > 20
        println("\nStopped !")
        break
    else
        print("*", "-")
    end
end
## *-*-*-*-*-*-*-*-*-*-*-
## Stopped !

ループ while

while 文は基本的に for と同じように使える。

for ループを利用して、行列の各行または各列に対して処理を行う例。

x = [1 2 3 4; 5 6 7 8; 9 10 11 12]
## 3x4 Array{Int64,2}:
##  1   2   3   4
##  5   6   7   8
##  9  10  11  12

i = 0
while i < size(x, 1)
    println(sum(x[i + 1, :]))
    i = i + 1
end
## 10
## 26
## 42

j = 0
while j < size(x, 2)
    println(mean(x[:, j + 1]))
    j = j + 1
end
## 5.0
## 6.0
## 7.0
## 8.0

continuebreak の利用例。数値が 10 未満ならば処理を行わずに、20 を超えれば処理を終了させ、ループから抜ける。while 文を使った例。

i = 0
while i < 50
    i = i + 1
    if i < 10
        continue
    elseif i > 20
        println("\nStopped !")
        break
    else
        print("*", "-")
    end
end
## *-*-*-*-*-*-*-*-*-*-*-
## Stopped !

例外処理 try

エラーが起こる可能性のあるデータを処理しているとき、もしエラーが起きても、それ以降の処理を中止させたくないときに利用する。

function f(x)
    println("function f -- begin")
    if x > 10
        error("ERROR: x is greater than 10!")
    else
        println(x)
    end
    println("function f -- end")
end

function g(x)
    println("function g -- begin")
    try
        f(x)
    catch e
        println("caught the error when run f(x): $e")
    end
    println("function g -- end")
end


g(5)
## function g -- begin
## function f -- begin
## 5
## function f -- end
## function g -- end

g(15)
## function g -- begin
## function f -- begin
## caught the error when run f(x): ErrorException("ERROR: x is greater than 10!")
## function g -- end

このように 5 を代入すると関数 fg も正常に実行される。しかし、15 を代入すると f は途中でエラーが起こり処理が中止されたのにもかかわらず、そのエラーは g に影響を与えていない。

References

  • Introducing Julia/Controlling the flow. WIKIBOOKS