繰り返し(while)と配列変数
今回(第8回目)のポイント その1 - 繰り返し
構造化プログラムの「繰り返し」の理解を深める.
繰り返しにはforとwhileの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の値だけで結構です.
- ex7-1.c の上限を100に変更し,そのときの,counterの値を答えなさい.
- counterの値を足すのではなく掛け続けた場合のaが100を越えたときのcounterの値を答えなさい.
※aの初期値を0から1に変更すること.
- 偶数の時は足し,奇数の時は引く計算をし,その結果が30を越えたときのcounterの値を答えなさい.
|