130 likes | 225 Views
제 3 장 String and Array. 스트링의 표현 방법 (1/4). 정의 일련의 문자 1 차원적인 문장의 배열 , 공백과 구두점 같은 특수 문자들을 포함한 모든 유효한 문자를 사용한 문자들의 모임 ex) “Korea University”, .. 등. 1 워드. • • •. M. 처리속도 빠르지만 기억장소 활용도 낮음. • • •. E. • • •. M. • • •. O. • • •. . 비압축 스트링. 스트링의 표현 방법 (2/4). 스트링의 표현방법 순차 스트링
E N D
스트링의 표현 방법 (1/4) • 정의 • 일련의 문자 • 1 차원적인 문장의 배열, 공백과 구두점 같은 특수 문자들을 포함한 모든 유효한 문자를 사용한 문자들의 모임 • ex) “Korea University”, .. 등
1워드 ••• M 처리속도 빠르지만 기억장소 활용도 낮음 ••• E ••• M ••• O ••• \0 비압축 스트링 스트링의 표현 방법 (2/4) • 스트링의 표현방법 • 순차 스트링 • 스트링 S에 대하여, S의 연속적인 문자들을 위하여 문자 코드들을 연속적인 워드에 나타내는 방법
스트링의 표현 방법 (3/4) • 스트링의 표현방법 • 고정길이 스트링 • 압축 스트링 • 연결 리스트 1워드 P A C K E D S T R I N G ••• XXX XXX XXX XXX
스트링의 표현 방법 (4/4) • 스트링의 표현방법 • 가변길이 스트링 • 스트링의 길이를 예측하기 어려운 경우 사용하는 방법 • ex) 어셈블러의 매크로 확장이나 스트링 결합과 같이 새로운 스트링을 다른 데이터의 함수로 계산하는 경우, .. 등. • 프로그램 수행 도중 변화를 처리
스트링 연산 (1/4) • 스트링 연산 • 결합(concatenation) • 두 스트링을 연쇄적으로 연결한 합성된 스트링이 결과로 나오는 연산 • 예) F=“KIM”, L = “LR” 일 때 F||L 이면 S=“KIMLR” • 삽입(insertion) • 스트링을 구성하는 문자와 문자 사이에 새로운 스트링을 삽입하는 연산 • 예) S=“OPQRST”일 때 “PQ” S “P, Q” 이면 S = “OP, QRST”
스트링 연산 (2/4) • 스트링 연산 • 삭제 (deletion) • 스트링을 구성하는 문자들 중의 하나 이상의 문자를 제거하는 연산 • 예) S = “OPQRST”일 때 “P” S “ “ 이면, S = “OQRST” • 교체 (replacement) • 스트링을 구성하는 문자들 중의 하나 이상의 문자를 제거하는 연산 • 예) S = “$ 3.00” 일때 “3.00” S “3.50”이면 S = “$3.50” 으로 바뀐다.
스트링 연산 (3/4) • 스트링 연산 • 서브스트링(substring) • 스트링을 구성하는 연속적인 문자들 중에서 일부를 찾아 새로운 스트링을 만드는 연산 • 패턴 매칭(pattern matching) • 스트링 중 지정된 서브스트링을 찾는 것으로, 지정된 서브 스트링이 있으면 참이고, 없으면 거짓인 연산 • 예) S =“OPQRST”일때 “P” S의 결과는 참
스트링 연산 (4/4) • 스트링 연산 • 인덱싱 (indexing) • 스트링 내에서 어떤 문자 또는 서브 스트링의 위치를 정수로 나타내는 연산 • 예) P = “LINKED LIST”인 P에서 “LIS”의 인덱싱 = 8 (만약 ,해당 문자가 없으면 0이며, 복수 개이면 최초의 경우가 해당)
C 언어에서 스트링 연산 • 결합연산 • 스트링 s1과 s2를 결합한 결과를 반환 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); }
1 차원 배열 (1/3) • 배열의 정의 • 동일한 데이타형을 갖는 원소들이 2차원 장방형 구조에 놓여 있는 집합체 • 인덱스와 값의 쌍으로 구성된 집합이며 반드시 유한성을 갖음 • 배열 표현과 주소 할당 주소 배열 원소 1 2 3 4 5 6 7 8 9 A(0,0) A(0,1) A(0,2) A(1,0) A(1,1) A(1,2) A(2,0) A(2,1) A(2,2) A(0,0) A(0,1) A(0,2) A(1,0) A(1,1) A(1,2) A(2,0) A(2,1) A(2,2) 배열 표현 배열의 주소할당
1차원 배열 (2/3) • 배열의 공리 structure ARRAY(value, index) ① declare CREATE() --> array ② RETRIEVE(array, index) --> value; STORE(array, index, value) --> array; ③ for all A array, i, j index, x value let ④ RETRIEVE(CREATE, i) ::= error; ⑤ RETRIEVE(STORE(A, i, x), j) ::= if EQUAL(i, j) then x else RETRIEVE(A, j); end end ARRAY
C 언어에서의 배열 • 1차원 배열의 선언 • 2차원 배열의 선언 • C 언어에서 2차원 배열의 기억 장소 배열 순서는 행우선 법칙을 사용 데이타형태[] 배열명 = 데이타형태[원소수]; 데이타형태[][] 배열명 = 데이타형태[원소수][원소수];