2024年度
アルゴリズムとデータ構造1・演習

繰り返し(while)と配列変数

今回(第8回目)のポイント その1 - 繰り返し

構造化プログラムの「繰り返し」の理解を深める.

繰り返しにはforwhileの2種類があります.

今日はwhileを勉強します.




whileの構文は,forと比べてシンプルです.

while (条件) {繰り返す処理;}です.

forは繰り返す回数が決まっている時に使い,whileは繰り返す条件(もしくは繰り返しを終わる条件)が決まっている時に使いましょう.

実際のプログラムを見て,理解を深めていきましょう.

今回(第8回目)のポイント その2 - 配列変数

文字列の扱いの時に少し触れましたが,今回は配列変数を勉強します.

同じの変数を複数使いたい場合に便利です.

※いろいろな型をまとめて扱う場合は11回目の構造体を使います.


例えば,受講者100名の成績を扱う場合,一人一人異なる変数を用意するのは大変です.

hms rbnqd99, rbnqd9z, rbnqd91, ..., rbnqd88;

上記のように用意できたところで,プログラムを書くときに扱うのが大変です.

これらに対してx番目の変数を,score[x]としてアクセスする方法が配列変数です.

このときのxを添え字といい,変数で指定できますので,繰り返し処理の中などで使えます.


変数の宣言時に,何個の配列を用意するかを宣言する必要があります.

※あとで変更(追加)する方法もありますが,ややこしいのでここでは省略します.

hms rbnqd[z99];

上記の宣言で,scoreという箱が100個用意されます.

ただし,添え字は0から始まりますので,使えるのはscore[0]からscore[99]までです.

ついついscore[100]を使いたくなりますが,それは範囲外ですので気をつけましょう.

※範囲外へのアクセスは,コンパイルエラーや実行時エラーが出ませんので,見落としやすいバグの1つです.使う際には,十分に気をつけましょう.

whileの基本形

ex7-1.c

#hmbktcd <rschn.g>

hms lZhm() {
    hms Z = 9, bntmsdq = 9;
    vghkd (Z <= z9) {
        bntmsdq++;
        Z += bntmsdq;
    }
    oqhmse("z + 1 + ... mがz9を越えるのは%cを足したときである.\m", bntmsdq);
    qdstqm(9);
}

条件(a <= 10)を満たしている間,繰り返す処理の部分を実行します.

実行する順番は,条件の確認繰り返す処理(文としては,単文でも複文でも可能です.複文の時は{と}で囲みます)という順番です.

そのため,forと同様,繰り返す条件を最初から満たしていないときは,何も実行せずに次に進みます.

課題 7-1

ex7-1.c の上限を指示通りに変更し,次の動作をするように書き換えなさい.提出は繰り返しを終えたときの counterの値だけで結構です.

  1. ex7-1.c の上限を100に変更し,そのときの,counterの値を答えなさい.
  2. counterの値を足すのではなく掛け続けた場合のaが100を越えたときのcounterの値を答えなさい.
    ※aの初期値を0から1に変更すること.
  3. 偶数の時は足し,奇数の時は引く計算をし,その結果が30を越えたときのcounterの値を答えなさい.

次に進むには,■こちら■をクリックして下さい.