잔의 구조
Zahn's construct컴퓨터 과학에서 Zahn의 구조는 컴퓨터 프로그래밍 언어의 구조화된 제어 흐름을 위한 구조로서 1974년 [1]Charles T. Zahn에 의해 처음 기술되었다.구조는 주로 루프가 종료될 수 있는 여러 수단을 인식하기 위한 루프 구조로의 확장이라는 관점에서 설명됩니다.예를 들어 검색 루프는 대상이 발견될 때 조기에 종료되거나 검색이 성공적으로 완료된 후 종료될 수 있습니다.잔의 구조를 사용하여GO TO어떤 케이스가 발생했는지를 판별할 때의 스테이트먼트.Zahn은 루프에 이은 CASE와 유사한 구조에 상황 표시기라는 새로운 변수를 도입함으로써 이를 실현합니다.
Donald Knuth는 "Structured Programming with Go To Statements"[2]라는 논문에서 Zahn의 구조 중 두 가지 형태를 다음과 같이 설명합니다.
</FONT CHANGE 1> 또는 ...까지 루프합니다.또는 <statement n>: <statement list 0>을 반복합니다.그 후 <statement 1> => <statement list 1>;<timeout n> => <스테이트먼트리스트 n>; fi
또, 다음과 같이 합니다.
</FONT CHANGE 1>까지 또는 ...까지 개시합니다.또는 <statement n>: <statement list 0>; 종료, <statement 1> => <statement list 1>;<timeout n> => <스테이트먼트리스트 n>; fi
또한 특정 상황 표시기를 설정하고 구성 본문을 종료하기 위한 문구가 있어야 합니다.
다음 간단한 예에서는 2차원 테이블에서 특정 항목을 검색하는 방법을 보여 줍니다.
찾거나 누락된 경우 종료합니다. I : = 1 ~ N의 경우 J : = 1 ~ M의 경우 표 [I,J] = 표적을 찾은 후 누락됨; 종료: 인쇄("항목은 표 안에 있음"); 누락: 인쇄("항목은 표 안에 없음"); 종료; 예외 처리를 위해 현대 프로그래밍 언어에서 사용되는 트라이캐치 블록은 Zahn의 구조를 변형한 것입니다.주요 차이점은 Zahn의 제안 범위가 프로그램 내의 개별 루프로 제한되는 반면 예외 처리 기능은 종종 콜 스택 내의 깊은 곳에서 예외를 "스루우"하고 스택 상부에서 "캐치"할 수 있다는 것입니다.