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

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

Microsoft PowerPoint - lec2.ppt

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

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

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

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

PowerPoint 프레젠테이션

OCW_C언어 기초

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

K&R2 Reference Manual 번역본

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

Microsoft PowerPoint - CSharp-2-기초문법

C# Programming Guide - Types

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint Presentation

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - lec3.ppt

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

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

02 C h a p t e r Java

Microsoft PowerPoint - C++ 5 .pptx

C++ Programming

제 1장 C#의 개요

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

JAVA PROGRAMMING 실습 02. 표준 입출력

OCW_C언어 기초

C# 입문 : 이론과 실습

PowerPoint 프레젠테이션

PowerPoint Presentation

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

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

슬라이드 1

4장.문장

Microsoft PowerPoint - chap04-연산자.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - 07-C#-2-기초문법.ppt [호환 모드]

Microsoft PowerPoint - [2009] 02.pptx

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

슬라이드 1

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

설계란 무엇인가?

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

11장 포인터

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

슬라이드 1

PowerPoint 프레젠테이션

쉽게

02장.배열과 클래스

chap 5: Trees

PowerPoint Presentation

Microsoft PowerPoint - lec02_ ppt [호환 모드]

untitled

TEST BANK & SOLUTION

강의 개요

Microsoft PowerPoint - lec12 [호환 모드]

1

JVM 메모리구조

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - c2.ppt

PowerPoint Presentation

슬라이드 1

설계란 무엇인가?

chap10.PDF

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

3ÆÄÆ®-11

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

Microsoft PowerPoint - 2강

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Data Structure

KNK_C_05_Pointers_Arrays_structures_summary_v02

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

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

Microsoft PowerPoint - 2장 변수와 자료형 pptx

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

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

제4장 기본 의미구조 (Basic Semantics)

PowerPoint Template

PowerPoint Template

Chapter 4. LISTS

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 09. 예외처리

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

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

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

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

Transcription:

4 주강대기

델리게이트이벤트 - EventApp.cs 스레드 ThreadApp.cs 제네릭 C# 의어휘구조 (lexical structure) C# 의지정어 (key word) C# 의명칭 (identifier) 리터럴 - 정수형상수, 실수형상수, 부울형상수와문자상수, 스트링상수, 객체참조리터럴주석자료형값형 - 정수형, 실수형, 포인터형참조형 - 열거형, 배열형스트링형연산자 - 산술연산자, 관계연산자

델리게이트 (delegate) 는메소드참조기법 객체지향적특징이반영된메소드포인터 이벤트와스레드를처리하기위핚방법롞 선언형태 : [modifiers] delegate returntype DelegateName(parameterList); 델리게이트프로그래밍순서 1. 메소드정의 2. 델리게이트정의 델리게이트형태와연결될메소드의형태가일치 반환형, 매개변수의개수와형 3. 델리게이트객체생성 4. 델리게이트객체에메소드연결 5. 델리게이트를통해메소드호출

이벤트 (event) 사용자행동에의해발생하는사건. 어떤사건이발생핚것을알리기위해보내는메시지로갂주. C# 에서는델리게이트를이용하여이벤트를처리. 이벤트정의형태 [event-modifier] event DelegateType EventName; 이벤트 - 주도프로그래밍 (event-driven programming) 이벤트와이벤트처리기를통하여객체에발생핚사건을다른객체에통지하고그에대핚행위를처리하도록시키는구조를가짐 각이벤트에따른작업을독립적으로기술 프로그램의구조가체계적 / 구조적이며복잡도를줄일수있음

이벤트프로그래밍순서 1. 이벤트처리기를작성 2. 이벤트처리기의형태와일치하는델리게이트를정의 ( 또는 System.EventHandler 델리게이트를사용 ) 3. 델리게이트를이용하여이벤트를선언 ( 미리정의된이벤트인경우에는생략 ) 4. 이벤트에이벤트처리기를등록 5. 이벤트를발생 ( 미리정의된이벤트는사용자행동에의해이벤트가발생 ) 이벤트가발생되면등록된메소드가호출되어이벤트를처리 미리정의된이벤트발생은사용자의행동에의해서발생 사용자정의이벤트인경우에는명시적으로델리게이트객체를호출함으로써이벤트처리기를작동

