기술문서 작성 C# 입문과맛보기 작성자 : 인천대학교 OneScore 김근호 Ⅰ. C# 이란무엇인가? p.1 Ⅱ. Hello World! p.3 Ⅲ. 메모장을만들어보자! p.4 가. 디자인 p.4 나. 소스코드 p

Similar documents
PowerPoint 프레젠테이션

PowerPoint Template

제 1장 C#의 개요

PowerPoint Presentation

PowerPoint Presentation

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Microsoft PowerPoint - Java7.pptx

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

윈도우시스템프로그래밍

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

Microsoft PowerPoint - hci2-lecture2.ppt [호환 모드]

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

윈도우시스템프로그래밍

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

슬라이드 1

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

Microsoft PowerPoint - chap06-2pointer.ppt

임베디드 시스템 소프트웨어

PowerPoint 프레젠테이션

오버라이딩 (Overriding)

JAVA PROGRAMMING 실습 08.다형성

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

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

C++ Programming

C# 입문 : 이론과 실습

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

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

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

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

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

Studuino소프트웨어 설치

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

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

Visual Basic Visual Basic 소개

PowerPoint Presentation

JUNIT 실습및발표

Microsoft PowerPoint - hci2-lecture2.ppt [호환 모드]

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

설계란 무엇인가?

문서의 제목 나눔고딕B, 54pt

슬라이드 1

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>


Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Convenience Timetable Design

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

C++ Programming

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

JVM 메모리구조

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

유니티 변수-함수.key

untitled

NTD36HD Manual

Spring Boot/JDBC JdbcTemplate/CRUD 예제

슬라이드 1

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

BMP 파일 처리

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

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

Visual Basic 기본컨트롤

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

Microsoft PowerPoint - 07-Data Manipulation.pptx

제11장 프로세스와 쓰레드

UI TASK & KEY EVENT

MVVM 패턴의 이해

02 C h a p t e r Java

PowerPoint Template

C 프로그램의 기본

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

<4D F736F F D20BEBEBCA520C4DAB5F920BFACBDC0202D20B8D6C6BC20BEB2B7B9B5E5BFCD20C0CCBAA5C6AE2E646F6378>

PowerPoint 프레젠테이션

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

C# Programming Guide - Types

학습목표 텍스트파일을다룰수있다. 스트림읽기, 쓰기를안다. 2

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

PowerPoint 프레젠테이션

C++ Programming

Visual Basic 반복문

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - 14주차 강의자료

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

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

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

PowerPoint Presentation

JAVA 플랫폼 개발 환경 구축 및 활용

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

Microsoft PowerPoint 장강의노트.ppt

쉽게 풀어쓴 C 프로그래밍

4장.문장

03_queue

Microsoft PowerPoint - 2-Objective-C 기초

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

어댑터뷰

Transcription:

기술문서 14. 11. 12. 작성 C# 입문과맛보기 작성자 : 인천대학교 OneScore 김근호 address@outlook.kr Ⅰ. C# 이란무엇인가? p.1 Ⅱ. Hello World! p.3 Ⅲ. 메모장을만들어보자! p.4 가. 디자인 p.4 나. 소스코드 p.5 Ⅳ. 마치며.. p.8

