37
12장 함수 조합 다시 보기 복잡한 프로그램 -> 보조함수 사용 -> 코드 의미 가독성 증대

12장 함수 조합 다시 보기4

Embed Size (px)

Citation preview

Page 1: 12장 함수 조합 다시 보기4

12장 함수 조합 다시 보기

복잡한프로그램

->보조함수사용

->코드의미가독성증대

Page 2: 12장 함수 조합 다시 보기4

예 3.1 절

Page 3: 12장 함수 조합 다시 보기4

보조함수를 사용할 상황

• 화면에그리기등의특수기능

• 회계, 과학등특정지식이요구될때

• 일반화된형태의함수 + 특화된함수의조합으로사용할경우합으로사용할경우

• “템플릿 -> 함수정의로변환” 이과정에서보조함수사용필요를느낌.

Page 4: 12장 함수 조합 다시 보기4

WISH LIST

• 만들어야할함수목록을

“WISH LIST”

에기록해두고모두완성에기록해두고모두완성

• 다른함수에의존하지않는

독립된함수부터테스트시행

Page 5: 12장 함수 조합 다시 보기4

12.2 재귀 보조 함수• 목표 : 수리스트의정렬구현

계약과 목적, 그리고 헤더

Cf) 디자인레시피예 p.23 , p.81

Page 6: 12장 함수 조합 다시 보기4

12.2 재귀 보조 함수템플릿

템플릿을구현하려고예를살펴보니(first alon)을 (sort (rest along)) 에삽입정렬할 필요에 봉착

Page 7: 12장 함수 조합 다시 보기4

12.2 재귀 보조 함수

보조함수 insert 의계약, 목적, 헤더 작성

위 insert 의헤더를이용해서 sort 의정의구현

Page 8: 12장 함수 조합 다시 보기4

12.2 재귀 보조 함수

이제 insert 만구현하면끝.

insert 의템플릿

Page 9: 12장 함수 조합 다시 보기4

12.2 재귀 보조 함수완성된코드.

Page 10: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화

posn 리스트 ( list-of-posn ) 는다음두가지중하나.

• 목표 : 임의의다각형을그리기

posn 리스트의정규표현식

posn 리스트 ( list-of-posn ) 는다음두가지중하나.

1. empty2. ( cons p lop ) ; p는 posn 구조체, lop 는 posn 리스트

Page 11: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화

다각형 ( polygon ) 는다음두가지중하나.

다각형 ( polygon ) 의정규표현식

다각형 ( polygon ) 는다음두가지중하나.

1. ( cons p empty ) ; p는 posn2. ( cons p lop ) ; p는 posn 구조체, lop 는 posn 리스트

Page 12: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화

Page 13: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화

Page 14: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화

Page 15: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화결과물

Page 16: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화결과물

이거슨원하는바가아님.

다각형을그리는것만들려다더일반적인각꼭지점을잊는함수를만들더일반적인각꼭지점을잊는함수를만들게됐음.

빈줄을잊는함수WISH LIST 에추가요!

Page 17: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화결과물

이거슨원하는바가아님.

다각형을그리는것만들려다더일반적인각꼭지점을잊는함수를만들더일반적인각꼭지점을잊는함수를만들게됐음.

빈줄을잊는함수WISH LIST 에추가요!

Page 18: 12장 함수 조합 다시 보기4

12.3 문제 일반화, 함수 일반화완성된코드.

graphing.ss 추가해야됨

Page 19: 12장 함수 조합 다시 보기4

13. 리스트 축약

• ( cons 1 ( cons 2 ( cons 3 empty ) ) )

= ( list 1 2 3 )• = ( list 1 2 3 )

• = ‘( 1 2 3)

Page 20: 12장 함수 조합 다시 보기4

13. 리스트 축약

• ( list ‘a ‘b ‘c )

• = ‘( a b c )

• first, rest 동일하게사용

Page 21: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

• 자기참조데이터

