Vorsprung durch Technik

블로그 이미지

MSNU

C++ 시작 :: 설치 등

myPPT 2014. 12. 12. 12:10




































세상을 먹어 치우는 소프트웨어

• 소프트웨어 기업의 세상

 미국의 대형 서점 보더스 -> 아마존에 대패

 블록버스터(Blockbuster) -> 네플릭스(Neflix)에  대패

프로그래밍과 프로그래밍 언어

• 프로그래밍 언어

 기계어(machine language)

 0, 1의 이진수로 구성된 언어

 컴퓨터의 CPU는 본질적으로 기계어만 처리 가능

 어셈블리어

 기계어의 명령을 ADD, SUB, MOVE 등과 같은 상징적인 니모닉 기호(mnemonic symbol)로 일대일 대응시킨 언어

 어셈블러 : 어셈블리어 프로그램을 기계어 코드로 변환

 고급언어

 사람이 이해하기 쉽고 복잡한 작업, 자료 구조,알고리즘을 표현하기 위해 고안된 언어

 Pascal, Basic, C/C++, Java, C#

 컴파일러 : 고급 언어로 작성된 프로그램을 기계어 코드로 변환

사람과 컴퓨터, 기계어와 고급 언어

프로그래밍 언어의 진화와 C++의 기원

표준 C++ 프로그램의 중요성

• C++ 언어의 표준

 1998년 미국 표준원(ANSI, American National Standards Institute)

 C++ 언어에 대한 표준 설정

 ISO/IEC 14882 문서에 작성됨. 유료 문서

 표준의 진화

 1998년(C++98), 2003년(C++03), 2007년(C++TR1), 2011년(C++11)

• 표준의 중요성

 표준에 의해 작성된 C++ 프로그램

 모든 플랫폼. 모든 표준 C++ 컴파일러에 의해 컴파일

 동일한 실행 결과 보장

 운영체제와 컴파일러의 종류에 관계없는 높은 호환성

• 비 표준 C++ 프로그램

 Visual C++, Borland C++ 등 컴파일러 회사 고유의 비 표준 구문

 특정 C++ 컴파일러에서만 컴파일

 호환성 결여


표준/비표준 C++ 프로그램의 비교

C++ 언어의 주요한 설계 목적

• C 언어와의 호환성

 C 언어의 문법 체계 계승

 소스 레벨 호환성 - 기존에 작성된 C 프로그램을 그대로 가져다 사용

 링크 레벨 호환성 –  C 목적 파일과 라이브러리를 C++ 프로그램에서 링크

• 객체 지향 개념 도입

 캡슐화, 상속, 다형성

 소프트웨어의 재사용을 통해 생산성 향상

 복잡하고 큰 규모의 소프트웨어의 작성, 관리, 유지보수 용이

• 엄격한 타입 체크

 실행 시간 오류의 가능성을 줄임

 디버깅 편리

• 실행 시간의 효율성 저하 최소화

 실행 시간을 저하시키는 요소와 해결

 작은 크기의 멤버 함수 잦은 호출 가능성 -> 인라인 함수로 실행 시간 저하 해소





C 언어에 추가한 기능

 인라인 함수(inline function)

 함수 호출 대신 함수 코드의 확장 삽입

 함수 중복(function overloading)

 매개 변수의 개수나 타입이 다른 동일한 이름의 함수들 선언

 디폴트 매개 변수(default parameter)

 매개 변수에 디폴트 값이 전달되도록 함수 선언

 참조와 참조 변수(reference)

 하나의 변수에 별명을 사용하는 참조 변수 도입

 참조에 의한 호출(call-by-reference)

 함수 호출 시 참조 전달

 new/delete 연산자

 동적 메모리 할당/해제를 위해 new와 delete 연산자 도입

 연산자 재정의

 기존 C++ 연산자에 새로운 연산 정의

 제네릭 함수와 클래스

 데이터 타입에 의존하지 않고 일반화시킨 함수나 클래스 작성 가능

C++ 객체 지향 특성 - 캡슐화

• 캡슐화(Encapsulation)

 데이터를 캡슐로 싸서 외부의 접근으로부터 보호

 C++에서 클래스(class 키워드)로 캡슐 표현

• 클래스와 객체

 클래스 – 객체를 만드는 틀

 객체 – 클래스라는 틀에서 생겨난 실체

 객체(object), 실체(instance)는 같은 뜻

C++ 객체 지향 특성 - 상속성

• 객체 지향 상속(Inheritance)

 자식이 부모의 유전자를 물려 받는 것과 유사

• C++ 상속

 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 가지고 탄생 

C++ 객체 지향 특성 - 다형성

• 다형성(Polymorphism)

 하나의 기능이 경우에 따라 다르게 보이거나 다르게 작동하는 현상

 연산자 중복, 함수 중복, 함수 재정의(overriding)

C ++ 언어에서 객체 지향을 도입한 목적

