오늘은 예제를 풀며 수업을 시작했다.
1. 성적 계산 프로그램 (if-else문 사용 유무 비교)
int형 점수를 입력받아 ( 단, 0 ~ 100까지 -> 나머지는 없다고 가정)
90 ~ 100 : A, 80 ~ 89 : B, 70 ~ 79 : C , 60 ~ 69 : D, 0 ~ 59 -> F (else문 사용한 거랑 안사용한 거랑 둘 다 같이 정리)
#include <isostream>
int main()
{
int nScore{};
scanf_s("%d", &nScore);
// else문을 사용하지 않음
if(nScore >= 90 && nScore <= 100)
printf("성적 : A");
if(nScore >= 80 && nScore <= 89)
printf("성적 : B");
if(nScore >= 70 && nScore <= 79)
printf("성적 : C");
if(nScore >= 60 && nScore <= 69)
printf("성적 : D");
if(nScore >= 0 && nScore <= 59)
printf("성적 : F");
// else문을 사용
if(nScore >= 90)
printf("성적 : A");
else if(nScore >= 80)
printf("성적 : B");
else if(nScore >= 70)
printf("성적 : C");
else if(nScore >= 60)
printf("성적 : D");
else if(nScore >= 0)
printf("성적 : F");
}
- 읽게 쉽게 문제랑 코드랑 일치하게 코드를 짰다.
- else를 사용하지 않는 경우, 모든 조건을 일이이 검사하게 되어 불필요한 연산이 발생할 수 있다
- else를 사용하여 첫 조건이 만족하지 않다면 자동으로 다음 조건으로 넘어가 검사하므로, 코드가 간결하고 효율적으로 동작한다.
- 즉, 코드 작성 시 분류 체계가 명확하면 else문을 활용하여 걸러지는 값을 잘 생각해 조건을 걸어 사용하면 불필요한 연산이 발생하지 않을 것이다.
- if문을 처음 할 때 구조를 먼저 만들어라라고 했지만 나중에 더 배우게 되면 처음 어떤 코드를 짤지 계획을 세울 때 분류체계가 될꺼같으면 if를 안 써도 무방하지만 아무리 생각해도 분류체계가 안될 거 같으면 if문을 사용할 수밖에 없을 것이다.
2. 삼항 연산자 사용
삼항 연산자는 간단한 조건문을 더 간결하게 표현할 수 있는 방법이다.
int main()
{
int nData1{};
int nData2{};
int nData1 = 10;
// 삼항연산자
nData2 = nData1 == 10 ? 100 : 200;
// if else문
if(nData1 == 10)
nData2 = 100;
else
nData2 = 200;
prtinf("%d\n", nData2);
}
예시코드를 간단하게 짜보았다.
- 삼항연산자는 조건식? 반환값 1 : 반환값 2 / 반환값 1은 참, 반환값 2는 거짓이 들어감.
- nData1 == 10일 때 참이면 100, 아니면 200 값을 nData2에 저장하는 코드, 삼항연산자도 똑같은 결과가 출력이 된다.
삼항연산자를 쓰는 이유는 if문의 코드를 좀 더 간결하게 만들 수 있으나 남용하게 되면 가독성이 떨어지니 단순한 조건식을 간결하게 표현할 때 적절하다고 나와있는데 삼항연산자를 쓰면 간결하고 가독성이 좋아지는데 남용하면 가독성이 떨어지니..
또한 C언어는 보통 한 줄에 한 가지 일을 하는 게 제일 좋다고 하는데 지금 저 위의 삼항연사자는 총 4가지의 일을 하고 있는데 과연 이게 좋은 방식일까?
그래서 내 생각은 차라리 if문을 나눠서 조건문을 정확히 적는 게 더 남이 보기에도 가독성이 좋아 보인다고 생각이 든다.
3. Switch-Case문
Switch-case문은 특정 값(값에 의한 분류체계)에 따라 if보다 분류할 때 유용하다.
int main()
{
int nData{};
scanf_s("%d", &nData);
//if문
if(nData == 1)
printf("A");
else if(nData == 2)
printf("B");
else if(nData == 3)
printf("C");
//switch case문
switch(nData)
case : 1
printf("A");
break;
case : 2
printf("B");
break;
case : 3
printf("C");
break;
default:
break;
}
- nData라는 정수형을 만들어 입력하여 1, 2, 3을 입력받아 각각 A, B, C를 출력하는 코드 (나머지 숫자는 배제)
- switch case문 () 안에 들어있는 값이 조건을 비교하고 싶은 변수를 넣어서 사용
- switch case문 또한 같은 결괏값이 나오고 특정 값에 따른 분류 체계에서 if문보다 간결하고 가독성이 좋다.
- 그러나 실수형 변수를 사용할 수 없으며, 각 case 뒤에 break를 잊지 말고 적어야 한다. 그렇지 않으면 다음 case문으로 넘어가게 되므로 정확한 결괏값이 안 나올 수도 있다.
4. 코드 작성 시 유의사항 및 팁
- 코드의 수명주기는 중요합니다. C++에서는 {}로 범위를 명확하게 구분해 주어야 합니다.
// 이런식으로 작성해야 햇갈리지 않는다.
int main()
{
}
// 이렇게 사용하지 말것
int main() {
}
- 주석을 사용할 때는 영역 주석 단축키 Ctrl + K + C, 주석 해제 단축키 Ctrl + K + U를 활용하면 편리하다.
'C++' 카테고리의 다른 글
[강의] 8월 28일 수업정리 (1) | 2024.08.28 |
---|---|
[강의] 8월 27일 수업정리 (0) | 2024.08.27 |
[강의] 8월 22일 수업정리 (0) | 2024.08.22 |
[강의] 8월 21일 수업정리 (0) | 2024.08.21 |
[강의] 8월 20일 수업정리 (0) | 2024.08.20 |