I. C# 이란무엇인가 가. 정의 Microsoft의아네르스하일스베르가 2000년에고안한개발한객체지향프로그래밍언어로, 닷넷프레임워크의한부분으로만들었으며나중에 ECMA(ECMA-334) 와 ISO(ISO/IEC/23270) 의표준으로자리잡았다. C++ 와 JAVA와비슷한문법을가지고있다. 나. 언어특징 C# 은닷넷프로그램이동작하는닷넷플랫폼을가장직접적으로반영하고, 또한닷넷플랫폼에강하게의존하는프로그래밍언어이다. C# 은그문법적인특성이 C++ 과자바로부터많은영향을받았다. 자바와상당히유사하며 C# 을통하여다룰수있는닷넷플랫폼의기술들조차도자바를염두에둔것이많아서자바와가장많이비교되고있다. 하지만 C# 은자바와달리불안전코드 (unsafe code) 와같은기술을통하여플랫폼간상호운용성에상당히많은노력을기울이고있다. C# 의기본자료형은닷넷의객체모델을따르고있고, 런타임차원에서의쓰레기수집 (garbage collection) 이되며또한클래스, 인터페이스, 위임, 예외와같이객체지향언어로서가져야할모든요소들이포함되어있다. 다. C++ 과의차이점 C# 에는전역변수및전역함수가존재하지않으며, 클래스안에선언되어야하고, bool 함수는오직 true와 false의논리값만을가질수있다. 그리고상수또는정수형변수에서암시적으로변환이불가능하다. 직접대입을위해서는변환명령을이용해야한다. 또한, C# 은 static 키워드를오직한번만초기화를수행한다는의미로이용할수없다. C++ 에서의포인터는특정한형식의인스턴스또는주소값을가리키기위한목적으로할당되는주소값을기억하기위한변수로취급되지만 C# 에서의포인터는 System.IntPtr이라는하나의완성된형식에대한확장사양일뿐이다. 그래서 C++ 의포인터와같은쓰임새를 C# 으로이식할수없는경우가상당히많다. C# 은 C++ 과는달리부모클래스를하나만사용할수있다. 즉다중상속은불가능하며구현해야하는인터페이스는여러개를지정할수있다. 이점은다중부모클래스로부터의상속에서만누릴수있는이점을잃게되는단점을가지지만복잡성을최소화하고보다명료한상속관계의의미를만들수있다는부분이장점이다. - 1 -

라. C# 의계통도 마. 기타 C# 언어로작성된응용프로그램은크게콘솔어플리케이션과윈폼어플리케이션으로나뉜다. 콘솔어플리케이션은문자기반의명령프롬프트환경에서실행되는콘솔응용프로그램을의미하고, 키보드를통해입력하고실행결과를문자로출력한다. 그에반해윈폼어플리케이션은윈도우폼어플리케이션의약어이며일반적인윈도우응용프로그램과같이 GUI(Graphical User Interface : 그래픽사용자인터페이스 ) 를통해입출력을수행하고이벤트처리방식으로실행되는응용프로그램이다. 본문에서는 Hello World 기본예제와윈폼어플리케이션방식을이용한간단한메모장만들기실습으로 C# 맛보기를하려한다. - 2 -

II. Hello World 가 ) 콘솔어플리케이션예제 1). HelloWorld.cs 예제 i) 코드 using System; class HelloWorld public static void Main() Console.WriteLine("Hello World!"); ii) 실행결과 콘솔모드에서는일반적인 C 컴파일과같이커맨드창에텍스트로만뜨는것을확인할수있다. 나 ) 윈폼어플리케이션예제 1) HelloWorld.cs 예제 iii) 코드 using System; using System.Windows.Forms; class WinFormApp : Form WinFormApp() Text = "Hello World!"; public static void Main() Application.Run(new WinFormApp()); iv) 코드 윈폼모드에서는 GUI 형식인창이뜨고왼쪽상단에 Hello World! 가표시된것을볼수있다. - 3 -

