수색…


통사론

  • if expression ... end
  • 표현 ... 다른 ... 최종면
  • if expression ... elseif expression ... end
  • if expression ... elseif expression ... else ... end

매개 변수

매개 변수 기술
표현 논리적 의미가있는 표현

IF 조건

조건은 코드의 거의 모든 부분에서 기본적인 부분입니다. 이 코드는 일부 상황에서만 코드 일부를 실행하는 데 사용되지만 다른 부분에서는 실행하지 않습니다. 기본 구문을 살펴 보겠습니다.

a = 5;
if a > 10    % this condition is not fulfilled, so nothing will happen
    disp('OK')
end

if a < 10    % this condition is fulfilled, so the statements between the if...end are executed
    disp('Not OK')
end

산출:

Not OK

이 예에서 우리는 if 가 조건과 조건이 참일 경우 실행할 코드의 두 부분으로 구성되어 있음을 봅니다. 이 코드는 조건 이후와 이전에 작성된 모든 것 end 이의 if . 첫 번째 조건은 충족되지 않았으므로 코드가 실행되지 않았습니다.

다음은 또 다른 예입니다.

a = 5;
if a ~= a+1        % "~=" means "not equal to"
    disp('It''s true!') % we use two apostrophes to tell MATLAB that the ' is part of the string
end

위의 조건은 항상 true이며 출력을 표시 It's true! .

또한 다음과 같이 쓸 수 있습니다.

a = 5;
if a == a+1    % "==" means "is equal to", it is NOT the assignment ("=") operator
    disp('Equal')
end

이번에는 조건이 항상 거짓이므로 출력이 Equal .

항상 true 또는 false 인 조건은 많이 사용하지 않습니다. 왜냐하면 항상 false 인 경우 코드의이 부분을 단순히 삭제할 수 있고 항상 참이면 조건이 필요하지 않기 때문입니다.

IF-ELSE 조건

어떤 경우에는 조건이 거짓이면 대체 코드를 실행하기를 원합니다. 왜냐하면 선택적인 else 부분을 ​​사용하기 때문입니다.

a = 20;
if a < 10
    disp('a smaller than 10')
else
    disp('a bigger than 10')
end

여기에 우리가 보는 그 때문에 a 작지보다 10 애프터 코드의 두 번째 부분 else 실행되고, 우리는 출력을 얻을 a bigger than 10 . 이제 다른 시도를 살펴 보겠습니다.

a = 10;
if a > 10
    disp('a bigger than 10')
else
    disp('a smaller than 10')
end

이 예제에서는 a 가 실제로 10보다 작은 지 검사하지 않았고 조건이 그대로 표현식을 검사하기 때문에 잘못된 메시지가 표시되고 true가 아닌 경우 ( a = 10 )는 실행될 두 번째 부분.

이러한 유형의 오류는 초보자와 숙련 된 프로그래머 모두에게 매우 흔한 함정이며 특히 조건이 복잡 해지면 항상 염두에 두어야합니다

IF-ELSEIF 조건

else 를 사용하면 조건이 만족되지 않을 때 작업을 수행 할 수 있습니다. 하지만 첫 번째 조건이 거짓 인 경우 두 번째 조건을 확인하려면 어떻게해야할까요? 우리는 이렇게 할 수 있습니다.

a = 9;
if mod(a,2)==0   % MOD - modulo operation, return the remainder after division of 'a' by 2
    disp('a is even')
else
    if mod(a,3)==0
        disp('3 is a divisor of a')
    end
end

OUTPUT:
3 is a divisor of a

이것은 "중첩 된 조건" 이라고도 불리지 만 여기서는 코드 가독성을 향상시키고 오류 발생 가능성을 줄이는 speciel case가 있습니다. 다음과 같이 작성할 수 있습니다.

a = 9;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

elseif 사용하면 동일한 조건 블록 내에서 다른 표현식을 확인할 수 있으며 이는 하나의 try에만 국한되지 않습니다.

a = 25;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
5 is a divisor of a

