2012.03.24 23:55
주로 윈도우에서 이클립스로 자바 프로그래밍만 해왔는데, 리눅스에서 c++프로그래밍을 배워야 하는 새로운 즐거움이 생겼음.

1. vim 배우기
인터넷 검색하면 단축키라든가 사용법이 많이 나와있으나, 
사수님이 빌려주신 손에 잡히는 Vim, 김선영 지음, 인사이트,
이 책이 초보도 읽기 쉽게 잘쓰여 있음.

2. 간단한 g++ 사용법
g++ -W -Wall -O2 -o file src1.c src2.c 
bluekyu 님의 리눅스에서 기본적인 C 또는 C++ 컴파일 하기 참조.

3. screen 사용법
screen -S mysession 
screen 기본 사용법
참조.

4. 코드에서 들여쓰기하기
나중에 좀더 자세히 알아보고 (소스코드에서의 들여쓰기와 탭 관련 문의 이런 글이라든가)
일단은 스페이스 네번.







 
Posted by 나야

댓글을 달아 주세요

2010.01.31 16:26
3장부터는 좀 속도를 내기로 했습니다.

우선 정수 형식에 대한 코드입니다.
실행해보면,
1:2
2:4
3:8
4:16
5:32
6:64
7:128
8:256
9:512
10:1024
11:2048
12:4096
13:8192
14:16384
15:32768
16:65536
17:131072
18:262144
19:524288
20:1048576
21:2097152
22:4194304
23:8388608
24:16777216
25:33554432
26:67108864
27:134217728
28:268435456
29:536870912
30:1073741824
31:2147483648
32:4294967296
33:8589934592
34:17179869184
35:34359738368
36:68719476736
37:137438953472
38:274877906944
39:549755813888
40:1099511627776
41:2199023255552
42:4398046511104
43:8796093022208
44:17592186044416
45:35184372088832
46:70368744177664
47:140737488355328
48:281474976710656
49:562949953421312
50:1125899906842624
51:2251799813685248
52:4503599627370496
53:9007199254740992
54:18014398509481984
55:36028797018963968
56:72057594037927936
57:144115188075855872
58:288230376151711744
59:576460752303423488
60:1152921504606846976
61:2305843009213693952
62:4611686018427387904
63:9223372036854775808
64:0

Signed Integer Type
short values can be -32768~32767 (2 bytes)
int values can be -2147483648~2147483647 (4 bytes)
long values can be -9223372036854775808~9223372036854775807 (8 bytes)

Unsigned Integer Type
unsinged short value can be 0~65535 (2 bytes)
unsigned int value can be 0~4294967295 (4 bytes)
unsigned long value can be 0~18446744073709551615 (8 bytes)

Character Type
CHAR_BIT: 8 bits
char value can be -128~127 (1 bytes)
signed char value can be -128~127 (1 bytes)
unsinged char value can be 0~255 (1 bytes)

커널버전은 2.6.31 이라고 나오고, x86_64인데, 현재 64bit로 컴파일하고 있는지, 32bit로 컴파일하고 있는지도 모르겠습니다. 저는 beginner입니다.

에, 다음은 overflow에 대한 얘기가 쓰여 있는데, 빙글빙글 돌고도는군요

다음은 int와 char 에 대한 형변환 얘기도 있는데, cout이 입력되는 데이터의 형식에 따라 다르게 행동해서 알아두어야 할 필요도 있을 것 같습니다. 예를 들면, 10진수 65가 int에 들어 있으면, cout이 65를 출력하고, char에 들어있으면 A를 출력하는 식이죠.

변수이름에 \u로 escape한 unicode를 쓸 수 있다고 하는데, 일단 패스패스.

int와 char가 signed 인지 unsigned 인지는 구현에 따라 달라진다고 써있네요.

그 다음에, bool 형식에 대한 얘기가 나와있는데, 자바에서는 true는 true고, false는 false 일 뿐이었는데, c++에서는 bool  형식에  0을 할당하면 false가 할당되고, 0이 아닌 값을 할당하면 true가 할당되는, 또 int 형식 변수에 true를 할당하면 1값을 갖게 되고, false를 할당하면 0값을 갖게 되는... 좀더 복잡하게 프로그램을 짤 수 있게 되어있네요.

