CodeBlock 무료툴 사용 방법



CodeBlock은 C, C++ 무료 IDE TOOL 이다.

CodeBlock 설치, 설정, 실행 순으로 하나씩 알아가보도록 하겠다.



CodeBlock 설치


1. 싸이트 접속한다.

    http://www.codeblocks.org/



2. 싸이트 좌측에 Downloads를 클릭 한다.



3. 싸이트 중간에 Download the binary release를 클릭 한다.




4. 싸이트 중간에 codeblocks-16.01mingw-setup 옆에 Sourceforge.net을 클릭 한다.

    ※codeblocks-16.01mingw-setup 로 하지 않으면 mingw를 따로 설치 해야 하기 때문에 해당 설치 파일을 받는다.



5. 다운이 완료되어 설치 파일을 실행 하면 아래와 같은 화면이 나온다.

    Next 버튼을 눌러 설치를 진행 한다.



6. I agree 버튼을 눌러 설치를 진행 한다.



7. 설치 목록은 수정하지 말고 Next 버튼을 눌러 설치를 진행 한다.



8. 설치가 진행 중이다.



9. 설치가 완료 되고 지금 실행 할거냐는 물음에 '예' 버튼을 누른다.





CodeBlock 설정


1. CodeBlock이 실행되면 우측 메뉴 중 Settings를 누른다.

    하위 목록 중 Compiler...를 선택 한다.



2. Toolchain executables 탭을 선택 한다.

   Auto-detect를 하면 MinGW가 설치된 곳을 찾는다.

   확인 버튼을 누른다.

   ※ 설치할 때 MinGW를 포함한 설치 파일로 하지 않았을 경우 재 설치 혹은 MinGW를 따로 설치해 준다.



CodeBlock 실행


1. 새로운 프로젝트를 만들어 실행해 보자

    File -> New -> Project 순으로 선택 한다.



2. Console application -> Go 순으로 선택 한다.



3. Next를 선택 한다.



3. C 선택 -> Next 선택 한다.



4. Project title을 입력한다. ( 임의로 입력해도 된다. )



5. Finish를 선택 한다.



6 프로젝트 파일 목록 창과 소스파일 창이 출력 된다.

   기본적으로 실행 할 수 있도록 코드가 만들어져 있다.

   메뉴 중간에 ▶ 버튼을 눌러 실행해 본다.



7. 아래와 같이 Hello world!가 출력 된다.




반응형

바이트 순서


CPU 종류 마다 데이터를 저장하는 방법이 다르다.

CPU는 데이터를 메모리에 저장을 한다. 

CPU 마다 데이터 순서를 순방향, 역방향 두 가지 방식으로 저장한다.

순방향 => 빅 엔디안   ( Big Endian )

역방향 => 리틀 엔디안( Little Endian )

사실 순방향, 역방향 이라는 말은 없다. 

설명하기 쉽게 하려고 필자가 만든말이니

이글을 읽는 분은 (빅,리틀) 엔디안만 기억해주기 바란다.


2진수 표현식으로 알아보는 바이트 순서


바이트 순서를 말하기 앞서 바이트가 뭔지 알아야 한다.

1byte = 8bit 이다.  1bit는 0과 1로 구성 되어 있다.

1byte는 00000000 이렇게 표현 가능하다.

정수는 4byte이다. 정수를 bit로 표현하면 다음과 같다.

00000000 00000000 00000000 00000000

정수1은 다음과 같이 표현이 가능하다.

00000000 00000000 00000000 00000001

이우리는 정수1이 CPU마다 어떻게 저장 되는지 알아보겠다.


 Big Endian

 Little Endian 

 00000000 00000000 00000000 00000001

 00000001 00000000 00000000 00000000

 순방향, 읽기 좋은 방향

 역방향, 읽는 순서가 바뀐 방향



메모리 저장 방식으로 알아보는 바이트 순서


CPU 가 메모리에 저장하는 순서를 알아보겠다.

'abcd' 를 저장하는 예를 들어보겠다.

영문은 1byte의 공간을 차지 한다. 메모리 한 블록당 1byte씩 저장한다고 가정 한다.



[BIG Endian]


 a

 b

 c

 d




[Little Endian]


 d

 c

 b

 a




메모리 주소와 바이트 순서

한가지 예를 더 들도록 하겠다. 이번 예는 좀 더 어렵다.

메모리 0x01번지를 시작하는 4바이트 int 정수 0x12345678을 넣도록 하겠다.