III. 메모장을만들어보자! 가 ) 디자인 Visual Studio에서 C# 의새 Windows Forms을생성하면 Form1이란제목을가진기본창하나만덩그러니나온다. 이제메모장을만들기위해우선필요한버튼및기능을추가하여디자인하고자한다. 먼저아래의기능을도구상자에서끌어다추가시킨다. 메모장의기본기능인텍스트를입력받기위한텍스트박스. 프로그램상단의메뉴바로서, 기능별로그룹화시킬수있다. 상태를출력하는 Strip 으로줄, 문자개수를표시하기위함이다. 사용자가파일을열고저장하기위한대화상자이다. 위도구를추가함으로서메모장프로그램작성을위한최소한의디자인은준비되었다. 이제각기능의설정을통해사용자가생각하는메모장의구색을갖추고자한다. 프로그램크기에맞추기위해, 속성-레이아웃-Dock에서큰네모를클릭하여 Fill로맞추어주고, 디자인-(Name) 에서본인이원하는이름으로설정해준다. 본실습에서는 txtbox로하겠다. 또한여러줄입력을위해동작 Multiline은 True로바꾸고, 모양 ScrollBars 는 Both로맞춰줌으로서줄간이동을용이하게한다. 편집창에서원하는메뉴를하나하나입력할수있으나, 편의를위해클릭후오른쪽위의작은화살표를클릭하여, 표준항목삽입을하고불필요한메뉴만제거해준다. 본실습에서는표준항목에서파일 - 다른이름으로저장, 편집 다시실행, 도구탭그리고도움말탭에서정보를제외한모든메뉴를지우고, 대신서식탭을추가하여자동줄바꿈과글꼴을추가한다. 창하단의상태표시줄을선택하고, 하단화살표를눌러 StatusLabel 을클릭 하고, 속성 - 디자인 -(Name) 에서원하는이름으로설정해준다. 본실습에서는 statuslabel 로설정하였다. - 4 -

나 ) 소스코드 이제메모장의기본외형은갖추었고, 각기능들에알맞은소스코드를넣어주면된다. 먼저 MenuStrip 에해당하는소스코드를넣어보겠다. 넣는법은폼디자인창에서원하는탭의메뉴를더블클릭하면버튼클릭시실행할소스코드입력창이뜬다. 각메뉴에다음과같은소스코드를넣어주면된다. 1) 파일탭 if (txtbox.textlength > 0) // 텍스트가비어있지않으면아래메시지출력 DialogResult result = MessageBox.Show(openFileDialog1.FileName + " 을 ( 를 ) 저장하시겠습니까?", " 메모장 ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning); switch (result)// 메세지박스의 result값 (Yes,No,Cancel) 을받아와서비교 case DialogResult.Yes:// Yes 면저장ToolStripMenuItem_Click(sender, e);// 저장이벤트실행 break; case DialogResult.No:// No면저장없이초기화 txtbox.text = null; break; txtbox.text = null;// 저장후메모장초기화 OpenFileDialog open = new OpenFileDialog(); // 도구상자에서추가한 OpenFileDialog를불러와객체생성. String filter = "Text Files(*.txt) *.txt All Files(*.*) *.*"; // 열고자하는파일확장자필터를정한다. open.filter = filter; // 정의한필터를 OpenFileDialog 필터에설정시켜준다. if (open.showdialog(this) == DialogResult.OK) // OpenFileDialog를표시한다. if (!string.isnullorempty(open.filename)) txtbox.text = System.IO.File.ReadAllText(open.FileName,Encoding.Default); // txtbox의텍스트를 OpenFileDialog로로드한파일로만듦. else return; - 5 -

SaveFileDialog save = new SaveFileDialog(); // 도구상자에서추가한 SaveFileDialog를불러와객체생성. String filename = save.filename; // SaveFileDialog의 FileName을 filename으로선언. String filter = "Text Files(*.txt) *.txt All Files(*.*) *.*"; // 저장할파일확장자필터선언. save.filter = filter; // 설정한필터를 Dialog필터에설정 save.title = " 저장 "; // 저장하기창제목설정 if (save.showdialog(this) == DialogResult.OK) // SaveFileDialog를표시. System.IO.File.WriteAllText(save.FileName, txtbox.text); // txtbox의모든텍스트를 file에저장한다. else return; System.Drawing.Printing.PrintDocument prntdoc = new System.Drawing.Printing.PrintDocument(); // prntdoc으로새로이선언한소스를인쇄 Click 이벤트밖에먼저써준다. 이코드를먼저밖에입력한뒤, 아래의코드를인쇄버튼클릭시나타나도록한다. PrintDialog print = new PrintDialog(); //PrintDialog를 print로선언 prntdoc.printpage += new System.Drawing.Printing.PrintPageEventHandler(prntDoc_PrintPage); //prntdoc_printpage를 prntdoc 프린트페이지의새로운이벤트핸들러로선언 print.document = prntdoc; //prntdoc를프린트할문서로설정. if (print.showdialog(this) == DialogResult.OK) // 프린트창출력 prntdoc.print(); PrintPreviewDialog preview = new PrintPreviewDialog(); // preview로 PrintPreviewDialog 선언 prntdoc.printpage += new System.Drawing.Printing.PrintPageEventHandler(prntDoc_PrintPage); // prntdoc_printpage을 prntdoc인쇄페이지의이벤트핸들러로선언 preview.document = prntdoc; // prntdoc을미리보기할문서로설정 if (preview.showdialog(this) == DialogResult.OK) // 미리보기창출력 prntdoc.print(); 위소스입력후, 바깥에다인쇄, 인쇄미리보기에쓰인 printdoc_printpage의정의를해줌. private void prntdoc_printpage(object sender, System.Drawing.Printing.PrintPageEventArgs e) Graphics g = e.graphics; g.drawstring(txtbox.text, txtbox.font, Brushes.Black, 0, 0); - 6 -