elseif 를 연속적으로 사용하기로 선택할 때는 여분의주의를 기울여야합니다. 그 중 하나만if 에서 end 블록까지 실행되기 때문입니다. 따라서 우리 예제 a (우리가 명시 적으로 검사 한 것의) 모든 제수를 표시하려면 위의 예제는 좋지 않습니다.

a = 15;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

3뿐만 아니라 5는 15의 제수이지만, 위의 표현이 사실이라면 5로 나누는 부분에 도달하지 않습니다.

마지막으로, 우리는 하나 추가 할 수 있습니다 else 모든 후 (단 하나) elseif 조건 중 어느 것도 이상 충족되지 않을 때 코드를 실행하기 위해 조건 :

a = 11;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
else
    disp('2, 3 and 5 are not divisors of a')
end

OUTPUT:
2, 3 and 5 are not divisors of a

중첩 된 조건

우리가 다른 조건에서 조건을 사용할 때 조건은 "중첩 된"것이라고 말합니다. 중첩 된 조건의 한 특별한 경우는 elseif 옵션에 의해 제공되지만 중첩 된 조건을 사용하는 다른 많은 방법이 있습니다. 다음 코드를 살펴 보겠습니다.

a = 2;
if mod(a,2)==0    % MOD - modulo operation, return the remainder after division of 'a' by 2
    disp('a is even')
    if mod(a,3)==0
        disp('3 is a divisor of a')
        if mod(a,5)==0
            disp('5 is a divisor of a')
        end
    end
else
    disp('a is odd')
end 

a=2 경우, 출력 a is even 일 것입니다. 올바른 것입니다. 들면 a=3 , 출력 될 것이다 a is odd 또한 올바르지 만 3의 약수이면 체크를 그리워하는, a . 조건이 중첩되기 때문, 그래서 번째 경우 true 우리가 내면의 하나로 이동 한 경우보다 a 홀수, 내부 조건 중 어느 것도도 확인되지 않습니다. 이것은 첫 번째 조건이 false 때만 다음 항목을 확인하는 것보다 elseif 사용하는 것과 다소 반대입니다. 5로 나누면 어떨까요? divisor (2와 3 모두)로 6을 가진 숫자 만 5로 나눈 값을 검사 할 것이고, 우리는 a=30 대한 결과를 테스트하고 볼 수 있습니다 :

a is even
3 is a divisor of a
5 is a divisor of a

또한 다음 두 가지 사항을 알아야합니다.

  1. 의 위치 end 각각에 적합한 장소는 if 예상대로 작동하는 조건의 설정에 매우 중요하므로 들여 쓰기 여기 좋은 추천 이상입니다.
  2. 의 위치 else 문은 우리가 알 필요가 있기 때문에, 또한 중요하다있는 if 우리가 경우 경우에 식을 뭔가를 할 (그 중 몇 가지가있을 수 있습니다) false .

다른 예를 살펴 보겠습니다.

for a = 5:10    % the FOR loop execute all the code within it for every a from 5 to 10
    ch = num2str(a);    % NUM2STR converts the integer a to a character
    if mod(a,2)==0
        if mod(a,3)==0
            disp(['3 is a divisor of ' ch])
        elseif  mod(a,4)==0
            disp(['4 is a divisor of ' ch])
        else
            disp([ch ' is even'])
        end
    elseif mod(a,3)==0
        disp(['3 is a divisor of ' ch])
        
    else
        disp([ch ' is odd'])
    end
end

출력은 다음과 같습니다.

5 is odd
3 is a divisor of 6
7 is odd
4 is a divisor of 8
3 is a divisor of 9
10 is even

우리는 6 개의 숫자에 대해 단지 6 개의 라인을 가지고있는 것을 볼 수 있습니다. 왜냐하면 조건은 숫자 당 하나의 인쇄를 보장하는 방식으로 중첩되어 있기 때문이며 또한 출력에서 ​​직접 볼 수는 없지만 추가 검사는 수행되지 않습니다. if if 숫자가 4가 그것의 약수 중 하나인지 확인하기위한 아무런 포인트조차 없다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow