'if문'에 해당되는 글 2건

  1. 2010.03.27 의사결정
  2. 2009.05.01 조건문
Objective C/조건문2010. 3. 27. 14:23
흔히 개발할 때 어떠한 값이나 상태에 의해 명령문을 선택적으로 실행하는 의사 결정이 필요하다. 적지만 내가 아는 모든 프로그래밍에서는 if문과 switch문을 사용한다. ObjC에서 역시 이 둘을 지원하고 사용법 또한 다른 것과 똑같다. 

1 if문을 사용하여 윤년인지를 알아내는 프로그램

//입력된 수가 홀수인지 작수인지를 구분

int num;

int remaind;

printf("Enter your the year : ");

scanf("%i",&num);

remaind = num%2;


int rem_4, rem_100, rem_400;

rem_4 = num%4;

rem_100 = num%100;

rem_400 = num%400;


if( ( rem_4 == 0 && rem_100 != 0 ) || rem_400 ==0 ){

NSLog(@"It's a leap year.");

}else{

NSLog(@"Nope, it's not a leap year.");

}


위 코드에서 보는 바와 같이 조건문의 표현식에서 우선권을 부여하기 위해서는 소괄호를 통해 연산시 우선권을 부여하고 AND연산(&&)과 OR연산(||)또한 형태와 사용법이 같다.

2 switch문을 사용하여 메서드 접근

double value1, value2;

char opertation;

BOOL isPrime; 


Calculator클래스는 사칙연산 메서드와 함께 값을 대입받아 메서드 getAccumulrator를 통해 반환한다.

Calculrator*myCalculrator = [[ Calculrator alloc ] init];


입력되는 값을 double형애 대입하기 위해 %lf로 받았다.

NSLog(@"Type in your expression.");

scanf("%lf %c %lf", &value1, &opertation, &value2);

가령 1+2를 입력하였을 때 1은 value1,+기호는 operation, 2는 value2에 대입한다.

isPrime = TRUE;

좌변의 값을 전달한다.

[ myCalculrator setAccumulrator:value1 ];


입력된 기호(+,-,*,/)에 따라 실행할 명령문을 선택한다.

switch (opertation) {

case '+':

[ myCalculrator add:value2 ];

break;

case '-':

[ myCalculrator subtract:value2 ];

break;

case '*':

[ myCalculrator multiply:value2 ];

break;

case '/':

if( value2 != 0){

[ myCalculrator divide:value2 ];

}else{

isPrime = FALSE;

}

break;

default:

isPrime = FALSE;

break;

}

if( isPrime ){

NSLog(@"result : %.2f", [ myCalculrator getAccumulrator ]);

}else{

NSLog(@"Unkown operation.");

}

[myCalculrator release];



Posted by 버터백통


 * if문
  - 조건에 만족되는 경우에 한해서 실행
  - 한 줄 명령문인 경우 중괄호 생략가능(actionscript도 동일)

  if(조건식){
   명령문
    }

  
  참고) else를 사용하여 if연산을 줄여준다.

 * if ~ else , else
  - 불필요한 연산을 줄여준다.
  - if else if...등 분기가 많으면 switch로 구현하는 것이 가독성이 좋다.

예) 계산기
int opt;
float val1,val2,result;

 printf("덧셈 1, 뺄셈 2, 곱셈3, 나눗셈4 \n");
 printf("선택하세요 \n");
 scanf( "%d" , &opt );

 printf("두개의 실수 입력 \n");
 scanf( "%f %f" , &val1 , &val2 );

 if( opt == 1 )
  result = val1 + val2;
 else if( opt == 2 )
  result = val1 - val2;
 else if( opt == 3 )
  result = val1 * val2;
 else
  result = val1 / val2;

 printf(" 결과 : %f \n" , result );



 * 조건연산자(삼항연산자)

  - if ~ else문을 간결하게 표현
  - 조건 ? A : B (조건을 만족하면 A 문장을 실행 및 반환 false이면 B를 실행 및 반환)

  X = (y<0)? 10 : 20;
  X = (y>0)? a*b : a/b;

  
  예) int i=5;
   X = ( i < 10 ) 10 : 20;
   i는 10보다 작은 5이므로 조건식을 만족하여 X의 값은 10을 반환 받게 된다.

예) 부호표시
 int x;
 char ch;

printf("정수 입력 : ");
 scanf("%d" , &x);

 ch = (x<0) ? '-' : '+';
 ( ch == '+' ) ? printf("양수 \n") : printf("음수 \n"); 
 printf("절대값 : %d \n" , (x<0) ? -1*x : x);


 
* switch문 : 명령문 선택 실행
  - if문보다 간결하다.
  - 비교연상이 올 수 없다. switch문의 한계
  예)
 switch( 인자 : int 또는 char ){
   case 1:
    인자가 1인 경우 실행
    break;
   case 2:
    인자가 2인 경우 실행
    break;
   default :
    해당되는 case가 없을시 실행
    }

예) 입력된 문자로 단어출력
int n;
char sel;

printf("오전(M), 오후(A), 저녁(E) \n");
printf("확인(q to quit) : ");
scanf("%c",&sel);

 switch(sel)
{
 case 'M':
 case 'm':
  printf("Morning. \n");
  break;
 case 'A':
 case 'a':
  printf("Afternoon. \n");
  break;
 case 'E':
 case 'e':
  printf("Evening. \n");
  break;
 }
 


 참고)
break문
  
- 반복문에서 빠져 나올때 사용
   : 호출되면 반복문에서 탈출

continue문
  - 다음 반복문으로 넘어 갈때 사용
   : 반복문안에서 조건을 만족하면 아래에 있는 루프문을 실행하지 않고 반복문 처음으로 돌아가 실행 

참고) 함수에서 탈출하기 위해서는 return을 사용

Posted by 버터백통