Close(); 2) 편집탭 txtbox.undo(); txtbox.cut(); txtbox.copy(); txtbox.paste(); txtbox.selectall(); 3) 서식탭 활성화여부확인을위해 check 모양으로바꾼다. 디자인에서자동줄바꿈메뉴오른쪽버튼클릭후 checked 클릭 this.txtbox.wordwrap =!(this.txtbox.wordwrap); // 클릭할때마다줄바꿈 complement 자동줄바꿈 ToolStripMenuItem.Checked =!( 자동줄바꿈 ToolStripMenuItem.Checked); // 클릭할때마다체크 on/off 글꼴사용을위해도구상자에서 fontdialog 를디자인에추가시켜준뒤아래의소스를입력한다. fontdialog1.showcolor = true; fontdialog1.showeffects = true; if (fontdialog1.showdialog(this) == DialogResult.OK) txtbox.forecolor = fontdialog1.color; txtbox.font = fontdialog1.font; - 7 -

4) 기타 // 메시지박스출력으로원하고자하는정보입력 MessageBox.Show(this, "C# 메모장 v1.0\n"+" 이제품은다음사용자에게허가됨.\n\n"+" 사용자 이름 : "+SystemInformation.UserName+"\n 컴퓨터이름 : "+SystemInformation.ComputerName); 줄, 글자수출력을위해최초로드, 텍스트입력시카운트되도록, txtbox_textchanged( 텍스트박스더블클릭 ) 와 Form1_Load( 프로그램창더블클릭 ) 두곳에입력한다. Int32 lines = txtbox.lines.length; Int32 textlength = txtbox.text.length; statuslabel.text = "Lines: " + lines + " Characters: " + textlength; IV. 마치며 C# 입문과맛보기라이름지은본기술문서를통해 C# 의개요및다른언어와의관계, 그리고개발환경차이를간단히확인하였다. 이문서가개념강좌가아닌맛보기인만큼, 자세한코드분석이나설명이없어완벽히이해는못하더라도메모장만들기실습을통해 C# 윈폼프로그래밍이이런것이라는감을잡았으면좋겠다. 실제로주변에서도대학입학후코딩수업이란코딩수업은주구장창콘솔창에텍스트만떠서흥미를느끼지못하다가 GUI 기반의 C# 윈폼프로그래밍으로다시프로그래밍에흥미를느끼는경우를봤기때문에, 혹컴퓨터공학도로서코딩에흥미가없다거나지레겁먹은사람이있다면, 이기회에좀더흥미를갖는계기가되었으면한다. - 8 -

참고문헌및사이트 l C# 입문이론과실습 ( 오세만, 생능출판사, 2005) l l C Sharp (programming language) by wikipedia http://wikipedia.org/wiki/c_sharp_(programming_language) Code Project - Empty path name is not legal Error http://www.codeproject.com/questions/402902/empty-path-name-is-not-legal-error - 9 -