Microsoft PowerPoint _파일입출력.ppt

Size: px
Start display at page:

Download "Microsoft PowerPoint _파일입출력.ppt"

Transcription

1 8 장. 파일입출력 파일입출력연속화 (serialization) 아카이브 (archive) 객체 Paint4.dsw Paint5.dsw 레지스트리 (registry) 오목게임 순천향대학교정보기술공학부이상정 1 파일입출력 순천향대학교정보기술공학부이상정 2

2 파일입출력소개 파일입출력 프로그램에서만든정보를하드디스크의파일로저장하는방법 MFC 에서사용하는파일입출력방법인연속화 (serialization) 를학습 CFile 클래스 MFC에서파일입출력을위해사용하는클래스 파일핸들 (file handle) 을이용한입출력방법을제공 파일핸들을사용하여파일을입출력하는절차 열기 (Open) 입출력 (Read/Write) 닫기 (Close) 순천향대학교정보기술공학부이상정 3 파일쓰기 파일로데이터를출력시 CFile::Write() 함수를사용 File.dsw 예 SDI 옵션을주어생성 파일저장을위해 File/Save 메뉴항목을사용 뷰클래스에서 ID_FILE_SAVE 에대한 COMMAND 메시지핸들러 void CFileView::OnFileSave() CFile MyFile; MyFile.Open("Korea.txt", CFile::modeCreate CFile::modeWrite); MyFile.Write("Beautiful Korea",15); MyFile.Close(); 순천향대학교정보기술공학부이상정 4

3 Open() 함수 virtual BOOL Open( LPCTSTR lpszfilename, UINT nopenflags, CFileException* perror = NULL ); 첫번째인수 : 열고자하는파일이름 두번째인수 : 파일의액세스모드를설정 moderead : 읽기전용 modewrite : 쓰기전용 modereadwrite : 읽기, 쓰기모드 modecreate : 파일이없을경우파일을생성 세번째인수 : 예외를처리하는예외오브젝트의포인터 파일핸들은 CFile::m_hFile 멤버변수에저장 순천향대학교정보기술공학부이상정 5 파일읽기 File/Open 메뉴항목의핸들러에서파일을읽고, 파일의내용을화면에출력 ID_FILE_OPEN에대한메시지핸들러 void CFileView::OnFileOpen() char Buf[20]; CFile MyFile("Korea.txt",CFile::modeRead); MyFile.Read(Buf,20); CClientDC DC(this); DC.TextOut(0,0,Buf,15); 순천향대학교정보기술공학부이상정 6

4 File.dsw 실행예 순천향대학교정보기술공학부이상정 7 임의접근 (random access) 순차파일 (sequential file) 시작부터끝까지순차적으로접근하는파일 문자열텍스트파일랜덤파일 (random access file) 파일의임의의위치에서접근할수있는파일 데이터베이스파일 임의접근함수 virtual LONG Seek(LONG loff, UINT nform); FP(file position) 을이동시키는함수 nform 인수 CFile::begin => 파일의처음위치에서부터 CFile::current => 현재 FP 에서부터 CFile::end => 파일의끝에서부터 virtual DWORD GetPosition() const; FP 를조사하는함수 순천향대학교정보기술공학부이상정 8

5 연속화 (serialization) 순천향대학교정보기술공학부이상정 9 Serialize() 함수 연속화는저장 (Save) 과복구 (Load) 의두과정을합친표현 데이터를저장하고불러오는연속화작업은복잡하나 MFC 를사용하면프레임워크에연속화에필요한모든루틴을포함 Serialize() 함수 파일입출력을수행하는핵심함수 프레임워크는입출력이필요한경우입출력에필요한모든환경을만든후 Serialize() 함수를호출 Serialize() 함수에원하는입출력동작을기술하면나머지는프레임워크가수행 void CTestDoc::Serialize(CArchive& ar) if (ar.isstoring()) // TODO: add storing code here else // TODO: add loading code here 순천향대학교정보기술공학부이상정 10

6 Key2.dsw 예 (1) 연속화과정을실습 Key.dsw 를수정하여키보드로입력한문자열을디스크에저장 1. Key2.dsw 를 SDI 옵션을선택하여생성 AppWizard의 step 4에서 Advanced 버튼을누른다. 나타난대화상자의 File Extension 란에 key를입력하고나머지는디폴트를선택 순천향대학교정보기술공학부이상정 11 Key2.dsw 예 (2) 2. Key2Doc.h 에문자열을저장할변수 (m_munja) 선언 class CKey2Doc : public CDocument // Attributes public: CString m_munja; 3. WM_CHAR 메시지핸들러에서키보드입력을받는다. void CKey2View::OnChar(UINT nchar, UINT nrepcnt, UINT nflags) CKey2Doc* pdoc=getdocument(); pdoc->m_munja+=nchar; pdoc->setmodifiedflag(true); Invalidate(); 순천향대학교정보기술공학부이상정 12

7 저장플래그 저장확인기능 ( 저장플래그 ) 사용자가편집후저장하지않고프로그램을종료시저장이안되었음을경고하는기능 저장플래그를관리하는기능은사용자의몫 저장플래그를세트시키는함수 SetModifiedFlag(TRUE) 변경되었을경우인수 : TRUE 변경되지않았을경우인수 : FALSE Key2.dsw 에서저장플래그를세트시키는시점은키보드로부터문자가입력된시점 순천향대학교정보기술공학부이상정 13 Key2.dsw 예 (3) 4. OnDraw 함수에서입력한문자열을화면에출력 void CKey2View::OnDraw(CDC* pdc) CKey2Doc* pdoc = GetDocument(); ASSERT_VALID(pDoc); int length; length=pdoc->m_munja.getlength(); pdc->textout(0,0,pdoc->m_munja, length); 순천향대학교정보기술공학부이상정 14