• 소프트웨어 생산성 향상

 소프트웨어의 생명 주기 단축 문제 해결 필요

 기 작성된 코드의 재사용 필요

 C++ 클래스 상속 및 객체 재사용으로 해결

• 실세계에 대한 쉬운 모델링

 과거의 소프트웨어

 수학 계산이나 통계 처리에 편리한 절차 지향 언어가 적합

 현대의 소프트웨어

 물체 혹은 객체의 상호 작용에 대한 묘사가 필요

 실세계는 객체로 구성된 세계

 객체를 중심으로 하는 객체 지향 언어 적합


절차 지향 프로그래밍과 객체 지향 프로그래밍

C++와 제네릭 프로그래밍

• 제네릭 함수와 제네릭 클래스

 제네릭 함수(generic function)

 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있게 일반화 시킨 함수

 제네릭 클래스(generic class)

 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있게 일반화 시킨 클래스

 template 키워드로 선언

 템플릿 함수 혹은 템플릿 클래스라고도 부름

 Java, C# 등 다른 언어에도 동일한 개념 있음

• 제네릭 프로그래밍(generic programming)

 제네릭 함수와 제네릭 클래스를 활용하여 프로그램을 작성하는 새로운 프로그래밍 패러다임

 점점 중요성이 높아지고 있음

C++ 언어의 아킬레스

• C++ 언어는 C 언어와의 호환성 추구

 장점 

 기존에 개발된 C 프로그램 코드 활용

 단점 

 캡슐화의 원칙이 무너짐

 C++에서 전역 변수와 전역 함수를 사용할 수 밖에 없음

 부작용(side effect) 발생 염려

C++ 프로그램 개발 과정

C++ 프로그램 작성 및 컴파일

• 편집

 C++ 소스 프로그램은 텍스트 파일

 아무 텍스트 편집기로 편집 가능

 C++ 소스 프로그램의 표준 확장자는 .cpp

 C++ 통합 개발 소프트웨어 이용 추천

 C++ 소스 편집, 컴파일, 링킹, 실행, 디버깅 등 모든 단계 통합 지원

 대표적인 소프트웨어 - Visual Studio C++ 10.0

• 컴파일

 C++ 소스 프로그램을 기계어를 가진 목적 파일로 변환

 cpp 파일을 obj 파일로 변환


링킹

• 링킹

 목적 파일끼리 합쳐 실행 파일을 만드는 과정

 목적 파일은 바로 실행할 수 없음

 목적 파일과 C++ 표준 라이브러리의 함수 연결, 실행 파일을 만드는 과정

프로그램 실행과 디버깅

• 실행 파일은 독립적으로 바로 실행 가능

• 실행 중에 발생하는 오류

 원하는 결과가 나오지 않거나 실행 중에 프로그램의 비정상 종료

• 디버깅

 실행 중에 발생한 오류를 찾는 과정

 디버거

 디버깅을 도와주는 프로그램

 컴파일러를 만드는 회사에서 함께 공급

 소스 레벨 디버깅

 C++ 소스를 한 라인씩 실행하고 변수 값의 변화를 보면서 오류 발견

 Visual Studio는 소스 레벨 디버깅 지원

C++ 표준 라이브러리

• C++ 표준 라이브러리는 3 개의 그룹으로 구분

 C 라이브러리

 기존 C 표준 라이브러리를 수용, C++에서 사용할 수 있게 한 함수들

 이름이 c로 시작하는 헤더 파일에 선언됨

 C++ 입출력 라이브러리

 콘솔 및 파일 입출력을 위한 라이브러리

 C++ STL 라이브러리

 제네릭 프로그래밍을 지원하기 위해 템플릿 라이브러리

Visual Studio 10.0 시작

프로젝트 만들기

생성된 프로젝트에 대한 확인 창

Win32 응용프로그램 마법사

Hello 프로젝트 생성 후

새 항목 만드는 메뉴 선택

hello.cpp 소스 파일 생성

hello.cpp 파일이 생성된 초기 모습

hello.cpp 작성

솔루션 탐색기에서 컴파일 메뉴 선택

Hello 프로젝트의 빌드로 Hello.exe 생성

Ctrl+F5(디버깅하지 않고 실행하기 메뉴)로 실행할 때 빌드를 묻는 창

Hello 프로젝트가 실행되는 화면






'myPPT' 카테고리의 다른 글

가족 복지의 이해  (0) 2014.12.21
산출량결정의 단순모형 - 절약의 역설 (paradox of thrift)  (0) 2014.12.16
도요타 -TPS(Toyota Production System) : 「 Just In Time 」  (2) 2014.12.09
거시경제학 기초 개관-분석모형 개관, 여러 학파  (0) 2014.12.08
사회복지법제론  (0) 2014.12.06
Posted by MSNU






favicon

Vorsprung durch Technik

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (993)
    • myPPT (813)
    • 시리즈 (164)
      • 연소 (14)
      • 경제 (5)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바