[Fortran 포트란 90/95] #007. 조건분기 IF
COM2011. 1. 1. 16:59 |조건 분기문 IF 의 구문은 다음과 같다.
라인 넘버링에 의한 레이블링 이외에, 포트란의 IF 문 또는 ELSE IF 문은 또다른 레이블링을 지원하는데, 이것은 특히, 네스티드(nested) IF 문의 경우에 어떤 ELSE IF 가 누구꺼인지, 어떤 END IF 가 어떤 IF 랑 대응되는지등을 표시할때 유용하다. 물론, 보통의 경우 인덴테이션으로도 충분하지만, 대형 프로그램의 경우 그렇지 않은경우도 있다.
IF (logical expression) THEN
statements
END IF
IF 와 END IF 사이의 블락은 logical expression 의 논리값이 참일 경우에만 실행된다.
IF 문에 의해서 실행되는 문장이, 하나밖에 없을때에는, THEN 과 END IF 를 생략하고, 같은줄에 다음과 같은 형식으로 쓸 수 있다.
IF (logical expression) statement
END IF 로 블락을 묶어서 쓰는 IF 를 block-IF, 한줄IF 를 logical-IF 라고 부르기도 한다.
IF 를 사용한 다중분기는 ELSE 와 ELSE IF 를 이용한다.
구문은 다음과 같다.
IF (logical expr1) THEN
statements
ELSE IF (logical expr2) THEN
statements
ELSE IF ...
...
ELSE
statements
END IF
라인 넘버링에 의한 레이블링 이외에, 포트란의 IF 문 또는 ELSE IF 문은 또다른 레이블링을 지원하는데, 이것은 특히, 네스티드(nested) IF 문의 경우에 어떤 ELSE IF 가 누구꺼인지, 어떤 END IF 가 어떤 IF 랑 대응되는지등을 표시할때 유용하다. 물론, 보통의 경우 인덴테이션으로도 충분하지만, 대형 프로그램의 경우 그렇지 않은경우도 있다.
레이블링 구문은 다음과 같다.
name: IF ( ... ) THEN
...
ELSE IF ( ... ) THEN [name]
...
...
ELSE [name]
...
END IF name
IF 문에 네이밍을 하면, END IF 문에도 똑같은 네이밍을 해야된다. 어떠한 IF 랑 짝인지를 보려고 하는거니까...
[ ] 로 표시한 부분은 optional 이다. 동일한 레벨의 IF 블락에 대해서는 같은 이름이 사용되어야 한다.
nested 된 경우에는, 부모IF 와 자식IF 가 당연히 다른 이름이 사용되어야 한다.