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

Similar documents
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

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

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

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

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

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

ThisJava ..

adfasdfasfdasfasfadf

鍮뚮┰硫붾돱??李⑤낯

chap 5: Trees

282서비스업관리-마트


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

C# Programming Guide - Types

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

17장 클래스와 메소드

PowerPoint 프레젠테이션

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

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

chap10.PDF

1

£01¦4Àå-2

PART

Part Part

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

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


untitled

COVER.HWP

이슈분석 2000 Vol.1

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

한눈에-아세안 내지-1

kbs_thesis.hwp


PowerPoint 프레젠테이션

K&R2 Reference Manual 번역본

11강-힙정렬.ppt

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

슬라이드 1

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

PowerPoint Presentation

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

PowerPoint Template

Frama-C/JESSIS 사용법 소개

untitled


PowerPoint 프레젠테이션

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

JUNIT 실습및발표

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

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

<4D F736F F D20C3A520BCD2B0B32DC0CCB7B2B0C5B8E9B3AAB6FBBFD6B0E1C8A5C7DFBEEE322E646F63>

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

우루과이 내지-1

2002년 2학기 자료구조

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

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

비긴쿡-자바 00앞부속

Orcad Capture 9.x

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

untitled

슬라이드 1

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

쉽게 풀어쓴 C 프로그래밍

09-interface.key

03_queue

Homework 3 SNU , 2011 가을이광근 Program Due: 10/10, 24:00 Essay Due: 10/12, 15:30 이번숙제의목적은 : 수업시간에살펴본, 상식적인명령형언어의정확한정의를이해하고그실행기를구현해보기. 상식적인수준에서디자인

슬라이드 1

슬라이드 1

Chapter #01 Subject

유니티 변수-함수.key

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

증권3월b72릴藪?

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


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

제 1 장 기본 개념

untitled

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

chap x: G입력

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>


歯처리.PDF

Modern Javascript

11장 포인터

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap06-2pointer.ppt

Chapter 4. LISTS

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

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

C 프로그래밊 개요

슬라이드 1

Chapter 4. LISTS

Transcription:

SNU 4190.210 프로그래밍 원리 (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 불안전하게확인

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경 타입체크 ok, 그러나실행중에타입에러

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경 타입체크 ok, 그러나실행중에타입에러 예 : C, C++, Scheme, JavaScript, Phython

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경 타입체크 ok, 그러나실행중에타입에러 예 : C, C++, Scheme, JavaScript, Phython 대책?

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경 타입체크 ok, 그러나실행중에타입에러 예 : C, C++, Scheme, JavaScript, Phython 대책? 프로그래머의책임

미리타입검사해주는프로그래밍환경 이슈 : 안전하게확인 vs 불안전하게확인 안전하게자동확인해주는환경 대표예 : ML(OCaml) 프로그래밍실습을통해서경험 그밖의예 : Java, C#, F#, Scala, Haskell 불안전한환경 타입체크 ok, 그러나실행중에타입에러 예 : C, C++, Scheme, JavaScript, Phython 대책? 프로그래머의책임 안전한프로그래밍 (defensive programming) 준수

미리타입검사해주는프로그래밍환경 안전한 static type-checking system 덕택에

미리타입검사해주는프로그래밍환경 안전한 static type-checking system 덕택에 분명히필요없는경우가있긴한데. 그럴땐필요없겠죠... 그런데불안하긴해요. 모르겠네요. 더좋은방법없을까요?

미리타입검사해주는프로그래밍환경 안전한 static type-checking system 덕택에 분명히필요없는경우가있긴한데. 그럴땐필요없겠죠... 그런데불안하긴해요. 모르겠네요. 더좋은방법없을까요? Static Type-Checking

미리타입검사해주는프로그래밍환경 안전한 static type-checking system 덕택에 분명히필요없는경우가있긴한데. 그럴땐필요없겠죠... 그런데불안하긴해요. 모르겠네요. 더좋은방법없을까요? Static Type-Checking 내프로그램의실행속도가문제될것같아요. 프로시져실행중에매번타입체크를하는데시간이소모되잖아요. 문제될때곧바로중단시켜야문제를그때그때파악하기쉽긴할텐데... 모르겠네요. 더좋은방법없을까요?

미리타입검사해주는프로그래밍환경 안전한 static type-checking system 덕택에 분명히필요없는경우가있긴한데. 그럴땐필요없겠죠... 그런데불안하긴해요. 모르겠네요. 더좋은방법없을까요? Static Type-Checking 내프로그램의실행속도가문제될것같아요. 프로시져실행중에매번타입체크를하는데시간이소모되잖아요. 문제될때곧바로중단시켜야문제를그때그때파악하기쉽긴할텐데... 모르겠네요. 더좋은방법없을까요? Static Type-Checking

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

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

(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?)

(define (nth-child tree n) (cond ((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?)

(define (nth-child tree n) (cond ((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?)

(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,.c file, structure, package 모듈타입 = 박스안에있는정의들의타입들 module type,.h file, signature, interface

모듈프로그래밍 대형프로그래밍을위한 모듈 = 정의들 + 보따리포장 + 보따리이름 module,.c file, structure, package 모듈타입 = 박스안에있는정의들의타입들 module type,.h file, signature, interface 일반화된모듈 = 모듈을인자로받는모듈 functor, parameterized module, class template, generic package

모듈프로그래밍 대형프로그래밍을위한 모듈 = 정의들 + 보따리포장 + 보따리이름 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

모듈함수의정의 함수 : 값을받아서값을만드는함수 fun f(x,y) = x+y 모듈함수 : 모듈을받아서모듈을만드는함수 module F(X:S1, Y:S2) = struct... end 참고 : 인자로받는모듈의타입을자동유추할수 있을까?

모듈함수의정의 함수 : 값을받아서값을만드는함수 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의타입?

모듈함수의정의 함수 : 값을받아서값을만드는함수 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 를 사용하는지알아야.

모듈프로그래밍

모듈프로그래밍

모듈프로그래밍

모듈프로그래밍

모듈프로그래밍