gotoの声明
cに未構造化のジャンプがなされるようにするgotoの声明がある。 gotoの声明を使用するためには、あなたが跳びたい記号名に先行している予約語のgotoを単に使用する。 名前はコロンに先行しているプログラムにそれからどこでも置かれる。 ループの素早く書き留めることは許されるが機能の内でほぼどこでも跳ぶことができるがループに飛び込むことは許されない。
この特定プログラムは実際に混乱であるが、ソフトウェア作家がgotoの声明の使用をなぜのできるだけ除去することを試みているかそれはよい例である。 gotoを使用することは適度のこのプログラムの唯一の場所はプログラムが1つのジャンプの3個の入り込まれたループの素早く書き留めるところに、ある。 この場合それは幾分きたない3個の入り込まれたループのそれぞれから変数およびジャンプを引き続いてセットアップするためにが、1つのgotoの声明は非常に簡潔な方法のすべての3から出す。
何人かの人の発言はあらゆる情況の下でgotoの声明決して使用されるべきでないがこれは偏狭な考えることである。 しかしgotoがはっきり他の構造物より端正な制御流れをする場所があれば、あなたのモニターのプログラムの残りにあるようにそれを使用する自由の感じ。 私達を例を見ることを許可しなさい:
#include <stdio.h>
int main()
{
int dog, cat, pig;
goto real_start;
some_where:
printf("This is another line of the mess.\n");
goto stop_it;
/* 次のセクションは使用可能なgotoの唯一のセクションである */
real_start:
for(dog = 1 ; dog < 6 ; dog = dog + 1)
{
for(cat = 1 ; cat < 6 ; cat = cat + 1)
{
for(pig = 1 ; pig < 4 ; pig = pig + 1)
{
printf("Dog = %d Cat = %d Pig = %d\n", dog, cat, pig);
if ((dog + cat + pig) > 8 ) goto enough;
}
}
}
enough: printf("Those are enough animals for now.\n");
/* これは使用可能なgotoの声明を用いるセクションの端である */
printf("\nThis is the first line of the code.\n");
goto there;
where:
printf("This is the third line of the code.\n");
goto some_where;
there:
printf("This is the second line of the code.\n");
goto where;
stop_it:
printf("This is the last line of this mess.\n");
return 0;
}
私達を表示される結果を見ることを許可しなさい
Dog = 1 Cat = 1 Pig = 1
Dog = 1 Cat = 1 Pig = 2
Dog = 1 Cat = 1 Pig = 3
Dog = 1 Cat = 2 Pig = 1
Dog = 1 Cat = 2 Pig = 2
Dog = 1 Cat = 2 Pig = 3
Dog = 1 Cat = 3 Pig = 1
Dog = 1 Cat = 3 Pig = 2
Dog = 1 Cat = 3 Pig = 3
Dog = 1 Cat = 4 Pig = 1
Dog = 1 Cat = 4 Pig = 2
Dog = 1 Cat = 4 Pig = 3
Dog = 1 Cat = 5 Pig = 1
Dog = 1 Cat = 5 Pig = 2
Dog = 1 Cat = 5 Pig = 3
それらは今のところ十分な動物である。
これはコードの最初のラインである。
これはコードの第2ラインである。
これはコードの第3ラインである。
これは混乱のもう一つのラインである。
これはこの混乱の最後のラインである。 |
|