O 棟 529号室
テュールスト マーティン ヤコブ
http://www.sw.it.aoyama.ac.jp/2005/Programming%20Basics%20II/lecture10.html
© 2005 Martin J. Dürst 青山学院大学
質問: while (i < 6)
の代わりに while (i !=
6)
でもいいか。
答え: ミニテストの例の場合には結果的には同じが、次の点を考えると代えない方がいい:
for
から while
への変換とは関係ないイi++
の代わりに i+=2
)
とだめになる可能性がある。i < 6
では i
が減るとかではなくて増えることが分かって、プログラム全体が分かりやすくなる。gcd (int a, int b) { if (a == b) { return a; } else if (a > b) { return gcd (a-b, b); } else { return gcd (b, a); } }
関数が (直接もしくは間接に) 自分を呼ぶことを「再帰」という。
「自分を呼ぶ」より「他人で同じ仕事をしている者を呼ぶ」の方が分かりやすい。
配列を定義する場合には次のことを指定しないといけない:
例:
char string[80]
(80 文字の string
という文字の配列 (=文字列))double averages[20]
(20 個の浮動小数点数の
averages
という配列)function(int array[], int length);
と書く。定義も使い方も簡単:
int matrix[10][20]
int i, k; for (i=0; i<10; i++) { for (k=0; k<20; k++) { /* 一個毎の処理 */ } }
関数に渡すことは簡単にはできない。
fgets
使用)、その文字列の大文字を全部小文字にするプログラムを作って下さい(ヒント:
教科書 p. 156
参照)。大文字から小文字への変換を関数にして下さい。第 3 問のプログラムを来週 (12月19日月曜日) の授業前に提出して下さい。出力は提出しなくて結構。プログラムの印刷は等幅の書体 (Courrier 等) を使って下さい。字下げ、コメントなどを忘れないように。