8 Key2.dsw 예 (4) 5. 연속화기능을첨가 사용자가입력한데이터를삭제 SDI인경우새로운파일을읽기전에사용자가편집한데이터를삭제 CDocument::DeleteContents() 함수 이함수는아래 3가지경우에프레임워크가직접호출 File/New 명령으로문서의내용을지울때 File/Open 명령으로새로운데이터를읽을때 도큐멘트클래스가파괴되기직전 이함수는가상함수로정의되어있으므로도큐멘트의내용을비워야할때프렘임워크가호출해주도록사용자가재정의 DeleteContents() 함수를재정의하는두가지방법 클래스위저드에서 DeleteContents() 를선택하는방법 위저드바의액션메뉴에서 Add Virtual Function을선택후대화상자에서 DeleteContents() 를선택 순천향대학교정보기술공학부이상정 15 Key2.dsw 예 (5) 순천향대학교정보기술공학부이상정 16

9 Key2.dsw 예 (6) void CKey2Doc::DeleteContents() m_munja=""; CDocument::DeleteContents(); 6. 실제로파일을입출력하는코드생성 Serialize() 함수에서작성 void CKey2Doc::Serialize(CArchive& ar) if (ar.isstoring()) ar << m_munja; else ar >> m_munja; 순천향대학교정보기술공학부이상정 17 Key2.dsw 예 (7) 아카이브객체 (ar) 는디스크파일을대표하는객체이며이객체로데이터를보내고읽으면된다. 저장할것인지읽어올것인지를알려면 IsStoring 함수를호출 저장을위해호출시 TRUE를반환 읽기를위해호출시 FALSE 를반환 ar 객체로입출력 ( 연속화 ) 이가능한데이터형 정수 : WORD, DWORD, BYTE, LONG 실수 : double, float 클래스 : CSize, CRect, CPoint, CtimeSpan, CString 포인터 : CObject* 순천향대학교정보기술공학부이상정 18

10 Key2.dsw 예 (8) 7. 이예제를실행하면다음의기능이추가 File/New 항목을선택시현재편집된문자열을삭제 File/Save 항목을선택시입력한문자열을파일로저장 ( 확장자 :Key) File/Open 항목을선택시디스크에저장한파일을읽어온다 최근에읽은파일의리스트가 File 메뉴끝에추가 새파일, 파일열기, 파일저장에해당하는툴바의기능도정의 순천향대학교정보기술공학부이상정 19 아카이브 (archive) 객체 순천향대학교정보기술공학부이상정 20

11 아카이브 아카이브 (archive) 는내부에입출력을위한버퍼를가지며, 파일로의입출력을처리 CArchive 클래스는입출력을위한삽입 (<<), 추출 (>>) 연산자를가지며, 아카이브객체가만들어지면연산자를이용하여아카이브로기본데이터형을입출력 인수로전달됨 void Serialize(CArchive &ar) ar << 데이터 ; CArchive 객체 CFile 객체 디스크 순천향대학교정보기술공학부이상정 21 연속화과정 사용자가 File/Open 함수호출 OnFileOpen() 함수호출 대화상자를열어파일이름입력받음 OnOpenDocument() 입력받은파일이름으로 CFile 객체생성 DeleteContents() 기존의데이터삭제 아카이브객체생성 입출력준비 Serialize() 함수 입출력 OnDraw() 순천향대학교정보기술공학부이상정 22 화면에읽어들인데이터를표시 Page. 380

12 Paint4.dsw 순천향대학교정보기술공학부이상정 23 CObList Paint4.dsw 소개 Paint 프로젝트에파일저장기능을추가 모든선을리스트에저장하기위해 MFC 의연결리스트인 CObList 를사용 CObList CObList 클래스에서연결리스트를제공 CObList 는이중연결리스트 CObList 클래스의 CNode 구조체 struct CNode CNode* pnext; CNode* pprev; CObject* data; 순천향대학교정보기술공학부이상정 24

13 CObList 주요멤버함수 CObList(int nblocksize = 10); 한번에 10개의노드의양만큼메모리를할당 POSITION AddHead(CObject* newelement); 리스트앞쪽에노드를추가 POSITION AddTail(CObject* newelement); 리스트뒤쪽에노드를추가 POSITION GetHeadPosition() const; 처음위치로이동 CObject* GetNext(POSITION& rposition) const; rposition이가리키는데이터를반환하고 rposition을다음노드로이동 CObject* GetPrev(POSITION& rposition) const; rposition이가리키는데이터를반환하고 rposition을앞요소로이동 int GetCount() const; 리스트의노드수를반환 BOOL IsEmpty() const; 빈리스트인지를조사 CObject* RemoveHead(); 헤더가가리키는노드들을삭제 노드가가리키는데이터는삭제하지않고데이터의포인터만반환 순천향대학교정보기술공학부이상정 25 Paint4.dsw 예 (1) 파일입출력과화면복구가가능한 Paint 프로그램을만들기 직선만그리도록예제를단순화 1. SDI 옵션을사용하고, step 4에서 Advanced 버튼을눌러확장자를 pnt로지정 순천향대학교정보기술공학부이상정 26

14 Paint4.dsw 예 (2) 그리기에필요한변수를뷰의해더파일에추가 class CPaint4View : public CView // Attributes public: CPaint4Doc* GetDocument(); CPoint m_nowp, m_oldp; BOOL m_bpaint; m_bpaint의값을초기화 CPaint4View::CPaint4View() m_bpaint=false; 그림을그리는마우스핸들러를작성 void CPaint4View::OnLButtonDown(UINT nflags, CPoint point) m_bpaint=true; m_nowp=point; m_oldp=point; 순천향대학교정보기술공학부이상정 27 Paint4.dsw 예 (3) void CPaint4View::OnLButtonUp (UINT nflags, CPoint point) if (m_bpaint==false) return; m_bpaint=false; CClientDC dc(this); dc.moveto(m_nowp); dc.lineto(point); void CPaint4View::OnMouseMove (UINT nflags, CPoint point) CClientDC dc(this); if (!m_bpaint) return; dc.setrop2(r2_not); dc.moveto(m_nowp); dc.lineto(m_oldp); dc.moveto(m_nowp); dc.lineto(point); m_oldp=point; 순천향대학교정보기술공학부이상정 28

