User Tools

Site Tools


cemtool:7.5:internaltoolbox:interrnal:if

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

cemtool:7.5:internaltoolbox:interrnal:if [2014/04/25 09:03] (current)
Line 1: Line 1:
 +[[:​cemtool]]>​[[:​cemtool:​7.5]]>​[[:​cemtool:​7.5:​internaltoolbox]]>​[[:​cemtool:​7.5:​internaltoolbox:​interrnal]]
 +
 +====== if ======
 +조건에 따라 뒤에 나오는 명령을 수행하거나 수행하지 않는 명령어이다.
 +
 +===== 문법 =====
 +<code matlab>
 +if (조건){
 +</​code>​
 +명령문 1,
 +명령문 2,
 +....
 +}
 +
 +===== 설명 =====
 +조건이 참이면(다시 말해, 영행렬이 아닌 값을 ​ 가지면), 뒤에 따라오는 명령문을 수행하고,​ 조건이 거짓이면(영행렬이면),​ 뒤에 나오는 문장을 수행하지 않는다. CEMTool에서 CEM 모드의 if문법이 위에서 보듯이 C언어의 문법과 비슷함을 알 수 있다. 간단한 예를 들면, 아래와 같이 사용하면 된다.
 +if(a){ ​
 +a=0
 +}
 +위의 경우에 a가 상수 값을 나타내고 있다면, 위의 문장이 수행된 후에는 무조건 a에 0이 입력되어 있음을 알 수 있다. ​ 우리가 구현한 if문은 C언어의 그것을 모델로 했으나 구현을 조금이라도 간단하게 하기 위하여 몇가지 다른 점이 생기게 되었다. 즉, C언어에서는 if문에 종속되는 문장이 하나일 때에는 중괄호를 사용하지 않아도 된다.
 +// C언어에서의 if문
 +if(i>​100) i=5;
 +그러나, CEMTOOL에서는 위와 같이 하면 안되고, 한 문장이라고 하여도 중괄호를 사용하여 if문에 따르는 문장이 어디에서 시작하고 어디서 끝나는지를 표시해 주어야한다. 예를들어,​
 +// CEMTOOL에서의 if문
 +if(i>​100){
 +i=5
 +
 +물론 위의 예와는 다르게 한줄안에 if(i>​100){i=5}라고 써 주어도 된다. ​
 +두번째는 문장사이를 구별할 때에 쓰이는 마크가 서로 다르다는 ​ 점이다. 이 if문이나 뒤에 나오는 제어문들은 거의 모두가 매크로명령어를 위하여 만들어 졌다. ​ 그러므로,​ 이 if문에서도 MACRO에서의 문장 구별의 표시인 Carriage return이 문장구별 표시로 사용된다. ​ C언어에서 사용되는 ​ 세미콜론 (;)을 사용하지 않은 까닭은 이 세미콜론을 결과를 화면에 출력 시키지 말라는 표시로 사용하기 때문이다. 즉, 여러 문장을 수행할 때에 행바꿈으로 명령을 구별한다.
 +// 여러 문장이 왔을 때,
 +if(i<​100){
 +문장1 ​ //엔터 key로 문장이 구별된다.
 +문장2 ​
 +...
 +}
 +과 같이 하면 된다. ​       ​
 +세째는 if의 조건에 대한 것인데, if 조건이 참이나 거짓임을 판단하는 기준이 0 이냐 아니냐는 것이 아니고 영행렬이냐 아니냐에 있다는 것이다. ​
 +예를들어 ​ 다음과 같은 명령을 살펴 보자.
 +> a = [0 0 0 0;0 0 0 0];
 +> if(a){
 +문장1
 +...
 +}
 +이와 같은 경우에 괄호 속에 들어 있는 문장들은 수행되지 않는다. ​ 이는 a라는 행렬이 0행렬이기 때문이다. 위와 같은 경우에 a가 [0 0 0 0;0 0 0 1]이라면,​ a는 영행렬이 아니기 때문에 if안에 있는 문장들은 수행이 될 것이다. 이 정도만 알고 있으면, if문을 사용하는 데에는 불편함이 없을 것이다. 그 다음에는 if-else문에 대해 알아 보자. ​ else문은 if조건이 만족하지 않아 if 바로 뒤에 나오는 중괄호 안의 문장이 수행되지 않았을 때에 수행되는 것이다. 이 else문 또한 C언어를 모델로 하였으므로,​ 그 방법과 기능은 충분히 이해할 수 있을 것이다. 이 else문도 또한 if문과 마찬가지로,​ else 뒤에 나오는 문장이 한 문장이라고 해도 중괄호를 사용하여야 하고, 각 문장들은 carriage return으로 구분된다. 이외에 else문에만 적용되는 사용의 제약이 있다. 이는 else의 위치에 대한 것인데, else는 반드시 if문의 마지막 닫는 중괄호 뒤에 와야한다는 것이다.
 +즉, else는 다음과 같이 쓰여야 한다.]
 +// else문의 사용법
 +if(a){
 +if-문장1
 +...
 +
 +else { // else가 if의 마지막 괄호 뒤에 위치
 +else-문장1
 +...
 +}
 +마지막으로 밝혀둘 것은 elseif라는 명령어는 구현하지 않았다는 것이다. 그 이유는 elseif의 기능은 사용자가 if와 else만을 가지고도 쉽게 구현하여 쓸 수가 있기 때문이다. 즉, 다음과 같은 알고리즘을 생각해보자.
 +만일 a가 1이면, 문장1을 수행한다.
 +만일 a가 1이 아니고 2이면, 문장2를 수행한다.
 +...
 +위와 같은 경우에 사용자는 elseif를 ​ 생각할 것이다. 그러나 위의 경우에는 다음과 같이 if와 else를 쓰면 된다.
 +// elseif의 구현
 +if(a==1){
 +문장1
 +}
 +else{
 +if(a==2){
 +문장2
 +}
 +...
 +}
 +
 +===== 예제 =====
 +<file matlab ex.cem>
 +</​file>​
 +===== 관련함수 =====
 +
  
cemtool/7.5/internaltoolbox/interrnal/if.txt · Last modified: 2014/04/25 09:03 (external edit)