C# 입문 : 이론과 실습

Similar documents
C# 입문 : 이론과 실습

OCW_C언어 기초

어휘구조 자료형 연산자 형변환 [2/49]

Microsoft PowerPoint - lec3.ppt

Microsoft PowerPoint - chap04-연산자.pptx

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

Microsoft PowerPoint - C++ 5 .pptx

제 1장 C#의 개요

PowerPoint 프레젠테이션

C++ Programming

Microsoft PowerPoint - CSharp-2-기초문법

Visual Basic 반복문

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

3ÆÄÆ®-11

PowerPoint Template

C# 입문 : 이론과 실습

03장.스택.key

Microsoft PowerPoint - 04-UDP Programming.ppt

PowerPoint 프레젠테이션

06 세상을 변화시키는 연산자

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

3ÆÄÆ®-14

Microsoft PowerPoint - Chapter_02.pptx

4장.문장

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

JAVA PROGRAMMING 실습 08.다형성

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - lec2.ppt

쉽게

11장 포인터

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - Chapter_04.pptx

C# 입문 : 이론과 실습

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

PowerPoint Presentation

1 1 제 1 장 C# 의개요 1.1 소개 1.2 콘솔 / 윈폼애플리케이션 C# 개발환경 콘솔애플리케이션 윈폼애플리케이션 C# 프로그램실행과정 1.3 기본특징 자료형 연산자 배열 스트

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

PowerPoint 프레젠테이션

슬라이드 1

PowerPoint 프레젠테이션

Design Issues

Microsoft PowerPoint - lec02_ ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-05.pptx

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

초보자를 위한 C# 21일 완성

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Java ...

PowerPoint Template

오버라이딩 (Overriding)

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>


Microsoft PowerPoint - KNK_C03_Expr_kor

KNK_C03_Expr_kor

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

TEST BANK & SOLUTION

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

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

Cluster management software

PowerPoint Presentation

어댑터뷰

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

교육자료

Javascript

PowerPoint Template

PowerPoint Presentation

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

C# 입문 : 이론과 실습

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

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

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

4장기본프로그래밍2

02 C h a p t e r Java

KNK_C_05_Pointers_Arrays_structures_summary_v02

제11장 프로세스와 쓰레드

쉽게 풀어쓴 C 프로그래밍

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

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

C# 입문 : 이론과 실습

Microsoft PowerPoint - web-part02-ch16-이벤트.pptx

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

C# Programming Guide - Types

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Visual Basic Visual Basic 소개

chap10.PDF

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

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

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

gnu-lee-oop-kor-lec10-1-chap10

비긴쿡-자바 00앞부속

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

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

12-file.key

Microsoft PowerPoint - Java7.pptx

Transcription:

식 (expression) 문장에서값을계산하는데사용식은연산자 (operator) 와피연자 (operand) 로구성식의값에따라 산술식, 관계식, 논리식으로구분 연산자 (operator) 식의의미를결정피연산자가어떻게계산될지를나타내는기호 C# 언어스펙 48개의연산자정의

연산자종류 산술연산자 : + - * / % 단항 + 단항 - 관계연산자 : > >= < <= ==!= 논리연산자 : &&! 증감연산자 : 전위 ++ 전위 후위 ++ 후위-- 비트연산자 : & ^ ~ << >> 조건연산자 :? : C# 언어의연산자 배정연산자 : = += -= *= /= %= &= = ^= <<= >>= 캐스트연산자 : ( 자료형 ) 형검사연산자 : is as 배열연산자 : [] 메소드연산자 : () 멤버접근연산자 :. 지정어연산자 : new typeof checked unchecked

의미 수치연산을나타내는연산자 연산자종류 단항산술연산자 : +, - 이항산술연산자 : +, -, *, /, % x = -5 ; // 음수 5 x = -(-5) ; // 양수 5 x = -(3-5) ; // 양수 2 % : 나머지연산자 (remainder operator) x % y = x - (x / y) * y

