[잼민이도 이해하는 C언어 강의] 7. 조건문 / #if, #else if, #else
안녕하세요
정고리즘의 정고쌤입니다.
지난 c언어 연산자 강의를 통해
데이터들을 가공하고 연산하는 방법에 대해
학습하였습니다.
데이터를 가공하고 연산하는 것은
연산자와 함께 다양한 문법들을
함께 활용하면
더욱 다이나믹한 결과물을 만들어낼 수 있습니다.
오늘은 그 첫번째 조건문이라는 것에 대해서
알아보도록 하겠습니다.
1. if |
2. else |
3. else if |
4. 중첩된 if문 |
오늘은 조건문이라는
C언어 문법을 알아보겠습니다.
조건문 역시
C계열 언어(C++, C#, C) 뿐만 아니라
Python, JAVA 등 거의 모든 프로그래밍 언어에서
공통적으로 사용되는 기본 문법이므로
꼭 알아두도록 합시다.
1. if
지난 연산자 강의에서 학습하였던
관계 연산자와 논리 연산자를 기억해봅시다.
관계 연산자와 논리 연산자의 연산 결과는
참(1)인지 거짓(0)인지를 확인할 수 있었습니다.
이때 조건문은
참(1)일 때 실행할 내용
거짓(0)일 때 실행할 내용을
지정할 수 있습니다.
아래 코드를 작성해봅시다.
#include<stdio.h>
int main(void)
{
int a,b;
printf("정수 두 개를 입력하시오. ");
scanf("%d %d",&a,&b);
if(a>b)
{
printf("%d가 %d보다 더 큽니다.",a,b);
}
return 0;
}
if문은 이렇게
if와 조건식을 함께 작성합니다.
이때 조건식이란 참 또는 거짓의 결과가 있어야 합니다.
따라서 위 코드 실행 결과처럼
a에 10, b에는 5를 입력했을 경우,
a>b의 연산이 1이므로
if문 아래 { } (중괄호) 내부의 내용이 실행됩니다.
만일 이처럼
a에 5, b에는 10을 입력했을 경우
a>b를 만족하지 않기 때문에 연산 결과는 0이고,
if문 아래의 { } 내용이 실행되지 않아
아무것도 출력되지 않습니다.
if문은 이렇게
조건식에 따라 { } 내용을 실행 할지 실행하지 않을지
결정할 수 있습니다.
{ } 내부에는
예제에서는 한 줄의 문장만을 적었지만
두 줄 이상의 문장을 작성해도 문제가 없습니다.
#include<stdio.h>
int main(void)
{
char s;
printf("성별을 입력하시오.(남:M, 여:W) ");
scanf("%c",&s);
int age;
printf("나이를 입력하시오. ");
scanf("%d",&age);
if(s == 'M' && 20 <= age)
{
printf("당신은 병역판정검사 대상자입니다!");
}
return 0;
}
관계 연사자 뿐만 아니라
논리 연산자도 함께 활용할 수 있습니다.
위 코드에서는 s가 'M'이고, age가 20 이상일 때
실행되는 if문을 작성한 코드입니다.
2. else
if문 식은
참일 때에만 관여할 수 있고,
거짓일 때에는 그저 실행을 안하기만 합니다.
거짓일 때에도 별도의 실행 내용을 작성하고자 할때는
else문을 사용합니다.
아래 코드를 작성해 봅시다.
#include<stdio.h>
int main(void)
{
int a,b;
printf("정수 두 개를 입력하시오. ");
scanf("%d %d",&a,&b);
if(a>b)
{
printf("%d가 %d보다 더 큽니다.",a,b);
}
else
{
printf("%d가 %d보다 작습니다.",a,b);
}
return 0;
}
if문 예제 코드와 동일하지만
else가 추가된 것을 확인할 수 있습니다.
else는 이처럼 if문과 함께 작성할 수 있고,
단독으로는 사용될 수 없습니다.
else는 바로 위의 if문이 거짓일 때가 실행 조건이기 때문입니다.
그렇기 때문에 else에는 조건식이 따로 올 필요가 없습니다.
else 문의 주의할 점은
if(a>b)
{
printf("%d가 %d보다 더 큽니다.",a,b);
}
printf("!");
else
{
printf("%d가 %d보다 작습니다.",a,b);
}
위 처럼 if문과 else문 사이에
어떠한 다른 문장이 끼여서는 안됩니다.
else문은 반드시 if문과 연속으로 사용되어야 합니다.
3. else if
else if의 경우에는
if문과 else문 사이에 작성될 수 있습니다.
if문 조건이 거짓인 경우 중에서
한번 더 조건을 걸고 싶은 경우에 사용할 수 있습니다.
아래 코드를 작성해 봅시다.
#include<stdio.h>
int main(void)
{
int chest;
printf("가슴 둘레를 입력하시오.");
scanf("%d",&chest);
char size;
if(100 <= chest)
{
size = 'L';
}
else if(90 <= chest)
{
size = 'M';
}
else
{
size = 'S';
}
printf("당신의 사이즈는 %c입니다.",size);
return 0;
}
if문에서는 가슴 둘레가 100 이상인 경우에는
사이즈에 L을 저장하도록 하고 있습니다.
else if는 100 이상은 아니지만
90 이상인 경우,
즉, 90 ~ 100 사이인 경우에는
사이즈에 M을 저장하도록 하고 있습니다.
마지막으로 else는 위 조건들을 모두 만족하지 못하는 경우
즉, 90미만인 경우에는
사이즈에 S를 저장하도록 하고 있습니다.
따라서 코드 실행 결과 처럼
92를 입력한 경우에는
else if가 실행되어 사이즈는 M이 됩니다.
#include<stdio.h>
int main(void)
{
int score;
printf("점수를 입력하시오. ");
scanf("%d",&score);
char grade;
if(90 <= score && score <= 100)
{
grade = 'A';
}
else if(80 <= score)
{
grade = 'B';
}
else if(70 <= score)
{
grade = 'C';
}
else if(60 <= score)
{
grade = 'D';
}
else
{
grade = 'F';
}
printf("당신의 학점은 %c입니다.",grade);
return 0;
}
else if는 여러 개를 동시에 사용하여도 문제가 없습니다.
이를 잘 활용한다면
위 코드처럼 다양한 실행 분기를 만들어 낼 수도 있습니다.
4. 중첩된 if문
중첩된 if문이란
if문의 { } 안에
또 다른 if문이 오는 경우를 말합니다.
아래 코드를 작성해 봅시다.
#include<stdio.h>
int main(void)
{
char s;
printf("성별을 입력하시오.(남:M, 여:W) ");
scanf("%c",&s);
int age;
printf("나이를 입력하시오. ");
scanf("%d",&age);
if(s == 'M')
{
if(20 <= age)
{
printf("당신은 병역판정검사 대상자입니다!");
}
}
return 0;
}
먼저 성별이 남성인지 확인하는 조건문을 만족하여
if문 { }이 실행된다면
{ } 내부의 두 번째 if문에 의해 나이가 20세 이상인지를 판단합니다.
이 또한 참이라면 다시 { } 내부의 문장을 실행할 수 있습니다.
이렇게 if문 안에 또 다른 if문이 중첩된 경우를
중첩된 if문이라고 합니다.
뿐만아니라
if( )
{
if( )
{
if( )
{
if( )
{
if( )
{
.
.
.
}
}
}
}
}
if문 안에 if문 안에 if문 안에 if문 안에 if문 안에...
필요에 따라 더 많이 중첩되는 것도 문법적으로 가능합니다.
"아니, 중첩 if문 왜 씀? 논리 연산자 && 쓰면 되는데"
라는 의문을 가질 수 있습니다.
아래의 코드를 작성해봅시다.
#include<stdio.h>
int main(void)
{
char s;
printf("성별을 입력하시오.(남:M, 여:W) ");
scanf("%c",&s);
int age;
printf("나이를 입력하시오. ");
scanf("%d",&age);
if(s == 'M')
{
if(20 <= age)
{
printf("당신은 병역판정검사 대상자입니다!");
}
else
{
printf("Dreams come true");
}
}
else
{
if(20 <= age)
{
printf("군대는 우리가 간다. 누나들은 공부하고 계세요");
}
else
{
printf("군대는 오빠가 간다.");
}
}
return 0;
}
중첩된 if문을 사용하면
이처럼 더 많은 분기를 만들어낼 수 있습니다.
남자이면서 20세 이상인 경우,
남자이면서 20세 미만인 경우,
여자이면서 20세 이상인 경우,
여자이면서 20세 미만인 경우
if문을 적절하게 중첩하여 활용한다면
코드의 질이 더 높아질 수 있습니다.
if(아보카도 있다)
{
우유를 6개 산다;
}
else
{
우유를 1개 산다;
}
if문의 조건문은 잘 설계해야 합니다.
조건문과 실행문 모두 적절하게 설계되지 않는다면
큰 오류를 범할 수 있기 때문에
충분한 설계를 거치고 작성하는 것이 좋습니다.
다음 강의에서는
반복문에 대해서 알아보도록 하겠습니다.
'프로그래밍 > C언어' 카테고리의 다른 글
[잼민이도 이해하는 C언어 강의] 9. 배열과 문자열 / #array,#문자열 (1) | 2022.07.15 |
---|---|
[잼민이도 이해하는 C언어 강의] 8. 반복문 / #while, #for, #do-while (0) | 2022.05.20 |
[잼민이도 이해하는 C언어 강의] 6. 연산자 / #산술연산자, #관계연산자, #논리연산자 (0) | 2022.04.15 |
[잼민이도 이해하는 C언어 강의] 5. 입력하기 / #scanf (3) | 2022.04.09 |
[잼민이도 이해하는 C언어 강의] 4. 변수란? / #변수 (1) | 2022.04.08 |