202109016_C++_공부기록
선택문에는 (1) if문과 (2) switch case문이 있다.
이번 장에서는 (1) if문을 다룬다.
- 단순 if문
- if - else문
- 다중 if - else문
- 중첩 if문
1. bool 데이터 유형과 연산자
C++ 변수타입 유형에는 정수형, 실수형, bool형, 문자 char형이 있다.
그 중 bool형을 이번 장에서 다룬다.
bool변수 : 부울값(참 또는 거짓)을 갖는 변수
참과 거짓밖에 가지지 않기 때문에 2가지 값을 가진다.
그리고 참과 거짓의 부울값을 리턴하는 수식을 부울식(조건식)이라고 한다.
2. 관계 연산자
연산자 | 수학 기호 | 이름 |
< | < | 보다 작다 |
<= | ≤ | 작거나 같다 |
> | > | 보다 크다 |
>= | ≥ | 크거나 같다 |
== | = | 같다 |
!= | ≠ | 같지 않다 |
* 예제 : bool식 사용
#include <iostream>
using namespace std;
int main()
{
double radius;
cout << "반지름을 입력해주세요 : ";
cin >> radius;
if (radius < 0) //부울식을 사용한 선택문
cout << "음수 입력 불가" << endl;
else
{
double area = radius * radius * 3.14159;
cout << "원의 면적은 : " << area << endl;
}
return 0;
}
//반지름을 입력해주세요 : -3
//음수 입력 불가
3. 단순 if 문
- 단순 if문은 조건이 참일 때만 실행된다.
- 부울식은 괄호로 둘러싸여져야 하며, 실행문장이 하나일 때만 중괄호를 생략할 수 있다.
* 단순 if문 실습1
#include <iostream>
using namespace stdl;
int main()
{
int number;
cout << "정수를 입력하세요 : ";
cin >> number;
if (number % 5 == 0)
cout << "HiFive" << endl;
if (number % 5 != 0)
cout << "HiEven" << endl;
return 0;
}
//정수를 입력하세요 : 98
//HiEven
4. 다중 if - else 문
복수의 조건이 있을 때 if else if else if ··· else 이렇게 쓸 수 있음.
* 다중 if-else 문 (BMI 계산 프로그램) 실습2
#include <iostream>
using namespace std;
int main()
{
cout << "몸무게를 kg으로 입력하세요 : ";
double weight;
cin >> weight;
cout << "키를 m로 입력하세요 : ";
double height;
cin >> height;
double bmi = weight / (height * height);
cout << "당신의 bmi는 " << bmi << endl;
if (bmi < 18.5)
cout << "체중미달입니다" << endl;
else if (bmi < 25)
cout << "정상체중입니다" << endl;
else if (bmi < 30)
cout << "과체중입니다" << endl;
else
cout << "비만입니다" << endl;
return 0;
}
//몸무게를 kg으로 입력하세요 : 52
//키를 m로 입력하세요 : 1.6
//당신의 bmi는 20.3125
//정상체중입니다
5. 중첩 if 문
- if문이나 if - else문은 다른 if문의 내부에 올 수 있으며 이를 중접 if문이라 한다.
- 중첩의 깊이에는 제한이 없다.
//중첩 if문 예시
if (i > k)
{
if (j > k)
cout << "i and j are greater than k";
}
else
cout << "i is less than or equal to k";
6. 선택문에서의 일반적인 오류
- 필요한 괄호의 생략 ex. if 뒤에 연산이 여러개 나오면 전체를 하나로 묶어줘야 함
- 필요한 중괄호({})의 생략 ex. if문 뒤에 한문장이면 괄호 생략 가능인데 아니면 꼭 필수 중괄호
- 잘못된 세미콜론 사용 ex. if문 조건식 뒤에 세미콜론 넣으면 그 사이에 빈 블럭이 있는 것으로 오해
- == 대신 = 사용 ex. ==은 관계연산자 =은 대입연산자
7. 선택문에서 더 나은 표현
조건식 자체가 만약 (조건식)이 참이라면 그 밑에 식을 실행한다 라는 의미이기 때문에 ==true는 안해줘도 됨
==false대신 조건식 앞에 ! 붙여주면 false
쓸데없이 길게 쓰지 말고 한문장으로 표현 가능
bool even = ((number % 2) == 0) -> even이 참일려면 (number % 2) == 0 이여야 한다.
자연스럽게 결과값을 even이 가져감
else는 바로 앞 if를 짝이라고 생각함. 노란색 칠해져 있는 애들끼리 짝임.
만약 노란색으로 칠해져있지 않은 if와 else를 맺고 싶으면 중괄호를 써라.
8.논리 연산자
연산자 | 이름 | 설명 |
! | NOT | 논리 부정 |
&& | AND | 논리곱 |
|| | OR | 논리합 |
9. 단축 논리 연산
- p1&&p2 를 계산할 때, p1이 거짓이면 p2는 계산하지 않고 False로 결과를 출력
p1이 참이라면 p2까지 계산
- p1 || p2 를 계산할 때, p1이 참이라면 p2를 계산하지 않고 True를 출력
p1이 거짓이라면 p2까지 계산
* 논리 연산자 실습3
#include <iostream>
using namespace std;
int main()
{
int number;
cout << "정수를 입력하세요: ";
cin >> number;
if (number % 2 == 0 && number % 3 == 0)
cout << "2와 3으로 나누어짐" << endl;
if (number % 2 == 0 || number % 3 == 0)
cout << "2 또는 3으로 나누어짐" << endl;
if ((number % 2 == 0 || number % 3 == 0) && !(number % 2 == 0 && number % 3 == 0))
cout << "2 또는 3으로 나누어지지만 2와 3 둘 다 나누어지지는 않는다" << endl;
return 0;
}
//정수를 입력하세요: 100
//2 또는 3으로 나누어짐
//2 또는 3으로 나누어지지만 2와 3 둘 다 나누어지지는 않는다
* 윤년 계산 (실습4)
include <iostream>
using namespace std;
int main()
{
cout << "년도를 입력하세요: ";
int year;
cin >> year;
bool isLeapyear = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
if (isLeapyear)
cout << year << "년은 윤년입니다." << endl;
else
cout << year << "년은 윤년이 아닙니다." << endl;
return 0;
}
//년도를 입력하세요: 2021
//2021년은 윤년이 아닙니다.
'School Study > 2021-2' 카테고리의 다른 글
[week 05] C++ 복습_4장 수학함수, 문자, 문자열 (0) | 2021.10.17 |
---|---|
[week 04] C++ 복습_3장 선택문 (2) (0) | 2021.10.16 |
[week 02] C++ 복습_2장 기본 프로그래밍 (0) | 2021.09.30 |
[week 02] 미벡 기초 복습 (벡터와 벡터공간) (0) | 2021.09.29 |
[week 01] C++ 복습 (컴퓨터, 프로그래밍 및 C++ 입문) (0) | 2021.09.23 |