회선번호

Line number

컴퓨팅에서 행 번호텍스트 파일 내의 특정 문자 시퀀스를 지정하기 위해 사용되는 방법입니다.행에 번호를 할당하는 가장 일반적인 방법은 각 에 고유 번호를 할당하는 것입니다.첫 번째 행은 1부터 시작하여 연속되는 각 행마다 1씩 증가합니다.

C 프로그래밍 언어에서 소스 코드 행의 행 번호는 그 [1]시점까지 읽거나 삽입된 행 문자 수보다 1개 큽니다.

프로그래머는 또한 Fortran, JOSS BASIC과 같은 오래된 프로그래밍 언어로 된 문에 라인 번호를 할당할 수 있습니다.Fortran에서는 모든 문장이 줄 번호를 필요로 하는 것은 아니며 줄 번호도 순서대로 나열될 필요가 없습니다.라인 번호의 목적은 분기 및 형식의 문장으로 참조하기 위한 것이었습니다.

JOSS와 BASIC은 모두 회선번호를 구문의 필수 요소로 만들었습니다.그 주된 이유는 당시 대부분의 운영체제인터랙티브한 텍스트 에디터가 없었기 때문입니다; 프로그래머의 인터페이스는 보통 라인 에디터로 제한되어 있었기 때문에, 라인 번호는 소스 코드의 특정 라인을 편집하기 위해 참조할 수 있는 메커니즘을 제공했고, 프로그래머가 특정 위치에 새로운 라인을 삽입할 수 있었습니다.ic 포인트또한 회선번호는 프로그램에 입력할 코드와 사용자가 입력할 때 즉시 실행할 직접 모드 명령(회선번호가 없음)을 구분하는 편리한 수단을 제공했습니다.

현대의 운영체제에서는 인터랙티브한 텍스트 편집이 널리 보급되어 있기 때문에, 현대의 Fortran이나 [2]Basic 등 대부분의 프로그래밍 언어에서는 행 번호가 기능하지 않습니다.

역사

포트란

Fortran에서는 1956년에 처음 지정된 바와 같이 라인 번호가 입력/출력 패턴을 정의하고 반복할 문을 지정하며 조건부 분기를 위해 사용되었습니다.예를 [3]들어 다음과 같습니다.

   치수알파(25), RHO(25) 1) 포맷(5F12.4) 2) 읽어주세요1, 알파, RHO, ARG     = 0.0    하다3 I=1, 25    한다면 (ARG-알파(I)) 4,3,3 3)  =  + 알파(I) 4) 가치 = 3.14159*RHO(I-1)    인쇄하다1, ARG, , 가치    가세요 로. 2 

이전의 어셈블러 언어와 마찬가지로 Fortran은 모든 회선에 라벨(이 경우 회선 번호)이 필요하다고 가정하지 않았습니다.다른 곳에서 참조되는 문에만 행 번호가 필요합니다.

  • 행 1은 입력 형식 패턴을 지정합니다.READ2행 이후의 명령어PRINT명령어 모두 이 행을 참조합니다.
  • DOloop은 행 3을 실행합니다.
  • 산술 IF 문은 음수 값에서는 4행, 0에서는 3행, 양수 값에서는 3행으로 분기합니다.

이 예에서는 회선 번호가 순차적이지만, 최초로 공개된 "완전하지만 단순한 [Fortran] 프로그램"에서는 회선 번호가 시퀀스 1, 5, 30, 10, 20, [4]2에 있습니다.

