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;
}
Let us see the results displayed
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
Those are enough animals for now.
This is the first line of the code.
This is the second line of the code.
This is the third line of the code.
This is another line of the mess.
This is the last line of this mess. |
|