2013년 7월 11일 목요일

C++ 언어 강의. 1 - 자료형과 변수

정작 C++ 언어를 강의하는 곳은 잘 없더군요 :P

C 언어도 모르시는 분들께: C++ 언어를 하기 위해서는 그 밑바탕이 되는 C 언어를 몰라도 됩니다. 왜냐하면 90% 이상이 C++ 언어에 그대로 왔기 때문이에요. 저는 그 모든 것을 설명할 겁니다. C++ 언어를 하기 위해서는 컴파일러가 필요합니다. 설치하고 와주세요. 오늘 강의는 컴파일러를 이용하지 않기 때문에 지루할 수도 있습니다.

C 언어를 잘 하시는 분들께: 순서가 좀 많이 이상하죠? 저는 원리 위주로 설명할 거에요. 이 부분은 사실상 C 언어와 동일합니다. 이미 다 알고 계실 거라 생각합니다.

C++ 언어를 잘 하시는 분들께: 이 강좌는 초반부에는 C++를 전혀 모르는 사람에게 초점을, C++를 알게 되면 reinterpret_cast 같은 C++ 언어에서만 나타나는 특징을 상세하게 공부할 예정합니다.


우리 컴퓨터는 숫자를 전부 2진수로 저장합니다. 사람이 숫자를 쓸 때는 그냥 쓰면 되죠. π = 3.1415926535897932384626... 하지만 컴퓨터는 저장할 수 있는 메모리에 한계가 있기 때문에 숫자를 더욱 더 엄격하게 나누어서 저장합니다. 우리가 3이라고 쓰면 그건 정수이고 3.14라고 쓰면 그건 유리수입니다. 그런데 컴퓨터는 정수 3을 쓴 자리에다 (정수가 아닌) 유리수인 3.14를 쓸 수는 없습니다. 왜냐하면 엄격하기 때문이지요.

이렇게 엄격한 컴퓨터를 따라 C++ 언어도 엄격합니다. 프로그램의 특성상 조건에 맞는 여러 변수가 필요한데, 실제로 필요한 것이 정수뿐이라면 그 변수를 애초부터 유리수라고 정의할 필요가 없습니다. 심지어 컴퓨터는 화면에 표시할 문자열도 변수로서 가지고 있어야지만 동작합니다. 이러한 정수, 실수, 문자열과 같은 것을 자료형이라고 합니다.

우리 C++ 언어에서는 정수를 int, 실수를 float 또는 double, 문자열을 string이라고 합니다(실수 자료형 중에서 float는 double보다 표현 범위가 좁습니다. π를 예로 들면 double에서는 14자리를 표현할 수 있고 float는 7자리까지만 정확하게 표현할 수 있습니다.).

C++ 언어에는 명령문이 있습니다. '이러이러한 것을 해라' 하고 명령하는 문입니다. C++ 언어는 다른 것과 이들을 구별하기 위해 모든 명령문의 끝에는 ;(세미콜론)을 붙이라는 규칙을 세웠습니다. 명령문 자체에는 ;이 없지만 명령문이 혼자 쓰였다면 반드시 끝에 ;을 붙여야 합니다. 또한 아무것도 없는 코드는 아무것도 하지 말라는 명령문이기 때문에,  
1: ;
는 '아무것도 하지 말고 넘어가시오'라는 뜻입니다. 이것은 나중에 빛을 발할 것입니다.

변수는 자료형으로 표현되는 값을 저장하는 것입니다. 우리는 그 값을 얼마든지 바꿀 수 있습니다(물론 예외사항이 있긴 합니다.). C++에서의 변수 선언은 이렇습니다:
1: <자료형> <변수이름>
여러 개의 변수를 한꺼번에 선언하고 싶으면
1: <자료형> <변수이름1>, <변수이름2>, ...
이런 식으로 입력하면 됩니다. 이들이 명령문이라서, 끝난 이후에는 반드시 ;을 붙여야 합니다. 이를테면 정수형 score을 선언하는 것은 다음과 같습니다:
1: int score;
정수를 선언하는 것이 당연하듯이 실수를 선언하는 것도:
1: double pi;
이렇게만 선언해 주면 됩니다. 이 때 pi에는 어떤 값이 들어갈까요? 아무 값도 들어가지 않습니다. 대부분의 컴파일러들은 0을 넣어줍니다. 하지만 Microsoft 컴파일러의 경우 모든 바이트를 204로 채우기 때문에 -92, 559,631,349,317,830, 736,831,783,200,707, 727,132,248,687,965, 119,994,463,780,864.000000이라는 괴상한 값이 나옵니다. 따라서 변수에는 적절한 초기화가 필요합니다. 변수는 선언과 동시에 초기화가 가능합니다:
1: double pi = 3.14159265358979;
이렇게 하면 실수 pi를 선언하는데 그 값을 3.14159265358979인 π 값으로 한다는 것입니다. 이제 우리는 알고 있는 자료형으로 여러 변수를 선언할 수 있습니다:
1:  int a, b, cplusplus = -1;
2: double pi = 3.14159265358979;


이 시간에서는 자료형과 변수의 개념과 변수의 선언 방법에 대해서 배웠습니다. 배운 것을 정리해 보겠습니다(빨간색으로 된 것을 이어붙입니다.).
엄격한 컴퓨터를 따라 C++ 언어도 엄격합니다. 정수, 실수, 문자열과 같은 것을 자료형이라고 합니다. C++ 언어에서는 정수를 int, 실수를 double이라고 합니다. 명령문이 '이러이러한 것을 해라' 하고 명령하는 문입니다. 명령문 자체에는 ;이 없지만 명령문이 혼자 쓰였다면 반드시 끝에 ;을 붙여야 합니다. 변수는 자료형으로 표현되는 값을 저장하는 것입니다. C++에서의 변수 선언:
1: <자료형> <변수이름>
변수에는 적절한 초기화가 필요합니다. 초기화:
1: double pi = 3.14159265358979;
이상으로 마치겠습니다. 궁금한 점이 있으시면 댓글을 달아 주세요. 수고하셨습니다.
많이많이 퍼뜨려주세요(물론 링크를요)!