라인 번호는 고정 소수점 변수에도 할당할 수 있다(예:ASSIGN i TO n) 이후 할당된 GO TO 스테이트먼트(예:GO TO n, (n1,n2,...nm)

코볼

COBOL 에서는, 펀치 카드의 최초의 6 문자(시퀀스 번호 영역)에 행 번호가 지정되었습니다.이것은 원래 수동 취급 후 의도된 프로그램 코드 시퀀스를 보장하기 위해 기계적 카드 정렬을 용이하게 하기 위해 사용되었습니다.회선번호는 컴파일러에 의해 실제로 무시되었습니다.

도프

1962년 DOP(Dartmouth Oversimplified Programming Experiment)는 모든 문장에 행 번호를 요구하고 행 번호의 순차 순서를 사용하는 최초의 프로그래밍 언어 중 하나가 되었습니다.C(Compare operation, 산술 IF)와 T(To operation, GO TO)의 2개의 명령의 수신처로 회선 번호가 지정되었습니다.

JOSS

1963년 JOSS는 독립적으로 프로그램의 모든 문장에 행 번호를 의무화하고 순서대로 줄을 정렬했습니다.JOSS는 인터랙티브 언어 및 프로그램 편집기로 작동하는 단일 명령줄 편집기의 아이디어를 도입했습니다.회선번호 없이 입력된 명령어는 JOSS에서 "다이렉트 모드"라고 부르는 방법으로 즉시 실행되었습니다.같은 행에 행 번호가 붙는 경우는, 대신에 JOSS가 「간접 모드」라고 부르는 프로그램 코드 격납 영역에 카피됩니다.

이전의 FORTRAN이나 그 이후의 BASIC과는 달리, JOSS는 회선 번호가 마침표로 구분된 두 자리 정수 쌍으로 구성된 고정 소수점 번호여야 했습니다(예: 1.1).마침표 왼쪽에 있는 라인 번호의 부분을 "페이지" 또는 "부품"이라고 하며 오른쪽에 있는 부분을 "라인"이라고 합니다. 예를 들어 라인 번호입니다.10.12페이지 10의 12행 참조.브랜치는 페이지 또는 페이지 내의 행을 대상으로 할 수 있습니다.이후 형식을 사용하면 페이지와 행이 결합된 것을 "단계"라고 합니다.

페이지는 서브루틴을 정의하는 데 사용됩니다.서브루틴은 다음 행이 다른 페이지에 있을 때 반환됩니다.예를 들어, 숫자의 제곱근을 계산하는 서브루틴이 3페이지에 있는 경우 코드 3.1, 3.2 및 3.3의 세 줄을 가질 수 있으며, 이를 사용하여 호출할 수 있습니다.Do part 3.코드가 다른 페이지의 다음 줄(예: 4.1)에 도달하면 실행 후 문장으로 돌아갑니다.에 상당할 필요는 없다.RETURN최종적으로는 조기 반환이 필요한 경우라도Done이 작업을 수행합니다.예제:

* 사용자에게 양의 값을 입력하도록 루틴하고 01.10 요구 X가 "0보다 큰 양의 값을 입력"으로 표시될 때까지 반복합니다. 01.20 X > 0.301.30 스텝 1.1까지 완료

기본의

1964년에 도입된 Dartmouth BASIC은 JOSS와 같이 필수 회선 번호를 채택했지만 FORTRAN과 같이 정수로 만들었습니다.초기 정의대로 BASIC은 회선 번호만을 사용했습니다.GOTO그리고.GOSUB(서브루틴으로 이동한 후 돌아갑니다).일부 Tiny BASIC 실장에서는 상수 대신 수치 표현을 지원했지만 switch 문은 다른 방언으로 표시되었습니다(ON GOTO;ON GOSUB;ON ERROR GOTO).

다른 곳에서는 회선 번호가 거의 사용되지 않았습니다.한 가지 예외는 다음과 같이 사용되는 포인터를 허용하는 것입니다.READ(반복)DATA스테이트먼트)를 사용하여 특정 행 번호로 설정한다.RESTORE.

  1 restore는 기본 문자열 어레이가 부족한 경우 사용할 수 있습니다.   2 DIM M$(9): 9자 길이의 정의   5 입력 "월 #?"; M: 한다면 M< >1 또는 M>12 그리고나서 5   7 복원 10*M: 읽어주세요 M$: 인쇄하다 M$  10 데이터. '1월'  20 데이터. "2월"  30 데이터. '3월'  ... 

다트머스 베이직 초판에서는THEN(암묵적인 GOTO의 경우) 행 번호만 사용할 수 있으며, 이후 구현에서는와 같이 문장으로 사용할 수 없습니다.

유효한 회선 번호의 범위는, 회선 번호에 상당하는 바이너리(1바이트 또는 2바이트, 서명 또는 부호 없음)의 격납에 사용되는 표현에 의해서, 실장 마다 크게 다릅니다.Dartmouth BASIC은 1~9999를 지원했지만, 일반적인 마이크로컴퓨터 구현은 1~32767(서명된 16비트 워드)을 지원했습니다.

초기 BASIC 구현에서의 유효한 회선 번호
범위 사투리
1~254 미노
1~255 작은 베이직 디자인 노트
2 ~ 255 덴버 타이니 베이직
0 ~ 999 UIUC 베이직
1 ~ 2045 DEC BASIC-8
0 ~ 32767 LLL 베이직, NIBL
1~32767 Apple I BASIC, Level I BASIC, Palo Alto Tiny BASIC
0 ~ 65529 GW-BASIC, IBM BASIC
1~65535 Altair 4K BASIC, MICRO BASIC 1.3, 6800 Tiny BASIC, Tiny BASIC 확장
1~99999 다트머스 바스IC
1~99999 셀바루
0 ~ 1*10^40-1 QBASIC 1)

1) QBASIC에서는 구조화된 프로그래밍을 사용하고 있기 때문에 회선번호가 필요 없지만, QBASIC에서는 회선번호로 코드를 실행할 수 있습니다.

라인 번호 및 스타일

