홑분기문 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
꼴로 입력하면, else
와 if
사이 띄어쓰기 때문에 다른 if
내 else
의
몸체로 새 if
문을 처리하라는 의미가 됩니다. 예를 들어, 아래와 같이 작성하면,
if (조건식1) 몸체1 else if (조건식2) 몸체2 endif
옥타브가 첫 번째 if
문 완성하기 위하여 추가 입력을 기대합니다. 옥타브를 대화형으로 사용하는 중이면, 추가 입력을
기다립니다. 옥타브가 위 입력을 기록철로 받으면, 없거나 짝이 맞지 않는 end
문에 대한 항의가 나오거나, 전용 end
문(endif
, endfor
등)을 더 사용하지 않았다면, 오류 문구 없이 잘못된 값을 출력합니다.
아래처럼 작성하면 무엇이 문제인지 더 쉽게 보입니다.
if (c1) body-1 else if (c2) body-2 endif
들여쓰기로 옥타브가 함수를 묶는 방법을 보여줍니다. 함수와 대본을 참고하십시오.