目次に戻る  前のページへ  次のページへ


くり返しの別の方法 --while ループ--

  1. 開始終了条件が変動するような場合

    先ほど試した 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回くら いくり返して終了するはずです.ここで,使用したスクリプトについて少し説明 します.

    • rand(10)

      乱数 (Random number) を発生させるメソッドです.カッコの中の10という引数 (ひきすう)により,0から9までの整数をランダムに発生させます.

    • %2d

      printf 文の中で整数値を表す仮引数 %d ですが,このよう に数字を加えると,表示する桁数を指定できます.表示は右揃えになるの で,左に揃えるためには %-2d のように桁数の前にハイフンをつ けます.

    • i += 1

      while ループでは for ループのように何回くり返すかを数 える機能 (カウンタ) はありませんので,回数や順番を必要とする場合に はこのように自分で増やして行く必要があります.初期化は必ずループの 外側,ループの前で行わないとくり返すたびに初期化されてしまいます.

  2. 構文

    while ループの構文は,図1のように なります.

    図1 while ループの構文

    ループは条件式が真である限りくり返されます.条件式が偽である間処理をくり 返すような until ループもありますが,今日のところは扱わないこと にします.

  3. while ループの効用

    「文字列処理」と呼ばれるような,文章 (テキスト) がある限り読み込むとか, 出力すると行った処理で威力を発揮します.この処理については,後で時間があ れば言及することにします.


 目次に戻る  前のページへ  次のページへ