Indent Style, Recursive Function 전자계산입문 2009/03/27.

Slides:



Advertisements
Similar presentations
2014 년 가을학기 계산 입문 연습 #2 지도교수 : 박성우 조교 : 김준성 1. 목차 복습하기 정수와 문자열 논리연산자 비교연산자 비교 연산자 & 논리 연산자 조건 연산식 변수 선언 2.
Advertisements

YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
VISUAL BASIC 양 계 탁.
귀납과 재귀 (Induction and Recursion)
Activation Records & Recursion
성공적인 주40시간제 정착을 위한 기업의 대응전략
제 1장 C 언어의 소개.
C++ Espresso 제2장 제어문과 함수.
AJAX 기본중의 기본 xmlhttprequest
학교폭력과 청소년 - 영원히 씻을 수 없는 상처가 된다.
데이터 관리의 모든 것 데이터 최적화하기 데이터 정렬하기 자동 필터와 고급 필터
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
Part 08 함수 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
제2절 법인세의 계산구조와 세무조정 1. 각 사업연도소득에 대한 법인세 계산구조 회계와 사회 결산서상 당기순이익
JavaScript.
Internet Computing KUT Youn-Hee Han
DataScience Lab. 박사과정 김희찬 (월)
문항 제작, 유형 및 분석 윤장민 권애란 민선경 정혜민.
Tail-recursive Function, High-order Function
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
명령어 구조 컴퓨터 하드웨어의 구성 프로그램 명령어 프로그램 실행 동작.
Irregular Ab Screening Test와 Cross matching 의 불일치 (본원의 사례)
부록 A Matlab 활용.
모형 선택과 적합도 지수.
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
6장 데이터 타입(2) 순천향대학교 컴퓨터공학부 하 상 호.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
기초 프로그래밍 Yang-Sae Moon Department of Computer Science
강의 소개, 자료구조의 개념, SW 개발과 자료구조
제 6장 함수 Hello!! C 언어 강성호 김학배 최우영.
효율적인 메모리 사용을 위한 free 명령어 삽입 알고리즘
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
제2장 제어구조와 배열 if-else 문에 대하여 학습한다. 중첩 if-else 문에 대하여 학습한다.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
제1장 자료구조를 배우기 위한 준비.
아두이노 프로그래밍 1일차 – Part4 값출력 및 디지털 읽기 강사: 김영준 목원대학교 겸임교수
윈도우 계산기 윈도우 보조프로그램 4칙연산 외 10여가지 기능 구현 ⑥ 메뉴 ⑤ 메모리 ③ 단항연산 ④ 지우기
제주 REC 거래 방식 변경.
4장 - PHP의 표현식과 흐름 제어-.
<숭실대학교 형남 공학관 오시는 길>
기존 REC거래시스템 회원사의 신재생 통합포털 회원가입 설명서.
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
DataScience Lab. 박사과정 김희찬 (화)
프로그래밍 기초와 실습 Chapter 11 Recursion.
Exponential and Logarithmic functions
CHAP 11 : 해싱.
[INA470] Java Programming Youn-Hee Han
루프와 카운트 Looping and counting
U N I X 창원대학교 전자계산학과 김병찬.
제목을 입력해 주세요 ┗ SUB TITLE을 입력해 주세요 홍길동.
작성일 참고서적 – Programing Game AI by Example
뉴미디어 이용과 뇌 구조의 변화 <생각하지 않는 사람들>
C 코드최적화 세명대학교 AI연구실 양승조.
Hello, Python! #3 <부제: 코딩은 혼자하는 것이다>
Social Commerce.
3D 프린팅 프로그래밍 04 – 도형 회전 (하트 열쇠고리 만들기) 강사: 김영준 목원대학교 겸임교수.
2013년도 상반기 고객만족도 조사 결과 보고서
2013년도 하반기 고객만족도 조사 결과 보고서
최대 공약수 구하기 (1) 프로그램 예제2 : 최대 공약수 구하기 문제 해결 방법 구상 (아는 지식 정리) GCD1 알고리즘
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Introduction to Computer System 컴퓨터의 이해 3: 데이터 표현
8단계 3층을 완성한다 Case 1 Case 2 Case 3 Case 4
DataScience Lab. 박사과정 김희찬 (화)
Spring, 2019 School of CSE Pusan National University
서술형 평가 확대 한국교육과정평가원 김 소 영.
제 1장 프로그래밍 언어 소개 1.1 프로그래밍 언어란 무엇인가 1.2 프로그래밍 언어를 배워야 하는 이유
근대 19세기 서양 복식.
PHP 기초문법 PHP를 공부하는데 있어 가장 기초가 되는 PHP기초문법에 대해서 배워 봅니다.
Presentation transcript:

Indent Style, Recursive Function 전자계산입문 2009/03/27

Indent Style 숙제를 도와 달라는 어떤 학생 … let rec collatz n = if n = 1 then true else if n mod 2 = 1 then collatz (3*n + 1) else collatz (n/2);; 니가 해 !!!!

Indent Style 간단한 경우에는 한 줄에 깔끔하게 작성 let incr x = x + 1;; let concat s = “Hello” ^ s;;

Indent Style if 문의 경우 if ~ then ~ 이 길어지는 경우 if x > 0 then “positive” else if x < 0 then “negative” else “zero” if x > 0 && y > 0 && z > 0 then x + y > z && y + z > x && z + x > y else false

Indent Style 함수가 들어간 보다 복잡한 경우 let rec collatz n = let a = 3 in let f x = if x > 0 then “positive” else “non-positive” in if n = 1 then true else if n mod 2 = 1 then collatz (3*n + 1) else collatz (n/2) ;;

Tuple 불필요한 pattern matching 을 피함 let add a b = let (a1, a2) = a in let (b1, b2) = b in (a1 + b1, a2 + b2) ;; let add (a1, a2) (b1, b2) = (a1 + b1, a2 + b2) ;;

Misc. Indentation 을 줄 때, tab 을 쓰는 것 보다공 백 ( 스페이스바 ) 을 사용하는 것이 좋음. (2 칸 정도가 적당, 4 칸을 넘지 말 것 ) 불필요한 조건문을 쓰지 말 것. if x = 0 then true else false x = 0

Misc. 수식은 보기 좋게 적당히 띄어줌. 11*(19mod3)+17/4-6;;

Recursive Function [ 문제 ] 문자열 s 를 입력받아 s 가 두번 반복 된 문자열을 반환하는 함수 string2 작성하 라. [ 실행결과 ] [ 모범답안 ] let string2 s = s ^ s;;

Recursive Function [ 문제 ] 문자열 s 와 정수 n 을 입력받아 s 가 n 번 반복된 문자열을 반환하는 함수 stringn 을 작성하라. … 1 번 : let string1 s = s ;; 2 번 반복 : let string2 s = s ^ s ;; 3 번 반복 : let string3 s = s ^ s ^ s ;; n 번 반복 : let stringn s n = ??

Recursive Function … [ 수행 ] n : s ^ stringn s (n-1) n-1 : s ^ s ^ stringn s (n-2) n-2 : s ^ s ^ s ^ stringn s (n-3) 2 : s ^ s ^ s ^ … ^ s ^ stringn s (2-1) 1 : s ^ s ^ s ^ … ^ s ^ s 1.termination condition: 2.base case: 3.recursive case: if then else n = 1 s s ^ stringn s (n – 1)

Recursive Function [ 모범답안 ] let rec stringn s n = if n = 1 then s else s ^ stringn s (n - 1) ;;

Recursive Function 2 진수를 10 진수로 바꾸는 문제 x = 0 이면 0 x = 1 이면 1 Base case: 한자리만 남았을 경우 Recursive case: 함수가 제대로 기능한다고 치고 만듬 한 자리씩 한 자리씩 recursion 하면서 계산하자 ! ( 앞의 숫자들로 계산한 값 ) x 2 + 마지막 숫자 if x = 0 then 0 else if x = 1 then 1 else bin2dec (x/10) * 2 + x mod 10

Recursive Function [ 모범답안 ] let rec bin2dec x = if x = 0 then 0 else if x = 1 then 1 else 2 * bin2dec (x/10) + x mod 10 ;;

[ 연습문제 1] [ 문제 ] factorial 을 계산하는 함수 fact 를 recursive function 으로 작성한다. [ 실행결과 ]

[ 연습문제 1] [ 모범 답안 ] let rec fact n = if n = 0 then 1 else n * fact (n - 1) ;;

[ 연습문제 2] [ 문제 ] exponentiation 을 계산하는 함수 pow 를 recursive function 으로 작성한다. ( 인자 a 와 b 를 받아 a b 를 계산하는 함수 pow 작성 ) [ 실행결과 ] Pow 3 20(=3 20 ) 과 같이 pow 함 수를 적용하는 경우 Ocaml 이 표현 할 수 있는 정수의 범위를 벗어나 overflow 가 발생한다.

[ 연습문제 2] [ 모범답안 ] let rec pow a b = if b = 0 then 1 else a * pow a (b - 1) ;;