다음은 const Qualifier(수식어?)에 대한 얘기가 나오는데,  #define을 사용하는 대신 const를 사용하면 변수 형식을 지정할 수 있고, 제한된 범위 내에서 사용할 수 있는 등의 장점이 있다고 합니다~

이제 드디어 부동소수점이네요.

실행한 결과는~
The following are the minimum number of significant digits
FLT_DIG: 6
DBL_DIG: 15
LDBL_DIG: 18

The following are the number of bits used to represent the mantissa
FLT_MANT_DIG: 24
DBL_MANT_DIG: 53
LDBL_MANT_DIG: 64

The following are the maximum and minimum exponent values
FLT_MAX_10_EXP: 38
DBL_MAX_10_EXP: 308
LDBL_MAX_10_EXP: 4932
FLT_MIN_10_EXP: -37
DBL_MIN_10_EXP: -307
LDBL_MIN_10_EXP: -4931
floating point number에 대한 용어가 잘 기억이 안납니다. mantissa 가 뭘까요?
지금 Floating point 를 보니, 부동소수점 자체가 잘 기억이 안나므로 나중에 천천히 보도록 하고 일단 패스패스.

뒤에 Type Conversion 얘기가 나오는데,  Type Conversion 을 실제로 쓸 때 읽어보기로 하고 패스~

 Chapter 3. 는 너무 대충대충 넘어가네욥.

남은 내용...
CH4. Compound Types
CH5. Loops and Relational Expressions
CH6. Branching Statements and Logical Operators
CH7. Functions: C++'s Programming Modules
CH8. Adventures in Functions
CH9. Memory Models and Namespaces
CH10. Objects and Classes
CH11. Working with Classes
CH12. Classes and Dynamic Memory Allocation
CH13. Class Inheritance
CH14. Reusing Code in C++
CH15. Friends, Exceptions, and More
CH16. The string class and the Standard Template Library
CH17. Input, Output, and Files
+ floating point



이번 장의 영어

humidity
- These plants need heat and humidity to grow well (Naver 영어사전)

Constitution
Constitution and its relative frequency, or the number of available Elvis impersonators. (본문)
사실 본문 중에서 데이터의 예로 들고 있는 문장인데, 해석이 되지 않아서 다시 보니
the most common letter in the U.S. Constitution and its relative frequency,
라는 문장이네요.


Posted by 나야

댓글을 달아 주세요

2010.01.31 02:07
C++을 너무 모르는 것 같아서 다시 기초를 좀 쌓기로 생각하고,
책을 하나 구입했습니다. C++ Primer Plus.

실습환경은 우분투 9.10, Eclipse 3.5 + CDT 입니다.
CDT를 사용하기 위해서는
Eclipse 사이트에서 CDT가 포함된 이클립스 배포본을 다운받아도 되고,
Help->Install New Software 에서 설치해도 됩니다.



현재 우분투에 설치되어 있는 GTK에 버그가 있는지 SWT에 버그가 있는지,
어쨌든 GTK를 사용하는 이클립스의 버튼들이 작동하지 않습니다.
단축키를 사용하면 누를 수 있습니다. Next 버튼의 경우 N키를 누르면 됩니다.
어쨌든 CDT를 설치하고, 이클립스를 재시작하고 나서 Perspecitve를 바꾸려고 하니
버튼이 눌리지 않는데, OK 버튼에 단축키가 없습니다.



그냥 C/C++을 더블클릭하면 됩니다.
이제 Perspective를 바꾸고 c++ 프로젝트를 생성했습니다.



전 c++ Beginner 이므로 Hello World C++ Project를 만들었습니다.

그런데 Build가 되지 않아서 보니 g++ 패키지가 설치되어 있지 않습니다.
그래서 다시 g++ 관련 패키지를 설치했습니다.

Project -> Build All(Ctrl+B) 하고,
Ctrl+F11 하면 실행을, F11하면 디버깅을~


아주 간단한 HelloWorld.cpp 입니다.
아주 간단하지만 Java에만 익숙한 저에게는
<< 연산자에 대한 Overloading 이 좀 생소합니다.
이 연산자가 어떻게 정의되어 있는지 보고 싶어서
/usr/include/c++/4.4/iostream 과 ostream 등의 파일을 열어봤지만
Beginner인 저에게는 외계어일뿐.
어쨌든 잘 실행되었습니다.

