다음: 겹분기문, 상위 문서: 명령문   [차례][찾아보기]


10.1 홑분기문

홑분기문 if는 옥타브의 의사 결정 명령문입니다. if문에는 세 가지 기본 형식이 있습니다. 가장 간단한 형식은 아래와 같습니다.

if (조건식)
  참_몸체
endif

조건식은 명령문의 나머지 부분을 실행할지 결정하는 표현식입니다. 조건식이 참일 때만 참_몸체를 실행합니다.

if 문에 있는 조건식의 값이 0이 아니면 참이고, 0이면 거짓입니다. if 문의 조건식의 값이 벡터이거나 행렬이면, 벡터와 행렬이 비지 않으며, 한 곳도 빠지지 않고 0이 아닐 때만 참으로 판단합니다. 조건식이 행렬일 때의 판별은 아래와 개념상 같습니다.

if (행렬) ≡ if (all (행렬(:)))

if문의 두 번째 형식은 아래와 같습니다.

if (조건식)
  참_몸체
else
  거짓_몸체
endif

조건식이 참이면 참_몸체를 실행하고, 거짓이면 거짓_몸체를 실행합니다.

예시입니다.

if (rem (x, 2) == 0)
  printf ("x is even\n");
else
  printf ("x is odd\n");
endif

이 예시에서, rem (x, 2) == 0이 참이면(x가 2로 나누어 떨어지는 경우) 첫 번째 printf문을 실행하고, 거짓이면 두 번째 printf문을 실행합니다.

홑명령문을 포개어 여러 결정을 하게 만든 if문의 세 번째이자 가장 보편적인 형식입니다. 이는 아래와 같습니다.

if (조건식)
  참_몸체
elseif (조건식)
  다른_참_몸체
else
  거짓_몸체
endif

elseif 개수는 상관 없습니다. 차례로 각 조건식을 검사하여, 참인 조건식을 발견하면, 그에 안겨있는 몸체를 실행합니다. 모든 조건식이 거짓이고, else가 있으면, 그에 안겨있는 몸체를 실행합니다. else은 반드시 명령문 끝자락에 있어야 하며, 한 개만 가능합니다.

아래 예시에서, 첫 번째 조건식이 참이면(x가 2로 나누어 떨어지는 경우) 첫 번째 printf문을 실행합니다. 첫 번째 조건식이 거짓이면, 두 번째 조건식을 검사하여, 참이면 (x가 3으로 나누어 떨어지는 경우) 두 번째 printf문을 실행합니다. 두 번째 조건식도 거짓이면, 세 번째 printf문을 실행합니다.

if (rem (x, 2) == 0)
  printf ("x is even\n");
elseif (rem (x, 3) == 0)
  printf ("x is odd and divisible by 3\n");
else
  printf ("x is odd\n");
endif

elseif 예약어를 포트란에서는 허용하는 else if 꼴로 입력하면 안 됩니다.  else if 꼴로 입력하면, elseif 사이 띄어쓰기 때문에 다른 ifelse의 몸체로 새 if문을 처리하라는 의미가 됩니다. 예를 들어, 아래와 같이 작성하면,

if (조건식1)
  몸체1
else if (조건식2)
  몸체2
endif

옥타브가 첫 번째 if문 완성하기 위하여 추가 입력을 기대합니다. 옥타브를 대화형으로 사용하는 중이면, 추가 입력을 기다립니다. 옥타브가 위 입력을 기록철로 받으면, 없거나 짝이 맞지 않는 end문에 대한 항의가 나오거나, 전용 end문(endif, endfor 등)을 더 사용하지 않았다면, 오류 문구 없이 잘못된 값을 출력합니다.

아래처럼 작성하면 무엇이 문제인지 더 쉽게 보입니다.

if (c1)
  body-1
else
  if (c2)
    body-2
  endif

들여쓰기로 옥타브가 함수를 묶는 방법을 보여줍니다. 함수와 대본을 참고하십시오.


다음: 겹분기문, 상위 문서: 명령문   [차례][찾아보기]