OCR 프로그래밍: 이미지 인식

Size: px
Start display at page:

Download "OCR 프로그래밍: 이미지 인식"

Transcription

1 112 OCR 프로그래밍 이미지 인식 김세훈 지음

2 112 OCR 프로그래밍 이미지인식 김세훈지음

3 표지사진김세훈이책의표지는저자김세훈님이보내주신풍경사진을담았습니다. 리얼타임은독자의시선을담은풍경사진을책표지로보여주고자합니다. 사진보내기 OCR 프로그래밍이미지인식 초판발행 2015 년 8 월 21 일 지은이김세훈 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로 7길 83 한빛미디어 ( 주 ) IT출판부전화 / 팩스 등록 1999년 6월 24일제 호 ISBN / 정가 13,000원 총괄배용석 / 책임편집김창수 / 기획 편집정지연 / 교정이미연디자인표지 / 내지여동일, 조판최송실마케팅박상용 / 영업김형진, 김진불, 조유미 이책에대한의견이나오탈자및잘못된내용에대한수정정보는한빛미디어 ( 주 ) 의홈페이지나아래이메일로알려주십시오. 한빛미디어홈페이지 / 이메일 ask@hanbit.co.kr Published by HANBIT Media, Inc. Printed in Korea Copyright c 2015 김세훈 & HANBIT Media, Inc. 이책의저작권은김세훈과한빛미디어 ( 주 ) 에있습니다. 저작권법에의해보호를받는저작물이므로무단복제및무단전재를금합니다. 지금하지않으면할수없는일이있습니다. 책으로펴내고싶은아이디어나원고를메일 (ebookwriter@hanbit.co.kr) 로보내주세요. 한빛미디어 ( 주 ) 는여러분의소중한경험과지식을기다리고있습니다.

4 저자소개 지은이 _ 김세훈 내가지금뭐하고있지? 2010년 40살이되어불현듯나를돌아봤다. 열심히살려고부단히노력했던것같은데, 회사와집만을오가며답답한삶을살고있음을느꼈다. 그래서다짐했다. 이제부터즐기면서살자. 그런데삶은녹록하지가않았다. 되는일보다안되는일이더많다. 그것이인생이다. 라고하시는아버지의말씀도진리처럼느껴졌다. 몇년이흐른후내가변해있음을느꼈다. 무엇이나를변화하게했을까? 그건지금까지 5년넘게매일같이인생에대한글을쓴일이었다. 청소년기에가치관이정립된다고학교에서는가르치지만, 나는죽을때까지가치관을정립하며죽을때도깨우치지못한진리들이많을것이다. 좋은말씀을써오라는숙제를받은초등학생조카에게필자는말했다. 일기쓰면인생이변한다. 하루의일과가아닌, 인생의진지한글들을써보세요. 시간이한참흐른후자신이변해있음을발견하게됩니다. 필자는현재 지식소프트 1인회사에서부장으로재직중이다.

5 저자서문 언어를배울때사전을찾아본적이있을것이다. 사전에서원하는단어를찾는방법은간단하다. 정렬된순서에의해서찾고자하는단어가일치하면찾은것이다. 인식프로그램의가장대표적인것이전자사전인데, 전자사전에서단어를찾는것도일반사전에서단어를찾는것과마찬가지다. 데이터베이스가구축되어있고, 찾고자하는단어를찾으면된다. 모든인식프로그램이이원리를따르고있다. 그렇다면이미지나소리의인식은무엇이다를까? 프로그램에서새로운데이터타입을만들고사전처럼기존에만들어진데이터와비교할때정확한일치가어려우므로확률을사용한다는점이다. 즉, 일치하는확률이높은것을결과값으로결정하며, 얼마나정확한결과값을도출하느냐가인식률의높고낮음을나타낸다. 문자인식에대한기술은오래전에나왔으며, 이제는소리인식으로넘어갔다. 그러나기술공개는이루어지지않고있다. 이책에서설명하는내용은필자가생각해낸방법이므로이방법만이정답은아니다. 하지만개인적으로이방법이문자인식 OCR 을하는최적의방법이라생각한다. 데이터타입이무엇인지는 How-to Series 1편인 소수와 RSA 알고리즘으로배우는 Big Number 연산 - 구조체와자료구조의이해 ( 한빛미디어, 2013) 에서설명하였으며, 프로그래밍의시작은이데이터타입을이해하는것이라고본다. 이책에서도문자이미지를담기위한데이터타입을가장먼저다룰것이다. 여기서다루는새로운데이터타입을이해하면왜한글인식이영문인식보다어려운지를알게될것이다. 그다음으로는문자이미지를어떻게데이터타입에넣는지를다룬다. 이는문자

6 인식에서가장어려운부분이다. 하나의문자이미지가문자데이터타입에담기면기존에만들어놓은기본데이터타입과비교하면된다. 전체이미지에서하나의문자이미지만을가져오는방법은이미지마다다르게적용될수있기에이미지를분석하는기술을요구한다. 이미지인식의마지막은이미지변형 Image Transform 이다. 이미지변형은포토샵같은프로그램에서주로사용하는데, 간단한이미지변형으로인식률을어떻게높이는지알게될것이다. 이미지변형에서는수학적인내용이포함되나중학교수준의삼각함수를이해하고있는독자라면쉽게이해할수있다. How-to Series 는프로그램언어를설명하는책이아니며, 프로그램을어떻게만드는지를독자와함께공부하려는목적으로만들었다. 이책을가장효과적으로보려면전체를한번빨리훑고직접프로그램을만들면서막히는부분은이책을보면서풀어나가는것이좋다. How-to Series 는 1년에한가지주제로펴내고있다. 책마다개별주제로만들어지지만먼저출간된책에서설명한내용을이후의책에서는생략하는경우가있다. 시리즈 3편인이책에서구현하는프로그램은 MFC를사용하는데, MFC는 MFC 프로그래밍 : 주식분석프로그램만들기 ( 한빛미디어, 2014) 에서상세히설명하였기때문에이책에서는자세한설명을생략하였다. 예를들어, 도구상자 를사용하여버튼을만든다거나클래스를추가하는방법등이생략되었다. MFC 에대해충분히이해하고있지않다면 MFC 프로그래밍 : 주식분석프로그램만들기 를참조하면서보기를권한다.