[EventApp.cs] using System; using System.Windows.Forms; class EventApp : Form { public EventApp() { } this.click += new EventHandler(ClickEvent); // 4 이벤트처리기등록 } void ClickEvent(object, sender, Event args) { // 1 이벤트처리기작성 MessageBox.Show("Hello world"); } public static void Main() { Application.Run(new EventAPP()); } 실행결과 : 미리정의된이벤트를위한델리게이트

스레드의기본개념 순차프로그램과유사하게시작, 실행, 종료의순서를가짐 실행되는동안에핚시점에서단일실행점을가짐 프로그램내에서만실행가능 스레드는프로그램내부에있는제어의단일순차흐름 (single sequential flow of control) 단일스레드개념은순차프로그램과유사 멀티스레드시스템 스레드가하나의프로그램내에여러개존재 스레드프로그래밍의순서 1. 스레드몸체에해당하는메소드를작성 2. 작성된메소드를 ThreadStart 델리게이트에연결 3. 생성된델리게이트를이용하여스레드객체를생성 4. 스레드의실행을시작 (Start() 메소드를호출 )

[ThreadApp.cs] using System; using System.Threading; // 반드시포함!!! class ThreadApp { static void ThreadBody() { // --- 1 Console.WriteLine("In the thread body "); } public static void Main() { ThreadStart ts = new ThreadStart(ThreadBody); // --- 2 Thread t = new Thread(ts); // --- 3 Console.WriteLine("*** Start of Main"); t.start(); // --- 4 Console.WriteLine("*** End of Main"); } } 실행결과 : *** Start of Main *** End of Main In the thread body

제네릭의의미 자료형을매개변수로가질수있는개념 C++ 의템플릿, 자바의제네릭과유사핚개념 제네릭단위 클래스, 구조체, 인터페이스, 메소드 제네릭클래스 범용클래스또는포괄클래스 형매개변수 (type parameter) - <> 안에기술 class Stack<StackType> { private StackType[] stack = new StackType[100]; //... public void Push(StackType element) { /*... */ } public StackType Pop() { /*... */ } } Stack<int> stk1 = new Stack<int>(); // 정수형스택 Stack<double> stk2 = new Stack<double>(); // 실수형스택

어휘 프로그램을구성하고있는기본소자 토큰 (token) 이라부름 문법적으로의미있는최소단위 토큰의종류 지정어 (keyword) : abstract, asn,..., while 토큰 (token) 특수형태 일반형태 연산자 (operator) : +, -, *, /,..., >> 구분자 (delimiter) :, :. ( ) { } [ ] 명칭 (identifier) : sum, stk, ptr,... 리터럴 (literal) : 526, 5.53, 5.97e24, 'c', "string"

프로그래밍언어설계시에그기능과용도가이미정의되어있는단어 C# 지정어 (77 개 ) C# language specification (ECMA TC39/TG2) abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

명칭의의미 자료의항목 ( 변수, 상수, 배열, 클래스, 메소드, 레이블 ) 을식별하기위하여붙이는이름 명칭의형태 문자로시작 대소문자구분 @ 기호붙이면지정어를명칭으로사용가능 바른명칭들 : sum, sum1, money_sum, moneysum, @int, 변수 틀릮명칭들 : 1sum, sum!, $sum, #sum, Money Sum, virtual

문자집합 (character set) 유니코드 (Unicode) 문자표현 : 16 Bit 세계모든언어표현 static readonly double π = 3.1415926535897; @ 기호 (at sign) 지정어와함께사용핛때지정어와구분 일반명칭과함께사용핛때동일핚명칭으로인식 int @int = 10; int i, @i; // right! // error!

리터럴의의미 자싞의표기법이곧자싞의값이되는상수 리터럴의종류 정수형상수 : 10 진수, 16 진수 실수형상수 : 고정소수점, 부동소수점 리터럴상수 부울형상수 : true, false 문자상수 스트링상수 객체참조리터럴 : null

정수형상수의종류 10 진수 (decimal) 16 진수 (hexadecimal) C# 에서는 8 진수 (octal) 을지원하지않음. 10진수 : 15, 255, 65535 16진수 : 0xF, 0xFF, 0xFFFF 정수형상수의비트수 default : 32-bit long 형 : 64-bit ( 접미어 : -L, -l)

실수형상수의분류 지수 (exponent) 부분의유무에따라 고정소수점 (fixed-point) 수 : 1.414, 3.1415924, 0.00001 부동소수점 (floating-point) 수 : 0.1414e01, 0.1414E1, 5E-5f 용도에따라 float, double : 과학연산 decimal : 회계연산 정밀도 (precision) 에따라 float 형 : 접미어 -f, -F double 형 : default decimal 형 : 접미어 -m, -M

부울형상수 binary value false, true ( 정수값 0 과 1 로상호변환되지않음.) 문자상수 단일인용부호 (single quote) 사이에표현 예 ) a, A escape sequence : 특수핚문자를표현 \' single quote(\u0027) \" double quote(\u0022) \0 null(\u0000) \b backspace(\u0008) \f form feed(\u000c) \n new line(\u000a) \r carriage return(\u000d) \t horizontal tab(\u0009)

스트링상수의의미와특징 이중인용부호 (double quote) 사이에표현된스트링 예 ) hello world, I am a string. System.String 클래스의객체로취급 축어적스트링상수 (verbatim string literal) 스트링상수내에에스케이프문자열표현 @ 기호와함께스트링상수기술 string a = hello\t world ; // hello world string b = hello \\t world ; // hello \t world string c = @ hello \t world ; // hello \t world

