๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿคท๐Ÿผ‍โ™€๏ธ Etc.../- C, C++, Python, Android

[C ์–ธ์–ด] ์กฐ๊ฑด๋ฌธ๊ณผ ๋ถ„๊ธฐ๋ฌธ ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต๋ฌธ (if, switch-case, for, while, do-while)

by Wonit 2021. 6. 22.

Conditional Statements, ์กฐ๊ฑด๋ฌธ

 

์กฐ๊ฑด๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์— ์‚ฌ์šฉ๋œ๋‹ค.

 

 

์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ํ˜น์€ ํŠน์ • ๊ฐ’์„ ์ผ์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

 

๊ทธ๋Ÿด ๋•Œ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” if, else ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ณค ํ•œ๋‹ค.

 

if statements

 

์œ„์˜ ๊ทธ๋ฆผ์„ if ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฐ”๊ฟ”๋ณด๋„๋ก ํ•˜์ž.

 

#include <stdio.h>

int main() {
    printf("๋ช‡ ํ•™๋…„์ธ๊ฐ€? \n");

    int grade = 0;
    scanf("%d", &grade);

    if(grade == 3) {
        printf("3 ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค.");
    }else if(grade == 4) {
        char sexuality;

        printf("๋‚จ์„ฑ : 'm' \t ์—ฌ์„ฑ : 'f'\n");
        scanf(" %c", &sexuality);

        if(sexuality == 'm' && grade == 4) {
            printf("4 ํ•™๋…„์˜ ๋‚จ์„ฑ ํ•™์ƒ");
        }else if(sexuality == 'f' && grade == 4) {
            printf("4 ํ•™๋…„์˜ ์—ฌ์„ฑ ํ•™์ƒ");
        }else {
            printf("์ž…๋ ฅ์ด ์ž˜๋ชป ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
        }
    }else {
        printf("๋Œ€์ƒ ํ•™๋…„์ด ์•„๋‹™๋‹ˆ๋‹ค.");
    }
}

 

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผํ•  ์‚ฌํ•ญ์ด ์žˆ๋‹ค.

 

15๋ฒˆ์งธ ์ค„์—์„œ scanf ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

 

ํ•˜์ง€๋งŒ ์•ž์— ๊ณต๋ฐฑ ๋ฌธ์ž ํ•˜๋‚˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

์ด ์ด์œ ๋Š” 14๋ฒˆ์งธ ์ค„์— ์กด์žฌํ•˜๋Š” \n ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค ๋•Œ๋ฌธ์— %c ๊ฐ€ ์ด๋ฏธ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ณต๋ฐฑ์„ ์ด์šฉํ•ด์„œ ํ•œ ์นธ์„ ๋„์›Œ์ค€ ๊ฒƒ์ด๋‹ค.

 

Switch Statements, ๋ถ„๊ธฐ๋ฌธ

 

๋ถ„๊ธฐ๋ฌธ (Switch Case) ์€ ์กฐ๊ฑด๋ฌธ๊ณผ ๋น„์Šทํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๋ถ„๊ธฐ๋ฌธ ๋˜ํ•œ ์กฐ๊ฑด๋ฌธ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด๋‚˜ ํŠน์ • ๊ฐ’์„ ์ผ์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

 

Switch Case ๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” 2๊ฐ€์ง€์˜ ์‚ฌ์šฉ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

  1. if ๋ฌธ์˜ else์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ default ๋ธ”๋ก์ด๋‹ค.
  2. ๊ฐ๊ฐ์˜ case ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๋Š” break๋ฅผ ๊ผญ ์จ์ค˜์•ผ ํ•œ๋‹ค.

 

๋งŒ์•ฝ break๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์กฐ๊ฑด๊นŒ์ง€ ํ•จ๊ป˜ ํฌํ•จํ•˜๋Š”๋ฐ, ์ด๋ฅผ ์ด์šฉํ•ด์„œ || ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

#include <stdio.h>

int main() {

    int grade;

    printf("ํ•™๋…„์„ ์ž…๋ ฅํ•˜์„ธ์š”\n");
    scanf(" %d", &grade);

    switch(grade) {
        case 1: {
            printf("1ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค.");
            break;
        }
        case 2: {
            printf("2ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค.");
            break;
        }
        case 3: {
            printf("3ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค.");
            break;
        }
        case 4: {
            printf("4ํ•™๋…„ ํ•™์ƒ์ž…๋‹ˆ๋‹ค.");
            break;
        }
        case 5:
        case 6: {
            printf("์กธ์—… ์˜ˆ์ • ํ•™์ƒ์ž…๋‹ˆ๋‹ค");
            break;
        }
        default: {
            printf("์กธ์—…์ƒ ์ž…๋‹ˆ๋‹ค.");
            break;
        }
    }
}

 

๊ทธ๋Ÿผ If์™€ Switch๋Š” ์„œ๋กœ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ๋ชจ๋‘ ๋˜‘๊ฐ™์„๊นŒ?

 

์•„๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ๋ฐ”๋กœ Jump ์˜ ์ฐจ์ด์ด๋‹ค.

 

if ๋ฌธ์—์„œ๋Š” ์กฐ๊ฑด์ด ๋งŒ์กฑํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ๊ฐ์˜ ์กฐ๊ฑด branch ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๋ฐ˜๋ฉด switch ๋ฌธ์—์„œ๋Š” ํŠน์ • ์œ„์น˜๋กœ jump ํ•˜๊ฒŒ ๋˜์–ด ์„ฑ๋Šฅ์ƒ ์กฐ๊ธˆ์˜ ์ด์ ์ด ์กด์žฌํ•œ๋‹ค.

 

ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๋””์ž์ธ ํŒจํ„ด์—์„œ ๋งน๋ชฉ์ ์ธ Switch Case ๋Š” Anti Pattern ์ด๋ฏ€๋กœ ์‚ฌ์šฉ์‹œ ์ฃผ์˜ํ•˜๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

 

Loop Statements, ๋ฐ˜๋ณต๋ฌธ

 

๋ฐ˜๋ณต๋ฌธ์—๋Š” 2๊ฐ€์ง€์˜ ์‚ฌ์šฉ์ด ์กด์žฌํ•œ๋‹ค.

 

  1. for๋ฌธ
  2. while ๊ณผ do-while ๋ฌธ

 

๊ฐ€์žฅ ์œ ๋ช…ํ•œ ๊ตฌ๊ตฌ๋‹จ์„ ํ•œ ๋ฒˆ ์งœ๋ณด๋„๋ก ํ•˜์ž

 

 

(feat. ์ฃผ์ƒ์šฑ์˜ GuguClass)

 

for statements

#include <stdio.h>

int main() {
    int i;
    int num;

    printf("๋ช‡ ๋‹จ์„ ์ถœ๋ ฅํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?");

    scanf("%d", &num);

    for (i = 1; i <=9; i++) {
        printf("\n %d * %d = %d", num, i ,i * num);
    }
    return 0;
}

 

while statements

#include <stdio.h>

int main() {
    int i = 1;
    int num;

  printf("๋ช‡ ๋‹จ์„ ์ถœ๋ ฅํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?");

    scanf("%d", &num);

    while (i <=9) {
    printf("\n %d * %d = %d", num, i ,i * num);
        i++;
    }
    return 0;
}

 

do-while statements

#include <stdio.h>

int main() {
    int i = 1;
    int num;

  printf("๋ช‡ ๋‹จ์„ ์ถœ๋ ฅํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?");

    scanf("%d", &num);

    do {
    printf("\n %d * %d = %d", num, i ,i * num);
        i++;
    } while (i <=9);
    return 0;
}

 

๋Œ“๊ธ€