情報科学概論(再履修)
2004.12.17
電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し,
出席申告してください.なお,キーワードは授業中に紹介します.
提出形式
無限ループ対策と最後の \n 忘れ対策を考え直したバージョンの
S@pphireをリリースしました.この機会にアップデートして下さい.方法は,最
初にやったダウンロードをもう一回やるだけです.アイコンダウンロードやパネ
ルへの登録は現在のままで大丈夫です.
前回試した for ループは仮変数に対してどこからどこまでくり返す
かを最初に決めた上で処理を行うものでしたが,必ずしもそのように条件がはっ
きりしている場合だけではありません.例えば,乱数を発生させてその数を足し
て行き,合計がある数まで達したら処理を終わるようなスクリプトでは何回くり
返すのかは分かりません.そこで,終了条件をより柔軟に設定できるループに
while ループがあります.
スクリプトを見てみましょう.
くり返し乱数を発生させて,発生した乱数の合計が100を越えると終わります.
乱数を使いますので,実行するたびに結果は変わります.大体20回から30回くら
いくり返して終了するはずです.
while ループでは for ループのように何回くり返すかを数
える機能 (カウンタ) はありませんので,回数や順番を必要とする場合に
はこのように自分で増やして行く必要があります.初期化は必ずループの
外側,ループの前で行わないとくり返すたびに初期化されてしまいます.
while ループの構文は,図1のように
なります.
図1 while ループの構文
「文字列処理」と呼ばれるような,文章 (テキスト) がある限り読み込むとか,
出力するといった処理で威力を発揮します.この処理については,後で時間があ
れば言及することにします.
while ループの醍醐味である不規則な増分の例を
次の例で試してみましょう.どのような処理を行うものかは,先ずはスクリプト
を眺めて考えて下さい.その後で実行して確認して下さい.
このスクリプトの動作に関しては,後程フローチャートと併せて説明するように
しますので,アナウンスに注意して下さい.
これまでに実習で行った for ループを while ループに変更
してみましょう.次の例で試してみて下さい.
授業の終わりに小テストを実施します.アナウンスに注意していて下さい.
宿題に関する案内が授業の終わりに紹介されます.注意にしたがって提出してく
ださい.
条件式が真の間繰り返しを行う形式の処理.
条件式が比較演算を含む際に,カウンタ変数を変化させることが多く利用される
が,その変化量.カウンタ変数を使わないで,不規則に変化させることも可能で,
その際には増分としてではなく,より自由な処理を行える.
宛先
justice@mag.shimane-u.ac.jp
件名
AttendR12-17_ruby_s0340**
本文
学生番号
氏名
キーワード
(改行)
(改行)
キーワードは授業中に紹介
注意
「件名」および「添付書類名」の**をそのままにしないで,必ず自分の学生番号
に修正して下さい.また,ABクラス別は指示にしたがって下さい.
sum = 0
i = 1
while sum < 100
num = rand(10)
sum += num
printf "回数:%2d, 乱数:%2d, 合計:%3d\n", i, num, sum
i += 1
end
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
目次ページに戻る