15 Paint4.dsw 예 (4) 2. 화면복구기능첨가 모든선에대한정보를저장해두고, OnDraw() 함수에서일괄적으로그린다. 선은수를미리알수없으므로연결리스트 (CObList) 객체를사용 헤더 테일 m_arline 순천향대학교정보기술공학부이상정 29 Paint4.dsw 예 (5) 도큐멘트클래스의헤더파일에선의정보를저장할변수를선언 class CPaint4Doc : public CDocument // Attributes public: CObList m_arline; 리스트에선을추가하는시점은마우스버튼이놓아질때이다. => OnLButtonUp 를수정 순천향대학교정보기술공학부이상정 30 void CPaint4View::OnLButtonUp(UINT nflags, CPoint point) CRect *pline; if (m_bpaint==false) return; m_bpaint=false; CClientDC dc(this); dc.moveto(m_nowp); dc.lineto(point); // 방금그린라인은연결리스트끝에첨가 pline=new CRect(m_nowP, point); CPaint4Doc* pdoc = GetDocument(); pdoc->m_arline.addtail((cobject *)pline); // 저장플래그를변경 pdoc->setmodifiedflag(true);

16 Paint4.dsw 예 (6) OnDraw() 함수에서는그림이지워질때마다다시그리도록한다. void CPaint4View::OnDraw(CDC* pdc) CPaint4Doc* pdoc = GetDocument(); ASSERT_VALID(pDoc); CRect *R; POSITION p=pdoc->m_arline.getheadpo sition(); while (p!=null) R=(CRect *)pdoc->m_arline.getnext(p) ; pdc->moveto(r->left, R->top); pdc->lineto(r->right, R->bottom); 3. 새문서작성시, 현재문서를닫을때, 프로그램을종료할때 DeleteContents() 가호출되므로클래스위자드를사용하여, 연결리스트에저장된모든그림을삭제하는코드를작성 void CPaint4Doc::DeleteContents() while(!m_arline.isempty()) delete (CRect *)m_arline.removeh ead(); CDocument::DeleteContents(); 순천향대학교정보기술공학부이상정 31 Paint4.dsw 예 (7) 5. 그림을디스크파일로저장또는읽어드리는코드작성 void CPaint4Doc::Serialize(CArchive& ar) CRect *R,Rect; if (ar.isstoring()) POSITION p= m_arline.getheadposition(); ar.writecount(m_arline.getcount()); while (p!=null) R=(CRect *)m_arline.getnext(p); Rect=*R; ar << Rect; else DWORD nnewcount= ar.readcount(); while (nnewcount--) ar >> Rect; R=new CRect(Rect); m_arline.addtail((cobject *)R); 순천향대학교정보기술공학부이상정 32

17 순천향대학교정보기술공학부이상정 33 Paint5.dsw 순천향대학교정보기술공학부이상정 34

18 Paint5.dsw (1) Paint4는선의정보를갖는 CRect 클래스에서연속화를하지않고도큐멘트에서연속화를수행 도큐먼트에서여러객체가연속화되어야하는경우복잡 MFC에서는각객체가연속화할수있도록해준후도큐멘트에서는연속화의대상이되는객체의 Serialize() 함수를호출하여연속화를위임하는방법을사용 1. Paint5.dsw 를 SDI 옵션과 step4 에서 Advanced 옵션에서확장자 pnt 를지정 뷰의헤더화일에서변수선언 class CPaint4View : public CView // Attributes public: CPaint4Doc* GetDocument(); CPoint m_nowp,m_oldp; BOOL m_bpaint; m_bpaint 의값을초기화 CPaint4View::CPaint4View() m_bpaint=false; 순천향대학교정보기술공학부이상정 35 Paint5.dsw (2) OnLbuttonDown(), OnMouseMove() 핸들러를작성 void CPaint4View::OnLButtonDown(UINT nflags, CPoint point) m_bpaint=true; m_nowp=point; m_oldp=point; void CPaint4View::OnMouseMove (UINT nflags, CPoint point) CClientDC dc(this); if (!m_bpaint) return; dc.setrop2(r2_not); dc.moveto(m_nowp); dc.lineto(m_oldp); dc.moveto(m_nowp); dc.lineto(point); m_oldp=point; 순천향대학교정보기술공학부이상정 36

19 Paint5.dsw (3) 2. 화면에그려진선에대한정보를기억 CLine 클래스를별도로만들어선에대한정보를보관 새로운텍스트파일을만들고 CLine 클래스를정의하고, 파일명 line.h 로저장 클래스위저드는메시지처리를위한도구이므로새로운클래스를만들면 CCmdTarget을상속받는클래스를생성 CLine 클래스는 CObject 클래스를상속받아야하므로직접작성함 순천향대학교정보기술공학부이상정 37 #ifndef _CLINECLASS #define _CLINECLASS class CLine:public CObject protected: DECLARE_SERIAL(CLine) // CLine 클래스의연속화를지원 public: CLine(); CLine(CRect RR); CRect m_rect; // 선의좌표를저장 virtual void DrawLine(CDC *pdc); virtual void Serialize(CArchive &ar); virtual ~CLine(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif ; #endif Paint5.dsw (4) Line.cpp 파일로직접작성 #include "stdafx.h" #include "line.h" IMPLEMENT_SERIAL(CLine,CObject,1) //CLine 클래스의연속화를지원 CLine::CLine()// 디폴트생성자 CLine::CLine(CRectRR)// 인수를갖는생성자 m_rect=rr; CLine::~CLine() void CLine:: DrawLine(CDC *pdc) pdc->moveto(m_rect.left,m_rect.top); pdc->lineto(m_rect.right,m_rect.bottom); 순천향대학교정보기술공학부이상정 38 void CLine::Serialize(CArchive &ar) //CLine 객체연속화 CObject::Serialize(ar); if (ar.isstoring()) ar << m_rect; else ar >> m_rect; #ifdef _DEBUG void CLine::AssertValid() const CObject::AssertValid(); void CLine::Dump(CDumpContext& dc) const CObject::Dump(dc); #endif

