Chapter. 3

김동현·2022년 10월 4일
0

위의 사진은 switch ~ case문의 대표적인 사례이다.

switch ~ case문

등수에 따라 상금을 차등 지급하는 경우, 1등에게 300만원, 2등에게 200만원, 3등에게 100만원을 준다고 하자.

상금의 지급 조건은 등수이고, 해당 등수는 상수 1, 2, 3이다.

규칙1. 조건식은 정수식만 사용한다.

규칙2. 기본적으로 case는 break를 포함한다.

#include <stdio.h>

int main(void)
{
    int rank = 2, m = 0;

    switch (rank)        // rank의 값이 얼마인지 확인
    {
        case 1 :         // rank가 1이면 
        m = 300;         // m은 300을 수행하고
        break;           // 블록을 벗어나 22행으로 이동
        case 2 :         // rank가 2이면
        m = 200;         // m은 200을 수행하고
        break;           // 블록을 벗어나 22행으로 이동
        case 3 :         // rank가 3이면
        m = 100;         // m은 100을 수행하고
        break;           // 블록을 벗어나 22행으로 이동
        default:                  // rank와 일치하는 case의 값이 없으면 
            m = 10;               // m은 10을 수행하고 
            break;                // 블록을 벗어나 22행으로 이동
    } 
   
    printf("m : %d\n", m);

    return 0;
}

break의 경우 적절하게 생략하여 사용할 수 있다.

그러나 위의 경우에서 break를 사용하지 않는다면, 1등의 경우 1등 상금 + 2등 상금 + 3등 상금을 받고.

2등의 경우 2등 상금 + 3등 상금, 3등의 경우 3등 상금을 받게 된다.
 
 

키워드로 끝내는 핵심 포인트

  1. if 중첩문은 if 문 안에 실헹문으로 if문을 사용한 것을 말한다.
  2. switch ~ case문은 정수 값으로 실행할 문장을 결정한다.
  3. break를 생략할 때는 자세한 설명과 함께 제한적으로 사용해야 한다.
  4. default의 위치는 블록 안 어디에 와도 상관 없으나 마지막에 두어 예외 상황을 처리한다.
     
     

while문

while문은 조건식을 먼저 검사하고 조건식이 참인 동안 실행문을 반복한다.

while (a < 10)
{
			a = a * 2;
}

위의 식에선 a가 1이면 2가되고, 2이면 4가 되고, 4이면 8이된다. 거기서 끝!

#include <stdio.h>

int main(void)
{
    int a = 1;                 // 변수를 선언하고 곱셈을 하기 위해 1로 초기화

    while (a < 10)             // a가 10보다 작으므로 조건식은 참
    {
        a = a * 2;             // a에 2를 곱해 a에 다시 저장
    }
    printf("a : %d\n", a);     // a값 출력

    return 0;
}                                                      // 출력 값은 16이다. 

  
 

for문

#include <stdio.h>

int main(void)
{
    int a = 1;                 // 변수를 선언하고 1로 초기화
    int i;                     // 반복 횟수를 세기 위한 변수

    for (i = 0; i < 3; i++)    // i는 0으로 초기화 한 다음에, i가 3보다 작은 경우 동안 하나씩 증가함
    {
        a = a * 2;             // 초기값이 0이고, 차례로 계산하며 진행함
    }
    printf("a : %d\n", a);     // for문을 빠져 나오면 a값 출력

    return 0;
}                                                 // 실행결과: a=8 

for문은 실행문을 원하는 횟수만큼 반복할 때 사용한다.

위의 식에서는 a값이 0으로 시작하는데, for문 시작부분에서 a는 3보다 작기에 0 + 1이 되어 1이라는 값이 된다.

이러한 1은 아래 a = a * 2를 만족시켜 2가 되고 2는 다시 4로 된다. 그러나 4의 경우 i <3 을 만족하지 않는다.

따라서 i ++가 아닌 a = a * 2를 바로 만족시켜 결과 값 8을 갖게된다.
 
 

do ~ while문

while문과 for문의 경우 조건식을 먼저 확인하는 반면, do ~ while 문은 일단 반복할 문장을 수행한 후에 조건을 검사한다.

#include <stdio.h>

int main(void)
{
    int a = 1;                  // 변수를 선언하고 1로 초기화
    
    do                          // 반복문 시작 위치
    {
        a = a * 2;              // a의 값을 2배로 늘린다.
    } while ( a < 10);          // a가 10보다 작으면, 9행을 반복
    printf("a : %d\n", a);      // 반복이 끝난 후 a값 출력

    return 0;
}                                          // 결과 값: a=16
  • while문: 조건을 만족해야 실행하므로 조건식이 거짓이면 한번도 실행을 하지 않고 종료한다. do ~ while문: 실행문이 조건식 앞에 있으므로, 조건과 관계없이 실행문을 최소 한번은 실행한다.

  
 

키워드로 끝내는 핵심 포인트

  1. while문은 반복 문장을 실행하기 저네 반복 조건을 먼저 검사한다.
  2. for문은 반복 횟수가 정해진 경우 사용하면 편리하다.
  3. do ~ while문은 반복 문장을 실행힌 후에 반복 조건을 검사한다.
profile
디자인과 개발을 모두 할줄 아는 능력있는 개발자가 되고싶습니다.

0개의 댓글