피씨컴의 기울어진 공관

'프로그래밍/공부'에 해당되는 글 55건

  1. 2013.01.31 15일차
  2. 2013.01.30 14일차
  3. 2013.01.29 13일차
  4. 2013.01.28 12일차
  5. 2013.01.25 11일차
  6. 2013.01.24 10일차
  7. 2013.01.24 9일차
  8. 2013.01.24 8일차
  9. 2013.01.24 7일차
  10. 2013.01.24 6일차

15일차

프로그래밍/공부 2013. 1. 31. 13:45

● 문자열

문자를 연속적으로 나열된것

- 컴퓨터의미

데이터로 다루는 일련의 문자

 

- 문자열을 저장하기 위한 자료형이 없다

- 문자를 연속적으로 나열하여 문자열을 표현

- char형 배열이 문자열

- 문자열을 표현할때 " " 를 사용

 

● 문장열 끝에는 항상 NULL(0) 문자가 존재한다.

 

'\0' == NULL == 0 == 문자열의 끝 구분

 

●  문자열의 출력시 문자열의 총크기에 상관없이 NULL 끄지만 출력한다

※ 그래서 "ab\0vb"를 출력하면 ab만 나온다

 

● 사용가능한 크기

일반배열 : 배열의 총 크기

char배열 : 문자열 총크기의 -1 (NULL문자)

 

● 화면출력

일반배열 : 해당 인덱스만 출력

char배열 : 해당 부분부터 NULL문자전 까지 출력

 

●  기본적인 자료 사용

일반배열 : 각각 독립적인 변수로 사용

char배열 : 하나의 문자열로서 사용(독립적으로도 사용가능)

 

● 문자열 상수

값이 변경되지 않는 문자열 상수

 

● char * : 변수로 상수의 시작위치를 저장할 수 있다.

 

char * p = "안녕하세요";

cout << p << endl;

--------------------

 

char str[10] = "abc";

str = "hello";

↑ 상수포인터이며 모배열이라 여기서 한번정한걸 다시 바꿀 수는 없다

 

 

● 문자 & 아스키 코드

영문 1바이트

한글 2바이트

 

● 아스키코드 외에 다른 문자열들은 조합체라고 하여 2바이트를 조합하여 나온 값으로 문자를 표현한다.

●  유니코드는 모든 문자를 2바이트로 취급함으로써 문자 한개가 2바이트 씩 할당하게 된다.

 

●  멀티바이트 :

a, b, c등등(1byte)의 아스키코드로만 문자를 다 표현할 수가 없으므로 거기에

다른 여러 문자를 포함한(예를 들어 한글(2byte)) 것을 멀티바이트 문자 집합 이라고 합니다.

●  유니코드  :

멀티바이트는 1byte는 물론 2byte여러가지 다양하기에 특정 사이트를 들어가면 깨지는 현상을

볼수가 있는데요  (이유는 정확하지 않지만 아마 몇 바이트로 읽을지 모르니 그렇겟죠??)

방안이 유니코드!! 16bit 의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자코드 체계입니다.

그것을  a, b, c든 한글이든 전체적으로 2byte(16bit)로 통일한 것이 유니코드 문자 집합 입니다.

 

 

'프로그래밍 > 공부' 카테고리의 다른 글

17일  (0) 2013.02.04
16일차  (0) 2013.02.03
14일차  (0) 2013.01.30
13일차  (0) 2013.01.29
12일차  (0) 2013.01.28
Posted by 피씨컴

14일차

프로그래밍/공부 2013. 1. 30. 13:07

● 붙으숫자 분리

123 == 100의 자리 100으로 나눔 == (123%100)/10

          10의 자리                     == 위에 나눈거에 (123%10)

 

아니면 아스키 코드를 이용할 수 있다.

ex) cout << (int)'3' <<endl;

 

● 다차원 배열

차원 : 어떠한 지점, 어떠한 개채를 표현하기위해 필요한 정보의 갯수

- 배열에서 한요소의 위치를 나타네는데 필요한 인덱스수

1차원 : 선상위에 점?

2차원 : 면위에 선

3차원 : 공간안에 면

4차원 : 같은 공간에서 시간?

※ 다차원 배열을 1차원적인 메모리 공간을 차수를 통해서 구역별로 묶어서 한것

 

 

a[0] -> *(a+0)

a[1] -> *(a+1)
a[2] -> *(a+2)

 