20 Paint5.dsw (5) CLine 클래스를프로젝트에포함 Project/Add To Project/Files 메뉴항목사용 line.h,line.cpp 파일을열어놓고팝업메뉴에서 Insert File into Project 선택 워크스페이스파일뷰에서오른쪽마우스버튼누르고 Insert File into Project 선택 순천향대학교정보기술공학부이상정 39 Paint5.dsw (6) 3. 도큐멘트클래스에연결리스트객체를선언 class CPaint4Doc : public CDocument // Attributes public: CObList m_arline; // 그려지는선을저장 OnLButtonUp() 에선이그려질때마다선의정보를연결리스트에추가 순천향대학교정보기술공학부이상정 40 void CPaint4View::OnLButtonUp(UINT nflags, CPoint point) if (m_bpaint==false) return; m_bpaint=false; CClientDC dc(this); dc.moveto(m_nowp); dc.lineto(point); // 방금그린라인은연결리스트끝에첨가 CPaint4Doc* pdoc = GetDocument(); Cline *pline=new CLine(Crect(m_nowP,point)); pdoc->m_arline.addtail((cobject *)pline); // 저장플래그를변경 pdoc->setmodifiedflag(true); CView::OnLButtonUp(nFlags, point);

21 Paint5.dsw (7) 연결리스트에저장한선의정보를 OnDraw() 에서복구 void CPaint5View::OnDraw(CDC* pdc) CPaint5Doc* pdoc = GetDocument(); ASSERT_VALID(pDoc); 뷰의헤더파일에 line.h 를포함 CLine *pline; POSITION p = pdoc->m_arline.getheadposition(); while (p!=null) pline = (CLine *) pdoc->m_arline.getnext(p); pline->drawline(pdc); #include "line.h" 순천향대학교정보기술공학부이상정 41 Paint5.dsw (8) 4. 연속화 DeleteContents() 함수작성 void CPaint5Doc::DeleteContents() while (!m_arline.isempty()) delete m_arline.removehead(); CDocument::DeleteContents(); 도큐멘트의 Serialize() 함수작성 void CPaint5Doc::Serialize(CArchive& ar) if (ar.isstoring()) // TODO: add storing code here else // TODO: add loading code here m_arline.serialize(ar); 순천향대학교정보기술공학부이상정 42

22 레지스트리 (registry) 순천향대학교정보기술공학부이상정 43 레지스트리소개 프로그램이사용하는정보를다음에사용하기위해디스크에저장 프로그램의위치 옵션설정상태 INI 파일에서도지원되지만레지스트리가더빠르고, 적은공간을사용 레지스트리는운영체제가지원하는데이터베이스 윈도우즈에서실행되는모든프로그램의설정상태, 하드웨어구성상태등의정보저장 레지스트리는루트키, 노드키, 서브키, 섹션, 값의트리구조로구성 순천향대학교정보기술공학부이상정 44