이러한 언어에서 연속되는 행 번호 사이에 간격을 두는 것은 완전히 필요하지는 않더라도 프로그래밍 스타일의 문제였습니다. 즉, 프로그래머는 (1, 2, 3, ...)가 아닌 (10, 20, 30, ...) 시퀀스를 사용합니다.이것에 의해, 프로그래머는 나중에 코드 행을 삽입할 수 있게 되었습니다.예를 들어, 20 행과 30 행 사이에 코드 행이 누락되어 있는 경우, 프로그래머는 잊은 행을 25 행에 삽입할 수 있습니다.번호부여에 공백이 없는 경우 프로그래머는 라인2 뒤에 새로운 행을 삽입하기 위해 라인3과 그 이후의 모든 행에 번호를 다시 붙여야 합니다.물론 프로그래머가 9개 이상의 행을 추가로 삽입해야 할 경우, 스파서 번호를 매기더라도 번호를 다시 매겨야 합니다.단, 이 번호 변경은 추가된10 행당1 행의 번호 변경에 한정됩니다.프로그래머가 29 ~30 의 행을 추가할 필요가 있는 경우는, 30 행만 다시 번호를 붙이면 되고, 40 행은 변경하지 않아도 됩니다.

BASIC에 따라서는RENUM 명령어는 일반적으로 프로그램(또는 프로그램 중 지정된 부분)을 통과하여 동일한 증분 단위로 회선 번호를 재할당합니다.또, 이러한 회선 번호에 대한 모든 참조의 번호도 다시 매겨져, 정상적으로 동작합니다.

서브루틴을 포함하는 큰 프로그램에서 각 서브루틴은 보통 메인 프로그램(및 이전 서브루틴)의 확장을 위한 여지를 남길 정도로 충분히 큰 라인 번호에서 시작합니다.예를 들어 서브루틴은 회선 10000, 20000, 30000 등으로 시작하는 경우가 있습니다.

회선번호 및 GOTO

BASIC과 같은 "비구조화" 프로그래밍 언어에서는 분기문의 대상을 지정하기 위해 행 번호가 사용되었습니다.예를 들어 다음과 같습니다.

1 S=0: N=-1 2 입력 "추가할 숫자 또는 종료하려면 0 입력"; I 3 S=S+나: N=N+1: 한다면 I<< 고객명 >>님0 그리고나서 에 가다 2 4 인쇄하다 "SUM="; S: 인쇄하다 "평균="; S/N 

GOTO 스타일의 분기는 스파게티 코드의 개발로 이어질 수 있습니다.('유해, 구조화 프로그래밍' 참조).회선번호가 아직 필수인 BASIC의 일부 최신 버전에서도 for 루프나 while 루프 등의 보다 깔끔한 구조를 위해 회선번호 제어 GOTO의 사용은 가능한 한 단계적으로 폐지되었습니다.

많은 현대 언어(C 및 C++ 포함)에는 GOTO 문의 버전이 포함되어 있지만, 이러한 언어에서는 GOTO의 대상이 회선 번호가 아닌 회선 라벨로 지정됩니다.

행 번호 및 구문 오류

프로그래머가 프로그램에 구문 오류를 도입하면 컴파일러(또는 인터프리터)는 프로그래머에게 주어진 행 번호에서 컴파일(또는 실행) 시도가 실패했음을 알립니다.이것에 의해, 프로그래머가 에러를 찾는 작업이 큰폭으로 간소화됩니다.

라인 번호를 수동으로 지정할 필요는 없지만 오류 위치를 설명하는 라인 번호 사용은 최신 프로그래밍 도구에서 표준으로 유지됩니다.프로그램이 소스 파일의 새 을 카운트하고 자동으로 생성된 행 번호를 오류 위치로 표시하는 것은 간단한 문제입니다.Microsoft Visual Studio, Eclipse, Xcode IDE에서 컴파일러는 보통 텍스트 에디터에 통합되어 있기 때문에 오류를 더블클릭하면 해당 오류가 포함된 행으로 바로 이동할 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "6.10.4 Line control". 2008-01-30. Retrieved 2008-07-03.
  2. ^ "Differences Between GW-BASIC and QBasic". 2003-05-12. Retrieved 2008-06-28.
  3. ^ Programming Research Department, International Business Machines Corporation (April 8, 1957). The FORTRAN Automatic Coding System for the IBM 704 EDPM: Preliminary Operator's Manual (PDF). pp. 6–37.
  4. ^ 배커스, 존 워너. Beeber, R.J., 베스트, 셸던 F;골드버그, 리처드, 헤릭은 할랜드 L.;.휴스, R.A., 미첼, L.B, 넬슨, 로버트 A.,.Nutt, 로이, 세어, David;셰리든, 피터 B;.스턴, 해롤드, Ziller, 어빙은(1956-10-15).세어, 데이비드(교육.).그 포트란 자동 부호화 시스템은 IBM704년에 EDPM:프로그래머의 참조 매뉴얼(PDF).미국 뉴욕:응용 과학대 사단과 프로그래밍 연구부, 천공 카아드 회계 방식 공사 p. 46.그 2022-07-04에 원래에서Archived(PDF)..(2+51+1 페이지)2022-07-04 Retrieved