의미 두개의값을비교하는이항연산자연산결과 : true or false 관계연산자가포함된식 : 관계식 for, while, do-while 의조건식 연산자우선순위 관계연산자는산술연산자보다우선순위가낮다. 관계연산자우선순위 연산자 우선순위 비교연산자 > >= < <= ( 높음 ) 항등연산자 ==!= ( 낮음 ) b == x < y ===> b == (x < y) a > b + c ===> a > (b + c)

의미 두피연산자의논리관계를나타내는연산자 연산자종류 논리곱 (&&), 논리합 ( ), 논리부정 (!) 연산자우선순위 논리연산자는산술연산자나관계연산자보다연산순위가낮다. 논리연산자 연산의미 연산자 우선순위 형태 논리부정! ( 높음 )!x 논리곱 && x && y 논리합 ( 낮음 ) x y x == y x > y && y > z 3 1 2 4 5

[ 예제 2.18 LogicalOperatorApp.cs] using System; class LogicalOperatorApp { public static void Main() { int x=3, y=5, z=7; bool b; b = x < y && y < z; Console.WriteLine("Result = " + b); b = x == y x < y && y > z; Console.WriteLine("Result = " + b); 실행결과 : Result = True Result = False

의미 정수형변수의값을하나증가시키거나감소시키는연산자 연산자기호 ++, -- 변수가아닌식에는사용못함 : (a+b)++ 실수형적용안됨 : f++ // error: f is float 연산자종류 전위연산자 (prefix operator) n = 1; x = ++n; // x=2, n=2 후위연산자 (postfix operator) n = 1; x = n++; // x=1, n=2 // error

의미 비트단위로연산을수행하는연산자 피연산자는반드시정수형 연산자종류 비트논리곱 (&), 비트논리합 ( ), 비트배타적논리합 (^), 왼쪽이동 (<<), 오른쪽이동 (>>), 1 의보수 (~) 연산자우선순위 논리연산자 연산의미 연산자 우선순위 사용예 비트논리곱 & ( 높음 ) x & y 비트논리합 x y 비트배타적논리합 (exclusive OR) ^ x ^ y 왼쪽이동 (left shift) << x << y 오른쪽이동 (right shift) >> x >> y 1의보수 (one's complement) ~ ( 낮음 ) ~x

[ 예제 2.20 BitOperatorApp.cs] using System; class BitOperatorApp { public static void Main() { int x=9, y=3; Console.WriteLine(x + " & " + y + " = " + (x&y)); Console.WriteLine(x + " " + y + " = " + (x y)); Console.WriteLine(x + " ^ " + y + " = " + (x^y)); Console.WriteLine("~10 = " + (~10)); 실행결과 : 9 & 3 = 1 9 3 = 11 9 ^ 3 = 10 ~10 = -11

의미 의미가 if 문장과같은삼항연산자 형태식 1? 식 2 : 식 3 if (x > y) max = x; else max = y; max = x > y? x : y ;

[ 예제 2.22 ConditionalOperatorApp.cs] using System; class ConditionalOperatorApp { public static void Main() { int a, b, c; int m; Console.Write("Enter three numbers : "); a = Console.Read() - '0'; b = Console.Read() - '0'; c = Console.Read() - '0'; m = (a > b)? a : b; m = (m > c)? m : c; Console.WriteLine("The largest number = " + m); 입력데이터 : Enter three numbers : 526 실행결과 : The largest number = 6

의미 이항연산자와배정연산자가결합하여이루어진연산자 식 1 = 식 1 op 식 2 식 1 op= 식 2 op: - 산술연산자 : + - * / % - 비트연산자 : & ^ << >> 복합배정연산자사용예 sum += i ; sum = sum + i ; x *= y + 1 ; x = x * y + 1 ; x = x * (y+1)

의미 자료형변환연산자 형태 ( 자료형 ) 식 캐스트연산자사용예 (int) 3.75 ===> 3 (float) 3 ===> 3.0 (float) (1 / 2) ===> 0.0 (float) 1 / 2 ===> 0.5

연산자종류 데이터타입이지정한타입과호환가능한지검사 : is obj is <type> 주어진값을지정한타입으로변환 : as obj as <type>

의미 연산의의미를 C# 지정어로나타낸연산자 연산자종류 객체생성연산자 : new 객체형반환연산자 : typeof 오버플로검사연산 : checked 오버플로무시연산 : unchecked

[ 예제 2.26 IsAsOperatorApp.cs] using System; public class IsAsOperatorApp { static void IsOperator(object obj) { Console.WriteLine(obj + " is int : " + (obj is int)); Console.WriteLine(obj + " is string : "+(obj is string)); static void AsOperator(object obj) { Console.WriteLine(obj + " as string == null : " + (obj as string == null)); public static void Main() { IsOperator(10); IsOperator("ABC"); AsOperator(10); AsOperator("ABC"); 실행결과 : 10 is int : True 10 is string : False ABC is int : False ABC is string... True 10 as string == null : True ABC as string == null : False

연산자결합법칙우선순위 () []. 후위 ++ 후위 -- new typeof checked unchecked 좌측결합 ( 높음 ) 단항 + 단항-! ~ 전위 ++ 전위-- ( 자료형 ) 우측결합 * / % 좌측결합 + - 좌측결합 << >> 좌측결합 < > <= >= is as 좌측결합 ==!= 좌측결합 & 좌측결합 ^ 좌측결합 좌측결합 && 좌측결합 좌측결합? : 우측결합 = += -= *= /= %= &= ^= = <<= >>= 우측결합 ( 낮음 )

묵시적형변환 (implicit type conversion) 컴파일러에의해자동적으로수행되는형변환 작은크기자료형 큰크기자료형 명시적형변환 (explicit type conversion) 프로그래머가캐스트연산자를사용하여수행하는형변환형태 ( 자료형 ) 식 큰크기자료형에서작은크기자료형으로변환시정밀도상실 형변환금지 bool 같은자료형이외에다른자료형으로의변환금지

[ 예제 2.28 LosePrecisionApp.cs] using System; class LosePrecisionApp { public static void Main() { int big = 1234567890; float approx; approx = (float)big; Console.WriteLine("difference = " + (big - (int)approx)); 실행결과 : difference = -46

박싱 (boxing) 값형의데이터를참조형으로변환하는것컴파일러에의해묵시적으로행해짐박싱과정 언박싱 (unboxing) 참조형의데이터를값형으로변환하는것반드시캐스팅을통하여명시적으로행해짐반드시박싱될때형으로언박싱을해주어야함

[ 예제 2.30 BoxingUnboxingApp.cs] using System; class BoxingUnboxingApp { public static void Main() { int foo = 526; object bar = foo; // foo is boxed to bar. Console.WriteLine(bar); try { double d = (short)bar; Console.WriteLine(d); catch (InvalidCastException e) { Console.WriteLine(e + "Error"); 실행결과 : 526 System.InvalidCastException: at BoxingUnboxingApp.Main() Error

마우스 윈도우사용자에게가장편리하고친숙한입력장치 윈폼애플리케이션의사용자상호작용은대부분마우스를통해이루어짐 사용자가마우스를이동하거나클릭하면이벤트가발생 마우스이벤트 이동이벤트 사용자가마우스의위치를이동시킬경우발생 선택이벤트 사용자가마우스의버튼을클릭할경우발생

MouseEnter 마우스포인터가컨트롤이나폼영역에들어올때발생 MouseHover 마우스포인터가컨트롤이나폼에서이동하는것을멈출때발생 매번발생하지않으며처음멈출때만발생 MouseLeave 마우스포인터가컨트롤이나폼영역을벗어날때발생 MouseMove 마우스포인터가새로운영역으로이동할때발생 MouseWheel 입력포커스를가지고있는컨트롤이나폼위에서마우스휠버튼을회전시킬때발생

EventHandler 델리게이트형의처리기를사용하는이벤트 MouseEnter, MouseHover, MouseLeave MouseEventHandler 델리케이트형의처리기를사용하는이벤트 MouseMove, MouseWheel MouseEventArgs 클래스가제공하는프로퍼티를이용하여마우스의위치와상태에대한추가적인정보사용가능 public delegate void EventHander(object sender, EventArgs e); public delegate void MouseEventHander(object sender, MouseEventArgs e);

Button Clicks 마우스의상태를나타내는 MouseButtons 열거형값 MouseButtons 열거형 Left : 마우스왼쪽버튼을클릭한상태 Middle : 마우스중앙버튼을클릭한상태 None : 마우스를누르지않은상태 Right : 마우스오른쪽버튼을클릭한상태 XButton1 : 첫번째 X 버튼을클릭한상태 XButton2 : 두번째 X 버튼을클릭한상태 마우스버튼을클릭한횟수 IntelliMouse 에서제공하는버튼

Delta X Y 마우스휠의회전수 ( 휠을 1회돌리는것 ) 를나타내는값클라이언트좌표내에서, 마우스위치의 X좌표클라이언트좌표내에서, 마우스위치의 Y좌표

[ 예제 10.3 MousePositionApp.cs] 1) 폼설계 2) 프로퍼티 컨트롤 : (Name) 프로퍼티값 Form : Form1 Text MousePositionApp 3) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 Form : Form1 MouseEnter Form1_MouseEnter()

private void Form1_MouseEnter(object sender, EventArgs e) { Point mousepoint = PointToClient(MousePosition); string msg = Mouse Position : + mousepoint.x +, + mousepoint.y; MessageBox.Show(msg); 실행방법 : 폼위로마우스를이동하여 MouseEnter 이벤트를발생시킨다. 실행결과 : MousePosition 프로퍼티마우스의좌표를전체화면에대한상대좌표로 Point 구조체형으로반환 PointToClient 메소드전체화면에대한상대좌표를클라이언트좌표로변환

MouseDown 폼이나컨트롤에서마우스버튼을누를때발생 MouseUp Click 폼이나컨트롤에서마우스버튼을누른후해제할때발생 폼이나컨트롤을클릭할때발생 DoubleClick 폼이나컨트롤을더블클릭할때발생

EventHandler 델리게이트형의처리기를사용하는이벤트 Click, DoubleClick MouseEventHandler 델리케이트형의처리기를사용하는이벤트 MouseDown, MouseUp

마우스의이벤트가비동기적으로불특정시간에발생하더라도상대적인순서는보장됨 MouseEnter 와 MouseLeave 사이에발생하는이벤트 MouseHover MouseMove Click 이벤트 MouseDown 과 MouseUp 이벤트다음에발생 DoubleClick 이벤트 Click 이벤트다음에발생

[ 예제 10.5 MouseEventApp.cs] 1) 폼설계 2) 프로퍼티 ListBox : listbox1 Label : label1 Button : button1 Form : Form1 컨트롤 : (Name) 프로퍼티 값 Form : Form1 Text MouseEventApp ListBox : listbox1 Items Button : button1 Text Close Label : label1 Text MouseEventArgsLabel 3) 멤버 private void UpdateEventLabels(string msg, int x, int y, MouseEventArgs e) { string message = string.format("{0 X:{1, Y:{2", msg, x, y); string eventmsg = DateTime.Now.ToShortTimeString(); eventmsg += " " + message; listbox1.items.insert(0, eventmsg); listbox1.topindex = 0; string mouseinfo; if (e!= null) { mouseinfo = string.format("clicks: {0, Delta: {1, " + "Buttons: {2", e.clicks, e.delta, e.button.tostring()); else { mouseinfo = string.format("clicks: {0", msg); label1.text = mouseinfo;

4) 이벤트처리기 컨트롤 : (Name) 이벤트메소드명 ListBox : listbox1 MouseDown DoubleClick listbox1_mousedown() listbox1_doubleclick() Button : button1 Click Button1_Click() private void listbox1_mousedown(object sender, MouseEventArgs e) { UpdateEventLabels("(ListBox)MouseDown", e.x, e.y, e); private void listbox1_doubleclick(object sender, EventArgs e) { Point mousepoint = PointToClient(MousePosition); UpdateEventLabels("(ListBox)DoubleClick", mousepoint.x, mousepoint.y, null); private void button1_click(object sender, EventArgs e) { Application.Exit(); 실행방법 : ListBox 상에서 MouseDown, DoubleClick 이벤트를발생시킨다. 실행결과 :