[C++ 시작하기]

 

C++ 프로그램의 세계에 오신 것을 환연합니다!

 

어떤 목적으로 C++을 시작하려는 것인지 각자만의 이유가 있을거라 생각합니다만,

 

C++ 마스터를 위한 출발점은 같습니다.

[ Hello World! 프로그램 ]

 

그럼 C++ 의 첫 예제를 작성하고 실행해 보겠습니다.

 

새로 배우는 언어의 시작에는 전통적으로 Hello World 코드를 사용합니다. 1970년대 후반에 C언어를 창시한 데니스리치와 동료인 커니핸의 'C 프로그래밍 언어' 라는 교재로 부터 내려온 전통이죠.

 

C++의 실행환경은 이전의 포스팅을 참고해서 설치하길 바랍니다.

 

C언어 1 - 1 | 통합개발환경 설치, 온라인 컴파일러

C언어의 첫 시간이다. C언어를 시작하기 위해서는 먼저 개발환경을 설치해야한다. C언어의 소스코드를 실행시키기 위한 과정은 다음과 같다. C언어의 소스코드는 텍스트 편집기로 만든 확장자가

digiconfactory.tistory.com

C++ 를 개발하는 환경인 IDE는 여러 종류가 나와있습니다. Dev C++, Codeblocks 등이 있는데 윈도우에서 C++을 개발하려면 비주얼 스튜디오를 추천합니다. 프로그램을 사용하기 위해 과거에는 돈을 내야 했으나 현재는 학습을 위한 목적으로는 무료 라이선스 버전으로 사용가능합니다. 무료 버전이지만 C++의 문법을 마스터하기엔 충분합니다.

 

* IDE는 아니지만 비주얼 스튜디오 코드도 추천합니다. 요즘은 텍스트 에디터의 기능이 상당히 좋습니다. 단, 설치과정이 다른 IDE에 비교하여 약간 까다로울 수 있습니다.

 

-> IDE를 잘 선택하면 코딩이 쉬워지고 재미있어 집니다. 여러 IDE를 테스트해보고 자신에게 맞는 IDE를 사용하는 것도 중요한 일입니다.

 

하나의 참고사항으로 C와 C++ 개발환경은 보통 함께 설치됩니다. GCC 컴파일러는 C와 C++ 컴파일러가 따로 있고 IDE 를 사용하면 확장자에 따라 C와 CPP를 구분하여 컴파일합니다. C는 C언어, CPP 는 C++ 소스파일 입니다.

 

* 온라인 컴파일러도 사용할 수 있습니다. (그렇게 추천하지 않습니다만 부득이한 경우 사용할 수 있습니다)

예제코드와 해설

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World! C++" << endl;
    return 0;
}

매우 짧은 코드지만 의미를 알고 싶군요.

 

코드를 한줄씩 해석해볼까요?

 

#는 전처리기를 표시합니다. 전처리기란 컴파일이 시작하기 전에 처리하는 기능을 의미합니다.

 

전처리기가 하는 일은 컴파일 하기 전에 필요한 헤더파일을 불러들이거나 상수를 정의하거나 하는 등의 일을 합니다. 아쉽게도 C++을 처음 시작하는 사람이라면 여기에 대하여 많은 것을 설명해주기 어렵습니다. 그래서 대부분 교재에서는 간략하게 설명하고 차후에 충분히 C++에 대한 지식이 쌓였을 때 다시 설명하는 주제입니다.

 

여기서는 iostream 이란 입출력을 사용하기 위한 헤더를 포함하는 일입니다. (라이브러리)

(입력 - 키보드, 출력 - 모니터 처음에 이정도만 알아 둡니다.)

 

다음은 using namespace std가 보입니다. C++ 에서는 namespace 라는 특별한 이름 공간을 사용합니다. 이것을 사용하는 이유는 중복을 피해서 더 많은 이름을 자유롭게 사용하기 위해서입니다. include를 하면서 여러가지 라이브러리를 불러 놓다 보면 이름이 중복되는 경우가 있습니다. 예를 들어 include한 라이브러리에서 number 라는 이름을 누가 이미 사용했을 수 있는데 그것을 모르고 프로그래머가 number 를 사용할 수 있습니다. 그러면 compiler 가 어떤 number 인지 모르죠. 컴파일러는 똑똑한 것 같지만 의외로 단순한 문제에서 실패하기 쉽습니다. namespace에 관한 주제도 차후에 상세하게 다루게 되니 걱정할 필요는 없습니다.

 

 

