컴퓨터 공부/© C

[C언어] 3. 조건문

letzgorats 2021. 1. 27. 15:16

3. 조건문

 

<IF문>

 

- if문 내부의 조건을 검사해 프로그램의 진행 경로를 결정

- if문은 조건의 개수가 많지 않을 때 사용하는 것이 유리하다.

 (사용은 가능하나 비효율적-else if 조건문(elif 아니다!)이 몇백개 달려도 사용은 가능,else ifelse는 사실 사용하지 않아도 괜찮은 문법)

 

if 조건1 {

    (조건1에 부합할때)

}

else if 조건2 {

    (조건1에 부합하지 않지만 조건2에 부합할때  )

}

else {

    (위 조건들에 모두 부합하지 않을 때)

}

 

(예제1) If문

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

int main(void) {

        printf("손님이 몇 명 왔나요?");

        int a;

        scanf("%d", &a);

        if (a == 1 || a == 2) {

                printf("2인석으로 안내합니다.\n");

        }

        else if (a == 3 || a == 4) {

                printf("4인석으로 안내합니다.\n");

        }

        else {

                printf("대형석으로 안내합니다.\n");

        }

        system("pause");

        return 0;

}

(해설) 파이썬처럼 if문을 쓸 때는 : (콜론) 이 아닌 {}(중괄호)를 열고 닫아줘야한다. 조건문을 쓸 때는 ()(괄호)를 열고 닫아줘야하며 또한 else ifelif로 바꿔쓰면 안된다.

 

(예제2) IF문

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

int main(void) {

        int size;

        printf("메인 메모리 크기를 입력하세요.(GB)");

        scanf("%d", &size);

        if (size >= 16) {

                printf("메인 메모리 크기가 충분합니다.\n");

        }

        else {

                printf("메인 메모리를 증설하세요.\n");

        }

        system("pause");

        return 0;

}

(해설) 원리는 예제1과 똑같다. If문 쓸 때 {중괄호}를 열고 닫아줘야한다는 것, 조건문 쓸 때 (괄호)를 열고 닫아줘야하는 것, scnaf안에 입출력 잘해야한다는 것. 별거 없다 아직까지는.

두번째 else를 사실 if (size <16) 로 바꿔줘도 문제는 없다. 다만, if문을 두개 이상 작성할 시에는 if문끼리는 절대로 논리적으로 중첩이 없어야 한다.

컴퓨터는 If문이 2개 있으면 둘다 읽어버리니까 예를 들어 else if (size<=16)로 써주게 된다면, 16을 입력 하였을 때는 앞의printf문과 뒤의 printf문이 둘다 출력되는 현상이 발생할 수 있다는 것이다. 웬만하면 else if 로 코드를 작성하라는 뜻이다.

 

<Switch문>

 

- 다양한 조건이 존재할 때 사용하면 소스코드를 짧게 유지할 수 있다.(if문보다 간결)

- : (콜론)으로 케이스를 나눈다.

- if문과 마찬가지로 switch문도 {중괄호}를 열고 닫아줘야 한다는 것, (확인대상) 처럼 확인대상을 (괄호)안에 넣어줘야 하는 것 잊지말자!!

- default 값은 위의 case값들이 수행되어도 수행 될 수 있는 모든 경우에 대한 case.

- switch문은 if문과는 다르게 어떠한 case값이 수행이 되면 그 밑에 있는 case들도 쭈욱 수행된다는 특징이 있다!

- 따라서 일반적인 경우 case문의 마지막에 break를 넣어 특정 부분만 실행하도록 컨트롤 한다.

 

switch (확인대상){

case 1:

1에 부합할 때

case 2:

2  부합할 때

Default:

모든 경우

}

 

(예제3) Switch문

 

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

int main(void) {

        printf("학점을 입력하세요.");

        char a;

        scanf("%c", &a);

        switch (a) {

        case 'A':

                printf("A 학점입니다.\n");

                break;

        case 'B':

                printf("B 학점입니다.\n");

                break;

        case 'C':      

                printf("C 학점입니다.\n");

                break;

        default:

                printf("학점을 바르게 입력하세요.\n");

                break;

}

        system("pause");

        return 0;

}

(해설) main함수 안에

1) printf문안에 먼저 사용자에게 출력될 문구를 넣어주고

2) 변수를 선언해준 다음

3) scanf문 안에 적절한 %&을 적어주고 시작 해야하는게 국룰! 여기서도 마찬가지로 그러한 작업을 해준다음 switch문을 시작하였다.(12는 바꿔줘도 무방)

 

- Switch 문에는 char,int,long,double 등의 자료형을 다 사용할 수 가 있다.

- 따라서,Switch문 또한 조건을 정확히 판별하고자 할 때 아주 유용하게 사용 할 수 있다.

 

(예제4) Switch문

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

 

int main(void) {

        printf("월을 입력하세요.");

        int a;

        scanf("%d", &a);

        switch (a) {

        case 1: case 2: case 3:

                printf("봄\n"); break;

        case 4: case 5: case 6:

                printf("여름\n"); break;

        case 7: case 8: case 9:

                printf("가을\n"); break;

        case 10: case 11: case 12:

                printf("겨울\n"); break;

}

        system("pause");

        return 0;

}

(해설) case1:case2:case3: 이런것 처럼 case((chr,int 등등)):들을 붙여서 쓸 수 있다. 또한, printf문 다음에 오는 break 값도 다음줄이 아닌 ;(세미콜론)을 붙여서 그대로 이어서 쓸 수 있다. 이처럼 if문을 사용하였을 때 보다 훨씬 소스코드가 짧아진 것을 느낄 수 있다.

 

(정리)

1) 조건문의 종류로는 if문과 switch문이 있다.

2) 일반적으로 조건의 개수가 적을 때는 if문을,

  많을 때는 switch문을 사용한다.(break를 넣어주는게 보편적)

반응형

'컴퓨터 공부 > © C' 카테고리의 다른 글

[C언어] 6. 배열  (0) 2021.01.28
[C언어] 5. 함수  (0) 2021.01.27
[C언어] 4. 반복문  (0) 2021.01.27
[C언어] 2. 연산자  (0) 2021.01.27
[C언어] 1. 기본 입출력  (0) 2021.01.27