편집을 취소할 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 게시해주세요.
최신판 | 당신의 편집 | ||
1번째 줄: | 1번째 줄: | ||
{{ | {{쉽게 알 수 있다 시리즈|이 문서는 정말 쉽습니다.|문서의 내용이 너무 쉬워서 오늘부터 프로그래밍 할 수 있을 것 같습니다.}} | ||
{{토막글}} | |||
[[분류:컴퓨터_프로그래밍]] | |||
{{중급 프로그래밍 항목}} | |||
쉬운 프로그래밍에서 파이썬을 배우고 오신 여러분 환경합니다. 지금부터 [[C++]]에 대해서 배우실 차례입니다. | |||
[[C++]]에 대한 설명은 리브레의 C++항목을 보시길 바랍니다. | [[C++]]에 대한 설명은 리브레의 C++항목을 보시길 바랍니다. | ||
본 | 본 항목에서는 파이썬과의 차이점을 들면서 C++을 알려드리겠습니다. | ||
== 개발환경 설치 == | == 개발환경 설치 == | ||
15번째 줄: | 19번째 줄: | ||
sudo apt-get install codeblocks를 입력하여 설치합니다. | sudo apt-get install codeblocks를 입력하여 설치합니다. | ||
=== OSX === | === OSX === | ||
안써서 모르겠어요, 쓰시는 분은 추가바라겠습니다. | |||
=== 코드블럭 실행 === | === 코드블럭 실행 === | ||
[[ | [[File:codeblocks-1.PNG]] | ||
실행을 하면 이렇게 창이 뜹니다. 컴파일러를 선택하라는 창이지만 OK버튼을 눌러 다음으로 넘어 간다. | 실행을 하면 이렇게 창이 뜹니다. 컴파일러를 선택하라는 창이지만 OK버튼을 눌러 다음으로 넘어 간다. | ||
[[ | [[File:codeblocks-2.PNG]] | ||
다음은 소스파일과 프로젝트 파일 확장자를 코드블럭으로 연결할 것이냐는 질문이다.(C/CPP 코드블럭 프로젝트 파일등) | 다음은 소스파일과 프로젝트 파일 확장자를 코드블럭으로 연결할 것이냐는 질문이다.(C/CPP 코드블럭 프로젝트 파일등) | ||
28번째 줄: | 31번째 줄: | ||
다른 컴파일러가 없을 경우 그냥 OK를 누르고, 없을 경우 1번째 체크박스을 선택한 후 OK버튼을 누른다. | 다른 컴파일러가 없을 경우 그냥 OK를 누르고, 없을 경우 1번째 체크박스을 선택한 후 OK버튼을 누른다. | ||
[[ | [[File:codeblocks-3.PNG]] | ||
프로젝트를 생성할 경우 File -> New -> Project를 누르면 된다. | 프로젝트를 생성할 경우 File -> New -> Project를 누르면 된다. | ||
[[ | [[File:codeblocks-4.PNG]] | ||
Console Application을 누르고 OK를 누른다 | Console Application을 누르고 OK를 누른다 | ||
[[ | [[File:codeblocks-5.PNG]] | ||
Next를 눌러 다음으로 넘어 간다. | Next를 눌러 다음으로 넘어 간다. | ||
[[ | [[File:codeblocks-6.PNG]] | ||
C++을 누르고 Next를 누른다. | C++을 누르고 Next를 누른다. | ||
[[ | [[File:codeblocks-7.PNG]] | ||
# 프로젝트 이름 | # 프로젝트 이름 | ||
53번째 줄: | 56번째 줄: | ||
[[ | [[File:codeblocks-8.PNG]] | ||
완료가 되면 다음과 같이 프로젝트와 소스 파일 하나가 생긴다. | 완료가 되면 다음과 같이 프로젝트와 소스 파일 하나가 생긴다. | ||
== Hello, World! == | == Hello, World! == | ||
< | <source lang=cpp> | ||
#include <iostream> | #include <iostream> | ||
66번째 줄: | 69번째 줄: | ||
return 0; | return 0; | ||
} | } | ||
</ | </source> | ||
=== 파이썬과의 차이점 === | === 파이썬과의 차이점 === | ||
우선 너무 달라서 | 우선 너무 달라서 차이점이 없어 보이기는 하지만 몇가지 공통점이 보인다 | ||
# 뭔가 친숙한 문자열인 "(쌍따옴표)가 보인다 | # 뭔가 친숙한 문자열인 "(쌍따옴표)가 보인다 | ||
# 뭔가 int라는 게 보인다. | # 뭔가 int라는 게 보인다. | ||
83번째 줄: | 86번째 줄: | ||
프로그램이 시작되면 main함수가 시작되므로 main함수 안을 보자. 한 문장만이 보인다. | 프로그램이 시작되면 main함수가 시작되므로 main함수 안을 보자. 한 문장만이 보인다. | ||
< | <source lang="cpp"> | ||
std::cout<<"Hello, World!"<<std::endl; | std::cout<<"Hello, World!"<<std::endl; | ||
</ | </source> | ||
std는 standard의 약자이며, cout은 console output이라는 약자이고. endl는 end line의 약자이다. 즉, std::cout은 표준으로 정해진 콘솔에 출력이라는 것이며, std::endl은 줄을 끝낸다, 즉 다음 줄로 넘어간다는 뜻이 된다. | std는 standard의 약자이며, cout은 console output이라는 약자이고. endl는 end line의 약자이다. 즉, std::cout은 표준으로 정해진 콘솔에 출력이라는 것이며, std::endl은 줄을 끝낸다, 즉 다음 줄로 넘어간다는 뜻이 된다. | ||
== 변수== | == 변수== | ||
C++의 변수와 파이썬의 변수는 그 의미와 사용용도는 같지만, 중요한 차이점이 몇가지 있다 | C++의 변수와 파이썬의 변수는 그 의미와 사용용도는 같지만, 중요한 차이점이 몇가지 있다 | ||
93번째 줄: | 95번째 줄: | ||
# C++의 변수는 파이썬의 변수와 달리 한번 정해진 데이터형(변수형)에서 바뀌지 않는다. | # C++의 변수는 파이썬의 변수와 달리 한번 정해진 데이터형(변수형)에서 바뀌지 않는다. | ||
파이썬의 변수는 다음과 같이 선언하면 되었다. | 파이썬의 변수는 다음과 같이 선언하면 되었다. | ||
< | <source lang="python"> | ||
변수 = 1 | 변수 = 1 | ||
</ | </source> | ||
하지만 C++에서 변수는 다음과 같이 선언한다. | 하지만 C++에서 변수는 다음과 같이 선언한다. | ||
< | <source lang="cpp"> | ||
int var = 1 | int var = 1 | ||
</ | </source> | ||
해석을 하자면 다음과 같다. | 해석을 하자면 다음과 같다. | ||
'''int라는 데이터 형인 var이라는 변수를 만들고, 1이라는 값을 넣는다.''' | '''int라는 데이터 형인 var이라는 변수를 만들고, 1이라는 값을 넣는다.''' | ||
한편 이렇게 변수의 선언시 정해진 데이터형에서 다른 데이터형으로 중간에 바뀔 수 없다. | 한편 이렇게 변수의 선언시 정해진 데이터형에서 다른 데이터형으로 중간에 바뀔 수 없다. | ||
=== 데이터형 === | === 데이터형 === | ||
C++는 컴퓨터와 매우 가까운 언어이다. 따라서 컴퓨터의 환경에 따라서 | C++는 컴퓨터와 매우 가까운 언어이다. 따라서 컴퓨터의 환경에 따라서 여러가지가 바뀔 수 있는데, 데이터형이 특히 그러하다. 우선은 32비트를 기준으로 설명한 뒤, 64비트 CPU와 차이점이 있는 데이터형만 추가로 서술한다. | ||
==== 정수형 ==== | ==== 정수형 ==== | ||
가장 많이 쓰이는 데이터형이다. 정수형이란, 소수점 아랫자리가 없는 데이터형을 말한다. 파이썬에서 정수형은 오직 크기가 | 가장 많이 쓰이는 데이터형이다. 정수형이란, 소수점 아랫자리가 없는 데이터형을 말한다. 파이썬에서 정수형은 오직 크기가 하나 밖에 없었지만, C++에서는 그 용도에 맞추어 사용하라는 뜻에서 다양한 크기를 가진 정수형이 존재한다. | ||
{|class='wikitable' style='width:100%;' | {|class='wikitable' style='width:100%;' | ||
|- | |- | ||
131번째 줄: | 133번째 줄: | ||
|style='text-align:center'|-2147483648~2147483647 | |style='text-align:center'|-2147483648~2147483647 | ||
|- | |- | ||
|} | |} | ||
이중 long형의 경우 64비트 기계어로 번역될 경우에는 운영체제마다 그 크기가 다른데, 윈도우의 경우에는 4바이트, 리눅스의 경우에는 8바이트이다. | 이중 long형의 경우 64비트 기계어로 번역될 경우에는 운영체제마다 그 크기가 다른데, 윈도우의 경우에는 4바이트, 리눅스의 경우에는 8바이트이다. | ||
==== 실수형 ==== | ==== 실수형 ==== | ||
실수이란 소수점이 붙은 수를 말한다. 컴퓨터에서 실수를 메모리에 저장할 때는 '''부동 소수점'''표기 방식을 사용한다. | |||
'''부동소수점''' 이란 수학으로 보자면 지수방식으로 실수를 표기하는 것과 같다. 1.123123 x 10^2이런 식으로요, 다만 10^n승이 아니라 2^n으로 표기한다는게 차이점이다. | '''부동소수점''' 이란 수학으로 보자면 지수방식으로 실수를 표기하는 것과 같다. 1.123123 x 10^2이런 식으로요, 다만 10^n승이 아니라 2^n으로 표기한다는게 차이점이다. | ||
157번째 줄: | 152번째 줄: | ||
|- | |- | ||
|} | |} | ||
=== 형변환 === | === 형변환 === | ||
형변환(casting)은 다른 데이터형으로 변환하는 것을 말한다. | 형변환(casting)은 다른 데이터형으로 변환하는 것을 말한다. | ||
217번째 줄: | 209번째 줄: | ||
== <s>예외란 없다</s>Hello, World! == | == <s>예외란 없다</s>Hello, World! == | ||
빈 프로젝트를 생성한 후 소스(.cpp)파일에 다음 내용을 작성한다. | 빈 프로젝트를 생성한 후 소스(.cpp)파일에 다음 내용을 작성한다. | ||
< | <source lang=cpp> | ||
#include <iostream> | #include <iostream> | ||
225번째 줄: | 217번째 줄: | ||
return 0; | return 0; | ||
} | } | ||
</ | </source> | ||
혹은 이렇게도 쓸 수 있다. | 혹은 이렇게도 쓸 수 있다. | ||
< | <source lang=cpp> | ||
#include <iostream> | #include <iostream> | ||
using namespace std; | using namespace std; | ||
238번째 줄: | 230번째 줄: | ||
return 0; | return 0; | ||
} | } | ||
</ | </source> | ||
또는 | 또는 | ||
< | <source lang=cpp> | ||
#include <cstdio> | #include <cstdio> | ||
int main(void) | int main(void) | ||
249번째 줄: | 241번째 줄: | ||
return 0; | return 0; | ||
} | } | ||
</ | </source> | ||
267번째 줄: | 259번째 줄: | ||
따라서 | 따라서 | ||
< | <source lang=cpp> | ||
std::cout<<"Hello World"<<std::endl; | std::cout<<"Hello World"<<std::endl; | ||
</ | </source> | ||
은 다음 문장과 완벽하게 똑같다. | 은 다음 문장과 완벽하게 똑같다. | ||
< | <source lang=cpp> | ||
std::cout<<"Hello World\n"; | std::cout<<"Hello World\n"; | ||
</ | </source> | ||
이쯤에서 cout 앞에 쓰인 std라는 것의 정체가 궁금할 것이다. 이것은 이름공간(name space)라는 것인데, 여러분들이 정의한 객체나 함수가 헤더에 존재하는 것과 이름이 중복된다면 곤란해지므로 이것을 방지하기 위해 만들어진 개념이다. | 이쯤에서 cout 앞에 쓰인 std라는 것의 정체가 궁금할 것이다. 이것은 이름공간(name space)라는 것인데, 여러분들이 정의한 객체나 함수가 헤더에 존재하는 것과 이름이 중복된다면 곤란해지므로 이것을 방지하기 위해 만들어진 개념이다. | ||
312번째 줄: | 304번째 줄: | ||
--> | --> | ||
{{각주}} | {{각주}} | ||