Juliaの比較演算子は、ほかの多くの言語とよく似ていますが、数学好きのための追加の選択肢もいくつか用意されています。
等しいかどうかを比べる演算子には、==(等しい)と、!=または≠(等しくない)があります。
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
さらに、大小を比べる演算子もいろいろあります。
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
Juliaではよくあることですが、適切なエディターを使えば数学記号を簡単に使えます。\ne、\le、\geと入力してからTABを押すと、≠、≤、≥になります。
先ほどの例では数値だけを使いましたが、シラバスのほかの部分では、ほかのさまざまな型にも順序の考え方があり、大小を比べられることを見ていきます。
比較演算子はつなげて書くこともでき、簡潔でわかりやすい構文になります。
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
先ほどの例は、1 ≤ n && n ≤ 5と同じ意味です。
ifで分岐するif文の完全な形は次のとおりです。
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
括弧(())や波括弧({})は必要ありません。インデントは「あくまで」読みやすくするためのものにすぎません_(とはいえ、読みやすさはとても大切です!)_。
elseifもelseも省略でき、elseifのブロックは複数書くこともできます。ただし、endは必ず必要です。
if文を入れ子にすることもできますが、括弧、インデント、コメントをうまく使って読みやすさを助けるとよいでしょう。
if文の最短の形は、次のようなものです。
if n < 0
n = 0
end
念のため言っておくと、条件として使えるのは、trueかfalseに評価される式だけです。Juliaは「truthiness」のような考え方を意図的に避けているので、ゼロの値、空の文字列、空の配列はfalseと_同じではありません_。
よくある単純な場面として、条件に応じて2つの値のどちらかを選びたいことがあります。
Juliaには、多くの言語と同じく、これをより簡潔に書くための三項演算子があります。
構文はconditional ? value_if_true : value_if_falseです。
つまり、先ほどの例は次のように書き換えられます。
n = n < 0 ? 0 : n
コンパイラーが括弧を必要とするわけではありませんが、あると読みやすくなることもあります。
この演習では、自動車工場の組み立てラインの生産を分析するコードを書きます。
組み立てラインの速度は、0(停止)から10(最大)まで設定できます。
最も低い速度(1)では、1時間あたり221台の車が生産されます。
生産量は速度に比例して増加します。
ですから、速度を4に設定すると、1時間あたり4 * 221 = 884台の車を生産することになります。
ただし、速度が上がるほど不良品が作られる可能性が高くなり、そうした車は廃棄しなければなりません。
取り組むタスクは3つあります。 必要な各関数は、整数の入力を1つ受け取ります。その入力は組み立てラインの速度です。
与えられた速度に対して、製品がエラーなく作られる確率を計算するsuccess_rate()メソッドを実装しましょう。
次の表は、速度が成功率にどう影響するかを示しています。
0: 成功率0%。1から4まで: 成功率100%。5から8まで: 成功率90%。9: 成功率80%。10: 成功率77%。julia> success_rate(10)
0.77
成功率を考慮に入れて、組み立てラインの1時間あたりの生産量を計算するproduction_rate_per_hour()メソッドを実装しましょう。
julia> production_rate_per_hour(6)
1193.4
戻り値は浮動小数点数であることに注意してください。
1分あたりに何台の正常な車が生産されるかを計算するworking_items_per_minute()メソッドを実装しましょう。
julia> working_items_per_minute(6)
19
戻り値は整数であることに注意してください。未完成の車は含まれません。