마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

2019 수업 노트

2019-1학기 수업 노트 (C++ 프로그래밍 실습, 2019.03.11.)

동동매니저 2019. 3. 11. 20:08

「2019학년도 1학기」 ///

by. 동동매니저 >_<


일자 : 2019년 03월 11일 (월)

과목 : C++ 프로그래밍 실습

담당 교수님 : SCH 한상욱 교수님


실습 내용을 요약해보면?

OT 이후의 첫 수업이기에, C++에 대한 배경 지식을 먼저 학습하였음.

(배경 지식이 풍부한 대학생 vs. 실무 코딩'만' 할 줄 아는 벼락치기 학원생 등...)

2016년 01월, 세계 경제 포럼 회장님께서, 4차 산업 혁명은 우리의 코 앞에 와 있다고 하셨음.

하지만, 대부분의 사람들이 믿지 않았음.

그러나 이로 부터 2달 뒤, 구글 딥마인드에서 '알파고'를 출시하였음.

중국의 커제 9단에게 바둑 대결을 제안했으나 무산되었고, 이로 인하여 이세돌 9단과의 바둑 대결이 성사되었음.

여기에서 4대 1로 알파고가 완승하자, 이제서야 사람들이 그 말을 믿게 되었음.

이 말은 즉, 인공지능이 많이 발전했다는 뜻, 머지않아 많은 직업의 변화도 예상됨.

그리고 인공지능 의사로 알려진 IBM 왓슨은, 특히 당뇨의 합병증을 예측하는 능력으로 유명한데,

이러한 것도 인공지능과 빅데이터가 발전하면서 생기게 된 일이라고 함.

이에 질 수 없이, 구글 딥마인드와 한국에서도 개발에 뛰어들었다고 함.

코딩을 하는 사람보다 설계를 하는 사람의 보수가 뛰어남.

예를 들면, 서버 증설 비용보다 숙련 설계자가 있다면, 비용도 아낄 수 있음.

(갑자기 다른 이야기로 흘러들었네요... 이제 본격적으로 C++에 대한 내용을 적어볼게요~!)

1998년, 미국의 ANSI 표준 C++이 만들어짐. ISO/IEC 14882 문서에도 있다고 함.

C++ 언어는 C언어에 몇 가지의 개념을 더했는데요,

▶ 캡슐화

▶ 상속

▶ 다형성

▶ 기타 등등...

주로 객체 지향적 개념을 추가했다고 보시면 될 것 같습니다.

코드의 재사용성이 높아지고, 유지보수가 쉬워지며, 대형 프로젝트에 적합하다고 합니다.

또한, 네임스페이스의 개념도 도입되었는데요,

소스 코드로 예를 들어보겠습니다.

#include <iostream> // C++에서는 stdio.h가 아닌 iostream을 사용

using namespace std; // std 네임스페이스 사용

// 네임스페이스 선언
namespace A{
	int score=100;
	int FUNC(int a){
		return a/2;
	}
}

// 네임스페이스 선언
namespace B{
	int score=400;
	int FUNC(int a){
		return a/4;
	}
}

// 선언한 네임스페이스 사용
using namespace A;
using namespace B;

// 이 함수의 출력 값은?
int main(void){
	int score=300;
	cout<<"main score : "<<score<<endl;
	cout<<"A score : "<<A::score<<endl;
	cout<<"B score : "<<B::score<<endl;
	cout<<"A FUNC score : "<<A::FUNC(score)<<endl;
	cout<<"B FUNC score : "<<B::FUNC(score)<<endl;
	return 0;
}

이를 실행하면 다음과 같에 출력됩니다.

main score : 300
A score : 100
B score : 400
A FUNC score : 150
B FUNC score : 75

즉, 네임스페이스에 따라 다른 값이 출력되는 것을 알 수 있습니다.

이제 본격적으로 문제를 풀어볼까요?


오늘 실습한 문제!!

▶ 문제 1

사용자로부터 점수를 입력 받아서, 다음 기준에 따라 성적을 출력하는 프로그램을 작성하시오.