; 자기구조체를

속성으로갖는구조체 (와같은것들)

Page 22: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

• 자기참조데이터

; 자기구조체를

속성으로갖는구조체 (와같은것들)속성으로갖는구조체 (와같은것들)

예)

( define-struct child

( father mother name date eyes ) )

Page 23: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

( define-struct child

( father mother name date eyes ) )

자식항목(child) 은구조체다.(make-child f m na da ec)

f와m은 child 구조체이고, na(이름)와 ec(눈색깔)는기호이며da(생일)는숫자다.

Page 24: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child) 은구조체다.(make-child f m na da ec)

f와m은 child 구조체이고, na(이름)와 ec(눈색깔)는기호이며da(생일)는숫자다.

Page 25: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child) 은구조체다.(make-child f m na da ec)

f와m은 child 구조체이고, na(이름)와 ec(눈색깔)는기호이며da(생일)는숫자다.

Page 26: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child) 은구조체다.(make-child f m na da ec)

f와m은 child 구조체이고, na(이름)와 ec(눈색깔)는기호이며da(생일)는숫자다.

Page 27: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

Page 28: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child)는 (make-child f m na da ec) 이고각필드는,1. f와m은 (a) empty이거나 (b) child 이다.2. na 와 ec 는기호다.3. da 는숫자다.

가계도항목 family-tree-node (ftn) 는다음두가지중하나다.1. empty2. (make-child f m na da ec) :f , m - ftn , na(이름) ec(눈색깔) -기호, da(생일) -숫자

Page 29: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child)는 (make-child f m na da ec) 이고각필드는,1. f와m은 (a) empty이거나 (b) child 이다.2. na 와 ec 는기호다.3. da 는숫자다.

가계도항목 family-tree-node (ftn) 는다음두가지중하나다.1. empty2. (make-child f m na da ec) :f , m - ftn , na(이름) ec(눈색깔) -기호, da(생일) -숫자

Page 30: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child)는 (make-child f m na da ec) 이고각필드는,1. f와m은 (a) empty이거나 (b) child 이다.2. na 와 ec 는기호다.3. da 는숫자다.

가계도항목 family-tree-node (ftn) 는다음두가지중하나다.1. empty2. (make-child f m na da ec) :f , m - ftn , na(이름) ec(눈색깔) -기호, da(생일) -숫자

Page 31: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

자식항목(child)는 (make-child f m na da ec) 이고각필드는,1. f와m은 (a) empty이거나 (b) child 이다.2. na 와 ec 는기호다.3. da 는숫자다.

가계도항목 family-tree-node (ftn) 는다음두가지중하나다.1. empty2. (make-child f m na da ec) :f , m - ftn , na(이름) ec(눈색깔) -기호, da(생일) -숫자

Page 32: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

Page 33: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

Page 34: 12장 함수 조합 다시 보기4

14. 자기 참조 데이터 정의 더 보기

Page 35: 12장 함수 조합 다시 보기4

14.2 이진 검색 트리 (BST)노드 정의

BT 정의

이진트리 (BT) 는다음두가지중하나다.1. false2. ( make-node soc pn lft rgt ) :soc(주민번호) -수 , pn(이름) -기호, lft rgt –이진트리

BT 정의

Page 36: 12장 함수 조합 다시 보기4

14.2 이진 검색 트리 (BST)

Page 37: 12장 함수 조합 다시 보기4

14.2 이진 검색 트리 (BST)

이진트리 (BT) 는이진트리이며, 다음두가지중하나다.

1. false 는항상이진검색트리이다.2. ( make-node soc pn lft rgt )는다음조건을만족할시이진트리임.

BST 정의 - 이진검색트리불변항

2. ( make-node soc pn lft rgt )는다음조건을만족할시이진트리임.(a) lft 와 rgt 는이진검색트리이다.(b) lft 내모든 soc 값은 soc 보다작다.(c) rgt 내모든 soc 값은 soc 보다크다.