C++

[강의] 8월 23일 수업정리

k-codestudy 2024. 8. 23. 17:42

오늘은 예제를 풀며 수업을 시작했다. 

 

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