4바이트이기 때문에 메모리는 다음과 같은 번지수를 사용한다.


 0x01

 0x02

 0x03

 0x04

작은 번지 수에서 큰 번지수 값을 가진다.


그럼 정수 0x12345678의 최상위 바이트는 0x12이며 최하위 바이트는 0x78이다.


 빅 엔디안   ( Big Endian )

  상위 바이트 값을 작은 번지수에 저장

 리틀 엔디안( Little Endian )

  상위 바이트 값을 큰 번지수에 저장   



[BIG Endian]


  0x01

 0x02

  0x03

  0x04

  0x12

 0x34

  0x56

  0x78



[Little Endian]


  0x01

  0x02

  0x03

  0x04

  0x78

  0x56  0x34  0x12



메모리 저장 순서로 인한 송수신 문제와 해결방법


A,B라고 불리는 두 개의 시스템이 있다. 

서로 데이터를 송수신을 하는 프로그램을 구축했다.

하지만 각각 시스템은 서로 다른 CPU를 사용하여 바이트 저장 순서가 다르다.

그래서 데이터를 송신하면 받는 쪽에서 처리가 불가능 하다.


A시스템에서 0x12, 0x34라고 보냈다. 

B시스템은 0x34, 0x12라고 해석하여 개발자가 의도한데로 동작을 하지 않는다.


[해결방법]

네트워크를 통해 전송할 때는 빅 엔디안 방식으로 통일해서 보낸다.

내 CPU와 상관없이 무조건 송신하기 전에는 빅엔디안으로 보내고 받는쪽에서는 빅엔디안에서 받는쪽 CPU에 맞는 바이트 순서로 바꾼다.



마무리

위에 내용을 자세히 몰라도 프로그램 개발 하는데 지장은 없다.

네트워크를 통해 전송 할 때는 빅 엔디안으로 통일한다는 것만 기억한다.

많은 언어가 비슷한 함수명을 사용하는데 바로 ntoh, hton... 와 같은 이름을 갖은 함수들이다.

송신 전 빅엔디안으로 변환, 수신 후 빅엔디안을 수신쪽 CPU에 맞는 바이트 순서로 바꾸는 함수라 생각하면 된다.





반응형

do~while문 사용법



do~while문은 while문과 비교해서 조건과 상관 없이 무조건 한 번 작업을 수행한다.

그 다음 조건이 참(true)이면 반복해서 작업을 수행 한다.



do~while 사용법


사용방법은 다음과 같다.

 do

 {

      수행할 작업

 }while( 조건문 );


do~while문은 다음과 같이 쓸 수 있다.


int i = 0;


do

{

     System.out.println("Working...i["+i+"]");

      i++;

 }while( i < 5 )

 System.out.println("END");



do~while문 부분 설명

  do

 조건과 상관없이 한 번 실행 한다.

  i++; i가 1 증가한다. 증가 후 다시 while로 돌아가 i < 5인지 확인 하고 참이면 다시 수행한다.

  while( i < 5)

 i가 5보다 작으면 참이다.  이 조건을 만족하면 while 안에 작업은 반복적으로 수행한다.



while문의 수행 결과

 i값

 출력 결과

 설명

 0

 Working...i[0]

  i는 5보다 작기 때문에 Working...i[0]를 출력하고 i에 1을 증가시킨다.

 1

 Working...i[1]

  i는 5보다 작기 때문에 Working...i[1]를 출력하고 i에 1을 증가시킨다.

 ....

 

 5

 END

  5일 때 while문을 벗어나며 END 문을 출력한다.





while, if ... 그리고 break


위의 예문은 조건이 참인동안 반복적으로 수행한다.

하지만 중간에 while문을 빠져 나와야 하는 경우는 어떻게 해야 될까?

우선 break를 만나면 while문을 빠져 나오게 할 수 있다.

이 원리를 이용해 특정 조건을 검사하는 if문을 활용하여 while문을 빠져나와보자



int i = 0;


do

{

     System.out.println("Working...i["+i+"]");

      i++;


     if( i == 3 )

     {

       System.out.println("out of while loop");          

         break;

     }

 }while( i < 5 )

 System.out.println("END");


while문 부분 설명

  do

 조건과 상관없이 한 번 실행 한다.

  i++;

 i가 1 증가한다. 증가 후 다시 while로 돌아가 i < 10인지 확인 하고 참이면 다시 수행한다.

 if( i == 3 )

 i가 3이면 if 블록 안 작업을 수행 한다.

 break;

 while문을 빠져 나온다. 

 while( i < 10 )

 i가 10보다 작으면 참이다.  이 조건을 만족하면 while 안에 작업은 반복적으로 수행한다.