7 세번째책인 OCR 프로그래밍 : 이미지인식 은힘들때항상함께해준나의친구 박흥준 에게바친다. 또한, 나의사랑하는조카 신효인 에게선물로준다. 나의영원한모델인효인이의개인사진사로활동하면서조금더사진에대해관심을갖게되었고, 이미지인식에쉽게접근할수있었다고생각한다.

8 대상독자및참고사항 초급초중급중급중고급고급 이책은 C++ 를알고있는초 중급자를대상으로하며 Windows 환경에서 MFC로 OCR 프로그램을만드는방법을설명합니다. 주제를가지고프로그램을배우자는목적으로 OCR이라는주제로처음부터단계적으로프로그램을만들어갑니다. 사진에서문자를인식하는 OCR 기술은다양한프로그램으로응용될수있는기술이며교육의목적으로 Windows 환경에서구현되었지만, 동일한원리로스마트폰애플리케이션에서응용할수있습니다. 이책에수록된코드들은 Windows에서생성하여실행해야하며, Visual Studio 2008에서구현되었습니다. 예제테스트환경사용프로그렘 설명 Visual Studio 2008 이상 예제는 Windows 환경에서테스트하였다. Windows OS Windows 환경에서만실행할수있다. 예제파일은다음에서다운로드할수있습니다. How-to Series 는방법론적인부분들에초점을맞추어만들어진책입니다. 일방적인지식의전달이라기보다는 이러한방법도있구나 하고이해하는것이중요합니다.

9 한빛리얼타임 한빛리얼타임은 IT 개발자를위한 ebook 입니다. 요즘 IT 업계에는하루가멀다하고수많은기술이나타나고사라져갑니다. 인 터넷을아무리뒤져도조금이나마정리된정보를찾기도쉽지않습니다. 또한, 잘정리되어책으로나오기까지는오랜시간이걸립니다. 어떻게하면조금이라 도더유용한정보를빠르게얻을수있을까요? 어떻게하면남보다조금더빨 리경험하고습득한지식을공유하고발전시켜나갈수있을까요? 세상에는수 많은종이책이있습니다. 그리고그종이책을그대로옮긴전자책도많습니다. 전자책에는전자책에적합한콘텐츠와전자책의특성을살린형식이있다고생 각합니다. 한빛이지금생각하고추구하는, 개발자를위한리얼타임전자책은이렇습니다. 1 ebook First - 빠르게변화하는 IT 기술에대해핵심적인정보를신속하게제공합니다 500페이지가까운분량의잘정리된도서 ( 종이책 ) 가아니라, 핵심적인내용을빠르게전달하기위해조금은거칠지만 100페이지내외의전자책전용으로개발한서비스입니다. 독자에게는새로운정보를빨리얻을기회가되고, 자신이먼저경험한지식과정보를책으로펴내고싶지만너무바빠서엄두를못내는선배, 전문가, 고수분에게는좀더쉽게집필할수있는기회가될수있으리라생각합니다. 또한, 새로운정보와지식을빠르게전달하기위해 O'Reilly의전자책번역서비스도하고있습니다. 2 무료로업데이트되는전자책전용서비스입니다 종이책으로는기술의변화속도를따라잡기가쉽지않습니다. 책이일정분량이상으 로집필되고정리되어나오는동안기술은이미변해있습니다. 전자책으로출간된이 후에도버전업을통해중요한기술적변화가있거나저자 ( 역자 ) 와독자가소통하면서보완하여발전된노하우가정리되면구매하신분께무료로업데이트해드립니다.

10 3 4 독자의편의를위해 DRM-Free 로제공합니다 구매한전자책을다양한 IT 기기에서자유롭게활용할수있도록 DRM-Free PDF 포맷으로제공합니다. 이는독자여러분과한빛이생각하고추구하는전자책을만들어나가기위해독자여러분이언제어디서어떤기기를사용하더라도편리하게전자책을볼수있도록하기위함입니다. 전자책환경을고려한최적의형태와디자인에담고자노력했습니다종이책을그대로옮겨놓아가독성이떨어지고읽기어려운전자책이아니라, 전자책의환경에가능한한최적화하여쾌적한경험을드리고자합니다. 링크등의기능을적극적으로이용할수있음은물론이고글자크기나행간, 여백등을전자책에가장최적화된형태로새롭게디자인하였습니다. 앞으로도독자여러분의충고에귀기울이며지속해서발전시켜나가도록하겠 습니다. 지금보시는전자책에소유권한을표시한문구가없거나타인의소유권한을표시한문구가있다면위법하게사용하고있을가능성이큽니다. 이경우저작권법에따라불이익을받으실수있습니다. 다양한기기에사용할수있습니다. 또한, 한빛미디어사이트에서구매하신후에는횟수에관계없이내려받으실수있습니다. 한빛미디어전자책은인쇄, 검색, 복사하여붙이기가가능합니다. 전자책은오탈자교정이나내용의수정 보완이이뤄지면업데이트관련공지를이메일로알려드리며, 구매하신전자책의수정본은무료로내려받으실수있습니다. 이런특별한권한은한빛미디어사이트에서구매하신독자에게만제공되며, 다른사람에게양도나이전은허락되지않습니다.

11 차례 chapter 1 OCR 이란무엇인가? 사진에서문자이미지가져오기 연산이가능한데이터만들기 확률을이용한인식 영문이한글보다인식률이높은이유 021 chapter 2 기본이미지데이터만들기 새로운데이터구조체 기본이미지데이터 문자이미지추출하기 이미지데이터만들기 기본이미지데이터불러오기 074 chapter 3 문서이미지 OCR 확률을이용한 OCR 줄바꿈문자추가하기 공백문자삽입하기 특수문자추가하기 마침표, 쉼표, 따옴표인식 대문자와소문자보정 문자색의범위조정으로인식률높이기 139

12 chapter 4 자동차번호판인식 사진크기변경및흑백사진만들기 문자이미지추출 문자이미지데이터변환 번호판인식 이미지데이터변형 175 부록 187 A.1 사진크기변경하기 187 A.2 사진회전하기 190 A.3 흑백사진만들기 192 A.4 서명넣기 195 글을마치며 201

