제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 ·...

30
목포해양대 해양전자통신공학부 제 1장. C++ 시작하기

Transcript of 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 ·...

Page 1: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부

제 1장. C++ 시작하기

Page 2: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

학습 목표

C++ 언어의 특징을 알아본다.

간단한 C++ 프로그램을 작성하고, C와 C++의 공통점과 차이점을 비교한다.

C++ 프로그램의 개발 주기를 알아보고, 직접 C++ 프로그램을 작성해본다.

2

Page 3: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C++의 소개

C++의 특징

다른 언어와의 차이점

C++의 응용 분야

C++을 배우기 위한 준비

3

Page 4: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부

C++의 특징 (1)

C와의 호홖성

C보다 개선된 기능 bool 형과 true, false 키워드

(2장) 엄격한 형 검사 (2장) 변수의 문중 선언 레퍼런스(2장) new와 delete 연산자 (6장) 네임스페이스(3장) 함수 오버로딩(2장) 디폴트 인자(2장) 인라인 함수(2장)

4

Page 5: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부

C++의 특징 (2)

객체 지향(Object-Oriented) 프로그래밍

기능

제너릭(Generic)

프로그래밍 기능

5

Page 6: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부

다른 언어와의 차이점 (1)

멀티패러다임

프로그래밍

패러다임(paradigm) 프로그래밍 방법롞.

프로그램하기 위한

접근 방식(approach)

멀티패러다임

프로그래밍 여러 가지 프로그래밍

방법롞을 동시에

지원한다는 의미

6

Page 7: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

다른 언어와의 차이점 (2)

성능 중심

C++은 ‘사용상의 편이성’보다는 ‘성능’에 좀 더 무게를

두고 있다.

C++은 배우기도 어렵고, 사용 시 주의 사항도 많지만

성능이 우수한 프로그램을 만들 수 있다.

강력한 사용자 정의 형(User-defined type) 지원 기능

C++의 내장 형(built-in type)과 거의 동일한 방법으로

사용될 수 있는 사용자 정의 형을 만들 수 있다.

7

Page 8: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C++의 응용 분야

애플 OS X, 심비안 OS, 마이크로 소프트 Windows XP 등의 운영 체제 개발

CORBA 등의 미들웨어 개발

구글 검색 엔짂 등의 검색 엔짂 개발

Photoshop, Illustrator 등의 그래픽 편집 프로그램 개발

그래픽 엔짂이나 CAD 툴 개발

Doom, StarCraft 등의 게임 개발

네트워크, 통싞 장비 개발

모바일, 임베디드 분야

8

성능이나 이식성(portability) 위주의 응용 분야

Page 9: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

첫 번째 C++ 프로그램

9

라이브러리 헤더

기본적인 출력 방법

기본적인 입력 방법

Page 10: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C와 C++의 차이점 (1)

소스 파일의 확장자 C 프로그램의 소스 파일 : *.c 파일

C++ 프로그램의 소스 파일 : *.cpp 파일

10

Page 11: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C와 C++의 차이점 (2)

기본적인 출력 방법 출력 객체인 cout 이용

"cout << 값" 형식으로 출력 정수, 실수, 문자열 출력 가능

연속 출력 가능

iostream 라이브러리 사용 방법

11

cout << "num =" << num << "\n"; cout << "첫 번째 C++ 프로그램입니다." << endl;

#include <iostream> using namespace std;

Page 12: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C와 C++의 차이점 (3)

변수의 선언 C에서는 지역 변수는 반드시 함수나 블록의 시작 부분에서

선언해야 하지만 C++에서는 함수나 블록 내의 어디에서도 변수를 선언할 수 있다.

기본적인 입력 방법 입력 객체인 cin 이용 "cin >> 변수" 형식으로 입력

입력받을 값의 형식 지정할 필요 없음 변수의 데이터 형에 따라 입력

연속 입력 가능

12

int var1; double var2; cin >> var1 >> var2;

Page 13: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C와 C++의 공통점

C++ 프로그램은 main 함수를 갖는다.

프로그램의 짂입 함수(entry point function)

C++ 문장은 세미 콜롞(;)으로 끝난다.

13

int main() { cout << "첫 번째 C++ 프로그램입니다.\n"; return 0; }

Page 14: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

C++ 프로그램 개발

일반적인 C++ 프로그램 개발 과정

C++ 컴파일러

UNIX/LINUX 홖경 : gcc 윈도우 홖경 : Visual C++

14

Page 15: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

gcc를 이용핚 C++ 프로그램 개발

1. 소스 파일 생성 및 편집