a[0][0] -> *(*(a+0)+0)

a[0][1] -> *(*(a+0)+1)

a[1][0] -> *(*(a+1)+0)

a[1][1] -> *(*(a+1)+1)

                       ↑ 8바이트씩 뜀

 

int (a[0])[0] : () 안에 것을 1차원 포인터 == int *

 

 

 

 

 

 

      

 

 

'프로그래밍 > 공부' 카테고리의 다른 글

16일차  (0) 2013.02.03
15일차  (0) 2013.01.31
13일차  (0) 2013.01.29
12일차  (0) 2013.01.28
11일차  (0) 2013.01.25
Posted by 피씨컴

13일차

프로그래밍/공부 2013. 1. 29. 13:09

swap의 특징 : 1대 1 교환

 

● ● 포인터 심화

● const

변수앞에 const를 붙이면 해당 변수가 상수화 된다.

변수가 상수화 되기 때문에 곡 선언시에 초기화 해야한다 그렇지 않으면 값을 변경 할 수 없다.

 

const int max = 5;

int a[max] = {};             가능함

const 변수는 변수를 상수화 했기 대문에 선언이 가능하다

C++에서만 가능

 

● 포인터와 const

포인터는 일반변수보다 복잡하다

keypoint는 const의 위치

 

int a = 10

int b = 20;

const int * p = &a;

*p = 10;        // 안됨

 p = &a;        // 됨

*p가 상수화 되는 것은 변수의 상수화이다  p의 주소값은 변경이 된다.

※ 근데 저상태에서 a=10 의 직접대입은 되는듯 ?

 

int a = 10

int b = 20;

int  *const p = &a;

*p = 10;        // 됨

 p = &a;        // 안됨

p가 상수화 되는 것은 주소값의 상수화이다

*p의 주소값은 변경이 된다.

 

 

*의 기준으로 const 위치에 따라 다름

*앞에 붙으면 포인터가 가리키는 변수의 값 변경 불가능

*뒤에 붙으면 포인터 변수의 주소값이 변경 불가능

const int const *p 이것은 const int *p와 같다

즉 자료형은 const와 연관성이 없다.

 

● 포인터와 + 연산자

해당 자료형 크기만큼 주소값을 더한다

int 형 변수일 경우

1000(주소) + 1 = 1004

1000(주소) + 2 = 1008

1000(주소) + 3 = 1012

 

모배열은 포인터이기 때문에 + 를 사용하면 해당 메모리 공간에서 자료형 만큼 이동한 주소를 의미

포인터의 * 연산자는 해당 주소값에 위치한 변수를 의미한다

 

*(p+i) = 우선순위 때문에 괄호로 포인터 차단

 

'프로그래밍 > 공부' 카테고리의 다른 글

15일차  (0) 2013.01.31
14일차  (0) 2013.01.30
12일차  (0) 2013.01.28
11일차  (0) 2013.01.25
10일차  (0) 2013.01.24
Posted by 피씨컴

12일차

프로그래밍/공부 2013. 1. 28. 13:02

Release : 비주얼 스튜디오 필요없음

Debug : 비주얼 스튜디오 깔려있어야함

------------------------------------------------------------------------------------------

<< 포인터 >>

      ↓(포인터)       ↓(변수)   

● * 여기에          누가 살아

       ↑(주소)        ↑(변수)

● & 너!              어디살아?

       ↑ (변수)       ↑(주소)

 

 

※ 이렇게 선언하면 포인터가 일반변수가 된다

   int * p          ,       p2;

           ↑포인터                ↑일반변수

 

● 포인터 차원?

포인터가 얼마나가야 일반변수가 되나?

&p    

  p     2차원

*p     1차원

**p    0차원

 

 

● 배열이란?

같은 자료형의 연속적인 기억공간 하나의 이름과 인덱스([,])로 변수를 관리한다

● int a[]

운영체제로 부터 메모리 공간 어딘가에 int 정수 4바이트 X 그배열의 크기 만큼의 공간을 연속적으로 할당받고 그앞에 a라는 문패를 만들고 그속에는 각각 쓰레기 값이 들어있다.

 

● 변수와 배열의 차이

1. 그 연속된 공간의 맨처음 위치

2. 총크기는 타입 크기 X 연속된 개수

3. 배열의 이름 -> 포인터

 

 

모두 같은뜻

 

● int array[10]