– 90~100 : A

– 80~89 : B

– 70~79 : C

– 60~69 : D

– 0~59 : F

– 나머지(음수 포함) : 잘못된 점수입니다.

★ 실행 예시

점수를 입력하세요>>85

B 입니다.


▶ 문제 2

문제 1의 if-else 문을 switch-case 문으로 구현하시오. (힌트 : 점수를 10으로 나눈 몫을 이용할 것!!)


▶ 문제 3

두 정수 a, b를 입력 받아서, a에서 b까지의 정수 합을 출력하는 프로그램을 작성하시오. (단, 작은 수 먼저 입력!!)

★ 실행 예시

두 개의 정수 입력>>3 6

3에서 6까지의 합은 18


▶ 문제 4

문제 3의 for 문을 while 문으로 구현하시오.


▶ 문제 5

문제 3의 for 문을 do-while 문으로 구현하시오.


문제를 풀어보면? (C++ 소스 코드)

★ 문제 1

#include <iostream>

using namespace std;

int main(void){
	int score;
	cout<<"점수를 입력하세요>>";
	cin>>score;
	if(score>100) cout<<"잘못된 점수입니다."<<endl;
	else if(score>=90) cout<<"A 입니다."<<endl;
	else if(score>=80) cout<<"B 입니다."<<endl;
	else if(score>=70) cout<<"C 입니다."<<endl;
	else if(score>=60) cout<<"D 입니다."<<endl;
	else if(score>=0) cout<<"F 입니다."<<endl;
	else cout<<"잘못된 점수입니다."<<endl;
	return 0;
}

★ 문제 2

#include <iostream>

using namespace std;

int main(void){
	int score;
	cout<<"점수를 입력하세요>>";
	cin>>score;
	switch(score){
	case 100: cout<<"A 입니다."<<endl; break;
	case 9:
	case 8:
	case 7:
	case 6:
	case 5:
	case 4:
	case 3:
	case 2:
	case 1:
	case 0:
		cout<<"F 입니다."<<endl;
		break;
	default:
		switch(score/10){
		case 9: cout<<"A 입니다."<<endl; break;
		case 8: cout<<"B 입니다."<<endl; break;
		case 7: cout<<"C 입니다."<<endl; break;
		case 6: cout<<"D 입니다."<<endl; break;
		case 5:
		case 4:
		case 3:
		case 2:
		case 1:
			cout<<"F 입니다."<<endl; break;
		default: cout<<"잘못된 점수입니다."<<endl; break;
		}
		break;
	}
	return 0;
}

★ 문제 3

#include <iostream>

using namespace std;

int main(void){
	int a,b,sum=0;
	cout<<"두 개의 정수 입력>>";
	cin>>a>>b;
	for(int i=a;i<=b;i++) sum+=i;
	cout<<a<<"에서 "<<b<<"까지의 합은 "<<sum<<endl;
	return 0;
}

★ 문제 4

#include <iostream>

using namespace std;

int main(void){
	int a,b,i,sum=0;
	cout<<"두 개의 정수 입력>>";
	cin>>a>>b;
	i=a;
	while(i<=b){
		sum+=i; i++;
	}
	cout<<a<<"에서 "<<b<<"까지의 합은 "<<sum<<endl;
	return 0;
}

★ 문제 5

#include <iostream>

using namespace std;

int main(void){
	int a,b,i,sum=0;
	cout<<"두 개의 정수 입력>>";
	cin>>a>>b;
	i=a;
	do{
		sum+=i; i++;
	}while(i<=b);
	cout<<a<<"에서 "<<b<<"까지의 합은 "<<sum<<endl;
	return 0;
}

수업을 듣고 나서 느낀 점!!

비록 짧은 시간에 C언어를 복습할 겸 해서 5문제를 풀어보았음.

하지만, 2번 문제에서 막혔고, 심지어는 교수님께 여쭤보기까지 하였음.

그래도 5문제를 모두 풀었으니, 기분도 UP!!


기타 참고 사항!!

없음