13

14 chapter 1 OCR 이란무엇인가? 인식은인공지능 AI 의한분야라고볼수있다. 그시작은사전과같은간단한것이나궁극적으로추구하는것은사람간의의사소통일것이다. 지리적인문제와다양한언어는인간의의사소통을단절시켰지만, 인공지능은기계를통한연결로다른지역이나다른나라사람과의의사소통을원활히하기위해발전해왔다. 그런면에서음성인식은많이발전한듯보이지만아직시작단계다. 그렇다면이미지인식은어떨까? 이책에서다루려는이미지인식은문자에국한되고일반적인사물을인식하는것은현재로써는어렵다. 하지만 2차원적이미지인식도음성인식과별반다르지않다. 그런데도음성인식보다이미지인식이먼저발전한이유는무엇때문일까? 일정한틀안에이미지를담기가더쉬웠기때문이다. 문자를나누기가조금더쉬웠고프로그램언어로표현하는방법이용이했다. 1999년에처음으로문자인식펜을본적이있다. 종이에인쇄된알파벳을따라그으면단어의뜻이펜표면에뜨고, 스캔한글이인식되어워드파일로만들어졌다. 이후문자인식 OCR, Optical Character Recognition 은더발전하고많이보편화되었다. 예를들어, 주차장에서카메라로자동차번호판을읽는것도문자인식이다. 이책의마지막에자동차번호판인식을다루지만, 일반카메라로찍은사진이기에실제환경과는다른방법으로인식할것이다. 시중의자동차번호판인식은일반카메라가아닌특수카메라로찍기때문에문자부분과바탕부분이명확히흑백으로구분되어인식하기가훨씬용이할수있다. 1 OCR 이란무엇인가? - 013

15 이책을통해 OCR 을이해하고응용한다면일정한형태의문자를인식하는방법 을쉽게찾을수있을것이다. 1.1 사진에서문자이미지가져오기 사진에서문자를인식하기위해가장먼저해야할일은문자이미지부분을알아내는것이다. 이책에서는이를파싱한다고부를것이다. 이제부터이미지파싱이라고하면이미지에서문자부분을떼어낸다고이해하면된다. 문자이미지는사각형으로따낼것이며 2차원 ( 평면 ) 의사진에서는색으로만구분하기때문에정해진문자색을기준으로문자이미지를인식할것이다. 또한, 문자색으로지정된특정색이외의것은모두바탕으로생각하고무시하면된다. 즉, 문자색이검은색이라면사진에서검은색이외의부분은모두흰색이고, 사진한장에는검은색과흰색만이존재한다고보면된다. 즉, 사진을두가지색으로만나누어문자와바탕으로만생각한다. 흰색종이위에다양한색의문자들이있다면, 이때는흰색을제외한나머지색을검은색으로바꾸어두가지색으로만이루어진이미지를만들면된다. 파싱의기본은문자와바탕이라는두가지색으로만이루어진이미지를만드는것이다. 하지만실제프로그래밍에서는색을바꾸는작업은하지않을것이다. 이작업도 CPU의많은작업을필요로하기때문에프로그램의속도를늦출뿐이다. 다음그림은이미지에서문자를인식하기위해어떻게변환작업을하는지를보여준다. [ 그림 1-1] 은문자색을기준으로나머지를바탕으로만들었고, [ 그림 1-2] 는바탕이외의색을모두문자로판단하여변환하였다. 이때중요한것은변환한후의이미지는검은색문자와흰색바탕으로만이루어졌다는것이다. 무엇을문자로인식하느냐에따라파싱의처음작업은다양하게이루어질수있다

16 그림 1-1 문자색기준의이미지변환 그림 1-2 바탕색기준의이미지변환 앞에서와같이인식할문자가명확하다면파싱작업을하여개별알파벳으로나누면된다. Image Recognition 단어는 16개의알파벳으로나누면되는데나눈문자는 [ 그림 1-3] 과같이개별이미지에꽉차게보일것이다. 즉, 검은색부분을기준으로나누어사각형의테두리에는항상검은색이존재하게된다. 문자를하나씩나누는작업은이미지마다의특성을분석해야한다. 실제이미지는기울어져있을수도있고, 사진속의이미지라면사진을찍는각도에따라이미지가틀어져있을수도있다. 하지만이책에서는쉽게이해하기위해깨끗한이미지를예로사용하여쉬운파싱을할것이다. 문자인식에서가장어려운부분이파싱인데, 다행히도문자와문자사이는겹친부분이없기에파싱이용이하다. 각각의문자가겹쳐있다면인식이불가능할수도있다. [ 그림 1-3] 과같이하나씩나누어진문자이미지는인식을위해크기가같은이미지로변환해야한다. 모든문자는비교할수있는일정한틀안에담아야하기때문이다. 1 OCR 이란무엇인가? - 015

17 그림 1-3 하나의문자로나누기 [ 그림 1-4] 는가로, 세로의크기가같은사각형안에각알파벳을담은것이다. 하나의문자는늘려질수도있고축소될수도있다. I 아이는사각형안에꽉차게된다. 그렇다면소문자 l 엘은어떻게될까? 이책에서는문자형식을 Arial Type으로진행을하기때문에대문자 I 아이와소문자 l 엘은같은이미지로나타난다. 이러한경우에는문자가처음시작하는문자인지를판단해야하며프로그램으로이부분을해결해야한다. 그림 1-4 크기가같은문자만들기 문자인식프로그램에서는 [ 그림 1-4] 와같이이미지자체를일정한크기로변환하는작업을하지않는다. 이러한작업은속도에영향을주는불필요한작업이므로문자인식프로그램에서는이미지의변환없이바로연산이가능한데이터타입에넣어준다. 파싱을소개하면서쉽게이해하기위해앞에서와같이시각적으로접근하였다. 지금까지의내용을이해하였다면다음내용인데이터타입에하나의문자를넣는작업을쉽게이해할수있을것이다. 1.2 연산이가능한데이터만들기 이미지안의문자는단지그림일뿐이다. 프로그래밍하기위해서는문자이미지를데이터형태로가지고있어야한다. 우리는파싱을통하여문자이미지를검은색과흰색의두가지색으로만표현하였다. 여기에더하여문자의크기도일정하게만들었다. 그렇다면이것을어떻게새로운데이터타입안에담을수있을까? 컴퓨터에서가장작은단위는 bit이며, 하나의 bit는 0과 1의값으로이루어져있 016 -

