12장 함수 조합 다시 보기4

Preview:

Citation preview

12장 함수 조합 다시 보기

복잡한프로그램

->보조함수사용

->코드의미가독성증대

예 3.1 절

보조함수를 사용할 상황

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

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

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

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

WISH LIST

• 만들어야할함수목록을

“WISH LIST”

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

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

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

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

계약과 목적, 그리고 헤더

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

12.2 재귀 보조 함수템플릿

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

12.2 재귀 보조 함수

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

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

12.2 재귀 보조 함수

이제 insert 만구현하면끝.

insert 의템플릿

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

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

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

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

posn 리스트의정규표현식

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

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

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

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

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

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

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

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

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

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

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

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

이거슨원하는바가아님.

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

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

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

이거슨원하는바가아님.

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

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

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

graphing.ss 추가해야됨

13. 리스트 축약

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

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

• = ‘( 1 2 3)

13. 리스트 축약

• ( list ‘a ‘b ‘c )

• = ‘( a b c )

• first, rest 동일하게사용

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

• 자기참조데이터

; 자기구조체를

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

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

• 자기참조데이터

; 자기구조체를

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

예)

( define-struct child

( father mother name date eyes ) )

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

( define-struct child

( father mother name date eyes ) )

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

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

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

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

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

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

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

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

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

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

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

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

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(생일) -숫자

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(생일) -숫자

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(생일) -숫자

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(생일) -숫자

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

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

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

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

BT 정의

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

BT 정의

14.2 이진 검색 트리 (BST)

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 보다크다.