안녕하세요. 파일입니다 오늘 알아볼 것은 조건문입니다.
조건문은 따로 알아보진 않았지만 앞에서 자연스럽게 사용을 했습니다(If문)
오늘은 If문 이외에도 다른 조건문들을 알아보고 사용법을 알아보겠습니다.
If문
#include <stdio.h>
int main(){
if(조건){
실행식
}
return 0;
}
If라는 영어단어의 뜻은 '만약'입니다. 프로그래밍에서 if 역시 조건을 따지는 데 사용합니다.
위는 if문의 사용예제입니다.
if(조건)이고 조건 안의 값이 참이면 중괄호 안의 코드가 실행됩니다.
#include <stdio.h>
int main(){
int n;
printf("숫자를 입력해주세요 : ");
scanf("%d", &n);
if(n % 2 == 0) printf("짝수입니다");
return 0;
}
>>> 10
10
짝수입니다
--------------------------------
Process exited after 1.236 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
짝수를 판별하는 코드입니다.
2로 나누어 나머지가 없이 떨어지는 수.
우수(偶數). ↔홀수.
짝수의 정의는 다음과 같으므로 조건문으로 입력받은 값을 2로 나눴을 때 나머지가 0인지 판별하고
0이라면 짝수라고 알려주면 됩니다. 대입 연산자(=)와 같음(==) 헷갈리지 마세요!
그리고 for문이던 if문이던 실행하는 실행 식이 하나일 때 이렇게 중괄호를 생략하여 표현할 수 있습니다.
그런데 저 코드에 9를 입력하면 뭐라고 나올까요??
if문은 조건이 참일 때 실행된다고 했습니다. 그런데 9를 2로 나누면 나머지가 0이 아니므로(홀수) 중괄호 내부의
코드가 실행되지 않음으로 아무것도 나오지 않습니다.
그러면 if문의 값이 참이 아닐 때 실행되는 조건식을 만드는 방법이 있습니다. else를 사용하면 됩니다.
#include <stdio.h>
int main(){
int n;
printf("숫자를 입력해주세요 : ");
scanf("%d", &n);
if(n % 2 == 0) printf("짝수입니다");
else printf("홀수입니다");
return 0;
}
요렇게 if문 바로 아래에 else 문을 추가해주면 if문의 조건이 충족되지 않을 때 else 문이 실행되게 됩니다.
짝수가 아니면 홀수니 이렇게 나눌 수 있는 것이죠.
A+ 90점 이상
A 85점 이상
B+ 80점 이상
B 75점 이상
그 외 : F
그러면 조건문을 이용하여 점수를 입력하면 다음과 같은 기준으로 등급을 구분해봅시다.
#include <stdio.h>
int main(){
int n;
scanf("%d", &n);
if (n >= 90) printf("A+");
else
if (n >= 85) printf("A");
else
if (n >= 80) printf("B+");
else
if (n >= 80) printf("B");
else printf("F");
return 0;
}
조건에 맞게 코딩을 했습니다. 실행 식이 하나이니 if (n >= 90) printf("A+"); 로 생략했고
else를 사용할 때도 실행 식이 if (n >= 85) printf("A"); 하나라 중괄호를 생략했습니다.
값도 잘 나오고 하는데.. if문과 else 문이 너무 중첩돼서 지저분해 보입니다.
어떻게 할까요?
이럴 땐 저 else와 if를 합쳐주면 됩니다.
#include <stdio.h>
int main(){
int n;
scanf("%d", &n);
if (n >= 90) printf("A+");
else if (n >= 85) printf("A");
else if (n >= 80) printf("B+");
else if (n >= 75) printf("B");
else printf("F");
return 0;
}
이렇게요. else if는 if 문의 조건이 부합하지 않으며 새로운 조건으로 판별하고 싶을 때 사용합니다.
이렇게 다 추가해주다가 else if의 조건까지 모두 부합하지 않으면 else의 조건식이 실행됩니다.
Switch~case 문
#include <stdio.h>
int main(){
int n;
printf("숫자를 입력해주세요 : ");
scanf("%d", &n);
switch(n)
{
case 1:
printf("1번방 전등 ON\n");
break;
case 2:
printf("2번방 전등 ON\n");
break;
case 3:
printf("3번방 전등 ON\n");
break;
default:
printf("우리집 전등은 3개입니다");
}
return 0;
}
Switch문은 말 그대로 집안의 전등 스위치를 켜듯이 입력 정수에 따라 case를 나누는 조건문입니다.
위의 예제를 보시면 n이라는 정수를 입력받고 n이 1,2,3에 따라 조건문이 실행됩니다.
if문과의 차이점을 비교해보자면 오직 정수만 비교할 수 있고 비교방식도 >, < 부등호 비교가 안되며,
==(같음) 밖에 안됩니다. 그리고 특이하게 중괄호가 아니라 : 를 사용합니다
마치 파이썬 같네요.
위의 코드를 분석해보자면 1을 입력하면 "1번 방 전등 ON" 이 출력되고 break로 종료되게 됩니다.
2,3 도 동일하며 그 이외의 값이 입력되면 default의 내용이 실행되고 코드가 종료됩니다.
즉 case 이외의 조건이 들어온다면 default가 실행됩니다.
그런데 위 코드에서 break가 없다면 어떻게 될까요?
#include <stdio.h>
int main(){
int n;
printf("숫자를 입력해주세요 : ");
scanf("%d", &n);
switch(n)
{
case 1:
printf("1번방 전등 ON\n");
case 2:
printf("2번방 전등 ON\n");
case 3:
printf("3번방 전등 ON\n");
default:
printf("우리집 전등은 3개입니다");
}
return 0;
}
입력 : 1
숫자를 입력해주세요 : 1
1번방 전등 ON
2번방 전등 ON
3번방 전등 ON
우리집 전등은 3개입니다
--------------------------------
Process exited after 1.068 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
입력 : 2
숫자를 입력해주세요 : 2
2번방 전등 ON
3번방 전등 ON
우리집 전등은 3개입니다
--------------------------------
Process exited after 0.2782 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
break를 지우고 실행해 봤습니다.
무엇이 보이시나요?
1을 입력하면 break로 종료가 안돼서 default까지 switch 내부의 모든 경우의 수(default 포함)가 실행되게 됩니다.
2를 입력하면 case 2 아래에 있는 모든 경우의 수가 출력되고요.
break의 역할은 자동차 브레이크처럼 딱 원하는 부분만 실행시키고 멈추게 하는 역할이라고 보시면 됩니다.
If문과 Switch 문의 사용?
그러면 어떨 때 if문을 사용하고 어떨 땐 Switch 문을 사용하게는 게 좋을까요?
일반적으로 if문은 조건이 적을 때 성능이 더 뛰어나고
조건이 많을 땐 switch문의 성능이 뛰어나다고 합니다.
switch 문은 조건이 많아져도 instruction 이 추가로 요구되지 않기 때문입니다.
물론 == 의 비교가 아니라면 switch 문을 쓸 수 없겠지만요.
switch문은 또한 if문에 비해 코드를 한눈에 볼 수 있다는 장점이 있습니다.
Break & Continue
#include <stdio.h>
int main(){
int n;
printf("숫자를 입력해주세요 : ");
scanf("%d", &n);
for (int i = 1; i<=n; i++){
if (i % 2 == 1)
continue;
printf("%3d", i);
}
return 0;
}
숫자를 입력해주세요 : 100
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44
46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98100
--------------------------------
Process exited after 1.421 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
다음 코드를 실행해보면 짝수만 출력됩니다.
if (i % 2 == 1) continue; 이 코드 때문인데요.
Continue를 사용하면 조건식을 강제로 수행하게 됩니다. break와 용례가 반대죠.
또한 Switch에서 continue는 사용하실 수 없습니다.
오늘은 조건문(If, else, switch)에 대해서 알아봤습니다. 이해가 잘되시나요 ㅎㅎ?
요즘은 내용을 최대한 줄이고 액기스만 뽑아내고 있으니 읽으시는데 크게 부담은 없으셨을 거 같습니다.
조건문은 프로그래밍 전반적으로 안 쓰이는 곳이 없으니 확실히 알아두는 것이 좋을 거 같습니다.
다음 편에선 반복을 편하게 해주는 함수(function)에 대해 알아보겠습니다. 감사합니다 ^^
'프로그래밍 강좌 > C' 카테고리의 다른 글
[C언어 강좌] #11 정적변수, 지역변수, 전역변수, 외부변수, 레지스터 변수 (6) | 2020.01.28 |
---|---|
[C언어 강좌] #10 함수(Function) (0) | 2020.01.18 |
[C언어 강좌] #8 반복문(For, While, Do~While, 무한루프, 중첩) (13) | 2019.12.23 |
[C언어 강좌] #7-2 자료형(Data Type) (0) | 2019.11.24 |
[C언어 강좌] #7-1 자료형(Data Type) (0) | 2019.11.19 |