int 형 이므로 4바이트 만큼 주소가 건너뛴다.

 

 

● 모배열 특징

모배열은 포인트 변수

하지만 주소값을 변경할 수 없다 (상수)

주소값이 바뀌면 배열 위치를 알수 없기 때문

배열상수 == 배열의 이름 == 모배열 == 상수포인터

 

● A[2]

     A

현재 배열의 맨처음 위치를 나타내는 동시에 배열의 이름이 된다. 보통 배열 A라고 부른다

위와 같은 A를 모배열이라고 부른다

 

[2]

현재 배열에서 이 변수의 위치를 나타내는 수로 0부터 표시되기 때문에 현재 이 변수는 2번째 있는 변수라는 걸 알수 있다

위와 같은 [ ] 안의 수를 인덱스(index) 라고 한다.

 

● 키포인트

배열 요소들은 언제나 메모리에 연속적으로 저장된다

모배열은 왼쪽 값(L-value)로 사용불가능 하다

 

 

 

 

'프로그래밍 > 공부' 카테고리의 다른 글

14일차  (0) 2013.01.30
13일차  (0) 2013.01.29
11일차  (0) 2013.01.25
10일차  (0) 2013.01.24
9일차  (0) 2013.01.24
Posted by 피씨컴

11일차

프로그래밍/공부 2013. 1. 25. 13:06

● 좀 적은 for로 마름모 별 찍는법?

for(;i>20;i+=a)

{

if(i==3)

{

a=-1;

}

}

 

● 기초 포인터

해당자료형 변수의 주소값을 저장하는 변수

운영체제에 따라 용량이 변한다(32bit 기준 4바이트)

 

● int *a

운영체제로 부터 메모리 공간 어딘가에 자료형에 상관없이 4바이트만큼의 공간을 할당 받고 그위에 a라는 방을 만들고 그 속에는 쓰레기 주소값이 들어있다.

 

※ Why 4바이트 : 인식할수 있는 한계가 4바이트??(다시조사하자)

*주소의 용량이 4바이트 ???

 

 

● & 연산자

해당 변수의 주소를 의미한다 / 너 어디살아 ?

● * 연산자     

포인터 변수가 가리키고 있는 주소에 어떤 값이 있는가? / 거기에 누가살아?

 

● 쫌 신기한거

*(&a) == a

     

'프로그래밍 > 공부' 카테고리의 다른 글

13일차  (0) 2013.01.29
12일차  (0) 2013.01.28
10일차  (0) 2013.01.24
9일차  (0) 2013.01.24
8일차  (0) 2013.01.24
Posted by 피씨컴

10일차

프로그래밍/공부 2013. 1. 24. 13:06

● 저번에 강의 했던 확률 계산

c= rand()% A+B;

if(C>=A) {}

 

보다는

 

if(rand()%100<1)

이 더 쉬움

 

● 순서도 순서

설계 -> 목적 -> 처리대상 -> 순서도(로직설계) -> 로직검증 -> 실제 제작

 

 

● while

특정조건이 거짓일 경우에만 탈출하는 반복문을 작성할때 용이한 반복문

while(조건)

{

명령문

}

 

조건을 검사하여 0이면 while문 안의 명령을 무시한다

(처음부터 0이면 실행되지 않는다)

 

 

● do while

조건을 검사하여 0이면 while 문을 탈출한다

조건이 명령 밑에 있기 때문에 조건이 처음부터 0이라고 해도

반복코드를 1번 실행하게 된다.

 

do

{

명령

}while(조건);

 

 

for == while        같고 서로 바꿀수 있다.

for x do while     같지 않고 바꾸기 힘듬

 

 

● 다중 반복문

