3. 조건문
<IF문>
- if문 내부의 조건을 검사해 프로그램의 진행 경로를 결정
- if문은 조건의 개수가 많지 않을 때 사용하는 것이 유리하다.
(사용은 가능하나 비효율적-else if 조건문(elif 아니다!)이 몇백개 달려도 사용은 가능,else if나 else는 사실 사용하지 않아도 괜찮은 문법)
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 if를 elif로 바꿔쓰면 안된다.
(예제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문을 시작하였다.(1과 2는 바꿔줘도 무방)
- 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 |