2. 컴파일 및 링크

3. 실행

15

Page 16: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual C++을 이용핚 C++ 프로그램 개발

프로젝트 프로그램을 만들기 위해서 사용되는 소스 파일이나 헤더 파일에

대한 정보, 소스 파일을 컴파일할 때 사용될 컴파일 옵션, 오브젝트 파일이나 라이브러리를 링크할 때 사용될 링크 옵션

워크스페이스 프로젝트 관리 모든 프로젝트는 하나의 워크스페이스에 속한다.

16

Page 17: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual C++ 6.0을 이용핚 C++ 프로그램 개발 (1)

프로젝트 생성

17

Page 18: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual C++ 6.0을 이용핚 C++ 프로그램 개발 (2)

소스 파일 생성

18

Page 19: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual C++ 6.0을 이용핚 C++ 프로그램 개발 (3)

소스 파일 편집

19

Page 20: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual C++ 6.0을 이용핚 C++ 프로그램 개발 (4)

빌드

20

Page 21: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual C++ 6.0을 이용핚 C++ 프로그램 개발 (5)

실행

21

Page 22: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual Studio.NET 2003을 이용핚 C++ 프로그램 개발 (1)

프로젝트 생성

22

Page 23: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual Studio.NET 2003을 이용핚 C++ 프로그램 개발 (2)

응용 프로그램 설정

23

`

`

Page 24: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual Studio.NET 2003을 이용핚 C++ 프로그램 개발 (3)

소스 파일 생성

24

Page 25: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual Studio.NET 2003을 이용핚 C++ 프로그램 개발 (4)

소스 파일 편집

25

Page 26: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual Studio.NET 2003을 이용핚 C++ 프로그램 개발 (5)

빌드

26

Page 27: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

Visual Studio.NET 2003을 이용핚 C++ 프로그램 개발 (6)

실행

27

Page 28: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

정리 C++은 C와의 호홖성, 객체 지향 프로그래밍 기능, 제너릭

프로그래밍 기능, 예외 처리 기능 등을 제공한다.

C++은 멀티패러다임 프로그래밍을 지원한다.

C++의 표준 출력에는 iostream 라이브러리의 cout 객체를, 표준 입력에는 cin 객체를 사용한다.

C++의 입출력 라이브러리인 iostream 라이브러리를 사용하려면 #include <iostream>과 using namespace std;가 필요하다.

C++ 프로그램도 C 프로그램처럼 main 함수가 필요하며, main 함수는 세미 콜롞으로 끝나는 하나 이상의 C++ 문장으로 구성된다.

C++ 프로그램을 개발하려면 소스 파일 작성, 컴파일, 링크, 실행 단계를 거쳐야 한다.

Visual C++을 이용해서 C++ 프로그램을 개발하려면 프로젝트 생성, 소스 파일 생성, 빌드, 실행 단계를 거쳐야 한다.

28

Page 29: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

실습과제

Workbook 실습과제 1, 2 Linux 또는 Visual Studio에서 작업

소스 파일과 실행 화면 캡처 한 파일을 한글 또는 다른 워드프로세서를 이용하여 하나로 묶은 후 pdf 파일로 저장

http://cms.mmu.ac.kr/bear에 접속하여 개설강좌->과제제출 해당 과제 찾아 제출

기한 : 9. 15. 자정 (즐거운 추석 연휴가 되기를 !)

Page 30: 제 1장. C++ 시작하기 - mmu.ac.krlily.mmu.ac.kr/lecture/11cpp/ch01.pdf · 2011-09-02 · 목포해양대 해양전자통신공학부 C++의 특징 (1) C와의 호홖성 C다

목포해양대 해양전자통신공학부 목포해양대 해양전자통신공학부

실습과제 과제 #1 (100점)

크기가 10인 정수형 배열을 입력받아서 배열 내용을 출력하고, 합계와 평균을 계산해서 출력하시오.

과제 #2 (200점) 고객 정보를 관리하는 프로그램에서 고객에 대한 정보(이름, 나이,

성별)을 입력받아 고객리스트를 출력한다. 이때 고객은 10명으로 한정.

과제 #3 (500점) 음식점에서 고객의 주문을 받는 프로그램 작성

메뉴 화면에서 음식 종류와 가격 출력

사용자는 메뉴 번호와 수량 선택

동일 메뉴 추가시 합쳐서 출력

주문이 완료되면 주문서 출력 후 처음부터 반복

주문서에는 주문한 음식과 수량, 금액, 그리고 총액 출력