ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어_08장
    Computer Sci‧ence/C 2014. 2. 12. 17:21
    반응형

    1. if

    if /else

    if /else if / else


    2. 조건연산자 ? :


    int x;

    char ch;


    printf("정수 입력: ");

    scanf_s("%d", &x);


    ch = (x < 0) ? '-' : '+';

    (ch == '+' ? printf("양수\n") : printf("음수\n"));

    printf("절대 값: %d \n", (x < 0) ? -1 * x : x);


    3. continue 와 break

    continue와 break문은 if 문안에 포함되어 사용된다. 

    break 문은 반복문을 탈출할 때(빠져 나올 때) 사용하는 키워드이다. break 문을 만나게 되면 break 문을 가장 가까이서 감싸고 있는 반복 하나를 빠져 나오게 된다

    break 문은 반복문뿐만 아니라, 다음 장에서 소개되는 switch 문에서도 유용학 사용된다. 


    continue문은 break 문처럼 루프를 빠져 나가는 것이 아니다. 돌던 루프의 남아 있는 부분을 그냥 건너 뛰는 것이다. 예를들어 아래는 0부터 19 사이에 있는 정수를 출력하되 2의 배수이거나 3의 배수인 정수를 출력에서 제외시키는 프로그이다. 


    ex) page 201. 문제2


    int i, j;

    int a=1, b=1, c=1, d=1;

    for (i = 11; i <= 90; i++)

    {

    for (j = 90; j >= 11; j--){

    if (i + j == 99)

    {

    a = i / 10; //몫

    b = i % 10;//나머지

    c = j / 10;//몫

    d = j % 10;//나머지

    if (a == d && b == c)

    {

    printf("%d+%d=%d\n", i, j, i + j);

    }

    else

    continue;

    }

    }

    }



    3. switch


    switch(n)

    { case 1: 

           n이 1인 경우 실행되는 영역

           break;

       case 2:

           n이 2인 경우 실행되는 영역

           break;

       case 3:

           n이 3인 경우 실행되는 영역

           break;

       default: 

           해당 case 없을 시 실행되는 영역

     }


    switch 문에 전달되는 인자는 int형 혹은 char형 정수가 되어야 한다. 따라서 위 그림에서 인자 n은 int형 혹은 char형 변수 중 하나가 되어야 한다. 여기서 case 1이라 함은 "첫번째 경우"를 의미하는 것이 아니라 "switch 문으로 전달된 인자 값이 1인 경우"를 의미하는 것이다. 이것은 n이 1인경우, 2인경우, 3인경우의 실행영역을 구분하고 있는것이다. 이러한 case문은 얼마든지 추가할 수 있으며 반드시 콜론(:) 을 붙여야 한다. switch문의 마지막에는 default문이 붙을 수 있는데 이는 if else의 마지막 else와 동일하며 반드시 존재해야하는 것은 아니므로 필요에 의해서 선언하면 된다. 


    마지막으로 모든 case 문의 끝에는 break문이 포함되어 있음을 볼 수 있다. (page 203~206) 


    int n;


    printf("정수를 하나 입력하세요: " );

    scanf_s("%d", &n);


    switch (n)

    {

    case 1:

    printf("1은 one\n");

    //break; //switch 문에서는 반드시 break 를 사용한다. 그렇지 않으면 모든 case들을 다 실행하게 된다. 원한다면 break 에 주석을 제외하고 실행해 보자. 

    case 2:

    printf("2은 two\n");

    //break;

    case 3:

    printf("3은 three\n");

    //break;

    case 4:

    printf("4은 four\n");

    //break;

    case 5:

    printf("5은 five\n");

    //break;

    default:

    printf("I don't know!\n");

    }

    *break를 반드시 붙여야 하는 switch문의 장점을 살펴 보자. 



    char sel;

    printf("오전(M), 오후(A), 저녁(E) \n");
    printf_s("입력: ");
    scanf("%c",&sel);
    printf("%c \n",sel);
    switch (sel)
    {
    case 'M': //char 비교시 ' '
    case 'm':
    printf("Morning. \n");
    break;
    case 'A':
    case 'a':
    printf("After noon. \n");
    break;
    case 'E':
    case 'e':
    printf("Evening \n");
    break;
    }

    4. 원하는 곳으로 보내주마 goto

    goto rabbit;  --이동할 위치 지정

          rabbit;  --이동할 위치 표시를 위한 레이블(label 선언)


    int num;

    printf("숫자입력 1,2,3; \n");
    scanf("%d",&num);


    if (num == 1)
    goto label1;
    else if (num == 2)
    goto label2;
    else
    goto label3;

    label1:
    printf("1을 입력하셨습니다. \n");
    return 0;
    label2:
    printf("2을 입력하셨습니다. \n");
    return 0;
    label3:
    printf("3을 입력하셨습니다. \n");
    return 0;



    이번장에서 공부한 내용 정리

    1. if와 else 에 대해 살펴보았으며, 자주 사용되는 조건 연산자(삼항 연산자)에 대해서 살펴보았다. 조건 연산자는 프로그램을 간결하게 해 주는 효과가 있어서 자주 사용된다. 

    2. if~ else 문과 유사한 형태의 switch문을 살펴보았다. if~ else에 비해 제한된 기능을 지니지만 프로그램을 간결하게 해주는 효과가 있다. 

    3. continue문과 break 문에 대해서 살펴보았다. 프로그램에 상당한 유연성을 제공해주는 키워드들이다. 

    4. goto문에 대해서도 언급하엿으며, 더불어 왜 불필요한 문법인지에 대해서도 언급하였다. 사용하는 일은 없어야 할 것이다. 




    반응형

    'Computer Sci‧ence > C' 카테고리의 다른 글

    scanf vs. scanf_s "_CRT_SECURE_NO_WARNINGS"  (0) 2014.02.13
    백견이 불여일타요 백타가 불여일작이다!  (0) 2014.02.12
    C언어_07장  (0) 2014.02.11
    C언어_05장  (0) 2014.02.07
    C언어_04장  (0) 2014.02.06

    댓글

Designed by Tistory.