18 다. 문자의검은색을 1로바꾸고바탕의흰색을 0으로바꾼후 bit를사각형안에넣는다면앞에서파싱한문자이미지를표현할수있다. 즉, [ 그림 1-5] 처럼 a 라는이미지를 1,536개의 bit로표현하는것이가능하다 ( 가로 32개 세로 48개 = 1,536개 ). [ 그림 1-5] 를보면 a 라는것을쉽게알수있다. 0 과 1 만을가지고도시각적으로 쉽게어떤문자인지를알수있다. 그림 과 1 로표현된문자 a 이와같은방법으로 Image Recognition 이란단어를변환한다면 [ 그림 1-6] 과같이나타날것이다. 그림 과 1 로표현된 Image Recognition 1 OCR 이란무엇인가? - 017

19 이미지의크기를 32 48의크기안에담은것은이유가있는데, 프로그램언어에서정수형 Integer 데이터타입의크기가 32bits이기때문이다. 즉, 48개의정수 Integer 를하나의새로운데이터타입으로만들면우리는한문자를담는그릇을만든것이다. 연산이가능한데이터타입을만드는것은프로그래머의선택이며, 데이터타입의크기를크게도작게도만들수있다. 이책에서다루게될데이터타입은두가지다. 하나는정수에기반한데이터타입이며, 다른하나는 8 12bits의크기를위한문자형 Character 데이터타입에기반한데이터타입이다. 앞으로작은문자이미지에는작은그릇을사용할것이고, 큰문자이미지에는큰그릇을사용할것이다. 작은이미지를큰데이터타입에넣는것은무의미하고연산을위한속도도더느려지기때문이다. 지금까지의내용이이미지인식의핵심이라할수있다. 어느정도프로그래밍을 018 -

20 하는독자는이미지인식에어떻게접근해야하는지이해하였을것이다. 이해가 안되었어도앞으로다루는프로그래밍을통하여이미지인식에대하여조금더 깊이있게이해할수있을것이다. 1.3 확률을이용한인식 이미지인식은비교할대상이있어야한다. 여기서는비교를위해만들어진이미 지를기본이미지 Standard Image 라고부르겠다. 이책에서는영문과숫자만인식하는 데, 총 62 개의기본이미지를만들어서사용한다 ( 영문소문자 26 개 + 대문자 26 개 + 숫자 10 개 ). 인식할이미지는 62 개의기본이미지와차례대로비교하며가장근접한이 미지를채택하여결과값으로결정한다. 그렇다면연산할수있게만든데이터로 어떻게 bit 가같은지비교하는지알아보자. 프로그래밍언어의연산자중친근하지는않지만암호프로그래밍등을하면가장 많이사용하는것이 XOR (Exclusive OR, ^) 연산자다. 이책에서도 XOR 연산자 를많이사용할것이다. XOR 연산자의연산결과는다음과같은데, 연산되는 bit 가같으면 0 을, 다르면 1 을결과로나타낸다. A B A^B 그렇다면우리가앞에서연산할수있게만든데이터타입과어떻게비교하면될까? 기본이미지데이터 Standard Image Data 와비교하기위한이미지데이터 Image Data 를위치가같은 bit끼리 XOR 연산하면된다. [ 그림 1-7] 은 a 와 b 두개의이미지데이터를비교한것이다. 1 OCR 이란무엇인가? - 019

21 그림 1-7 a ^ b 서로다른두개의이미지를비교하면 0과 1의불특정이미지데이터로나타난다. 하지만두개의이미지가동일하다면 XOR 연산자로나타나는이미지는모두 0 으로만나타난다. [ 그림 1-8] 은 a 와 a 를 XOR 연산자로나타낸것인데, 모두 0 으로나타나게된다. 그림 1-8 a ^ a 확률을이용한인식은어떻게이루어질까? 동일한 bit는 0으로표현되기에 XOR 연산의결과값을가지고, 1,536개의 bit 중에 0의숫자가많은것을결과값으로나타내면된다 ( 실제이미지인식에서는모두 0으로나오지않는다 ). 하지만연산을통하여 0이가장많이나온기본데이터를결과로출력하면된다. 인식률이높다는것은확률을이용한결과값이올바른결과값을많이도출한다는것이다

22 1.4 영문이한글보다인식률이높은이유 이책에서다루는문자인식은영문과숫자만을대상으로한다. 영문인식은 62개의기본데이터를만들면되지만, 한글인식은만개이상의기본데이터를만들어야한다. 그런데만개이상의기본데이터를만들기도어렵고인식률도떨어진다. 그렇다면왜한글인식률이높지않은지이미지데이터를가지고알아보자. 그림 1-9 한글이미지데이터 ( 허 ) 이책에서다루는이미지데이터는가로 32개와세로 48개 bit를사용하는데, 이것으로표현할수있는총가짓수는 1,536개다 ( 가로 32개 세로 48개 =1,536개 ). 이이미지데이터로만개가넘는한글을표현하는것은불가능하다. 물론우리는더큰이미지데이터를만들어사용할수있다. 하지만만개의한글을위한기본이미지데이터를만드는것도상당히어려운작업이며, 한문자를인식하기위해서만개의데이터와항상비교해야한다면연산속도가매우느려질것이다. 또한, 정확히써진한글만을인식하는환경이아닌곳에서는이미지변형을수행하여인식률을높여야하는데, 이미지변형으로인하여오히려다른문자로인식할확률이커질수있다. 1 OCR 이란무엇인가? - 021

