Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 프로그래밍 언어 기초 완벽 가이드: 특징부터 Hello World까지


C++는 1979년 벨 연구소(Bell Labs)에서 비야네 스트롭스트룹(Bjarne Stroustrup)이 개발한 프로그래밍 언어입니다. C++는 고급 언어와 저급 언어의 특성을 모두 갖추고 있어 '중간 수준(middle-level) 언어'로 분류됩니다. C의 상위 집합(superset)이기 때문에, 사실상 모든 유효한 C 프로그램은 그대로 유효한 C++ 프로그램이기도 합니다. 또한 C++는 Windows, Mac OS, 다양한 버전의 UNIX 등 여러 플랫폼에서 실행할 수 있습니다.

C++의 주요 특징

C++는 다음과 같은 특징을 지닌 언어입니다.

  • 정적 타이핑(Statically typed) - 타입 검사를 런타임이 아닌 컴파일 시점에 수행하는 언어입니다.
  • 컴파일 언어(Compiled) - 구현 방식이 인터프리터가 아닌 컴파일러(소스 코드를 기계어로 변환하는 번역기)인 언어입니다.
  • 범용 언어(General-purpose) - 특정 분야에 국한되지 않고 다양한 응용 분야에 폭넓게 적용 가능한 언어입니다. 이는 특정 도메인에만 특화된 DSL(도메인 전용 언어)과 대비됩니다.
  • 대소문자 구분(Case-sensitive) - 식별자나 키워드 등이 대소문자에 따라 서로 다르게 해석됩니다.
  • 자유 형식(Free-form) - 프로그램 코드에서 문자의 위치(들여쓰기, 줄바꿈 등)가 문법적으로 중요하지 않은 언어입니다.
  • 절차 지향 프로그래밍(Procedural Programming) - 프로그램을 재사용 가능한 프로시저(서브루틴, 함수 등) 단위로 구성할 수 있는 명령형 프로그래밍 언어입니다.
  • 객체 지향 프로그래밍(Object-oriented Programming) - 데이터를 담는 필드(속성)와 코드를 담는 프로시저(메서드)를 포함하는 '객체'라는 개념에 기반한 프로그래밍 패러다임입니다.
  • 일반화 프로그래밍(Generic Programming) - 알고리즘을 나중에 지정될 타입으로 작성하고, 필요할 때 매개변수로 제공된 구체적인 타입으로 인스턴스화하는 프로그래밍 스타일입니다.

C++를 배우기로 결심하셨다면, 어디서부터 시작해야 할지 막막하게 느껴질 수 있습니다. 여기서 시작하는 방법을 간단히 정리해 보았습니다.

C++ 컴파일러 설치하기

C++ 프로그래밍 학습을 시작하기 전 가장 먼저 해야 할 일은 컴파일러를 준비하는 것입니다. 주요 운영체제마다 무료로 사용할 수 있는 좋은 C++ 컴파일러가 있습니다. 자신의 플랫폼에 맞는 컴파일러를 다운로드하거나, tutorialspoint.com의 온라인 컴파일러(https://www.tutorialspoint.com/compile_cpp_online.php)를 이용할 수도 있습니다.

  • GCC - GNU에서 만든 여러 컴파일러들의 모음인 GNU 컴파일러 모음(GNU Compiler Collection)입니다. https://gcc.gnu.org/ 에서 다운로드하여 설치할 수 있습니다.
  • Clang - LLVM 커뮤니티에서 배포하는 컴파일러 모음입니다. 모든 플랫폼에서 사용 가능하며, https://clang.llvm.org/get_started.html 에서 다운로드 및 설치 방법을 확인할 수 있습니다.
  • Visual C++ 2017 Community - Microsoft가 Windows용으로 제공하는 무료 C++ 컴파일러입니다. https://www.visualstudio.com/vs/cplusplus/ 에서 다운로드하여 설치할 수 있습니다.

C++ 프로그램 작성하기

컴파일러 설치가 끝났다면 이제 직접 C++ 프로그램을 작성해 볼 차례입니다. 프로그래밍의 대표적인 예제인 'Hello World' 프로그램부터 시작해 보겠습니다. 이 예제에서는 화면에 Hello World를 출력합니다. hello.cpp라는 이름의 새 파일을 만들고 아래 코드를 입력하세요.

예제

#include<iostream>
int main() {
    std::cout << "Hello World\n";
}

이 프로그램을 한 줄씩 자세히 살펴보겠습니다.

첫째 줄 - #include<iostream> 구문으로 시작합니다. 이 구문은 컴파일러에게 iostream 파일(입출력 스트림 관리용 헤더)의 코드를 복사하여 소스 파일에 붙여넣도록 지시합니다. iostream 헤더 덕분에 이 프로그램처럼 결과(Hello World)를 화면에 출력하는 등의 표준 입출력 작업을 수행할 수 있습니다. 해시 기호(#)로 시작하는 줄은 전처리기(preprocessor)가 읽고 해석하는 지시문(directive)입니다.

둘째 줄 - 빈 줄입니다. 빈 줄은 프로그램에 아무런 영향을 주지 않습니다.

셋째 줄 - int 반환형을 가진 main 함수를 선언합니다. main()은 프로그램의 진입점(entry point)입니다. C++ 프로그램을 실행하면 항상 main 함수부터 시작하여 이 함수의 첫 번째 줄부터 마지막 줄까지 순차적으로 실행됩니다. 여기서 여는 중괄호({)는 main 함수 정의의 시작을, 다섯째 줄의 닫는 중괄호(})는 그 끝을 나타냅니다. 두 중괄호 사이의 모든 문장이 main이 호출될 때 실행되는 함수 본문입니다.

넷째 줄 

std::cout << "Hello World\n";

이 줄은 하나의 C++ 문(statement)입니다. 이 문은 세 부분으로 구성됩니다. 첫째, std::cout은 표준 콘솔 출력 장치를 나타냅니다. 둘째, 삽입 연산자(<<)는 뒤에 오는 내용이 std::cout에 삽입됨을 의미합니다. 마지막으로, 화면에 출력하고 싶은 문구가 따옴표 안에 들어 있습니다. C++ 학습을 진행하다 보면 이 부분은 점점 더 명확하게 이해되실 것입니다.

요약하면, cout 객체에 문자열 "Hello world\n"을 전달하여 표준 출력 장치에 출력하도록 하는 것입니다.

이 문장은 세미콜론(;)으로 끝난다는 점에 유의하세요. 세미콜론은 하나의 문장이 끝났음을 표시하는 문자입니다.

프로그램 컴파일하기

프로그램 작성이 끝났다면, 이제 프로세서가 이해할 수 있는 언어, 즉 이진 기계어(binary machine code)로 변환해야 합니다. 이를 위해 첫 번째 단계에서 설치한 컴파일러를 사용합니다. 터미널(cmd)을 열고 cd 명령어로 hello.cpp 파일이 있는 위치로 이동하세요. GCC를 설치했다면 다음 명령어로 프로그램을 컴파일할 수 있습니다.

$ g++ -o hello hello.cpp

이 명령어는 g++ 컴파일러에게 소스 파일 hello.cpp를 사용하여 hello라는 이름의 출력 파일을 생성하라는 의미입니다.

프로그램 실행하기

프로그램을 작성하고 컴파일까지 마쳤다면, 이제 실행할 차례입니다! 다음 명령어로 프로그램을 실행할 수 있습니다.

$ ./hello

출력 결과

실행하면 아래와 같은 결과가 출력됩니다.

Hello world