ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20140314 (for, if, 삼항연산자)
    부산IT학원/스마트컨트롤러 2014. 3. 14. 17:10

    20일차

     

    ---------------

    for 문

    ---------------

    - 반복문이다.

    for ( 초기식 ; 조건 ; 반복식 )

    {

    명령

    }

    이런 형태이고 재미있는 것은 초기식과 반복식에

    다중으로, 생략으로 선언이 가능하다.

    ex) 예제 소스

    #include <stdio.h>

    int main()
    {
      int iNum1;
      int iNum2;
      int iNum3;

    //  - 5  명령이 한 줄일 경우 중괄호 생략 가능
      for(iNum1 = 0, iNum2 = 0 ; 5 > iNum1 ; iNum1 = iNum1 + 1, iNum2 = iNum2 + 2)
        printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);

    //  - 4
      iNum1 = 0;
      iNum2 = 0;

      while5 > iNum1 )
      {
        printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
        iNum1 = iNum1 + 1;
        iNum2 = iNum2 + 2;
      }


    //  - 3
      iNum1 = 0;
      iNum2 = 0;

      for( ; 5 > iNum1 ; )
      {
        printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
        iNum1 = iNum1 + 1;
        iNum2 = iNum2 + 2;
      }

    //  - 2
      iNum2 = 0;

      for(iNum1 = 0 ; 5 > iNum1 ; iNum1 = iNum1 + 1)
      {
        printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
        iNum2 = iNum2 + 2;
      }

    //  - 1
      for(iNum1 = 0, iNum2 = 0 ; 5 > iNum1 ; iNum1 = iNum1 + 1, iNum2 = iNum2 + 2)
      {
        printf("iNum1 = %d\tiNum2 = %d \n", iNum1, iNum2);
      }

      return 0;
    }

     

    1, 2, 3, 4, 5번은 다 같은 식이다.

    int main()
    {
      unsigned int uiCnt = 0;

    //  while(1)
      for( ; ; ) // 조건을 생략하면 무한루프가 된다
      {
        printf("%u \n", uiCnt);  // %u = unsigned int
        ++uiCnt;
      }

      return 0;
    }

    또 while문과 같이 프로그래머의 의도하에 위와 같이 무한루프도 가능하다.

     

     

    --------------------

    if문 (흐름의 분기)

    --------------------

    - 흐름을 분기하는 제어문

    if ( 조건 )

    {  A  }

    이런 형태이고 조건이 참이면 괄호의 A를 실행하고

    거짓이면 그냥 넘어간다.

    그리고 밑에 한 명령만 할 경우 괄호를 생략 가능한데

    가독성에 도움을 주기 위해 왠만하면 붙여주자.

    ex)예제 소스

    #include <stdio.h>

    int main()
    {
      int iOpt;
      double dNum1;
      double dNum2;

      printf("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 \n");
      printf(" : ");
      scanf("%d"&iOpt);

      printf("연산하실 두 숫자 입력 \n : ");
      scanf("%lf %lf"&dNum1, &dNum2);

      if(1 == iOpt)
        printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 + dNum2);
      if(2 == iOpt)
        printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 - dNum2);
      if(3 == iOpt)
        printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 * dNum2);
      if(4 == iOpt)
        printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 / dNum2);

      return 0;
    }

     

    - if ( 조건)

    {  A  }

    else

    {  B  }

    이것은 앞서 배웠던 if문에 else가 붙었는데

    조건이 참일 경우 A ,

    조건이 거짓일 경우 B 를 실행한다.

    ex) 예제 소스

    #include <stdio.h>

    int main()
    {
      int iNum;

      printf("숫자를 입력하세요 : ");
      scanf("%d"&iNum);

      if(0 < iNum)
      {
        printf("%d 는 0보다 큽니다 \n", iNum);
      }
      else
      {
        printf("%d 는 0보다 작습니다 \n", iNum);
      }

      return 0;
    }

     

    - if ( 조건 )

    {  A  }

    else if ( 조건 )

    {  B  }

    else

    {  C  }

    이건 조건이 여러개일 경우 위와 같이 갔다 붙이면 된다.

    ex) 예제 소스

    #include <stdio.h>

    int main()
    {
      int iOpt;
      double dNum1;
      double dNum2;

      printf("1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 \n : ");
      scanf("%d"&iOpt);

      printf("두 개의 실수 입력 : ");
      scanf("%lf %lf"&dNum1, &dNum2);

      if(1 == iOpt)
      {
        printf("%.3lf + %.3lf = %.3lf \n", dNum1, dNum2, dNum1 + dNum2);
      }
      else if(2 == iOpt)
      {
        printf("%.3lf - %.3lf = %.3lf \n", dNum1, dNum2, dNum1 - dNum2);
      }
      else if(3 == iOpt)
      {
        printf("%.3lf * %.3lf = %.3lf \n", dNum1, dNum2, dNum1 * dNum2);
      }
      else if(4 == iOpt)
      {
        printf("%.3lf / %.3lf = %.3lf \n", dNum1, dNum2, dNum1 / dNum2);
      }
      else
      {
        printf("Error!! \n");
      }

      return 0;
    }

    이것 같은 경우 처음 if문 예제소스와 같은 기능인데

    처음 if문의 경우 일일이 if문 조건을 만날 때마다 다 확인하고

    넘어가지만

    else if문의 경우 참인 조건을 만나면 명령을 실행하고

    한 방에 다 빠져나가버린다

    그러니 if문을 여러개 쓰는 것 보다 효율이 좋다.

    또한 조건을 넣을 때 가능하면 확률이 가장 높은 순서대로

    위에서부터 나열해 오면 더 높은 효율을 볼 것이다.

     

     

    --------------

    삼항연산자

    --------------

    - 조건 ? A : B

    if문과 똑같은 역할을 한다.

    참이면 A

    뻥이면 B

    그냥 예제를 보자

    ex) 예제 소스

    #include <stdio.h>

    int main()
    {
      int iNum;

      printf("숫자를 입력하세요 \n :");
      scanf("%d"&iNum);
      
    /*
    // if문을 쓴 경우

      printf("입력하신 숫자는 100보다 ");

      if(100 < iNum)
      {
        printf("큼");
      }
      else
      {
        printf("작습");
      }

      printf("니다. \n");
    */


    // 삼항 연산자를 쓴 경우

      printf("입력하신 숫자는 100보다 %s니다 \n"100 < iNum ? "큼" : "작습" );

      return 0;
    }

    if 문과 삼항연산자의 속도는 똑같다

    다만 그 안에 들어가는 명령어에 따라

    삼항연산자가 훨씬 좋은 효율을 낼 경우가 있다.

    자주는 쓰지 말되 위와 같은 상황에만 쓸 것.....

     

     

     

     

     

     

     

     

Designed by Tistory.