23 chapter 3 문서이미지 OCR 이번장에서는문서이미지에서문자를판독해내는 OCR 프로그램을단계적으로구현한다. 이전장에서기본적인부분은구현되었으나, OCR 프로그램의다양한부분에대한깊이있는분석과추가적으로구현해야할부분이상당히많다. 기본적인내용으로시작하지만, 내용이진행됨에따라 OCR에서생각해야할부분을조금더구체적으로알수있으며, 이번장이끝나더라도독자가접하는문서에따라추가적인부분을직접구현할수있는힘을기르기를바란다. 이장에서사용하는문서이미지는 이솝이야기 의내용으로 [ 그림 3-1] 과 [ 그림 3-2] 의두개의파일이다. 먼저프로그램에서는 [ 그림 3-1] 의첫번째내용만을가지고 OCR 프로그램이구현되며, 모든구현이끝난이후에는 [ 그림 3-2] 의내용도 OCR을진행하여프로그램의완성도를검증할예정이다. 실생활에서도문서이미지 OCR을많이사용하고있는데, 대표적으로고급복사기에서많이사용한다. 즉, OCR 기능을가진고급복사기에서는문서를스캔하면 Word 파일로결과가만들어진다. 복사기는문서를스캔하여문서이미지를얻으며, 복사기에설치된자체프로그램이문서이미지를판독하여 Word 문서파일로다시만들어준다. 이기술이발전하여번역프로그램과결합할경우를생각해보자. 책을복사기로복사하면각나라의언어로번역된책이자동적으로만들어질수도있을것이다. 아직까지는번역프로그램의완성도가아주낮기때문에자동번역에대한기능을단시간에만들기는힘들다. 그러나 OCR가자동번역기와함께하는순간우리생활에엄청난변화를가져다줄것이다. 3 문서이미지 OCR - 089

24 OCR 기술과관련하여생각해볼수있는또한가지는문서를읽어주는프로그램과의결합이다. 복사기에서책을복사하면성우가책을읽어주는소리파일이만들어진다. 이기술은 OCR로인식이끝난문서파일에인간의음성으로읽어주는기술을접목하면된다. 인간의음성으로읽어주는기술은이미시장에서찾아볼수있으나기술이완벽하지는않다. 이는두말이이어져발음되는연음처리에대한기술이아직완벽하지않기때문이다. 어쨌든, OCR 기술이번역, 낭독등의기술과함께할때아주멋진생활의편리함을가져올것임은분명하다. 그림 3-1 이솝우화문서이미지 (aesop_1.png: The Ass And The Load Of Salt) 090 -

25 그림 3-2 이솝우화문서이미지 (aesop_2.png: The Plane Tree) [ 그림 3-3] 은이번장에서구현되는프로그램의실행화면이다. 파일의이름을입력하고 OCR 버튼만누르면실행되는프로그램으로, 상당히간단하다. Input Picture File 에는인식을위한문서이미지파일이름을넣고, Output Text File 에는인식이끝난후의결과문자들을입력하기위한파일이름을넣는다. OCR 버튼을누르게되면이후에진행되는모든 OCR 관련프로그램함수들이실행된다. 그림 3-3 문서이미지 OCR 프로그램실행화면 3 문서이미지 OCR - 091

