들어가기 |
오늘은 간단한 코드 작성을 통해 C++의 기본 구조와 개념들을 배워봅시다.
오늘의 코드 : Hello World! 출력하시오. |
#include <iostream>
해당 코드는 컴파일러 전처리기 지시자로 화면 입출력을 위해 컴파일러에게 해당 프로그램에 iostream 라이브러리를 포함하도록 합니다. 즉 include 해라, iostream이라는 헤더파일을 이라는 뜻이죠. 여기서 생소한 용어가 여럿 등장했습니다. 컴파일러는 또 뭐고, 헤더파일은 또 뭘까요?
- 컴파일러 : 컴퓨터는 사람이 쓰는 언어를 이해하지 못합니다. 그러나 기계어로 프로그래밍을 하는 것은 여간 쉬운 작업이 아니기 때문에, 기계어로 번역을 해주는 중재자가 필요합니다. 이 역할을 바로 컴파일러가 담당하게 됩니다. 고급언어인 프로그래밍 언어(ex. C++, C, Python, C#, Basic, Java 등)를 이용해 개발자가 소스코드를 작성하면, 해당 프로그램은 컴파일러를 통해 기계어로 번역하는 과정을 거치게 됩니다.
- 헤더파일 : C++ 라이브러리에서는 C++ 프로그램 개발을 위해 미리 정의된 코드가 포함되어 있습니다. 소스코드 상단에 주로 위치하기에 C++ 헤더파일이라고도 부르죠. 위 예제에서는 iostream이 그 예 입니다. 헤더파일은 후에 더 자세히 배우니 현재는 용어 정도 기억해 두는게 좋습니다.
주의할 점은, <와 iostream 또는 iostream과 > 사이에 공백을 집어넣으면 안됩니다. 공백 문자 역시 이름으로 인식해 오류가 발생하므로 반드시 붙여써야 합니다.
using namespace std;
해당 코드는 컴파일러에게 표준 네임스페이스(standard namepspace)를 사용하겠다(using)고 알려 주는 것이며, std는 standard의 줄임말입니다. 쉽게 말하자면, std라는 공간에 등록된 애들을 사용하겠다는 뜻이죠. 프로그램에서는 효율성을 위해 많은 네임스페이스를 사용합니다. 여기서는 cout과 endl이라는 이름이 표준 네임스페이스의 iostream 라이브러리에 정의 되어 있습니다.
즉, cout과 endl을 써먹기 위해 (1) iostream 라이브러리를 추가시키고(#include <iostream>), (2) std라는 이름공간을 갖고 오는 과정(using namespace std;)을 거치는 것이죠.
여기서 잠깐!
위 두개의 소스코드 구조의 차이점을 인지하셨나요? 첫번째 문장에는 #이 포함되어있는 반면, 두번째 문장에는 ;(세미콜론)이 포함되어 있습니다. #는 전처리기에 의해 처리하겠다라는 의미를 내포하고 있습니다. 즉, 프로그램이 컴파일러 되기 전에 처리하겠다는 뜻이죠. 전처리기 지시자 문장 끝에는 ;(세미콜론)을 붙이면 안됩니다. 참고로, C++에서 모든 문장은 문장 종결자인 ;(세미콜론)으로 끝내야 합니다.
int main(){.. }
모든 C++프로그램은 main() 함수로부터 실행 되며, 여기서 많은 작업이 이루어 집니다. int는 자료형으로 함수이름 앞에 붙으면 반환형을 의미합니다. 해당 문장에서는 int라는 자료형을 반환하겠다라는 뜻이 되겠네요. 함수안의 영역은 { } 사이가 되며, 흔히 블록안에 문장들을 작성한다고 합니다. 갑자기 자료형, 함수, 반환 등 생소한 단어들이 등장했으나, 후에 구체적으로 배우게 됩니다.
여기서는 (1) 프로그램 실행을 위한 문장들을 작성하기위해 int main()함수를 호출하고, (2) 대괄호를 열어서 함수영역안에 코드를 작성하는 구나! 정도 이해하면 됩니다.
cout <<"Hello World!"<<endl;
cout은 콘솔 출력을 담당하며, 콘솔화면에 문자열을 출력하는 기능을 수행합니다. << 연산자는 스트림 삽입 연산자로 문자열을 화면으로 보내는 데 사용 됩니다. 연속된 문자로 이루어진 문자열에는 "(큰 따옴표)안에다 적어야 합니다. endl은 엔터와 같은 기능을 하며, 직역하면 마지막 줄을 의미합니다. 화면에 endl을 출력한다는 것은 한 줄을 밑으로 내리겠다라는 것을 의미합니다. ;(세미콜론)은 앞에서 말했듯이 마침표 역할을 합니다.
즉 해당 코드는 cout을 이용하여 Hello World!라는 문장과 endl을 출력하고 있네요!
return 0;
해당 코드는 컴퓨터에게 프로그램을 종료하라고 알리는 역할을 합니다. 여기서 return은 함수의 결과 값을 외부로 반환하는 기능을 하며, 반환과 동시에 함수를 종료하는 기능을 합니다. return을 쓰기 위해서는 반드시 함수 헤더에 반환형을 써야 합니다. main 함수는 int라는 반환형이 있으므로 return을 쓸 수 있는 거죠.
참고로 int는 정수형을 의미하며, 반환형에 int를 썼다는 것은 정수형을 결과 값으로 내놓겠다라는 것을 의미합니다. 따라서 여기서는 0이라는 숫자를 반환하게 됩니다. main 함수의 종료는 프로그램 종료로 이어지므로 0을 반환함과 동시에 프로그램은 종료 됩니다.
정상 작동을 위해서는 반드시 해당 문구를 포함시키는 것을 습관하는게 좋습니다.