Main Content

while

조건이 true이면 반복하는 while 루프

구문

while expression
    statements
end

설명

예제

while expression, statements, end표현식을 실행하여 표현식이 true인 동안에는 루프의 명령문 그룹을 반복해서 실행합니다. 표현식은 결과가 비어 있지 않고 0이 아닌 요소(논리형 또는 실수 숫자형)만 포함하는 경우에 true입니다. 그렇지 않은 경우, 표현식은 false입니다.

예제

모두 축소

while 루프를 사용하여 factorial(10)을 계산합니다.

n = 10;
f = n;
while n > 1
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])
n! = 3628800

파일 magic.m의 코드 라인 수를 셉니다. continue 문을 사용하여 비어 있는 라인과 주석을 건너뜁니다. continuewhile 루프의 나머지 명령을 건너뛰고 다음 반복을 시작합니다.

fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
    line = fgetl(fid);
    if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
        continue
    end
    count = count + 1;
end
count
count = 37
fclose(fid);

다음 차례 난수가 상한보다 클 때까지 난수열의 합을 구합니다. 그런 다음 break 문을 사용하여 루프를 종료합니다.

limit = 0.8;
s = 0;

while 1
    tmp = rand;
    if tmp > limit
        break
    end
    s = s + tmp;
end

세부 정보

모두 축소

표현식

표현식은 관계 연산자(예: < 또는 ==)와 논리 연산자(예: &&, || 또는 ~)를 포함할 수 있습니다. 논리 연산자 andor를 사용하여 복합 표현식을 생성합니다. MATLAB®은 연산자 우선 순위 규칙에 따라 복합 표현식을 왼쪽에서 오른쪽으로 평가합니다.

while...end 블록의 조건식 내에서 논리 연산자 &|는 쇼트서킷 연산자로 동작합니다. 동작은 각각 &&||와 동일합니다. &&||는 조건식과 조건문에서 항상 쇼트서킷되므로 표현식 내에서 &| 대신 &&||를 사용하는 것이 좋습니다. 예를 들어, 다음 명령을 사용할 경우

x = 42;
while exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
    break
end

표현식의 첫 번째 부분은 false입니다. 따라서 정의되지 않은 함수 오류가 발생할 것이므로 MATLAB은 표현식의 두 번째 부분을 실행할 필요가 없습니다.

  • 실수로 무한 루프를 만든 경우(즉, 자체적으로 끝나지 않는 루프) Ctrl+C를 눌러 루프 실행을 중지합니다.

  • 조건식이 행렬로 계산되는 경우, MATLAB은 행렬의 모든 요소가 true(0이 아님)인 경우에만 명령문을 실행합니다. 요소가 하나라도 true인 경우 명령문을 실행하려면 any 함수로 표현식을 감싸야 합니다.

  • 프로그래밍 방식으로 루프를 종료하려면 break 문을 사용하십시오. 루프의 나머지 명령을 건너뛰고 다음 반복을 시작하려면 continue 문을 사용하십시오.

  • 여러 while 문을 중첩하는 경우 각각의 while 문에는 end 키워드가 필요합니다.

  • MATLAB while 루프는 C 및 C++와 같은 다른 프로그래밍 언어의 do...while 루프와 유사합니다. 그러나 while은 루프의 끝이 아닌 시작 부분에서 조건식을 평가합니다.

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    do...while 루프와 같이 동작하도록 하려면 while의 초기 조건을 true로 설정하고 조건식을 루프 안에 넣으십시오. 예를 들어, MATLAB while 루프를 사용하여 위의 do...while 루프를 구현합니다.

    while true
        statements
        if ~expression
            break
        end
    end
    

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