- 本日の作業内容
- 出席確認
電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し,
出席申告してください.なお,キーワードは授業中に紹介します.
提出形式
宛先 |
justice@mag.shimane-u.ac.jp |
件名 |
AttendA12-13_ruby_s0440**
AttendB12-13_ruby_s0440** |
(Aクラス) (Bクラス) |
本文 |
学生番号
氏名
キーワード
|
(改行) (改行)
キーワードは授業中に紹介 |
注意 |
「件名」および「添付書類名」の**をそのままにしないで,必ず自分の学生番号
に修正して下さい.また,ABクラス別は指示にしたがって下さい.
|
- インデント見本
最近複雑な処理が徐々に加わってきたために,インデント(字下げ)に対する注意
が散漫になってきているようです.もう一度きちんとした字下げを確認して下さ
い.次のスクリプトは見本です.
n = 10
count = 1
for i in 0..n-8
m = 1
l = 2
for j in 1..l
if j == 1
printf "%2d行目\n", count
else
count += 1
printf "%2d行目\n", count
end
end
for k in m..l
count += 1
printf "%2d行目\n", count
end
count += 1
end
printf "これでおしまい\n"
|
- while ループ
- 必要性
前回試した for ループは仮変数に対してどこからどこまでくり返す
かを最初に決めた上で処理を行うものでしたが,必ずしもそのように条件がはっ
きりしている場合だけではありません.例えば,乱数を発生させてその数を足し
て行き,合計がある数まで達したら処理を終わるようなスクリプトでは何回くり
返すのかは分かりません.そこで,終了条件をより柔軟に設定できるループに
while ループがあります.
スクリプトを見てみましょう.
sum = 0
i = 1
while sum < 100
num = rand(10)
sum += num
printf "回数:%2d, 乱数:%2d, 合計:%3d\n", i, num, sum
i += 1
end
|
くり返し乱数を発生させて,発生した乱数の合計が100を越えると終わります.
乱数を使いますので,実行するたびに結果は変わります.大体20回から30回くら
いくり返して終了するはずです.
while ループでは for ループのように何回くり返すかを数
える機能 (カウンタ) はありませんので,回数や順番を必要とする場合に
はこのように自分で増やして行く必要があります.初期化は必ずループの
外側,ループの前で行わないとくり返すたびに初期化されてしまいます.
- 構文
while ループの構文は,図1のように
なります.
図1 while ループの構文
ループは条件式が真である限りくり返されます.条件式が偽である間処理をくり
返すような until ループもあります.
- while ループの効用
「文字列処理」と呼ばれるような,文章 (テキスト) がある限り読み込むとか,
出力するといった処理で威力を発揮します.この処理については,後で時間があ
れば言及することにします.
- 応用
while ループの醍醐味である不規則な増分の例を
次の例で試してみましょう.どのような処理を行うものかは,先ずはスクリプト
を眺めて考えて下さい.その後で実行して確認して下さい.
num = rand(10000) + 1
printf "Cross sum of the number %d becomes ", num
sum = 0
while num > 0
sum += num % 10
num /= 10
end
printf "%d.\n", sum
|
このスクリプトの動作に関しては,後程フローチャートと併せて説明するように
しますので,アナウンスに注意して下さい.
- 演習
これまでに実習で行った for ループを while ループに変更
してみましょう.次の例で試してみて下さい.
次は,増分の自由度を活かした例を考えてみましょう.
- 小テスト
授業の終わりに小テストを実施します.アナウンスに注意していて下さい.
- 宿題
宿題に関する案内が授業の終わりに紹介されます.注意にしたがって提出してく
ださい.
- 本日の用語