여기서 잠깐 42 페이지의 C++ Source Code Style을 보고 가죠~
저에게는 번역서가 없어서 옳은 해석인지 알 수 없습니다.
One statement per line
한 줄에는 한 문장만 쓰기
An opening brace and a closing brace for a function,
each of which is on its own line
함수를 위한 열고 닫는 괄호는 별도의 줄에 쓰기
Statements in a function indented from the braces
함수 안의 문장들은 괄호에서 들여쓰기
No whitespace around the parentheses associated with a function name
함수 이름과 연관된 괄호 주위에 공백 넣지 않기
짧은 영어 실력 때문에 번역판'도' 사고 싶어 지네요.
그러나 교보문고에서 삼만 육백원이나 하네요.
그럼, 다음 예제는 p.43의 carrots.cpp 응용(이라고는 하지만 같은 예제)
이 예제를 c프로젝트를 만들어 다음과 작성해보면, 이와 같은데,
아무런 문제없이 빌드되고 실행됩니다.
얼마전에 급 C공부하려고 Visual Studio 2008에서 콘솔 C프로그램 만들었을 때는 변수 선언은 모두 가장 먼저 해야 했던 것 같은데...

어쨌든 C++에서는 다음과 같은 팁이 있다고 합니다.
The C++ style for declaring variables is to declare a variable as close to its first use as possible
변수가 처음 사용되기 직전에 변수를 선언해주세요~

- cin 사용하기
- cout 사용할 때 문자열 병합하기
- cin과 cout, 클래스와의 첫만남
- functions
등등등...

별 내용은 없고,

'using' 지시어에 대한 얘기가 나오네요~
main을 포함한 함수 안에서 사용되면
그 함수 안에서는 그 네임스페이스를 사용할 수 있다네요.

<Review Question>
1. 씨쁠쁠 프로그램에서 모듈을 뭐라고 부를까요?
function?
2. 다음의 전처리 지시기는 뭘하는 걸까요?
#include <iostream>
... iostream에 정의된 데이터타입과 함수를 쓰겠어요~라는 의미?
3. 다음의 문장은 뭘하는 걸까요?
using namespace std;
... cin과 cout을 쓰겠어요.
4. "Hello, world" 와 줄넘김을 표시하는 문장을 작성하세요~
cout << "Hello, world" << endl;
등등등~


뒤에 Programming Execises 에는 두번째 장이라서 그런지 별로 재밌는 문제는 없네요.

자 이제 C++의 첫발을 내딪었습니다.
앞으로 남은 부분은
CH3. Dealing with Data
CH4. Compound Types
CH5. Loops and Relational Expressions
CH6. Branching Statements and Logical Operators
CH7. Functions: C++'s Programming Modules
CH8. Adventures in Functions
CH9. Memory Models and Namespaces
CH10. Objects and Classes
CH11. Working with Classes
CH12. Classes and Dynamic Memory Allocation
CH13. Class Inheritance
CH14. Reusing Code in C++
CH15. Friends, Exceptions, and More
CH16. The string class and the Standard Template Library
CH17. Input, Output, and Files

사실 뭔가 많이 남아있는 것 같지만, Java 기초책, 예를 들면, 열혈강의 자바 요런 책 한번 쭉 보는 거나 별 다를 바 없다는 생각을 갖고~하루에 한장씩~후딱 끝내버리겠슴다!

(씨언어책 이틀보고 면접보러 갔더니 면접관 표정이 별로 좋지 않았다는)



(바로 위 달력 그림은 Daum 캘린더 캡쳐해서 사용했습니다)

이번 장의 영어.
Stripped of the trimmings: ?
p.31 Stripped of the trimmings, the sample program shown in Listing 2.1 has the following fundamental structure

prevalent
The current prevalent philosophy is that it's preferable to be more discriminating and limit access...
- 본문 중에서
These prejudices are particularly prevalent among people living in the North.
- Naver 영어사전

myriad
C++ programmers are blessed (or cursed) with myriad options ...
- 본문 중에서
Designs are available in a myriad of colours
- Naver 영어사전

* 그나저나 이 스킨을 아이팟 터치에서 보니 레이아웃이 깨지네요~ 쓰읍


Posted by 나야

댓글을 달아 주세요