26 [ 코드 3-1] 은 [ 그림 3-3] 의 [OCR] 버튼을눌렀을때실행되는함수로, Image RecognitionDlg.cpp 파일에있는 OnBnClickedBtnRunocr ( ) 함수다. 01 ImageRecognitionDlg.cpp 파일에서는버튼을눌렀을때실행되는 [ 코드 3-1] 의내용이가장중요하며 OCR에서중심이되는함수들은 OCR.h 와 OCR.cpp 에서구현한다. [ 코드 3-1] OCR 버튼을눌렀을때실행되는함수 (ImageRecognitionDlg.cpp) void CImageRecognitionDlg::OnBnClickedBtnRunocr() { UpdateData(TRUE); m_message.format(_t("ocr is Running...")); UpdateData(FALSE); //---1 if (image!= NULL) image.destroy(); HRESULT hresult = image.load(m_inputfile); //---2 if (FAILED(hResult)) { m_message.format(_t("error : Can't Open Input File.")); UpdateData(FALSE); return; } } ocr->runocr(&image, m_outputfile, 50); m_message.format(_t("ocr is Completed...")); UpdateData(FALSE); //---3 // 실행화면하단의 Press 'OCR' button. 메시지가 OCR is Running 으로바뀐다. UpdateData (TRUE) 는화면의내용을프로그램의각멤버변수내용으로업데이트하고, UpdateData(FALSE) 는멤버변수의내용이화면의내용을바꾸기때문에 m_ message의내용이화면하단의메시지를바꾸게된다. 2 문서이미지파일의이름을저장하고있는 m_inputfile 변수를사용하여이미지를로 01 MFC 프로그램에서버튼등을포함한도구와해당도구와연동되는멤버변수의추가에대해서는 MFC 프로그래밍 : 주식분석프로그램만들기 ( 한빛미디어, 2014) 에서구체적으로설명하였으므로여기서는설명을생략한다

27 드한다. 즉, 문서이미지가 CImage 클래스변수인 image에저장된다. 3 COCR 클래스의멤버함수인 RunOCR을실행해 OCR을진행한다. 이때전달되는파라미터는이미지를담고있는 image, 출력파일이름인 m_outputfile, RGB에서검은색 ( 문자색 ) 을나타내는 50이다. 4 OCR이실행되면화면하단에 OCR is Completed 메시지로종료를알려준다. Dialog 파일에서의구현은이처럼간단하다. 이후에는확률을이용한 OCR의기본개념부터 OCR에추가로구현해야하는내용을단계적으로알아본다. 3.1 확률을이용한 OCR 이전까지기본이미지데이터를만드는방법을알아보았다. 이것은사전이만들어진것으로이해하면된다. 지금부터진행되는 OCR의실행단계는하나의문자를이미지파싱을거쳐서이미지데이터를만든후, 사전과같은기본이미지데이터와비교하여특정문자로결정하는단계다. 3장에서는처음부터단계적으로 OCR을진행하게되는데, 먼저확률을이용한 OCR이어떻게이루어지는지알아볼것이다. 이것이 OCR의가장기본이되는기술이다. 그러나확률을이용해서문자를결정하는방법만으로는인식의한계를알게될것이다. 기본 62개의문자보다더많은특수문자가있으며, 줄바꿈 Enter 과공백 Space 등의부분도구현해야하기때문이다. [ 그림 3-4] 는이번장에서인식할문서이미지인데, 이미지파싱을어디서부터해야하는지를보기위한그림이다. 문서이미지에서는이미지파싱이중간이아닌앞쪽에서이루어져야한다. 심한경우에는한줄에서앞쪽에짧은한단어만이존재할수있기때문이다. 프로그램에서는이부분을문서의가로 Width 크기에서비율 Rate 로비교하여앞쪽에서 0.1부터시작하여 0.3까지픽셀을검사하여한줄을인식하는것으로구현하였다. 3 문서이미지 OCR - 093

28 그림 3-4 이미지파싱의기준 [ 코드 3-2] 는 COCR 클래스의헤더 header 파일로, 이미지파싱을위해시작되고끝나는가로의비율을처음에 0.1과 0.3으로정의하였다. 이후에구현되는함수를추가로클래스의멤버함수로정의하였다. 이는 2장에서사용한내용과거의유사하며확률을이용하여특정문자로인식하는함수를추가로구현하였다. [ 코드 3-2] COCR 클래스멤버함수 (OCR.h) #define RATE_START_FOR_PARSING 0.1 //---1 #define RATE_END_FOR_PARSING 0.3 //---2 ##### 생략 ##### class COCR { private: CImage *image; Standard standard; AllData alldata; Data *data; //---3 int colortocheck; public: COCR(void); ~COCR(void); void RunOCR(CImage *image, CString outfilename, int colorletter); //---4 void GetStandardImageDataFromBinaryFile(char * filename); //

29 }; void ParsingStepFirst(); void ParsingStepSecond(int ytop, int ybottom); void ParsingStepThird(Rect *rect); void ParsingStepThird2(Rect *rect); void MakeImageData(); void FindLetterValue(); void StoreLetterToTextFile(CString outfilename); //---6 // RATE_START_FOR_PARSING을 0.1로정의한다. 상수변수의이름에서알수있듯이이미지파싱을위한시작비율을나타낸다 ([ 그림 3-3] 참조 ). 2 RATE_END_FOR_PARSING은 0.3으로정의하며이미지파싱을위한마지막부분의비율을나타낸다. 3 기본이미지데이터를저장하는 standard 변수를정의한다. 나머지변수는 2장과동일한목적으로사용되었다. 4 OCR을실행하는함수로, 매개변수로이미지클래스변수인 image, 출력파일의이름, 문자로인식하기위한색의값을가진다. 5 프로그램이실행되면자동으로 COCR 클래스가생성되고, 생성클래스에서자동으로 Get StandardImageDataFromBinaryFile() 함수를실행한다. 즉, 프로그램이실행될때바이너리파일로부터기본이미지데이터를읽어서 Standard 구조체에넣는다. 6 확률을이용하여 Standard 구조체에저장된값과비교하여인식하려는문자의결과값을얻게된다. 7 인식된이미지의결과들을 outfilename의파일이름에텍스트형태로저장한다. [ 코드 3-3] 은 COCR의생성자와프로그램실행화면에서 [OCR] 버튼을선택할때실행되는함수를구현한것이다. 인식하려는문서에서이미지파싱을진행한후각각의문자를이미지데이터로만든다. 그다음기본이미지데이터와비교하여특정문자로인식하고결과파일에저장한다. [ 코드 3-3] COCR 생성자및 OCR 실행함수 RunOCR(OCR.cpp) COCR::COCR(void) { GetStandardImageDataFromBinaryFile("standard.bin"); } // 문서이미지 OCR - 095

30 COCR::~COCR(void) { } void COCR::RunOCR(CImage *newimage, CString outfilename, int colorletter) { } image = newimage; colortocheck = colorletter; for (int i =0; i<max_count_data; i++) alldata.data[i].isfixed = false; ParsingStepFirst(); MakeImageData(); FindLetterValue(); StoreLetterToTextFile(outFileName); //---2 //---3 //---4 //---5 //---6 //---7 // 프로그램이실행될때 COCR 클래스의생성자가실행된다. 바이너리파일에서기본이미지데이터를읽어서기본데이터구조체를만든다. 2 포인터변수 image로인식하려는이미지를가리킨다. 이후에는 image 변수로해당이미지에접근하게된다. 3 문자색을 colortocheck의변수에저장한다. 4 alldata는인식하기위해파싱된모든문자를저장한다. 아직문자가정의되지않았기때문에 isfixed 변수를 false로초기화한다. 이후에문자가확률을통하여특정문자로결정되면 isfixed 변수는 true가된다. 5 이미지파싱을진행하는함수로, 2장에서구현한것과동일하다. 단지, 2장에서는문자선가운데를기준으로나누었다면, 이번에는앞쪽을기준으로나누었다는차이가있다. ParingStepFirst() 함수의설명은 2장에서했으므로여기서는생략한다. 6 이미지파싱된문자이미지를이미지데이터에넣는함수로, 이함수도 2장에서구현한것과동일하므로여기서는설명을생략한다. 7 기본이미지데이터와비교하여확률이가장높은문자를인식하려는문자의결과값으로정의한다. 8 OCR의인식이끝난상태이므로결과값을텍스트파일에저장한다

URL Shortener 프로젝트로 배우는 Vert.X 프레임워크

URL Shortener 프로젝트로 배우는 Vert.X 프레임워크 Hanbit ebook Realtime 95 URL Shortener 프로젝트로배우는 Vert.x 프레임워크 김요한지음 URL Shortener 프로젝트로배우는 Vert.x 프레임워크 김요한지음 URL Shortener 프로젝트로배우는 Vert.X 프레임워크 초판발행 2015 년 4 월 10 일 지은이김요한 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

SIGIL 완벽입문

SIGIL 완벽입문 누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS

More information

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

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

안전한 웨 애플리케이션을 위한 자바스크립트 보안

안전한 웨 애플리케이션을 위한 자바스크립트 보안 119 안전한웹애플리케이션을위한 Y.E 리앙지음 / 박미정옮김 자바스크립트보안 119 안전한웹애플리케이션을위한 Y.E 리앙지음 / 박미정옮김 자바스크립트보안 이도서는 JavaScript Security(PACKT publishing) 의번역서입니다 표지사진김민국이책의표지는김민국님이보내주신풍경사진을담았습니다. 리얼타임은독자의시선을담은풍경사진을책표지로보여주고자합니다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

