MATLAB Language
정황
수색…
통사론
- 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
또한 다음 두 가지 사항을 알아야합니다.
- 의 위치
end
각각에 적합한 장소는if
예상대로 작동하는 조건의 설정에 매우 중요하므로 들여 쓰기 여기 좋은 추천 이상입니다. - 의 위치
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가 그것의 약수 중 하나인지 확인하기위한 아무런 포인트조차 없다.