본문 바로가기
카테고리 없음

프로그래밍 언어 레이블과 GOTO문 기본 사용법

by ※§◈‡◐♣ 2021. 7. 10.

많은 프로그래밍 언어에서는 GOTO 문장들의 종류 외에도 레이블(lable) 사용 방법에 따른 제반 문제들을 내포하고 있습니다. 레이블(lable)과 GOTO문의 기본 사용법은  편의상 다음과 감은 세 가지 범주로 구분할 수 있습니다.

 

 

레이블을 번역하는 동안 그 위치를 지적하는 태그(tag)로만 사용

가장 간결한 GOTO문의 사용 법으로 레이블은 단지 번역하는 동안에 기계어 코드에서 위치를 가리켜 주기 위하여 사용됩니다. 즉, 레이블을 번역하는 동안 적당한 기계어 주소에 해당될 뿐입니다. 이 사용법은 매우 간단하면서도 레이블과 GOTO문에 대한 시뮬레이션을 효율적으로 수행할 수 있는데, Function에서 전형적으로 사용합니다.

 

레이블을 실행 시간에 계산은 못하지만 제한된 자료 항목으로 간주

좀 더 복잡환 접근 방법으로서는 실행 시간 동안에 레이블을 읽거나 계산하지는 못하지만 레이블 변수, 레이블 배열 , 비지역  레이블 참조, 그리고 부프로그램에서 레이블  매개 변수 사용 등이 허용됩니다. Algol 언어는 이러한 중간 단계의 레이블을 사용하는 전형적인 언어입니다.

 

Algol 언어는 아래와 같은 두 가지 이유로 인하여 레이블을 적당한 기계어 주소로 직접 번역하지 못합니다.

  1. GOTO문이 비지역(nonlocal)
  2. GOTO문이 레이블형의 형식 매개 변수를 조회할 경우

이 두 경우에 있어서 되부름의 사용이 레이블을 단순하게 처리하지 못하도록 합니다. 그러므로 Algo 프로그램 실행 동안에는 레이블-GOTO 구조의 부분적 소프트웨어 시뮬레이션을 필연적으로 요구하게 됩니다.

 

레이블을 실행 시간 동안의 제한이 없는 자료 항목으로 간주

레이블-GOTO 구조의 가장 일반적인 접근 방법은 레이블을 단순 자료로 간주하여서 실행 시간에 필요한 경우 레이블을 읽거나 계산할 수 있도록 허용하는 것입니다.

 

예를 들면 다음과 같이 사용합니다.

  • 먼저 READ문을 사용한 후 GOTO문을 사용합니다

이러한 일반성을 허용하면 실행 시간 동안 레이블을 접근할 때마다 실행 프로그램에서 그 레이블의 위치를 결정할 수 있어야 합니다. 그러므로, 프로그램이, 실행되는 동안 레이블의 이름과 코드 위치 레이블이 필요합니다. Snobol 4와 APL 언어가 이 기법을 채택한 전형적인 예입니다.

 

따라서, 대부분 프로그래밍 언어에서는 레이블(lable) 문장을 사용하여 프로그램의 어느 한 지점에서 레이블 문장으로 제어를 보내어 실행 순서를  바꾸는 것을 허용합니다. 이러한 제어 전이 문으로서 어느 표기법이 사용될지라도 실제로는 GOTO문의 사용과 동일한 의미를 갖습니다. 그러므로 실행 중에 어디에서나 레이블  문장으로 순서를 직접 제어할 수 있는 모든 표기를 대표하는 이름으로서 GOTO를 사용하기로 합니다.

 

댓글