13
3 3 String and Array String and Array

제 3 장 String and Array

Embed Size (px)

DESCRIPTION

제 3 장 String and Array. 스트링의 표현 방법 (1/4). 정의 일련의 문자 1 차원적인 문장의 배열 , 공백과 구두점 같은 특수 문자들을 포함한 모든 유효한 문자를 사용한 문자들의 모임 ex) “Korea University”, .. 등. 1 워드. • • •. M. 처리속도 빠르지만 기억장소 활용도 낮음. • • •. E. • • •. M. • • •. O. • • •. \0. 비압축 스트링. 스트링의 표현 방법 (2/4). 스트링의 표현방법 순차 스트링 - PowerPoint PPT Presentation

Citation preview

Page 1: 제  3  장  String and Array

제 제 3 3 장 장

String and ArrayString and Array

Page 2: 제  3  장  String and Array

스트링의 표현 방법 스트링의 표현 방법 (1/4)(1/4)

정의정의• 일련의 문자일련의 문자• 1 1 차원적인 문장의 배열차원적인 문장의 배열 , , 공백과 구두점 같은 특수 문자들을 공백과 구두점 같은 특수 문자들을

포함한 모든 유효한 문자를 사용한 문자들의 모임포함한 모든 유효한 문자를 사용한 문자들의 모임• ex) “Korea University”, .. ex) “Korea University”, .. 등등

Page 3: 제  3  장  String and Array

스트링의 표현 방법 스트링의 표현 방법 (2/4)(2/4)

스트링의 표현방법스트링의 표현방법• 순차 스트링순차 스트링

– 스트링 S 에 대하여 , S 의 연속적인 문자들을 위하여 문자 코드들을 연속적인 워드에 나타내는 방법

1워드

처리속도 빠르지만 기억장소 활용도 낮음

비압축 스트링 비압축 스트링

• • • M• • • E• • • M• • • O• • • \0

Page 4: 제  3  장  String and Array

스트링의 표현 방법 스트링의 표현 방법 (3/4)(3/4)

스트링의 표현방법스트링의 표현방법• 고정길이 스트링고정길이 스트링

– 압축 스트링

– 연결 리스트

1워드

PS

AT

CR

KI

EN

DG

XXX XXX XXX XXX •••

Page 5: 제  3  장  String and Array

스트링의 표현 방법 스트링의 표현 방법 (4/4)(4/4)

스트링의 표현방법스트링의 표현방법• 가변길이 스트링가변길이 스트링

– 스트링의 길이를 예측하기 어려운 경우 사용하는 방법

– ex) 어셈블러의 매크로 확장이나 스트링 결합과 같이 새로운 스트링을 다른 데이터의 함수로 계산하는 경우 , .. 등 .

– 프로그램 수행 도중 변화를 처리

Page 6: 제  3  장  String and Array

스트링 연산 스트링 연산 (1/4)(1/4)

스트링 연산스트링 연산• 결합결합 (concatenation) (concatenation)

– 두 스트링을 연쇄적으로 연결한 합성된 스트링이 결과로 나오는 연산

– 예 ) F = “KIM”, L = “LR” 일 때 F||L 이면 S=“KIMLR”

• 삽입삽입 (insertion) (insertion)

– 스트링을 구성하는 문자와 문자 사이에 새로운 스트링을 삽입하는 연산

– 예 ) S = “OPQRST” 일 때 “ PQ” S “P, Q” 이면 S = “OP, QRST”

Page 7: 제  3  장  String and Array

스트링 연산 스트링 연산 (2/4)(2/4)

스트링 연산스트링 연산• 삭제 삭제 (deletion) (deletion)

– 스트링을 구성하는 문자들 중의 하나 이상의 문자를 제거하는 연산

– 예 ) S = “OPQRST” 일 때 “ P” S “ “ 이면 , S = “OQRST”

• 교체 교체 (replacement)(replacement)

– 스트링을 구성하는 문자들 중의 하나 이상의 문자를 제거하는 연산

– 예 ) S = “$ 3.00” 일때 “ 3.00” S “3.50” 이면 S = “$3.50”

으로 바뀐다 .

Page 8: 제  3  장  String and Array

스트링 연산 스트링 연산 (3/4)(3/4)

스트링 연산스트링 연산• 서브스트링서브스트링 (substring)(substring)

– 스트링을 구성하는 연속적인 문자들 중에서 일부를 찾아 새로운 스트링을 만드는 연산

• 패턴 매칭패턴 매칭 (pattern matching)(pattern matching) – 스트링 중 지정된 서브스트링을 찾는 것으로 , 지정된 서브 스트링이 있으면 참이고 , 없으면 거짓인 연산