23 regedit.exe regedit.exe 를실행 HKEY_CURRENT_USER 디렉토리의 Software 아래에사용자가만든프로그램설정상태를저장 순천향대학교정보기술공학부이상정 45 Regi.dsw 예 (1) 레지스트리를사용하여윈도우의위치를기억시키는예제 1. SDI 옵션으로 Regi.dsw 프로젝트생성 2. Regi.cpp 파일의 InitInstance() 함수 SetRegistryKey() 함수의인수로정보를기억할디폴트레지스트리키 (_T("Local AppWizard-Generated Applications") 를변경 이함수를호출하지않고정보를출력하면 INI 파일로정보가출력 BOOL CRegiApp::InitInstance()... SetRegistryKey("Registry Test Program"); LoadStdProfileSettings();... 순천향대학교정보기술공학부이상정 46

24 Regi.dsw 예 (2) 3. 프로그램이종료할때정보를레지스트리에출력 CMainFrame 에서 WM_DESTROY 메시지핸들러에서정보를출력 레지스트리에정보를출력하는함수 WriteProfileInt(LPCTSTR lpszsection, LPCTSTR lpszentry, int nvalue) WriteProfileString(LPCTSTR lpszsection, LPCTSTR lpszentry, LPCTSTR lpszvalue) 첫번째인수 : 섹션 ( 정보를보관하는단위 ) 두번째인수 : 섹션내의항목 세번째인수 : 출력될정보 순천향대학교정보기술공학부이상정 47 Regi.dsw 예 (3) void CMainFrame::OnDestroy() CFrameWnd::OnDestroy(); CRect R; GetWindowRect(R); AfxGetApp()->WriteProfileInt("Pos","Left",R.left); AfxGetApp()->WriteProfileInt("Pos","Top",R.top); AfxGetApp()->WriteProfileInt("Pos","Right",R.right); AfxGetApp()->WriteProfileInt("Pos","Bottom",R.bottom); 순천향대학교정보기술공학부이상정 48

25 Regi.dsw 예 (4) 4. 프로그램이시작될때레지스트리에저장된정보 ( 윈도우위치 ) 를읽기 CMaineFrame 클래스의 OnCreate() 함수에작성 레지스트리의정보를읽는함수 GetProfileInt(LPCTSTR lpszsection, LPCTSTR lpszentry, int ndefault) GetProfileString(LPCTSTR lpszsection, LPCTSTR lpszentry, LPCTSTR lpszdefault = NULL) 첫번째인수 : 섹션 ( 정보를보관하는단위 ) 두번째인수 : 섹션내의항목 세번째인수 : 섹션이나항목이없을경우적용되는디폴트값 순천향대학교정보기술공학부이상정 49 Regi.dsw 예 (5) int CMainFrame::OnCreate(LPCREATESTRUCT lpcreatestruct) CRect R; R.left=AfxGetApp()->GetProfileInt("Pos","Left",100); R.top=AfxGetApp()->GetProfileInt("Pos","Top",100); R.right=AfxGetApp()->GetProfileInt("Pos","Right",500); R.bottom=AfxGetApp()->GetProfileInt("Pos","Bottom",400); MoveWindow(R); return 0; 순천향대학교정보기술공학부이상정 50

26 오목게임 순천향대학교정보기술공학부이상정 51 오목게임소개 오목게임 돌만놓고, 판정은않함 게임중간의결과를파일에저장 순천향대학교정보기술공학부이상정 52

27 Omok.dsw 예 (1) 1. Omok.dsw 프로젝트 step1 : SDI 옵션 step2,3 : 디폴트옵션 step 4 3D controls 옵션만설정하고나머지는해제 순천향대학교정보기술공학부이상정 53 Omok.dsw 예 (2) Advanced 버튼을눌러확장자를 omk 로지정 Window Style 에서 Thick frame( 크기조절불필요 ), Maximize box( 최대화버튼불필요 ) 옵션을해제 step5,6 은디폴트옵션선택 순천향대학교정보기술공학부이상정 54

28 Omok.dsw 예 (3) 2. 고정된크기를바둑판의크기에맞춘다. 메인프레임의 ActivateFrame() 함수를재정의 클래스위저드에서 CMainFrame 의 ActiveFrame () 함수를선택하여추가 void CMainFrame::ActivateFrame(int ncmdshow) MoveWindow(10,10,400,430); CFrameWnd::ActivateFrame(nCmdShow); 순천향대학교정보기술공학부이상정 55 Omok.dsw 예 (4) 3. 게임진행에필요한메뉴리소스파일 (New, Open, Save, Exit) 만남기고나머지는삭제 4. 도큐멘트의헤더파일에필요한변수를선언 enum SITE NONE, BLACK, WHITE ; class COmokDoc : public CDocument // Attributes public: SITE m_board[19][19]; // 바둑판에돌이놓인상태를보관한다. 순천향대학교정보기술공학부이상정 56

29 Omok.dsw 예 (5) 5. 뷰에필요한변수와함수원형을선언 class COmokView : public CView // Operations public: BOOL m_whturn; // 다음둘차례 // (True : 흰돌, FALSE : 검정돌 ) // 지정한좌표에지정한돌을그린다. void DrawSite(CDC *pdc,int x, int y,site dol); 6. DrawSite() 함수작성 void COmokView::DrawSite(CDC *pdc,int x, int y,site dol) if (dol==black) // 검정색돌은검정색브러시 pdc->selectstockobject(black_brush); else // 흰색돌은흰색브러시 pdc->selectstockobject(white_brush); if (dol!=none) // 돌이있으면그린다. pdc->ellipse(x*20+2,y*20+2,x*20+18, y*20+18); 순천향대학교정보기술공학부이상정 57 Omok.dsw 예 (6) 6. 뷰의 OnInitialUpdate() 함수에서게임시작시검정돌로시작하도록함 void COmokView::OnInitialUpdate() CView::OnInitialUpdate(); m_whturn=false; // 검정돌부터시작 7. 바둑판위에서왼쪽마우스를누를때그위치에바둑돌을놓는다. 바둑판의격자는 20픽셀 *20픽셀의크기 순천향대학교정보기술공학부이상정 58 void COmokView::OnLButtonDown(UINT nflags, CPoint point) int ax,ay; COmokDoc* pdoc = GetDocument(); // 화면좌표를배열좌표로변환한다. ax=point.x/20; ay=point.y/20; // 바둑판안이어야하며돌이놓이지않은 // 자리여야한다. if ((ax<0) (ax>=19) (ay<0) (ay>=19)) return; if (pdoc->m_board[ax][ay]!=none) return; // 누가둘차례인가에따라배열에돌을 // 놓음 pdoc->m_board[ax][ay] = (m_whturn? WHITE:BLACK);

30 Omok.dsw 예 (7) CClientDC dc(this); // 돌을그린다. DrawSite(&dc,ax,ay, pdoc->m_board[ax][ay]); // 차례를바꿈 m_whturn=!m_whturn; pdoc->setmodifiedflag(); CView::OnLButtonDown(nFlags, point); 8. OnDraw 함수에서바둑판과놓아졌던바둑돌을그린다. void COmokView::OnDraw(CDC* pdc) COmokDoc* pdoc = GetDocument(); ASSERT_VALID(pDoc); int x,y; for (x=0;x<19;x++) // 가로줄그음 pdc->moveto(10,10+x*20); pdc->lineto(370,10+x*20); for (x=0;x<19;x++) // 세로줄그음 pdc->moveto(10+x*20,10); pdc->lineto(10+x*20,370); for (x=0;x<19;x++) // 바둑돌그림 for (y=0;y<19;y++) DrawSite(pDC,x,y, pdoc->m_board[x][y]); 순천향대학교정보기술공학부이상정 59 Omok.dsw 예 (8) 9. 게임중간에게임판의상태를파일에저장 연속화를가능하도록하기위해 DeleteContents() 함수를작성 void COmokDoc::DeleteContents() int x,y; for (x=0;x<19;x++) // 배열을지운다. for (y=0;y<19;y++) m_board[x][y]=none; CDocument::DeleteContents(); Serialize() 함수작성 순천향대학교정보기술공학부이상정 60 void COmokDoc::Serialize(CArchive& ar) int x,y; LONG L; if (ar.isstoring()) for (x=0;x<19;x++) for (y=0;y<19;y++) ar << (LONG)m_Board[x][y]; else for (x=0;x<19;x++) for (y=0;y<19;y++) ar >> L; m_board[x][y]=(site)l;

31 과제 다음중하나를선택하여분석하고실행 p.415 의퍼즐예제소스분석 p.420 테트리스예제소스분석 테트리스예제선택시가산점부여 순천향대학교정보기술공학부이상정 61

슬라이드 1

슬라이드 1 13장직렬화 김성영교수 금오공과대학교 컴퓨터공학부 도큐먼트 / 뷰구조 (1) 도큐먼트와뷰 디스크에저장된파일데이터를읽는경우 도큐먼트객체 뷰객체 파일 사용자 읽기 화면표시 2 도큐먼트 / 뷰구조 (2) 도큐먼트와뷰 사용자가데이터를입력하는경우 도큐먼트객체 뷰객체 파일 사용자 저장 입력 3 도큐먼트 / 뷰구조 (3) 도큐먼트와뷰 입력된데이터를디스크파일에저장하는경우

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

윈도우 프로그래밍의 개념

윈도우 프로그래밍의 개념 제 10 장다양한뷰클래스 10.1 도큐먼트 10.2 파일입출력 10.3 다양한뷰클래스 실습 10-1 Formview를이용한문자를출력하고파일입출력 10.4 분할윈도우 실습 10-2 정적분할윈도우를이용한학생정보프로그램 10.5 다중뷰 실습 10-3 다중뷰만들기 CDocument 클래스 데이터를관리하는클래스 OnNewDocument() 함수 새로운도큐먼트를만드는기능

More information

Microsoft PowerPoint - hci2-lecture7.ppt

Microsoft PowerPoint - hci2-lecture7.ppt Overview 파일입출력 CFile 클래스를이용한파일입출력기법 도큐먼트 / 뷰구조이해 CArchive 클래스를이용한직렬화기법 HCI Programming 2 (321190) 2007 년가을학기 11/5/2007 박경신 2 파일입출력방법 일반파일입출력 CFile ( 파생 ) 클래스 Read(), Write() 등의함수이용 직렬화 (serialization)

More information

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770>

<B9CCB5F0BEEE20C1A4BAB8C3B3B8AE2E687770> 제목 : 미디어정보처리프로그래밍실습모음 일시 : 2002. 6. 15 작성자 : 성용철학번 : 한남대학교정보통신멀티미디어공학부 ( 전자정보통신전공 ) 미디어정보처리프로그래밍실습숙제설명 1.256 X 256 grayscale 의디스플레이프로그램 Resource View 의 menu item 에서 Display 밑에 Raw gray 라마든다음에그림과같이 ID 와

More information

그래픽 프로그래밍

그래픽 프로그래밍 제 13 장그래픽프로그래밍 13.1 베지어곡선 실습 13-1 알고리즘을통한베지어곡선그리기 실습 13-2 컨트롤포인트이동및베지어곡선 해상도설정하기 그래픽프로그래밍 베지어곡선 베지어곡선알고리즘은곡선을생성하는대표적이고기본이되는알고리즘이다. MFC 에서의베지어곡선함수 BOOL PolyBezier(const POINT* lppoints, int ncount); lppoints

More information

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D> 제 10 장다양한뷰클래스 10.1 도큐먼트 10.2 파일입출력 10.3 다양한뷰클래스 실습 10-1 Formview를이용한문자를출력하고파일입출력 10.4 분할윈도우 실습 10-2 정적분할윈도우를이용한학생정보프로그램 10.5 다중뷰 실습 10-3 다중뷰만들기 도큐먼트 CDocument 클래스 데이터를관리하는클래스 OnNewDocument() 함수 새로운도큐먼트를만드는기능

More information

Microsoft PowerPoint - hci2-lecture10.ppt

Microsoft PowerPoint - hci2-lecture10.ppt Overview 도큐먼트 / 뷰구조 HCI Programming 2 (321190) 2008 년가을학기 11/25/2008 박경신 도큐먼트 / 뷰구조 도큐먼트템플렛 (Document Template) SDI (Single Document Interface) 응용프로그램의기본구조 MDI (Multiple Document Interface) 응용프로그램의기본구조

More information

歯Lecture2.PDF

歯Lecture2.PDF VISUAL C++/MFC Lecture 2? Update Visual C ++/MFC Graphic Library OpenGL? Frame OpenGL 3D Graphic library coding CLecture1View? OpenGL MFC coding Visual C++ Project Settings Link Tap Opengl32lib, Glu32lib,

More information

Microsoft PowerPoint _대화상자.ppt

Microsoft PowerPoint _대화상자.ppt 7 장. 대화상자 모달대화상자 (modal dialog box) DDX (Dialog Data Exchange) 모델리스대화상자 (modeless dialog box) 공통대화상자의사용 Paint3.dsw 순천향대학교정보기술공학부이상정 1 모달대화상자 (modal dialog box) 순천향대학교정보기술공학부이상정 2 대화상자의종류 모달대화상자 (modal

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 13 장파일처리 1. 스트림의개념을이해한다. 2. 객체지향적인방법을사용하여파일입출력을할수있다. 3. 텍스트파일과이진파일의차이점을이해한다. 4. 순차파일과임의접근파일의차이점을이해한다. 이번장에서만들어볼프로그램 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 입출력관련클래스들 파일쓰기

More information

Visual C++의 개요

Visual C++의 개요 2.1 MFC 의개요 2.2 MFC 프로그램의구조 2.3 Visual C++ 의시작실습 2-1 Application Wizard 익히기 2.4 SDI 템플릿 2.5 MDI 템플릿 2.6 MFC 애플리케이션아키텍처실습 2-2 간단한 MFC 프로젝트만들기 MFC 의개요 MFC 윈도우애플리케이션을생성하기위해만들어진 C++ 클래스라이브러리 애플리케이션프레임워크를제공

More information

5장 MFC기반 다지기

5장 MFC기반 다지기 5 장 MFC 기반다지기 김성영교수 금오공과대학교 컴퓨터공학부 들어가기 (1) pp.132 ~ 138 비주얼스튜디오에서 MFC 어플리케이션작성 참조 시스템메뉴 메뉴 최소 / 최대 / 닫기버튼 툴바 대화상자 클라이언트영역 (Client Area) 스크롤바 상태표시줄 2 들어가기 (2) 3 들어가기 (3) 4 들어가기 (4) 솔루션탐색기확인 WinMain() 함수가없다?

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

untitled

untitled MFC MFC MFC AppWizard 來 MFC MFC 類 了 類 Document/View MFC Visual C++ AppWizard MFC 不 力 亮 來 不 Document View 不 列 AppWizard View 類 CEditView 列 列 說 行 不 了 Document/View MFC Application Framework 靈 OLE Document

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

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

Microsoft PowerPoint - CPP_chap3

Microsoft PowerPoint - CPP_chap3 3 장. 마우스와키보드메시지 1 1. 능동적입력받기와수동적입력받기 2 학습목표 이벤트위주로직개념을파악한다 메시지개념을파악한다 능동적입력받기 절차적로직프로그램에서입력받기 언제무엇을입력받을지는프로그램의절차적로직에서결정 예 : 텍스트모드 C 프로그램에서문자열을입력받는경우 수동적입력받기 이벤트위주로직프로그램에서입력받기 윈도우환경에서마우스나키보드입력은 Windows

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 프레젠테이션

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

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

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

슬라이드 1

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

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT T9 & AUTOMATA 2007. 3. 23 PLATFORM TEAM 정용학 차례 T9 개요 새로운언어 (LDB) 추가 T9 주요구조체 / 주요함수 Automata 개요 Automata 주요함수 추후세미나계획 질의응답및토의 T9 ( 2 / 30 ) T9 개요 일반적으로 cat 이라는단어를쓸려면... 기존모드 (multitap) 2,2,2, 2,8 ( 총 6번의입력

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

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

[ 마이크로프로세서 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

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18 16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류

More information

Programming hwp

Programming hwp 5 장 SDI 응용프로그램 5.1 문서 / 뷰구조와 SDI 응용프로그램 문서 / 뷰구조 SDI 응용프로그램유형또는 MDI 응용프로그램유형이선택될경우응용프로그램마법사 (AppWizard) 가생성하는프로그램구조는문서 / 뷰 (Document/View) 구조를중심으로이루어진다. 이러한응용프로그램들은문서의전체또는일부를메모리에읽어들인후그내용을어떤형태로든사용자에게보여준다.

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

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

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

윈도우시스템프로그래밍

윈도우시스템프로그래밍 객체지향프로그래밍응용 Chap 4. 대화상자와컨트롤 (#1) 2013.09.27. 오병우 컴퓨터공학과금오공과대학교 Control 들을가진윈도우 Dialog 개요 사용자의입력을받기위한 Object 의집합 종류 프로그램수행도중사용자의입력이필요할때다이얼로그박스출력 다이얼로그박스는사용자로부터입력받은데이터를메인루틴에넘기고소멸 Modal Dialog Parent window

More information

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

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

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information

Microsoft Word - hci07-final-answer.doc

Microsoft Word - hci07-final-answer.doc 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 다음문장의내용이맞으면 True, 틀리면 False를표시하시오.

More information

Microsoft Word - hci08-final-answer.doc

Microsoft Word - hci08-final-answer.doc 기말고사 담당교수 : 단국대학교멀티미디어공학전공박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호를기입하면성적공고시학번대신암호를사용할것임. 1. 다음문장의내용이맞으면 True, 틀리면 False를표시하시오.

More information

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

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

More information

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

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

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

Microsoft PowerPoint - C++ 5 .pptx

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

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P Duplicator 는기본적으로원본하드디스크를빠르게복사본하드디스크에복사하는기능을하는것입니다.. 복사본 하드디스크가원본하드디스크와똑같게하는것을목적으로하는것이어서저용량에서고용량으로복사시몇 가지문제점이발생할수있습니다. 하드디스크는사용하려면, 디스크초기화를한후에포맷을해야사용가능합니다. Windows PC는 MBR과 GPT 2 개중에 1개로초기화합니다. -Windows

More information

슬라이드 1

슬라이드 1 한국산업기술대학교 제 4 강프레임리스너 (Frame Listener) 이대현교수 학습안내 학습목표 프레임리스너를이용하여게임루프를구현하는방법을이해한다. 오우거엔짂의키입력처리방식을이해한다. 학습내용 프레임리스너의개념프레임리스너를이용한게임캐릭터의이동캐릭터의이동속도조절 OIS 입력시스템을이용한키보드입력의처리 기본게임루프 Initialization Game Logic

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

Programming hwp

Programming hwp 6 장 MDI 응용프로그램 MDI 응용프로그램의형태 응용프로그램마법사 (AppWizard) 가생성하는 MDI 응용프로그램의주실행창을나타내는객체는 CFrameWnd에서파생된클래스인스턴스이며, 기본외형은아래그림과같이메뉴와툴바를포함한다. 문서내용을보여주는뷰들은이창의클라이언트영역안에자식창으로만들어지는윈도우들을통해표시된다. 주실행창의클라이언트영역안에는여러개의자식창이만들어질수있으며,

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

Chapter 1. MFC 시작하기

Chapter 1.  MFC 시작하기 Chapter 1. MFC 시작하기 1. MFC(Microsoft Foundation Class) 개요 2. Visual Studio 2015 프로그램설치하기 3. 마우스클릭프로그램작성 4. 그림그리기프로그램작성 5. 마우스좌표값구하기프로그램작성 1 1.1. MFC 개요 2 1.1.1. C++ 언어 객체지향언어 (Object-Oriented Programming,

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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

쉽게 풀어쓴 C 프로그래밍

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

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

OCW_C언어 기초

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

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

4S 1차년도 평가 발표자료

4S 1차년도 평가 발표자료 객체지향프로그래밍응용 Chap 2. 프로그램의뼈대 2012.09.17. 오병우 컴퓨터공학과금오공과대학교 윈도우프로그램각부분의명칭 타이틀바 메뉴 프레임윈도우오브젝트 메뉴오브젝트 도구모음 툴바오브젝트 스크롤바 클라이언트영역 뷰오브젝트 상태표시줄 상태바오브젝트 Department of Computer Engineering 2 Win32 Application API

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.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

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

Microsoft PowerPoint - 09-CE-5-윈도우 핸들 순천향대학교컴퓨터학부이상정 1 학습내용 윈도우핸들 윈도우찿기 윈도우확인및제거 윈도우숨기기 윈도우포커스 윈도우텍스트 윈도우핸들 순천향대학교컴퓨터학부이상정 3 핸들 (handle) 윈도우에서구체적인어떤대상을구분하기위해지정되는고유의번호 32비트의정수값 핸들은운영체제가발급하고사용자가이값을사용 실제값이무엇인지는몰라도상관없음 윈도우, DC, 브러쉬등등 순천향대학교컴퓨터학부이상정

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

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

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

More information

슬라이드 1

슬라이드 1 2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 03 장 영상처리를위한 Visual C++ 디지털영상파일포맷 MFC AppWizard[exe] 를이용한 MFC 프로젝트작성 MFC 를이용한영상처리입. 출력프로그램작성 MFC 를이용한영상축소 MFC 를이용한영상확대 MFC 를이용한양자화영상처리 한빛미디어 ( 주 ) 학습목표 3 장. 영상처리를위한 Visual C++ 영상처리에사용되는 RAW 파일포맷을이해한다.

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

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor 19. 전처리와분할컴파일 순천향대학교컴퓨터학부이상정 1 학습내용 전처리명령어 #include #define 기호상수 const 분할컴파일 순천향대학교컴퓨터학부이상정 2 전처리과정 전처리 (preprocessor) 전처리명령어는 # 기호로시작 #incldue #define 순천향대학교컴퓨터학부이상정 3 #include (1) 지정된파일을프로그램에삽입 꺽쇠괄호는포함할파일을컴파일러에설정되어있는특정디렉토리에서검색

More information

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D> 01 : 윈도우프로그래밍기초 학습목표 윈도우운영체제와윈도우응용프로그램의특징을이해한다. SDK 응용프로그램작성과정, 기본구조, 동작원리를이해한다. MFC 응용프로그램작성과정, 기본구조, 동작원리를이해한다. 비주얼 C++ 개발환경사용법을익힌다. 윈도우운영체제특징 (1/3) 그래픽사용자인터페이스 1 윈도우운영체제특징 (2/3) 메시지구동구조 이벤트발생... 대기

More information

설계란 무엇인가?

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

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

BMP 파일 처리

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

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

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

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

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

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

More information

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

(Microsoft Word - \301\337\260\243\260\355\273\347.docx) 내장형시스템공학 (NH466) 중간고사 학번 : 이름 : 문제 배점 점수 1 20 2 20 3 20 4 20 5 10 6 10 7 15 8 20 9 15 합계 150 1. (20 점 ) 다음용어에대해서설명하시오. (1) 정보은닉 (Information Hiding) (2) 캡슐화 (Encapsulation) (3) 오버로딩 (Overloading) (4) 생성자

More information

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054> 의료프로그래밍실습 의료공학과이기영 1 Chap. 11 파일입출력 2 1 이장의목표 텍스트파일의입출력방법을익힌다. (284 쪽그림참조 ) 3 C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 한줄의끝 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환된다. 이진파일 (binary file) : 자료형그대로의바이트수로연속해서저장

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

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

PowerPoint Template

PowerPoint Template 18 동적할당과고급처리 인터넷정보과 1 2/19 동적할당 목적 다음과같은일반변수의선언과사용은변수를정적 (static) 으로사용 int a = 10; 메모리사용예측이부정확한경우는충분한메모리를미리확보해야하는것은비효율 동적 (dynamic) 메모리할당 (Memory Allocation) 동적인메모리할당을위해서는함수 malloc() 을이용, 메모리공간을확보 함수 malloc()

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7> 제14장 동적 메모리 할당 Dynamic Allocation void * malloc(sizeof(char)*256) void * calloc(sizeof(char), 256) void * realloc(void *, size_t); Self-Referece NODE struct selfref { int n; struct selfref *next; }; Linked

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chap12-OOP.ppt 객체지향프로그래밍 (Object Oriented Programming) 12 장강사 강대기 차례 (Agenda) 멤버에대한동적메모리할당 암시적 / 명시적복사생성자 암시적 / 명시적오버로딩대입연산자 생성자에 new 사용하기 static 클래스멤버 객체에위치지정 new 사용하기 객체를지시하는포인터 StringBad 클래스 멤버에포인터사용 str static 멤버

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 파일입출력 Heeseung Jo 이장의내용 파일과파일포인터 파일입출력함수 임의접근파일처리 2 파일과파일포인터 파일 파일은모든데이터를연속된바이트형태로저장 4 C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 " 한줄의끝 " 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환 예, a.txt, main.c,

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

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2 제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.

More information

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금, 8 장상속 상속의기본개념상속관련문제제기 base 클래스의접근제어와 protected 멤버상속관계에서의생성자와소멸자함수재정의 (function overriding) 디폴트액세스지정자와구조체 derived 클래스로부터의상속다중상속 virtual base 클래스 derived 클래스의디폴트복사생성자와디폴트대입연산자 private 생성자의사용 C++ 프로그래밍입문

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

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

Microsoft PowerPoint - 02-Class Review.pptx

Microsoft PowerPoint - 02-Class Review.pptx Digital 3D Anthropometry 2. Review Sungmin Kim SEOUL NATIONAL UNIVERSITY 기존프로그래밍기법의문제점 낮은코드가독성 Introduction 사용자인터페이스와데이터가혼재 사용자인터페이스를만드는코드와데이터정의가같이됨 다른운영체제나프레임워크를쓰는시스템에적용할수없음 코드의중복및복잡함 동일한코드가계속반복됨 구조체변수에동적으로메모리를할당하기어렵다

More information

Microsoft PowerPoint - Chapter 6.ppt

Microsoft PowerPoint - Chapter 6.ppt 6.Static 멤버와 const 멤버 클래스와 const 클래스와 static 연결리스트프로그램예 Jong Hyuk Park 클래스와 const Jong Hyuk Park C 의 const (1) const double PI=3.14; PI=3.1415; // 컴파일오류 const int val; val=20; // 컴파일오류 3 C 의 const (1)

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

Microsoft PowerPoint - hci2-lecture3.ppt

Microsoft PowerPoint - hci2-lecture3.ppt Overview MFC 프로그램구조 HCI Programming 2 (321190) 2007년가을학기 10/1/2007 박경신 MFC 개요 MFC 발전과정과주요특징이해 MFC 구조 MFC 구성요소, 클래스계층도, 주요클래스 MFC 최상위클래스인 CObject 가제공하는서비스이해 MFC 가제공하는전역함수사용법 MFC 응용프로그램구조 MFC Application

More information