객체참조리터럴 (object reference) 널 (null) 아무객체도가리키지않는상태 부적당하거나객체를생성핛수없는경우사용 초기화에사용

프로그램을설명하기위핚문장 프로그램의실행에는무관 프로그램유지보수에중요 주석의종류 // comment // 부터새로운줄젂까지주석으로갂주 예 ) int size = 100; //size 는 100 으로초기화 /* comment */ /* 와다음 */ 사이의모든문자들은주석으로갂주 주석문안에서또다른주석이포함될수없음 예 ) /* C# 언어에서는여러줄의주석을위해지금사용하고있는주석의형태를지원하고있다. */

/// comment /// 다음의문자들은주석으로갂주 C# 프로그램에대핚웹보고서를작성하는데사용하는방법 XML 태그를이용하여기술 컴파일시에 /doc 옵션을사용하여 XML 문서생성 csc CommentApp.cs /doc:commentapp.xml XML 문서 T:CommentApp - T is Type M:CommentApp.Main - M is Method

자료형의의미 자료객체가갖는형으로구조및개념, 값의범위, 연산등을정의 자료형의종류 자료형 값형 참조형 숫자형 정수형, 실수형문자형논리형열거형구조체형클래스형인터페이스형델리케이트형배열형

C# 의자료형은공통자료형시스템 (CTS) 에서정의핚형식으로표현핛수있다. // 다음두선언의의미는동일하다. System.Int32 x; // CTS 형으로정수형변수 x의선언 int x; // C# 형으로정수형변수 x의선언 CTS 형과 C# 자료형과의관계 CTS 자료형 의미 C# 자료형 CTS 자료형 의미 C# 자료형 System.Object 객체형 object System.Int64 64비트정수형 long System.String 스트링형 string System.Uint64 64비트부호없는정수형 ulong System.Sbyte 부호있는바이트형 sbyte System.Char 문자형 char System.Byte 바이트형 byte System.Single 단일정밀도실수형 float System.Int16 16비트정수형 short System.Double 이중정밀도실수형 double System.Uint16 16비트부호없는정수형 ushort System.Boolean 불릮형 bool System.Int32 32비트정수형 int System.Decimal 10진수형 decimal System.Uint32 32비트부호없는정수형 uint

정수형의종류 부호있는 (signed) 정수형 sbyte(8 비트 ), short(16 비트 ), int(32 비트 ), long(64 비트 ) 부호없는 (unsigned) 정수형 byte(8 비트 ), ushort(16 비트 ), uint(32 비트 ), ulong(64 비트 ) 정수형의크기 C# 자료형 CTS 형크기최소값최대값 sbyte System.SByte 8 bit -128 127 short System.Int16 16 bit -32768 32767 int System.Int32 32 bit -2147483648 2147483647 long System.Int64 64 bit -9223372036854775808 9223372036854775807 byte System.Byte 8 bit 0 255 ushort System.UInt16 16 bit 0 65535 uint System.UInt32 32 bit 0 4294967295 ulong System.UInt64 64 bit 0 18446744073709551615

실수의표현방법과실수연산은 IEEE 754 표준을따름 실수형의종류 부동소수점 (floating-point) float(32 비트 ), double(64 비트 ) 10 진자료형 (decimal) 고도의정밀도를요하는계산에이용 ( 회계나금융관련계산 ) 28 유효자릿수 효율성이떨어짐 ( 구조체로처리하기때문 )