while문의 수행 결과

 i값

 출력 결과

 설명

 0

 Working...i[0]

  i는 5보다 작기 때문에 Working...i[0]를 출력하고 i에 1을 증가시킨다.

 1

 Working...i[1]

  i는 5보다 작기 때문에 Working...i[1]를 출력하고 i에 1을 증가시킨다.

 2

 Working...i[2]  i는 5보다 작기 때문에 Working...i[2]를 출력하고 i에 1을 증가시킨다.

 3

  out of while loop

  END

  3이 되면 if문 블록 안 작업을 수행 하게 된다.

  break를 만나 while문을 빠져 나오기 때문에 END를 출력한다.



반응형

'프로그램 > Java' 카테고리의 다른 글

[java] ServerSocket, Socket  (0) 2018.05.21
[java] 다중 반복문 탈출 방법  (0) 2018.05.21
[java] while문 사용법  (0) 2017.12.11
[java] switch문 사용법  (0) 2017.12.10
[java] for each문 사용법  (0) 2017.12.09

while문 사용법



while문은 조건이 참(true)이면 반복해서 작업을 수행 한다.



while 사용법


사용방법은 다음과 같다.

 while( 조건문 )

 {

      수행할 작업

 }


while문은 다음과 같이 쓸 수 있다.


int i = 0;


while( i < 5 )

{

     System.out.println("Working...i["+i+"]");

      i++;

 }

 System.out.println("END");



while문 부분 설명

  while( i < 5 )

 i가 5보다 작으면 참이다.  이 조건을 만족하면 while 안에 작업은 반복적으로 수행한다.

  i++;

 i가 1 증가한다. 증가 후 다시 while로 돌아가 i < 5인지 확인 하고 참이면 다시 수행한다.



while문의 수행 결과

 i값

 출력 결과

 설명

 0

 Working...i[0]

  i는 5보다 작기 때문에 Working...i[0]를 출력하고 i에 1을 증가시킨다.

 1

 Working...i[1]

  i는 5보다 작기 때문에 Working...i[1]를 출력하고 i에 1을 증가시킨다.

 ....

 

 5

 END

  5일 때 while문을 벗어나며 END 문을 출력한다.





while, if ... 그리고 break


위의 예문은 조건이 참인동안 반복적으로 수행한다.

하지만 중간에 while문을 빠져 나와야 하는 경우는 어떻게 해야 될까?

우선 break를 만나면 while문을 빠져 나오게 할 수 있다.

이 원리를 이용해 특정 조건을 검사하는 if문을 활용하여 while문을 빠져나와보자



int i = 0;


while( i < 5 )

{

     System.out.println("Working...i["+i+"]");

      i++;


     if( i == 3 )

     {

       System.out.println("out of while loop");          

         break;

     }

 }

 System.out.println("END");


while문 부분 설명

  while( i < 5 )

 i가 5보다 작으면 참이다.  이 조건을 만족하면 while 안에 작업은 반복적으로 수행한다.

  i++;

 i가 1 증가한다. 증가 후 다시 while로 돌아가 i < 5인지 확인 하고 참이면 다시 수행한다.

 if( i == 3 )

 i가 3이면 if 블록 안 작업을 수행 한다.

 break;

 while문을 빠져 나온다. 



while문의 수행 결과

 i값

 출력 결과

 설명

 0

 Working...i[0]

  i는 5보다 작기 때문에 Working...i[0]를 출력하고 i에 1을 증가시킨다.

 1

 Working...i[1]

  i는 5보다 작기 때문에 Working...i[1]를 출력하고 i에 1을 증가시킨다.

 2

 Working...i[2]  i는 5보다 작기 때문에 Working...i[2]를 출력하고 i에 1을 증가시킨다.

 3

  out of while loop

  END

  3이 되면 if문 블록 안 작업을 수행 하게 된다.

  break를 만나 while문을 빠져 나오기 때문에 END를 출력한다.


반응형

'프로그램 > Java' 카테고리의 다른 글

[java] 다중 반복문 탈출 방법  (0) 2018.05.21
[java] do~while문 사용법  (0) 2017.12.15
[java] switch문 사용법  (0) 2017.12.10
[java] for each문 사용법  (0) 2017.12.09
[java] for문 사용법  (0) 2017.12.08

+ Recent posts