int main 함수는 C++ 프로그램의 시작점입니다. 모든 C++ 프로그램의 시작점이라고 생각하면 됩니다.

 

cout 은 console output 의 약자이다. 문자열을 모니터에 출력하는 메소드(함수)입니다. 앞으로 콘솔에 문자를 출력할 때 이 메소드를 사용할 것 입니다. 콘솔 출력은 요즘 같은 시대에 쓸모가 없을 것 같지만 GUI 프로그램이나 그래픽 프로그램을 만들 때도 상당히 유용합니다.

 

<< 각괄호는 연산자입니다. push 의 의미로 문자열을 cout 쪽으로 푸쉬하는 연산을 수행합니다. cout 이 ( ) 이런 함수형태가 아니라는 것을 알 수 있죠? ( ) 매개변수를 넣는 것은 함수고 << 이것은 연산자입니다. 연산자와 함수는 비슷하지만 다릅니다. 이러한 내용도 추후 심도 깊게 다뤄집니다.

 

endl 은 end of line의 약자입니다. std 이름공간에서 사용하고 콘솔창에서 다음 라인으로 이동합니다. 쉽게 말해 '\n'과 같은 기능을 합니다.

 

return 0 이란 것은 운영체제에게 프로그램이 무사히 종료되었다는 것을 통보합니다. main 함수의 끝에 도달하면 운영체제의 런타임은 프로그램에 할당했던 자원을 해제하고 프로세스로부터 제어권을 가져옵니다.

 

[약간의 요약과 의견]

 

코드의 줄은 적지만 해설의 양은 많다는 것을 알 수 있습니다. 일부러 많이 늘린 것이 아닙니다. C++은 고수준 언어(high level language)입니다. C++의 하나의 코드에 대응하는 기계어 명령어는 많습니다. C++을 사용하여 CPU를 작동하는 방법에 대한 많은 부분이 생략되어 있습니다. 한편 C++은 중간수준 언어 (middle level language) 라고도 합니다. 하드웨어 레벨까지 내려갈 수 있는 도구를 갖추고 있기 때문이죠. C++이 다른 언어와 다른 점은 하드웨어 수준의 이해가 필요한 부분입니다. 이는 모든 언어의 기본이기도 합니다.

 

C++을 학습에는 필연적으로 컴퓨터 하드웨어의 원리에 대하여 이해가 들어갑니다. 사실 컴퓨터 구조와 원리를 모르면 C나 C++은 제대로 배우기가 힘듭니다. 그래서 C++만 배운다고 해결이 되지 않고 컴퓨터 구조와 운영체제에 원리에 대한 교재를 함께 보기를 권장합니다. 이것이 다른 고수준 언어를 배울 때 보다 C++ 의 학습시간이 길어지는 원인이 됩니다. 투자한 시간대비 빠른 결과물을 보고 싶다면 C++보다는 프론트엔드 언어들이 유리합니다. 이 부분은 C++언어를 시작할 때 염두 해두는게 좋습니다.

 

주석처리 //, /* */

#include <iostream>

using namespace std;
void line();
/* This is mutiple comments
    line is added
*/
int main()
{
    cout << "Hello World! C++" << endl;
    line();
    cout << "You can see the comments in this code " << endl; // This is Comment
    // This is Comment
    return 0;
}
void line()
{
    cout << "-----------------------------------------------" << endl;
}

다음은 주석 처리입니다.

 

C++ 의 주석스타일은 C와 같습니다.

 

한줄 주석은  // 슬래시 두개

    ∟ // 여기서 부터 라인의 끝까지이다. // 앞에는 코드를 배치할 수 있다.

 

여러줄 주석은

 

/*

 

이 사이가 주석입니다

 

*/

 

몇 줄이라도 쓸 수 있습니다.

 

#include <iostream>

using namespace std;

void pause(); // Prototype

int main()
{
    cout << endl << "Item1"
         << endl << "Item2"
         << endl << "Item3" << endl ;
    pause();
    cout << "!" << endl;
    return 0;
}
void pause()
{
cout << "BREAK";
}

처음에는 C++ 의 문자열을 다루는게 익숙하지 않을 수 있는데, 코드로 이것 저것을 놀다 보면 자연스럽게 손에 익을 것 입니다. 일이나 공부라고 생각하지 않고 놀이라고 생각하면 좋습니다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band