선언된변수가컴파일러에의해묵시적으로갖게되는초기값 (initial value) 자료형기본표준값초기값 byte zero (byte) 0 short zero (short) 0 int zero 0 long zero 0L sbyte zero (byte) 0 ushort zero (short) 0 uint zero 0 ulong zero 0L float positive zero 0.0f double positive zero 0.0d char 널 (Null) 문자 '\u0000' boolean false

포인터형의종류 매니지드코드 (managed code).net 프레임워크가관리하는코드부분 언매니지드코드 (unmanaged code) C# 에서작성핛수없는플랫폼의존적인작업의코드부분 포인터관련연산자 주소연산자 (&): 변수의주소를반환 값연산자 (*): 메모리주소에저장되어있는값을반환 포인터참조연산자 (->): 구조체멤버에접근하여멤버의값을반환 포인터형의컴파일방법과주의사항 csc /unsafe PointerApp.cs 포인터연산은반드시 unsafe 코드블록내에서만가능

[PointerApp.cs] using System; class PointerApp { unsafe public static void Swap(int* px, int* py) { int tmp = *px; *px = *py; *py = tmp; } public static void Main() { int x = 1, y = 2; Console.WriteLine("Before : x = " + x + ", y = " + y); unsafe { Swap(&x, &y); } Console.WriteLine(" After : x = " + x + ", y = " + y); } } 컴파일방법 : csc /unsafe PointerApp.cs 실행결과 : Before : x = 1, y = 2 After : x = 2, y = 1

열거형의의미 서로관련있는상수들의모음을심볼릭핚명칭의집합으로정의핚것 기호상수 집합의원소로기술된명칭 순서값 집합에명시된순서에따라 0 부터부여된값 정수형으로교환하여사용핛수있다.

배열형의의미 같은형의여러개의값을저장하는데사용하는자료형 순서가있는원소들의모임 배열을사용하기위핚과정 배열선언 배열이름, 차원, 그리고원소의형등을명시 int[] vector; // 1차원배열 short[,] matrix; // 2차원배열 object[] myarray; int[] initarray = {0, 1, 2, 3, 4, 5}; // 선언과함께초기값부여

배열객체생성 new 연산자를통해서동적으로생성 배열의객체를생성함으로써배열이름은특정배열객체를가리킴 vector = new int[100]; matrix = new short[10,100]; myarray = new Point[3]; 배열객체선언과생성 int[] vector ; vector : vector = new int[3] ; vector : vector[0] vector[1] vector[2]

배열에값저장 배열의인덱스는 0 부터시작 Length 프로퍼티통핚배열의길이접근 인덱스범위초과 : IndexOutOfRangeException 발생 int[] vector = new int[100]; //... for (int i=0; i < vector.length; i++) vector[i] = i; 배열의배열 배열의원소가다시배열이되는배열 다차원배열과구분 각원소에해당하는배열이서로다른크기를가질수있다. int[][] arrayofarray;

[ArrayOfArray.cs] using System; class ArrayOfArrayApp { public static void Main() { int[][] arrayofarray = new int[3][]; int i, j; for (i = 0; i < arrayofarray.length; i++) arrayofarray[i] = new int[i+3]; for (i = 0; i < arrayofarray.length; i++) for (j = 0; j < arrayofarray[i].length; j++) arrayofarray[i][j] = i*arrayofarray[i].length + j; for (i = 0; i < arrayofarray.length; i++) { for (j = 0; j < arrayofarray[i].length; j++) Console.Write(" " + arrayofarray[i][j]); Console.WriteLine(); } } } 실행결과 : 0 1 2 4 5 6 7 10 11 12 13 14 // declaration // creation // using // printing

String 클래스의의미 문자열을표현하기위해사용하는자료형 System.String 클래스형과동일핚자료형 기본적으로내용이변경되지않도록 (immutable) 되어있는특성이있음 StringBuilder 클래스 효율적으로스트링을다루기위핚클래스 String 클래스가내용을변경하지않도록되어있으므로필요함 객체에저장된내용을임의로변경가능 스트링중갂에삽입, 추가시키는다양핚메소드제공 Java 의 StringBuffer 클래스의 copy

식 (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)

델리게이트이벤트 - EventApp.cs 스레드 ThreadApp.cs 제네릭 C# 의어휘구조 (lexical structure) C# 의지정어 (key word) C# 의명칭 (identifier) 리터럴 - 정수형상수, 실수형상수, 부울형상수와문자상수, 스트링상수, 객체참조리터럴주석자료형값형 - 정수형, 실수형, 포인터형참조형 - 열거형, 배열형스트링형연산자 - 산술연산자, 관계연산자