SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

Similar documents
SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.

PowerPoint 프레젠테이션

HW5 Exercise 1 (60pts) M interpreter with a simple type system M. M. M.., M (simple type system). M, M. M., M.

OCaml

기본자료형만으로이루어진인자를받아서함수를결과값으로반환하는고차함수 기본자료형과함수를인자와결과값에모두이용하는고차함수 다음절에서는여러가지예를통해서고차함수가어떤경우에유용한지를설명한다. 2 고차함수의 예??장에서대상체만바뀌고중간과정은동일한계산이반복될때함수를이용하면전체연산식을간 단

Exercise (10pts) k-친수 일반적으로 k진수(k > 1)는 다음과 같이 표현한다. d0 dn 여기서 di {0,, k 1}. 그리고 d0 dn 은 크기가 d0 k dn k n 인 정수를 표현한다. 이것을 살짝 확장해서 k친수 를 다음과 같이 정의

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.03ex±×to0.03ex±×=10100 =minusby by1000 ·¡to0.03ex·¡to0.03ex·¡=10100 =minusby by1000 ¹Öto0.03ex¹Öto0.03ex¹Ö =10100 =minusby by1000 ¿øto0.03ex¿øto0.03ex¿ø=10100 =minusby by1000 ¸®to0.03ex¸®to0.03ex¸®(Principles of Programming) Part I

ThisJava ..

Homework 2 SNU , Fall 2015 Kwangkeun Yi due: 9/30, 24:00 Exercise 1 (10pts) k- 친수 일반적으로 k 진수 (k > 1) 는다음과같이표현한다. d 0 d n 여기서 d i {0,, k 1}. 그리

Homework 1 SNU , Fall 2012 Kwangkeun Yi Due: 9/14, 24:00 Exercise 1 리스트합 큰순서대로 (descending order) 나열된정수리스트두개를받아서하나의 순서리스트로만드는함수 merge: int lis


adfasdfasfdasfasfadf

282서비스업관리-마트

chap 5: Trees

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

鍮뚮┰硫붾돱??李⑤낯

C# Programming Guide - Types

PART

Part Part

£01¦4Àå-2

½ºÅ丮ÅÚ¸µ3_³»Áö

272*406OSAKAÃÖÁ¾-¼öÁ¤b64ٽÚ


untitled

COVER.HWP

이슈분석 2000 Vol.1

가볍게읽는-내지-1-2

한눈에-아세안 내지-1

kbs_thesis.hwp


17장 클래스와 메소드

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint 프레젠테이션

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

chap10.PDF

금오공대 컴퓨터공학전공 강의자료

1

K&R2 Reference Manual 번역본

PowerPoint 프레젠테이션

11강-힙정렬.ppt

제4장 기본 의미구조 (Basic Semantics)

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

PowerPoint Presentation

슬라이드 1

Dialog Box 실행파일을 Web에 포함시키는 방법

PowerPoint Template

Frama-C/JESSIS 사용법 소개

PowerPoint 프레젠테이션

우루과이 내지-1

untitled


<4D F736F F D20C3A520BCD2B0B32DC0CCB7B2B0C5B8E9B3AAB6FBBFD6B0E1C8A5C7DFBEEE322E646F63>

Microsoft PowerPoint - 09-Object Oriented Programming-3.pptx

JUNIT 실습및발표

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

2002년 2학기 자료구조

Microsoft PowerPoint - additional01.ppt [호환 모드]

Orcad Capture 9.x

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

신림프로그래머_클린코드.key

untitled


Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

쉽게 풀어쓴 C 프로그래밍

비긴쿡-자바 00앞부속

증권3월b72릴藪?

슬라이드 1

03_queue

1017스톰-KRX104호003~048수.ps, page Apogee Preflight

슬라이드 1

유니티 변수-함수.key

Chapter #01 Subject

09-interface.key


<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

제 1 장 기본 개념

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

제8장 자바 GUI 프로그래밍 II

untitled

chap x: G입력

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap06-2pointer.ppt

11장 포인터

Modern Javascript

gnu-lee-oop-kor-lec06-3-chap7

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

歯처리.PDF

Chapter 4. LISTS

2015 경제ㆍ재정수첩

untitled

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - TimeTable System.pptx

Transcription:

프로그래밍 원리 (Principles of Programming) Part IV Prof. Kwangkeun Yi 차례 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍

다음 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍 안전한프로그래밍 예상하는데이터 / 값이흘러다니는지를검사하는코드를항상넣는다. 넣는장소는함수정의내에 : 제대로된인자가전달되는지확인. 타입체크 (type check): 함수정의할때, 함수타입에맞는데이터를받는지확인하는코드를넣는다. 조건체크 (requirement check): 함수정의할때, 함수타입에맞는데이터중에서원하는경우의데이터인지를확인하는코드를넣는다.

안전한프로그래밍예 타입체크 (type check) 조건체크 (requirement check) (define (nth-child tree n) (cond ((not (is-tree? tree)) (error)) ((not (is-int? n)) (error)) ((is-leaf? tree) (error)) (( n 0) (error)) (else...) ; programming in a safe area ) ) (define (is-tree? tree) (and (pair? tree) (or (equal (car x) leaf-tag) (and (equal (car x) node-tag) (fold and (map is-tree? (cdr tree)) true) )))) (define is-int? integer?) 안전한프로그래밍의단점 타입체크코드 조건체크코드를꼭장착시켜야하는가? 분명히필요없는경우가있긴한데. 그럴땐필요없겠죠... 그런데붕안하긴해요. 모르겠네요. 더좋은방법없을까요? 내프로그램의실행속도가문제될것같아요. 함수호출하면매번타입체크를하는데시간이소모되잖아요. 문제될때곧바로중단시켜야문제를그때그때파악하기쉽긴할텐데... 모르겠네요. 더좋은방법없을까요? 내프로그램은 KRX-II로켓의진동보정시스템에장착될겁니다. 실행중에멈추면안되는데, 실행중에문제되면결국멈출텐데... 모르겠네요. 더좋은 방법없을까요?

미리타입검사해주는프로그래밍환경 static type-checking system 함수의인자타입에맞는데이타 / 값들이항상흘러드는지미리자동으로확인 미리 : 실행전에프로그램텍스트만을보면서. 자동으로 : 프로그래머가하지않는다. 프로그래밍을수월하게 /sw개발생산성증대 이미널리퍼지고있는기술 ( 미래? 현재!) 미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경 타입체크 ok, 그러나실행중에타입에러 예 : C, C++, Scheme, JavaScript, Phython 대책? 프로그래머의책임 안전한프로그래밍 (defensive programming) 준수

미리타입검사해주는프로그래밍환경 안전한 static type-checking system 덕택에 분명히필요없는경우가있긴한데. 그럴땐필요없겠죠... 그런데불안하긴해요. 모르겠네요. 더좋은방법없을까요? Static Type-Checking 내프로그램의실행속도가문제될것같아요. 프로시져실행중에매번타입체크를하는데시간이소모되잖아요. 문제될때곧바로중단시켜야문제를그때그때파악하기쉽긴할텐데... 모르겠네요. 더좋은방법없을까요? Static Type-Checking 내프로그램은 KRX-II로켓의진동보정시스템에장착될겁니다. 실행중에멈추면안되는데, 실행중에문제되면결국멈출텐데... 모르겠네요. 더좋은방법없을까요? Static Type-Checking (define (nth-child tree n) (cond ) ) ((is-leaf? tree) (error)) (( n 0) (error)) (else...) ; programming in a safe area

다음 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍 귀납적으로차근차근프로그래밍하 기 (inductive refinement) 예 ) 어울리지않아 프로그래밍 smatch : 스트링 코드 bool 코드 보조자료참고 c 0 1 9 c c c c c? c*

다음 1 안전하게프로그래밍하기 : 손수 vs 자동 2 맞는지확인하기쉽게프로그램하기 3 대형프로그래밍을위한기술 : 모듈프로그래밍 대형프로그래밍의상황 바깥에드러나는정의된이름들이점점많아진다 해결책? 보따리포장 : 수많은정의된이름들을그룹별로나누고 보따리이름 : 보따리마다이름을붙이자 어느보따리의무엇 으로호칭 이름의재사용 : 보따리소속만다르면같은이름도 괜찮다

모듈프로그래밍 대형프로그래밍을위한 모듈 = 정의들 + 보따리포장 + 보따리이름 module,.c file, structure, package 모듈타입 = 박스안에있는정의들의타입들 module type,.h file, signature, interface 일반화된모듈 = 모듈을인자로받는모듈 functor, parameterized module, class template, generic package 타입시스템의똑똑한도움 ( 대세 ) 모듈정의대로외부에서사용하는지미리검사해준다겉으로드러내기로한내용만사용하는지미리 검사해준다 모듈의정의

모듈타입의정의 모듈정의에서자동유추될수있기도하고 모듈타입을정의할수도있고 모듈타입의용도 signature matching ( 모듈타입과어울리기 ) 을통해서 어울린모듈은모듈타입에드러난내용만바깥에알려짐모듈이어느모듈타입과어울리려면그타입에드러난정의는최소한있어야 module Box:S = struct... end module Box = struct... end:s

모듈함수의정의 함수 : 값을받아서값을만드는함수 fun f(x,y) = x+y 모듈함수 : 모듈을받아서모듈을만드는함수 module F(X:S1, Y:S2) = struct... end 참고 : 인자로받는모듈의타입을자동유추할수 있을까? 아직불가능. 예 ) module F(X) = struct let f x = X.g x X.g 의타입? 알려면, 만들어지는모듈이어디에서어떻게 f를사용하는지알아야. 모듈프로그래밍

모듈프로그래밍 모듈프로그래밍

모듈프로그래밍 모듈프로그래밍