– 예 ) S = “OPQRST” 일때 “ P” S 의 결과는 참

Page 9: 제  3  장  String and Array

스트링 연산 스트링 연산 (4/4)(4/4)

스트링 연산스트링 연산• 인덱싱 인덱싱 (indexing)(indexing)

– 스트링 내에서 어떤 문자 또는 서브 스트링의 위치를 정수로 나타내는 연산

– 예 ) P = “LINKED LIST” 인 P 에서 “ LIS” 의 인덱싱 = 8

( 만약 , 해당 문자가 없으면 0 이며 , 복수 개이면 최초의 경우가

해당 )

Page 10: 제  3  장  String and Array

C C 언어에서 스트링 연산언어에서 스트링 연산

결합연산결합연산

• 스트링 스트링 s1s1 과 과 s2s2 를 결합한 결과를 반환를 결합한 결과를 반환

char *concate (char *s1, char *s2){char *s3;int len1, len2, len3, i;

len1=strlen(s1);len2=strlen(s2);len3=len1+len2;s3=malloc(len3+1);i=0;while(*s1){

s3[i++]=*s1;s1++;

}while(*s2){

s3[I++]=*s2;s2++;

}s3[I]=‘/0’;return(s3);

}

char *concate (char *s1, char *s2){char *s3;int len1, len2, len3, i;

len1=strlen(s1);len2=strlen(s2);len3=len1+len2;s3=malloc(len3+1);i=0;while(*s1){

s3[i++]=*s1;s1++;

}while(*s2){

s3[I++]=*s2;s2++;

}s3[I]=‘/0’;return(s3);

}

Page 11: 제  3  장  String and Array

1 1 차원 배열 차원 배열 (1/3) (1/3)

배열의 정의배열의 정의• 동일한 데이타형을 갖는 원소들이 동일한 데이타형을 갖는 원소들이 22 차원 장방형 구조에 놓여 차원 장방형 구조에 놓여

있는 집합체있는 집합체

• 인덱스와 값의 쌍으로 구성된 집합이며 반드시 유한성을 갖음인덱스와 값의 쌍으로 구성된 집합이며 반드시 유한성을 갖음

배열 표현과 주소 할당배열 표현과 주소 할당

A(0,0)A(0,0) A(0,1)A(0,1) A(0,2)A(0,2)

A(1,0)A(1,0) A(1,1)A(1,1) A(1,2)A(1,2)

A(2,0)A(2,0) A(2,1)A(2,1) A(2,2)A(2,2)

주소주소

112233445566778899

배열 원소배열 원소

A(0,0)A(0,0)A(0,1)A(0,1)A(0,2)A(0,2)A(1,0)A(1,0)A(1,1)A(1,1)A(1,2)A(1,2)A(2,0)A(2,0)A(2,1)A(2,1)A(2,2)A(2,2)

배열 표현배열 표현 배열의 주소할당배열의 주소할당

Page 12: 제  3  장  String and Array

11 차원 배열 차원 배열 (2/3) (2/3)

배열의 공리배열의 공리

structurestructure ARRAY(value, index) ARRAY(value, index)

①① declaredeclare CREATE() --> array CREATE() --> array

②② RETRIEVE(array, index) --> value;RETRIEVE(array, index) --> value;

STORE(array, index, value) --> array;STORE(array, index, value) --> array;

③③ forfor all A all A array, i, j array, i, j index, x index, x value value letlet

④④ RETRIEVE(CREATE, i) ::= error;RETRIEVE(CREATE, i) ::= error;

⑤⑤ RETRIEVE(STORE(A, i, x), j) ::=RETRIEVE(STORE(A, i, x), j) ::=

ifif EQUAL(i, j) EQUAL(i, j) thenthen x x elseelse RETRIEVE(A, j); RETRIEVE(A, j);

endend

endend ARRAY ARRAY

Page 13: 제  3  장  String and Array

C C 언어에서의 배열언어에서의 배열 11 차원 배열의 선언차원 배열의 선언

22 차원 배열의 선언차원 배열의 선언

C C 언어에서 언어에서 22 차원 배열의 기억 장소 배열 순서는 차원 배열의 기억 장소 배열 순서는 행우선 법칙을 사용행우선 법칙을 사용

데이타형태데이타형태 [] [] 배열명 배열명 = = 데이타형태데이타형태 [[ 원소수원소수 ];];

데이타형태데이타형태 [][] [][] 배열명 배열명 = = 데이타형태데이타형태 [[ 원소수원소수 ][][ 원소수원소수 ];];