본책- 부속물

본책- 부속물 PROGRAMMING RUBY PROGRAMMING RUBY : THE PRAGMATIC PROGRAMMER S GUIDE, 2nd Ed. Copyright c 2005 Published in the original in the English language by The Pragmatic Programmers, LLC, Lewisville. All rights

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

C O N T E N T S 목 차 요약 / 1 I. 중남미화장품시장현황 / 3 Ⅱ. 주요국별시장정보 / 9 ( 트렌드 유통망 인증 ) 1. 브라질 / 9 2. 멕시코 / 콜롬비아 / 칠레 / 64 Ⅲ. 우리기업진출전략 / 79 # 첨부. 화장품관

C O N T E N T S 목 차 요약 / 1 I. 중남미화장품시장현황 / 3 Ⅱ. 주요국별시장정보 / 9 ( 트렌드 유통망 인증 ) 1. 브라질 / 9 2. 멕시코 / 콜롬비아 / 칠레 / 64 Ⅲ. 우리기업진출전략 / 79 # 첨부. 화장품관 Global Market Report 17-023 Global Market Report 중남미주요국화장품시장동향과우리기업진출전략 C O N T E N T S 목 차 요약 / 1 I. 중남미화장품시장현황 / 3 Ⅱ. 주요국별시장정보 / 9 ( 트렌드 유통망 인증 ) 1. 브라질 / 9 2. 멕시코 / 29 3. 콜롬비아 / 46 4. 칠레 / 64 Ⅲ. 우리기업진출전략

More information

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345]) 클래스의응용 클래스를자유자재로사용하자. 이장에서다룰내용 1 객체의치환 2 함수와클래스의상관관계 01_ 객체의치환 객체도변수와마찬가지로치환이가능하다. 기본예제 [7-1] 객체도일반변수와마찬가지로대입이가능하다. 기본예제 [7-2] 객체의치환시에는조심해야할점이있다. 복사생성자의필요성에대하여알아보자. [ 기본예제 7-1] 클래스의치환 01 #include

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

Ver 1.0 마감하루전 Category Partitioning Testing Tool Project Team T1 Date Team Information 김강욱 김진욱 김동권

Ver 1.0 마감하루전 Category Partitioning Testing Tool Project Team T1 Date Team Information 김강욱 김진욱 김동권 마감하루전 Category Partitioning Testing Tool Project Team T1 Date 2017-05-12 Team Information 201111334 김강욱 201211339 김진욱 201312243 김동권 201510411 이소영 [ 마감하루전 ] T1 1 INDEX Activity 2041. Design Real Use Cases

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

MFC 프로그래밍: 주식 분석 프로그램 만들기

MFC 프로그래밍: 주식 분석 프로그램 만들기 Hanbit ebook Realtime 70 MFC 프로그래밍 주식분석 프로그램만들기 김세훈지음 MFC 프로그래밍주식분석프로그램만들기 MFC 프로그래밍주식분석프로그램만들기 초판발행 2014 년 06 월 24 일 지은이김세훈 / 펴낸이김태헌펴낸곳한빛미디어 ( 주 ) / 주소서울시마포구양화로 7길 83 한빛미디어 ( 주 ) IT출판부전화 02-325-5544 /

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

슬라이드 1

슬라이드 1 핚국산업기술대학교 제 14 강 GUI (III) 이대현교수 학습안내 학습목표 CEGUI 라이브러리를이용하여, 게임메뉴 UI 를구현해본다. 학습내용 CEGUI 레이아웃의로딩및렌더링. OIS 와 CEGUI 의연결. CEGUI 위젯과이벤트의연동. UI 구현 : 하드코딩방식 C++ 코드를이용하여, 코드내에서직접위젯들을생성및설정 CEGUI::PushButton* resumebutton

More information

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

More information

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

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont 12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074> SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

문제여섯사람이일곱개의발판위에있다. 빈발판을중심으로세사람은왼쪽에서가운데를보고서있고, 다른세사람은오른쪽에서가운데를보고서있다. Figure: 양창모 ( 청주교육대학교컴퓨터교육과 ) Problems and Algorithms 2015 년여름 1 / 35 목표왼쪽에서있던세사람을오른쪽으로, 오른쪽에서있던사람을왼쪽으로이동한다. 가운데발판은여전히비어있어야한다. 최소의움직임으로목표를달성하도록한다.

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 05 장 CSS3 선택자 1. 선택자개요 2. 기본선택자 3. 속성선택자 4. 후손선택자와자손선택자 5. 반응 / 상태 / 구조선택자 CSS 블록을생성할수있다. 선택자를이해하고적절한선택자를활용할수있다. 1 선택자개요 CSS3 선택자 특정한 HTML 태그를선택할때사용하는기능 선택한태그에원하는스타일이나스크립트적용가능 그림 5-1 CSS 블록 CSS 블록 style

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

클라우드컴퓨팅 주요법령해설서 2017. 11. 목차 3... 5 I... 15 II... 39 1. 공공분야... 41 2. 금융분야... 71 3. 의료분야... 81 4. 교육분야... 95 5. 신산업등기타분야... 101 III... 109 요약문 5, 15 3, 1 16~ 18 15 11 16 4, 16 7,,, 5 16 5, 16 7~10,,,

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요

More information

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관 2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관 2015 개정교육과정에따른정보과평가기준개발연구 연구협력진 머리말 연구요약 차례 Ⅰ 서론 1 Ⅱ 평가준거성취기준, 평가기준, 성취수준, 예시평가도구개발방향 7 Ⅲ 정보과평가준거성취기준, 평가기준, 성취수준, 예시평가도구의개발 25 Ⅳ 정보과평가준거성취기준, 평가기준, 성취수준, 예시평가도구의활용방안

More information

µ¶µµºÎ·Ï1~64

