プログラミング言語の制御構造は、次の3通りから成り立っている。
- 順次
- これはプログラムの文を上から下へと実行する構造で、特にこれを表す命令はない。
- 選択
- 値により、実行する文が異なる構造である。C言語にはif文と
switch文がある。switch文はプログラムの構造が分か
り難くるので、if文を使うことが望ましい。
- 繰り返し
- 同じ文を繰り返す構造である。C言語には、for文とwhile文
do-while文がある。
if文には典型的な3つのパターンがある。if文中の制
御式は、0(ゼロ)の場合のみ偽であり、その他は全て真である。この真偽により、実行さ
れる文が3パターンあるのである。
制御式(条件)が真の場合には特定の文を実行するが、偽の場合には実行する文がない。
実行する文が一つの場合は。ifの制御式に引き続き書く。一方、複数の実行文があ
る場合は、中括弧{文}でくくりブロック化する。そうするとブロック化された部
分が上から下へと実行される。
制御式(条件)が真偽に応じて、実行する文が異なる。
制御式(条件)が多段階になっている。最初に真にマッチしたブロックを実行する。制
御式が真にならない場合は、elseのブロックを実行する。
式の値により、実行される文が決まる。
条件に従い同じ文を繰り返し実行する構造をループ(繰り返し)と呼ぶ。繰り返し回数が分かって
いる場合は、for文を使う。
ループの回数が予め分かっている場合に使う。実行順序は次の通りである。
- 初期値設定式が評価(実行)される。
- 継続条件式を評価し、それが真ならばブロック化された文が実行される。偽なら
ば、for文から抜ける。
- 再設定式が実行される。
- 継続条件式が偽になるまで、
2
3
2
3
2
3
2
が繰り返される。
for文を用いた1〜100までの和を用いたプログラムをリスト1に示
す。
- 2行
- 変数宣言。iは加算する数、sumは合計を格納する変数。
- 6行
- 合計値の初期化。最初、合計はゼロである。
- 8-10行
- 中括弧{}のブロック内をi=1〜100まで変えて100回計算する。
- 9行
- sum=sum+iと同じ
以下の練習問題を実施せよ。
- [練習1]
- 次の動作をするプログラムを作成せよ。最後のの値はどの
ような値になるか?
- 実数の初期値をそれぞれ、1.0と2.0とする。
- 実数を
とする。
- もし、が2より小さければ、の値をに代入す
る。反対に2よりも大きければ、の値をに代入
する。
- 操作2〜3を100回繰り返す。
- [練習2]
- 以下の級数展開式を用いてネピア数(
)を計算せ
よ。少し難しいので、余裕のある者のみ実施せよ。
繰り返し回数が予め分かっていない場合は、do while文かwhile文を用いる。それぞれ
の違いは、以下の通りである。
- do-while文は、ループ出口で継続条件の判断を行う。
- while文は、ループ入り口で継続条件の判断を行う。
入口で継続条件を判断するため、最初から偽の場合、ループは一度も回らない。ループ
を抜け出すためには、ループの文中に継続条件に使う値を変更するか、break文を使う。
図 7:
while文による繰り返し(ループ)構造
|
- [練習1]
- while文を使って、1〜100まで加算するプログラムを
作成せよ。
出口で継続条件を判断するため、必ず1回はループが回る。ループを抜け出すために
は、ループの文中に継続条件に使う値を変更するか、break文を使う。
図 8:
do-while文による繰り返し(ループ)構造
|
- [練習1]
- do-while文を使って、1〜100まで加算するプログラムを
作成せよ。
ループから強制的に脱出するために、break文がある。単独で使われることは希で、以下
のようにif文と共に使われる。break文を用いると、for文やdo while文、while文のルー
プから抜け出せる。
ループ中の繰り返しを1回強制的にスキップするために使われる。これも単独で使われる
ことは希で、以下のようにif文と共に使う。
図 10:
continue文による繰り返し(ループ)構造
|
強制的にプログラムの制御を移す。goto文が示すラベルに実行が移る。if文と共
に用いられることも多いが、単独で用いられることもある。
ただし、goto文はプログラムの流れがわかりにくくなりますので、使わないほうが良いと
されている。行儀の良いプログラムを書くためにはgoto文は使わないことになって
いる。ただし、初心者が書くような短いプログラムであれば使っても良いでろう。簡単だ
し、行儀が悪くてもプログラムを書くことになれる方が重要である。上達したら、
goto文を書かないようにすればよい。
ラベル名の後ろには、セミコロンではなく文の前に書いてコロンをつける。
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成17年6月6日