chapter 1 . C++프로그래밍 언어
C++ = 프로그래밍 언어, "사람의 언어"
컴파일러 = 소스코드를 번역하여 실행 가능한 파일을 작성하는 소프트웨어
컴파일 [ compile ]
①넓은 뜻으로는 원시 언어로 된 프로그램으로부터 그와 동등한 일을 하는 목적 언어로 된
프로그램을 생성하는 작업. 프리프로세싱, 매크로 처리, 어셈블, 좁은 뜻에서의 컴파일 등 모
든 종류의 언어 처리 작업을 총칭한다.
②좁은 뜻으로는 포트란이나 파스칼과 같은 고수준 언어로 작성된 원시 프로그램을 어셈블리
언어나 기계어 등의 저수준 언어로 된 목적 프로그램으로 번역하는 일.
원시 언어 [ source language ]
프로그램을 작성하기 위해 사용되는 언어. 포트란과 같은 고수준 언어 또는 어셈블리 언어
가 이에 속한다. 목적 언어와 대칭되는 용어이다.
목적 언어 [ object language ]
①원시 언어로 작성된 프로그램이 번역되는 언어. 컴파일러나 어셈블러 등 번역 프로그램에 의
해 번역되어 출력된 프로그램 언어로 더 이상의 번역이나 정의 과정을 거치지 않아도 컴퓨터
가 직접 판독할 수 있는 언어이다. 원시 언어와 대칭적인 용어이다.
Visual C++ = 윈도우용 C++ 컴파일로써 대표적인 MS사 제품
톰슨이 1969년 UNIX를 개발 -> 데니스 리치가 C언어 개발 ->1980년 비얀 스트로스트럽dl C++개발
(씨 플러스 플러스)
* Visual C++ 2005의 구성 => IDE + 라이브러리
IDE(Integrated Development Environment : 통합 개발 환경) : c/c++ Compiler + Linker
+ Debugger + Utilites
Library : MFC(클래스 라이브러리) / ATL(템플릿 라이브러리) / .NET Framework
★ VC++ IDE의 코드 편집기의 가장 큰 장점은 인텔리센스(IntelilSense)의 지원이다. 코드를 분석하여
편집을 도와주는 기능.,. 예를 들어 프로그래머가 입력하고 있는 클래스의 멤버 변수나 함수의 목록을
보여주거나 자동으로 완성해 주는 기능, 함수에 필요한 매개 변수를 표시한다.
* 솔루션 탐색기
VC++ 소스코드를 관리하는 기본 묶음 단위는 솔루션이다. 솔루션은 하나 이상의 프로젝트로 구성
되고, 프로젝트는 다시 라이브러리, 리소스, 소스코드로 구성된다.
* 출력창
VC++ 프로그램을 컴파일 할 때 디버그(Debug)와 릴리즈(Release) 모드 중 한가지 옵션을 선택하게 된다.
디버그 모드는 개발할 때, 릴리즈 모드는 프로그램이 완성되어 고객에게 배포할 때 사용한다. 출력 창은
디버그 모드에서 프로그램을 실행할때 그 정보를 출력하는 창이다.
Chapter 2. C++ 프로그램 작성하기
*소스 코드 작성하기
코드를 대/소문자에 유의해서 빠트림 없이 입력하자.
*프로젝트 빌드하기
소스코드를 실행파일로 만드는 일 (대소문자를 확인하고, 세미콜론(;)을 빠뜨리지 않았나 확인하자)
=>소스 코드 분석
#include <iostream>
#include "HelloVCpp.h"
01: using namespace std;
02:
03: //main : 프로그램의 시작점
04: int main()
05: {
06: /*
07: 아래의 문장은 "Hello Visual C++ 2005" 를
08: 화면에 출력한다.
09: */
10: cout << "Hello Visual C++ 2005" << endl;
11:
12: return 1;
13: }
* include
iostream에는 화면이나 파일 등에 문자를 출력하거나 입력 받는 기능이 있는데, HelloVCpp.h를 다시
참조함으로써 iostream의 기능을 HelloVCpp.cpp에서도 쓸수 있게 된다.
#include문은 현재 파일이 포함해야 할 파일들을 참조시킴으로써 소스 코드를 미리 정리하고, 컴파일
러는 #include에 의해 정리된 코드를 컴파일 한다. #include문처럼 컴파일러가 실제 컴파일을 하기전에
처리되는 문장을 "전처리문"이라고 한다. (C++구문과는 다르게 끝에 세미콜론을 붙이지 않는다.)
표준 C++라이브러리에 포함되어 있는 헤더를 참조할 때는 꺾쇠(<>)를, 사용자가 직접 작성한 헤더를
참조할 때는 큰 따옴표(" ")를 사용한다.
* using namespace
코드의 각 요소는 유일한 이름 가져야 하는데, 이 유일한 이름을 식별자(identifier)라고 한다.
C++ 에서는 동명이인을 허락하지 않는다. 네임스페이스(namespace : 이름영역)
같은 이름의 식별자라도 속해 있는 네임스페이스에 의해 구분이 가능하다.
cout 는 std네임스페이스에 속하는 함수인데, using namespace std;를 앞에 사용하지 않으면,
뒤에는 std::cout 이라고 반드시 전체 이름을 코드에 명시해줘야 한다.
(::은 식별자를 찾는 범위를 명시하는 연산자)
* 주석
C++에는 // 외에도 여러줄의 주석을 입력할 수 있는 /* .... */도 있다.
주석은 다른 사람이 내 코드를 이해하게 해줄 뿐 아니라 내 자신이 코드를 관리하는 데에도
아주 중요한 역할을 한다.
* main()
시작점(Entry Point)이라고 하는데 프로그램의 시작을 알린다.
중괄호 {.....}는 코드의 블록을 설정할 때 사용한다.
main()앞에 있는 int는 자신을 실행시킨 프로세스에 돌려줘야 할 결과 값의 형식이 정수라는
것을 뜻한다.
* cout
cout는 화면에 문자를 출력하는 기능. 뒤에 따라 오는 << 연산자가 자신의 뒤에 있는 문자를 출력
할 수 있도록 해준다.
endl은 줄바꿈 문자(new line character)를 출력하는 함수.
연습문제
1. #include는 어느 시점에서 실행되는 구문인가?
A. 프로그램이 컴파일 되고 실행될 때
B. 프로그램이 시작할 때
C. 소스 코드 컴파일 전에
D. 소스 코드 컴파일 중에
2. HelloVCpp 예제에서 HelloVCpp.h를 제거하고 HelloVCpp.cpp만으로 같은 기능을 하는
프로그램을 작성하시오.
#include <iostream>
01: using namespace std;
02:
03: //main : 프로그램의 시작점
04: int main()
05: {
06: /*
07: 아래의 문장은 "Hello Visual C++ 2005" 를
08: 화면에 출력한다.
09: */
10: cout << "Hello Visual C++ 2005" << endl;
11:
12: return 1;
13: }
3. HeloVCpp 예제의 HelloVCpp.cpp 파일에서 using namespace std;를 제거하고 같은 기능을
하는 프로그램을 작성하시오. (힌트: cout과 endl는 std 네임스페이스에 속한 함수들이다.)
#include <iostream>
02:
03: //main : 프로그램의 시작점
04: int main()
05: {
06: /*
07: 아래의 문장은 "Hello Visual C++ 2005" 를
08: 화면에 출력한다.
09: */
10: std::cout << "Hello Visual C++ 2005" << endl;
11:
12: return 1;
13: }