반복문안에 반복문이 있는 경우 (반복순서에 유의해서 작성해야한다.

 

● 반복문에서 중요한것

1. 탈줄을 위한 조건

2. 제어문(break / continue)

 

 

 

 

'프로그래밍 > 공부' 카테고리의 다른 글

12일차  (0) 2013.01.28
11일차  (0) 2013.01.25
9일차  (0) 2013.01.24
8일차  (0) 2013.01.24
7일차  (0) 2013.01.24
Posted by 피씨컴

9일차

프로그래밍/공부 2013. 1. 24. 00:46

time (1초단위 )  = srand(time (NULL))

GetTicCount(1000/1초 단위)  = srand(GetTicCount());

// 좀더 세밀함

 

50 ~ 130 : rand()%81(범위) + 50(최소값)

범위 구하는것 : (최대 - 최소) +1

 

● 반복문 : 특정 문장을 반복하기 위해서 사용되는 문법

● 반복문의 제어문

    break 가장 가까이 있는 반복문을 빠져나온다(중지)

     continue 반복문의 처음으로 되돌아 간다 즉 continue 밑의 문장을 생략하게 된다.

 

● for  : 원하는 횟수만큼 반복하기 용이한 반복문

 

for(초기식 1 ; 조건식 2; 증감식 3)

{

      반복할 명령 4

}

 

실행순서 :  1초기식 -> 조건식 -> 반복할명령 4 ->증감식 3

 

초기식, 증감식 생략가능

for(;;) 무한루프

 

c= rand()%A+B

if(c>=A) {참이면 크리 터짐}

B:최소값

A : 범위

 

 

 

 

 

'프로그래밍 > 공부' 카테고리의 다른 글

11일차  (0) 2013.01.25
10일차  (0) 2013.01.24
8일차  (0) 2013.01.24
7일차  (0) 2013.01.24
6일차  (0) 2013.01.24
Posted by 피씨컴

8일차

프로그래밍/공부 2013. 1. 24. 00:35

● 입력버퍼

입력함수를 통해 입력받는 데이터는 실행중인 프로그램에 바로 읽혀지는 것이 아니라 먼저 입력 버퍼에 저장된 후 다시 그 입력 버퍼의 내용이 프로그램에 전달된다

● 출력버퍼

프로그램의 내용이 모니터에 즉시 출력되는 것이 아니라 먼저 출력 버퍼에 저장되었다가 모니터로 출력된다.

● 버퍼

버퍼는 선입선출구조인 큐(queue)형태로 저장되어 있다 그래서 먼저 저장된 문자를 먼저사용할수 있는 구조다 한마디로 임시 저장소이다.

두 기억 장치 사이에 처리속도를  속도차를 줄이기 위해 중간에서 임시적으로 저장하는 고속 기억장치

주변장치가 처리하는 속도가 느릴때 사용 .

 

 

● 입력오류 해결법

1. 오류가 났었다는 사실을 제거하는것

cin.clear();

2. 입력버퍼 안에 있는 잔여 입력을 제거하는것

cin.ignore(INT_MAX,'\n');

 

'프로그래밍 > 공부' 카테고리의 다른 글

10일차  (0) 2013.01.24
9일차  (0) 2013.01.24
7일차  (0) 2013.01.24
6일차  (0) 2013.01.24
5일차  (0) 2013.01.24
Posted by 피씨컴

7일차

프로그래밍/공부 2013. 1. 24. 00:26

● 조건문 이란?

     특정 조건이 참일 경우에만 실행되는 명령을 의미

● if(조건)

     해당 조건이 참일경우 명령 실행

 

● else if(조건)

         위 if 의 조건이 거짓이고 자신의 조건이 참일 경우

        

 

tip && 연산자를 이용한 조건은 조건 한가지가 참이면 뒤에는 패스

 

● switch

조건으로 사용 가능한 변수 문자(정수),정수 논리형 정수 등을 사용

break -> 스위치 탈출

case 조건값 -> 조건변수가 조건값과 같은 경우 break부분까지나 명령이 끝날 때 까지

default

조건변수가 조건값과 같은것이 없을 경우

 

'프로그래밍 > 공부' 카테고리의 다른 글

9일차  (0) 2013.01.24
8일차  (0) 2013.01.24
6일차  (0) 2013.01.24
5일차  (0) 2013.01.24
4일차  (0) 2013.01.24
Posted by 피씨컴

6일차

프로그래밍/공부 2013. 1. 24. 00:22

이스케이프 문자 : 기능을 가진 문자( 문자가 문자를 탈출하다) (\n, \t, \r, 등등)

 

가변인자 함수 : 인자의 갯수가 변하는 함수

(printf, scanf)

 

printf 반환값 : 출력되는 문자열의 길이

scanf 반환값 : 입력받는 인수의 갯수

'프로그래밍 > 공부' 카테고리의 다른 글

8일차  (0) 2013.01.24
7일차  (0) 2013.01.24
5일차  (0) 2013.01.24
4일차  (0) 2013.01.24
3일차  (0) 2013.01.24
Posted by 피씨컴