8日目 10日目

9日目

目標


課題 9

文法に関するあれこれ

複文

ここまでのプログラムでは forif の後ろは、実行されるべき文を 必ず '{' と '}' で括りブロックを形成していた。 C では、この '{' と '}' は必ずしも必要ではない。

実はfor文は、繰り返し処理を行う文を1つだけ取る。 同様に if文で、条件が成立した際に実行されるのも単一の文である。 ところが、実際に行いたい処理が単一文で書くことができるのは滅多にない。 そのような場合には、 '{' と '}' で文を括ることにより、それらの複数の文は 一つの文と同じように扱われる。 これを「複文(compound statement)」と呼ぶ。 単一の文であっても、'{' と '}' でくくって複文としても良いので、これまでは 必ず複文にしていたのである。

繰り返し処理

C で利用できる繰り返し処理の方法には、これまでに出てきた for文、 while文に加えて、do〜while文が存在する。

上記 3種の構造は次のような図で表すことができる。

           

条件分岐

C で利用できる条件分岐としては、今まで学習した if(-else)に加えて switch文がある。

問題 9

次の関数が何をするものかを調べ、この関数を使ったプログラムを作成せよ。 また、余裕があれば同じ機能を実現する他の方法を考えよ。

/* rot.c */
int rot(int *ch, int shift) 
{
	char tmp;
	
	if (*ch > 0x40 && *ch <= 0x5a) {
		tmp = *ch - 'A';
		tmp = tmp + shift;
		tmp = tmp % 26;
		*ch = 'A' + tmp;
		return 0;
	}

	if (*ch > 0x60 && *ch <= 0x7a) {
		tmp = *ch - 'a';
		tmp = tmp + shift;
		tmp = tmp % 26;
		*ch = 'a' + tmp;
		return 0;
	}
	return 1;
}

5日目の問題 47日目の問題 6に 対する解答プログラムができていることも確認すること。


8日目 表紙 10日目

tacha@tack.fukui-med.ac.jp
$Id$