- 本日の作業内容
- 出席確認
電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し,
出席申告してください.なお,キーワードは授業中に紹介します.
提出形式
宛先 |
justice@mag.shimane-u.ac.jp |
件名 |
AttendA11-15_ruby_s0440**
AttendB11-15_ruby_s0440** |
(Aクラス) (Bクラス) |
本文 |
学生番号
氏名
キーワード
|
(改行) (改行)
キーワードは授業中に紹介 |
注意 |
「件名」および「添付書類名」の**をそのままにしないで,必ず自分の学生番号
に修正して下さい.また,ABクラス別は指示にしたがって下さい.
|
- 複数の if 文の組合せ
前回紹介した
「自動販売機のお使い」
のように,複数の場合分けを実行する必要が
ある場合には,if 文を「入れ子」にして使うことも可能ですし,
elsif を使うことも可能です.それぞれ,end による
動作範囲指定に注意してスクリプトを作成する必要があります.構文を図1に示
します.
図1 if 文の入れ子(a)とelsif 構文(b)
先週のスクリプトを
次のように修正
してみましょう.
x = rand(20) - 10 #スクリプト実行のたびに値が変わる
if x > 0
str = "is positive"
elsif x < 0
str = "is negative"
else
str = "equals to zero"
end
printf "x %s.\n", str |
選択肢が3つになった場合分けが出来ます.
先週も説明しましたが,字下げ(インデント)は守るようにしてください.
さらに複雑な例を考えてみましょう.西暦年を
与えた場合にその年が閏年に該当するかどうかの判別を行う流れを図2に示しています.
今度はこれを考えてみてください.結果は一応用意していますが,まずは自分で
考えてみましょう.
図2 西暦から閏年を判定する流れ
実現例 (右クリックで出てくるメニューからダウン
ロード可能)
さらに,複雑な例としては,西暦から元号に直すこと
もかつての授業で試したことがあり
ます.参考にしてみてください.
- 複数の条件があるときの注意
数学で変数の範囲を決めるときに,
0 < x < 1
のような表現をしました.これは x が0より大きく,かつ,1より小さい,
と言う意味ですが,つい,x が0と1の間,と読みかえてしまいがちです.
その感覚が抜けないと,if 文でも間違いをすることが良くあります.
先ほどの x の範囲の例で行くと,次のように
ふたつに分けないと処理できません.
x = rand(10) - 20
if x > 0
if x < 1
str = "in"
else
str = "out of"
end
else
str = "out of"
end
printf "The number is %s the range.\n", str
|
これをついうっかり,次のように記述してしまうと,間違いです.(左側しか処理しません)
x = rand(10) - 20
if 0 < x < 1
str = "in"
else
str = "out of"
end
printf "The number is %s the range.\n", str
|
ただし,二つの条件をいちいち分けて
記述するのも面倒なので,論理和や論理積を求める「論理演算子」
というものも用意されています.上のスクリプ
トは,次のように書くこともできます.
x = rand(10) - 20
if x > 0 && x < 1
str = "in"
else
str = "out of"
end
printf "The number is %s the range.\n", str
|
&& の記号が「かつ」を意味します.「または」に相当するの
は,|| です.また,これらは,それぞれ and と or
をそのままスクリプト中に入れても可能ですが,他の言語と共通の記号な
ので,記号の方を覚えておきましょう.
大抵の言語において,これらの演算子は,左側だけで判定が可能な場合には右側
の判定を行いません.そのため,短絡演算子とも言われます.
- 小テスト
授業の終わりに小テストを実施します.アナウンスに注意していて下さい.
- 宿題
宿題に関する案内が授業の終わりに紹介されます.注意にしたがって提出してく
ださい.
- 本日の用語
- 入れ子
もともとは同じ形で少しずつ小さくなる入れ物が何重にも順に納まるようになっ
た入れ物.ここでは,数学のカッコのように [ { ( ) } ] 対になって
揃っているものが多重になっていることを示す.
- 論理和
演算子の両側のどちらが一方が真であれば真,両方が偽であれば偽となる演算操
作.
- 論理積
演算子の両側がともに真であるときに真,それ以外は偽となる演算操作.
- &&
論理積の演算子記号
- ||
論理和の演算子記号