티스토리 뷰
2021.04.16 - [코딩 공부/C 언어] - C 언어 기초 : 연산자 3 - 비트 연산자
안녕하세요~!
3편에 걸친 C언어 연산자 파트가 끝나고 시작되는 조건문 파트입니다.
오늘은 그 중에서도 if문 먼저 알아보겠습니다.
솔직히 여기 배울 때는 참 흥미진진하고 재밌어요 ㅋㅋ
1. 조건문이란? |
우리가 프로그래밍을 하다 보면 좋든 싫든 컴퓨터에게 내가 원하는 조건을 알려줘야 하는 시기가 꼭 옵니다.
평생 scanf와 printf만 쓴다면...
컴퓨터는 바보같이 입력받고 출력하기만 할 수 있을거에요.
하지만 요즘같이 컴퓨터가 잘 나오는 시대에 저것만 시키기엔 컴퓨터가 가진 코어가 너무나 아까워요...!
요즘 컴퓨터는 입력/출력 말고도 더 복잡한 연산도 충분히 할 수 있으니까
좀 더 똑똑한 프로그램을 만들기 위해... 컴퓨터에게 조건이라는 것을 알려주도록 합시다.
초등학생이면 어린이 요금을 받아!
대학생이면 성인 요금을 받아! 와 같은 조건들이요.
하지만 저런 조건들을 컴퓨터에게 알려주려면 그냥 쓰면 못 알아먹고
특정한 키워드를 써야 컴퓨터가 알아듣습니다.
그 때 쓰는 것 중 하나가 if 입니다.
2. 조건문 if |
if문은 if와 함께 쓴 조건식을 평가해서
해당 조건이 참이라면 참일 경우에 실행했으면 하는 문장(종속문장)을 실행하고
거짓이라면 실행하지 않고 다음 문장으로 넘어가는 키워드입니다.
if는 학교 다닐 때 만약 어쩌고 저쩌고~로 배웠던 것과 같은 의미로 쓰인다고 생각하시면 됩니다.
이해를 돕기 위해 그림도 주워 왔습니다.
위와 같은 과정으로 동작합니다.
그럼 비주얼 스튜디오를 켜서 코드를 직접 적어 봅시다.
#include<stdio.h>
void main()
{
int Num = 10;
if (Num % 2 == 0)
{
printf("짝수 입니다.\n");
}
if (Num % 2 != 0)
{
printf("홀수 입니다.\n");
}
}
위와 같은 코드를 쓰고 실행해 봅시다.
복붙하지 마시고 손으로 직접 타이핑 해 주세요~
실행하면 위와 같은 결과를 보실 수 있습니다.
Num을 2로 나눈 나머지가 0이면 짝수라는 뜻이니까 짝수를 출력하고
0이 아니면 짝수가 아닌 홀수라는 뜻이니까 홀수를 출력하라고 했더니 의도대로 잘 출력합니다.
조건문 if의 기본 사용법은 이렇습니다.
별 거 없죠?
* 근데 주의사항이 있어요.
#include<stdio.h>
void main()
{
int Num = 10;
if (Num % 2 != 0);
printf("홀수 입니다.\n");
printf("%d은 짝수임", Num);
}
위와 같이 쓰고 실행해 볼까요?
위 코드를 실행하면 이런 결과를 보실 수 있어요.
Num은 10이라 짝수인데 홀수일 때 실행하라는 문장이 한 줄 실행되었어요.
이 코드에서 문제는 if (Num % 2 != 0); 에서 맨 뒤에 찍은 세미콜론입니다.
if문을 쓸 때엔 조건문 뒤에는 세미콜론을 찍으면 안 됩니다.
세미콜론을 찍으면 컴퓨터는 문장이 끝난 것으로 인식하기 때문에
if (Num % 2 != 0) 조건만 확인하고 끝나버린 것이죠...
그래서 printf("홀수 입니다."); 엔 아무런 조건이 없는 것이 되었기 때문에 멀쩡히 실행된 것입니다.
if문을 쓸 때엔 이것만 주의하시면 됩니다.
if (조건문) 쓴 다음에
{ } 중괄호 안에서 실행할 문장 적기!
#include<stdio.h>
void main()
{
int age;
printf("나이를 입력하시오 : ");
scanf("%d", &age);
if (age < 20)
{
printf("미성년자 입니다.\n");
}
if (age >= 20)
{
printf("성인 입니다.\n");
}
}
이번엔 위와 같이 쓰고 실행해 봅시다.
사전에 저장한 정수 외에도
프로그램 실행 중에 사용자에게서 입력 받은 값에 따른 연산을 수행하도록 조건을 걸 수도 있습니다.
#include<stdio.h>
void main()
{
int Num;
printf("정수 입력 :");
scanf("%d", &Num);
if (Num % 2 == 0)
{
printf("짝수 입니다.\n");
if (Num % 3 == 0)
{
printf("짝수이며 3의배수입니다");
}
}
}
이 코드도 쓰고 실행해 봅시다.
따블(?)로 연산할 수도 있습니다.
재밌죠~~??
근데 코드가 좀 긴 거 같아요.
여기서 짝수이면서 3의 배수만 출력하라는 조건을 처음부터 필터링하도록 만들 수도 있지 않을까요?
#include<stdio.h>
void main()
{
int Num;
printf("정수 입력 :");
scanf("%d", &Num);
if (Num % 2 == 0 && Num % 3 == 0)
{
printf("짝수이며 3의배수입니다");
}
}
짝수이면서 3의 배수만 출력하고 싶다면 위와 같이 조건문을 적을 수도 있습니다.
단, 아까 썼던 코드에서는 짝수일 땐 짝수라고만 출력을 했지만
이렇게 쓰면 3의 배수가 아닌 짝수일 때엔 출력을 하지 않습니다.
&& (AND) 연산자 기억하시죠?
&& 연산자로 연결된 조건들을 모두 만족하는 경우에만 종속문장을 실행합니다.
#include<stdio.h>
void main()
{
int Num;
printf("정수 입력 :");
scanf("%d", &Num);
if (Num % 2 == 0 || Num % 3 == 0)
{
printf("짝수이기도 하고 3의배수이기도 합니다");
}
}
만약 두 조건 중 하나만 만족해도 종속문장을 실행하고 싶다면 || (OR) 연산자를 쓰시면 됩니다.
#include<stdio.h>
void main()
{
int Num1 = 1, Num2 = 0;
if (Num1)
{
printf("참이므로 출력");
}
if (Num2)
{
printf("거짓이므로 출력 안함");
}
}
이 코드도 쓰고 실행해 볼까요?
위와 같은 결과를 보실 수 있어요.
왜 그럴까요?
0과 1로 모든 연산을 하는 컴퓨터에게
0은 거짓이고
1은 참을 뜻합니다.
전깃불을 끄면 아무것도 없으니까 0, 켜면 불 들어왔으니까 1 이라고 생각하시면 됩니다.
그렇기 때문에
int Num1 = 1;
if (Num1)
이라고 쓰면 컴퓨터에게는
if (1) //참참~~
이라고 쓴 것과 같습니다.
컴퓨터에게 1은 참이니까 조건문이 참이 되어 종속문장을 실행한 것이죠.
그럼
int Num2 = 0;
if (Num2)
의 종속문장이 왜 실행되지 않았는지도 이해하실 수 있을 거에요.
if (0) //거짓!
컴퓨터에게 0은 거짓이니까 조건이 거짓이 되어 실행하지 않고 넘어간 것이죠.
참 단순하죠??
이런 점을 잘 활용한다면 구구절절 조건문을 쓰기 보다는 좀 더 있어 보이게 쓰실 수도 있습니다.
오늘 준비한 조건문 if에 관한 내용은 여기까지 입니다.
다음 시간엔 if ~ else에 대해 알아볼 것입니다.
그 전에 오늘 배운 내용을 복습하는 차원에서 간단한 문제를 몇 개 풀어봅시다.
입력한 정수가 3의 배수일 경우 출력하시오. 입력 받은 값의 절대값을 구하시오. 수를 입력 받아 짝,홀수를 구분하시오. 두 수를 입력 받아 큰 수를 출력하시오. 세 수를 입력 받아 가장 큰 수를 출력하시오. (논리연산) 두 수를 입력 받아 큰 수가 짝수이면 출력하시오. 두 수를 입력 받아 합이 홀수이고 3의 배수일 경우 출력하시오. |
오늘 배운 내용으로 충분히 풀 수 있는 문제들입니다.
최대한 구글링 없이 직접 풀어보시면서 if문에 대해 복습하는 시간을 가지시길 바랍니다.
피드백이 필요하시다면 댓글로 남겨주세요!
그럼 예습복습 열심히 하시고 다음 포스트에서 만나요~~!!
'코딩 공부 > C 언어' 카테고리의 다른 글
[C언어 기초] 조건문 switch (0) | 2021.10.16 |
---|---|
[C언어 기초] if ~ else와 else if (0) | 2021.10.10 |
C 언어로 만든 미로찾기 소스 (6) | 2021.04.18 |
C 언어 기초 : 연산자 3 - 비트 연산자 (0) | 2021.04.16 |
C 언어 기초 : 연산자 2 (0) | 2021.04.16 |
- Total
- Today
- Yesterday
- 문제풀이
- 코딩공부
- 아이패드
- c++
- 영어공부
- DFS
- 캐나다생활
- 프로그래머스
- 깊이우선탐색
- BFS
- 하드웨어
- hackerrank
- 기초
- 백준
- greedy
- 너비우선탐색
- c언어
- 애플
- 다이나믹프로그래밍
- dp
- 컴퓨터
- 알고리즘
- 그리디
- 해커랭크
- 컴퓨터사이언스
- 컴퓨터공부
- 프로그래밍
- 스위프트플레이그라운드
- C언어기초
- 캐나다
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |