Recommended
PDF
PDF
게임프로그래밍입문 4주차
PDF
게임프로그래밍입문 5주차
PPTX
PPTX
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
PDF
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
PDF
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(1)
PDF
14장 - 15장 예외처리, 템플릿
PDF
C++ Concurrency in Action 9-2 Interrupting threads
PDF
[KOSSA] C++ Programming - 13th Study - exception handling
PDF
Effective modern cpp item14
PPTX
Startup JavaScript 3 - 조건문, 반복문, 예외처리
PPTX
PDF
2.Startup JavaScript - 연산자
PDF
Effective unit testing ch3. 테스트더블
PPTX
PDF
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
PPTX
Startup JavaScript 6 - 함수, 스코프, 클로저
PDF
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
PDF
Effective unit testing - 좋은테스트 요약
PPTX
PDF
PDF
Effective Modern C++ item 10
PPTX
[C++ korea] effective modern c++ study item8~10 정은식
PDF
KEY
KEY
More Related Content
PDF
PDF
게임프로그래밍입문 4주차
PDF
게임프로그래밍입문 5주차
PPTX
PPTX
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(2)
PDF
[방송통신대 컴퓨터과학과] C++ 프로그래밍 과제물 작성
PDF
[방송통신대 컴퓨터과학과] C 프로그래밍 과제물 작성
What's hot
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(3)
PDF
코딩인카페 C&JAVA 기초과정 C프로그래밍(1)
PDF
14장 - 15장 예외처리, 템플릿
PDF
C++ Concurrency in Action 9-2 Interrupting threads
PDF
[KOSSA] C++ Programming - 13th Study - exception handling
PDF
Effective modern cpp item14
PPTX
Startup JavaScript 3 - 조건문, 반복문, 예외처리
PPTX
PDF
2.Startup JavaScript - 연산자
PDF
Effective unit testing ch3. 테스트더블
PPTX
PDF
Effective Modern C++ MVA item 18 Use std::unique_ptr for exclusive-ownership ...
PPTX
Startup JavaScript 6 - 함수, 스코프, 클로저
PDF
[C++ korea] effective modern c++ study item 7 distinguish between () and {} w...
PDF
Effective unit testing - 좋은테스트 요약
PPTX
PDF
PDF
Effective Modern C++ item 10
PPTX
[C++ korea] effective modern c++ study item8~10 정은식
PDF
Viewers also liked
KEY
KEY
KEY
KEY
KEY
KEY
KEY
PDF
The Effect Of Early Oxytocin Augmentation
KEY
Similar to 프로그램은 왜 실패 하는가
PDF
PPTX
PDF
PPTX
PPTX
More effective c++ 챕터3~4ppt
PPTX
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
PPTX
PPTX
PDF
C 언어 스터디 02 - 제어문, 반복문, 함수
PPTX
Code complete chapter 19, 20 organize
PDF
PPTX
PPTX
PPTX
PDF
PPT
Windows Debugging Technique #2
PPTX
Effective c++(chapter 5,6)
PPTX
PDF
Modern C++ 프로그래머를 위한 CPP11/14 핵심
PDF
[C++ Korea 2nd Seminar] C++17 Key Features Summary
More from 홍준 김
PDF
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
PPTX
PPTX
KEY
PDF
KEY
PPT
프로그램은 왜 실패 하는가 1. 2. 기대의 단언 단언 : [ 명사 ] 주저하지 아니하고 딱 잘라 말함 . 관찰만 가지고는 디버깅이 힘들다 . 3. 기대의 단언 단언 (assertion) 의 기법을 이용하여 비교를 자동화 하는 방법 4. 장점 규모가변성 사람은 몇 개 vs 컴퓨터는 많이 많이 많이 지속성 한번 해두면 두고 두고 두고 두고 재사용성 5. 단언 감염을 점검하는 코드를 프로그램에 삽입 if (divisor == 0) { printf("Division by zero!"); abort(); } 6. 단언 assert (divisor != 0); void assert (int x) { if (!x) { printf("Assertion failed!\n"); abort(); } } $ my-program Assertion failed! Abort (core dumped) $ 7. 단언 #ifndef NDEBUG #define assert(ex) \ ((ex) ? 1 : (cerr << __FILE__ << ":" << __LINE__ \ << ": assertion ‘" #ex "’ failed\n", \ abort(), 0)) #else #define assert(x) ((void) 0) #endif $ my-program divide.c:37: assertion ‘divisor != 0’ failed Abort (core dumped) $ _ 8. 단언의 주요한 용도 자료의 무결성을 보장하는 자료 불변식 함수의 정확성을 보장하는 전제 조건과 사후조건 9. 불변식 단언 수행 전체에서 반드시 성립해야 하는 성질 유효한 시간은 00:00:00~23:59:60 class Time { public: int hour(); // 0..23 int minutes(); // 0..59 int seconds(); // 0..60 (incl. leap seconds) void set_hour(int h); … } 10. 불변식 단언 객체의 불변식이 성립함에 따라 그 객체의 상태가 감염 되지 않았음을 보장 void Time::set_hour(int h) { assert (sane()); // 전제조건 … 실제 코드 assert (sane()); // 사후조건 } bool Time::sane() { return (0 <= hour() && hour() <= 23) && (0 <= minutes() && minutes() <= 59) && (0 <= seconds() && seconds() <= 60); } 11. 정확성의 단언 어떠한 함수가 일을 제대로 하는지 보장하는 것 사후조건 : 함수의 끝에서 상태에 대해 반드시 성립해야 하는 조건 void Time::set_hour(int h) { // 실제코드 assert (hour() == h); } 12. 정확성의 단언 전제조건 : 함수의 시작에서 상태에 대해 성립해야 하는 조건 void Time::set_hour(int h) { assert (0 <= h && h <= 23); // 실제코드 } 13. 정확성의 단언 Eiffel 언어 계약에 의한 설계 호출자 ( 의뢰자 ) 함수 ( 제공자 ) set_hour (h: INTEGER) is -- h 로 시간을 설정 require sane_h: 0 <= h and h <= 23 ensure hour_set: hour = h minute_unchanged: minutes = old minutes second_unchanged: seconds = old seconds 14. 명세로서의 단언 자연어 “ Set_hour(h) 는 현재 시간을 h 로 설정한다 여기서 h 는 0~23 범위의 정수” 읽기는 쉽우나 애매함 형식 시스템 z 명세 불변식 & 전제 / 사후조건을 쉽게 파악 15. 명세로서의 단언 두 접근 방법의 공통점 명세와 코드가 분리 일반적인 소프트웨어에서는 대다수의 실행들에서 단언들이 성립하는것으로 충분 16. 단언에서 검증으로 JML(java modeling language) + 문서화 , 단위테스트 , 불변식 검출 , 정적 정검 , 검증 /*@ requires 0 <= h && h <= 23 @ ensures hours() == h && @ minutes() == \old(minutes()) && @ seconds() == \old(seconds()) @*/ void Time::set_hour(int h) … 17. 기준실행 기준 프로그램에 대해 프로그램을 점검하기 위해서 상대적 디버깅을 사용 p1 이 p0 의 새버전 또는 변종인 경우 18. 19. 사례 원인 CFileDialog 대화상자를 호출한 후 c:\\sample\\ 이동 , OK 버튼을 눌렀다면 이제부터 작업 경로는 c:\\work\\ 가 아니라 c:\\sample\\ 인 것입니다 . -_-…… 20. 사례 해결 char path[MAX_PATH] = {0}; // 현재의 작업경로를 얻어와 저장 한다 . GetCurrentDirectory(MAX_PATH, path); CFileDialog dlg(FALSE); if(dlg.DoModal()==IDOK) { // 가장 마지막에 저장해 두었던 작업경로로 다시금 세팅한다 . SetCurrentDirectory(path); // 하고픈 작업코드 ..... }