µ¶µµºÎ·Ï1~64 초등학생 독도 바로 알기 인천광역시교육감 인정 2011. 6. 9. 2011-001 초등학생 부록 독도 바로 알기 부록 교수 학습 지도 보완 자료 초등학생 독도 바로 알기 부록 독도 이름, 이렇게 바뀌었어요! 우산도(于山島, 512년) 석도(石島, 1900년) 독도(獨島, 1906년) 우산 은 울릉도에 있었던 고대 소 국 우산국에서 비롯됨 석도 는 섬 자체가

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)- 1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다. 1.2.1 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-1 연산범위이유 : 00000000 00000000 00000000 00000000의 32

More information

C O N T E N T 목 차 요약 / 4 Ⅰ. 서론 Ⅱ. 주요국별대형유통망현황 / Ⅲ. 시사점및진출방안 ( 첨부 ) 국가별주요수입업체

C O N T E N T 목 차 요약 / 4 Ⅰ. 서론 Ⅱ. 주요국별대형유통망현황 / Ⅲ. 시사점및진출방안 ( 첨부 ) 국가별주요수입업체 Global Market Report 13-045 2013.6.07 CIS 대형유통망현황및진출방안 C O N T E N T 목 차 요약 / 4 Ⅰ. 서론 Ⅱ. 주요국별대형유통망현황 / Ⅲ. 시사점및진출방안 ( 첨부 ) 국가별주요수입업체 C IS 대형유통망현황및진출방안 요 약 - 1 - Global Market Report 13-045 - 2 - C IS 대형유통망현황및진출방안

More information

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

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

로거 자료실

로거 자료실 redirection 매뉴얼 ( 개발자용 ) V1.5 Copyright 2002-2014 BizSpring Inc. All Rights Reserved. 본문서에대한저작권은 비즈스프링 에있습니다. - 1 - 목차 01 HTTP 표준 redirect 사용... 3 1.1 HTTP 표준 redirect 예시... 3 1.2 redirect 현상이여러번일어날경우예시...

More information

S - O I L M A G A Z I N E 2016 February Vol. 411 04 15 20 22 24 26

S - O I L M A G A Z I N E 2016 February Vol. 411 04 15 20 22 24 26 02 S-OIL MAGAZINE Vol. 411 February 2016 S - O I L M A G A Z I N E 2016 February Vol. 411 04 15 20 22 24 26 28 30 32 34 38 44 49 50 04 MONTHLY MAGAZINE 05 FEBRUARY 2016 06 MONTHLY MAGAZINE 07 FEBRUARY

More information

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers C Programming 포인터 (Pointers) Seo, Doo-Ok Clickseo.com clickseo@gmail.com 목 차 포인터의이해 다양한포인터 2 포인터의이해 포인터의이해 포인터변수선언및초기화 포인터연산 다양한포인터 3 주소연산자 ( & ) 포인터의이해 (1/4) 변수와배열원소에만적용한다. 산술식이나상수에는주소연산자를사용할수없다. 레지스터변수또한주소연산자를사용할수없다.

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345]) 입출력 C++ 의효율적인입출력방법을배워보자. 이장에서다룰내용 1 cin 과 cout 을이용한입출력 2 입출력연산자중복 3 조작자생성 4 파일입출력 01_cin 과 cout 을이용한입출력 포맷입출력 C++ 의표준입출력은 cin, cout 을사용한다. C 의 printf 는함수이므로매번여러인자를입력해줘야하지만, cin/cout 에서는형식을한번만정의하면계속사용할수있다.

More information

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를

원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를 리스트에대한설명중틀린것은 구조체도리스트의요소가될수있다 리스트의요소간에는순서가있다 리스트는여러가지방법으로구현될수있다 리스트는집합과동일하다 다음은순차적표현과연결된표현을비교한것이다 설명이틀린것은 연결된표현은포인터를가지고있어상대적으로크기가작아진다 연결된표현은삽입이용이하다 순차적표현은연결된표현보다액세스시간이많이걸린다 연결된표현으로작성된리스트를 개로분리하기가쉽다 다음은연결리스트에서있을수있는여러가지경우를설명했는데잘못된항목은

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

윈도우즈프로그래밍(1)

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

Microsoft Word - Armjtag_문서1.doc

Microsoft Word - Armjtag_문서1.doc ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor

More information

Windows 10 General Announcement v1.0-KO

Windows 10 General Announcement v1.0-KO Windows 10 Fuji Xerox 장비와의호환성 v1.0 7 July, 2015 머리말 Microsoft 는 Windows 10 이 Windows 자동업데이트기능을통해예약되어질수있다고 6 월 1 일발표했다. 고객들은 윈도우 10 공지알림을받기 를표시하는새로운아이콘을알아차릴수있습니다. Fuji Xerox 는 Microsoft 에서가장최신운영시스템인 Windows

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070> /* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

광복60 년 종합학술대회 ( 제6 차) 올바른 과거청산을 위한 전국순회 심포지엄 종합자료집 청산하지 못한 역사, 어떻게 할 것인가? 주최 주관 : : 올바른과거청산을위한범국민위원회 올바른과거청산을위한범국민위원회 소속 지역단체 후원 : 광복60년기념사업추진위원회 1. 내용의 일부 혹은 전체를 인용, 발췌하는 경우에는 반드시 저자와 출처를 밝혀 주셔야 합니다.

More information

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

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서 커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드

More information

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

Install stm32cubemx and st-link utility

Install stm32cubemx and st-link utility STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7

More information

<B3EDB4DC28B1E8BCAEC7F6292E687770>

<B3EDB4DC28B1E8BCAEC7F6292E687770> 1) 초고를읽고소중한조언을주신여러분들게감사드린다. 소중한조언들에도불구하고이글이포함하는오류는전적으로저자개인의것임을밝혀둔다. 2) 대표적인학자가 Asia's Next Giant: South Korea and Late Industrialization, 1990 을저술한 MIT 의 A. Amsden 교수이다. - 1 - - 2 - 3) 계량방법론은회귀분석 (regression)

More information

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx CrackMe 15.exe (in Simples) 문제풀이 동명대학교정보보호동아리 THINK www.mainthink.net 강동현 Blog: johnghb.tistory.com e-mail: cari2052@gmail.com 1 목차 : 1. 문제설명및기본분석 --------------------------- P. 03 2 상세분석 ---------------------------

More information