SFCMVCLHFEXZ.hwp

Size: px
Start display at page:

Download "SFCMVCLHFEXZ.hwp"

Transcription

1 21-1-R02 가상기계를위한네이티브인터페이스정의언어 (Native Interface Definition Language for Virtual Machine) 박지우 * 이창환 ** 오세만 동국대학교컴퓨터공학과 * 링크젠 {jojaryong * ** yich * ** smoh * }@dongguk.edu 요 약 가상기계란하드웨어로이루어진물리적인시스템과는달리소프트웨어로제작되어논리적인 시스템구성을갖는개념적인컴퓨터이다. 가상기계에서실행되는프로그램은플랫폼독립적인장 점이있지만, 가상기계에서제공하지않는플랫폼의존적인기능은사용할수없다. 이와같은문 제를해결하기위해서가상기계환경에서는일반적으로네이티브인터페이스를제공한다. 제공된 네이티브인터페이스를통해구현된네이티브함수를가상기계환경에서사용하기위해서는네이 티브함수를위한정보가필요하다. 본논문에서는네이티브함수를위한정보를용이하게생성하기위해네이티브인터페이스정 의언어와언어로부터네이티브인터페이스사용에필요한정보를생성하는컴파일러를설계및 구현한다. 구현된컴파일러의결과인네이티브함수를위한정보는가상기계환경의내부표현으 로생성되며, 생성된정보는임베디드시스템을위한가상기계인 EVM 에적용하여검증한다. 제안 된언어와컴파일러를통해가상기계개발자가네이티브함수를위한정보를직접작성하는부담 을줄이고편의성을제공할수있다. 1. 서 론 다양한형태의모바일기기와컴퓨터의 등장으로각각의단말기에적합한서로다 른프로세서와운영체제가사용되고있다. 다양한환경은동일한작업을수행하는프 로그램을각각의사용자환경에맞도록수 정해야하는단점을지닌다. 단점을극복하 기위해서는다양한환경에서도프로그램 의수정없이실행되는기술을요구한다. 이에따른해결책으로이종의장치에탑재 되어플랫폼독립성을제공하는가상기계 가널리사용되고있다. 가상기계는소프트웨어로제작되어논리 적인시스템구성을갖는개념적컴퓨터이 다. 따라서가상기계환경에서실행되는프 로그램은플랫폼독립적인장점을갖는다. 그러나가상기계에서제공하지않는플랫 폼에의존적인기능을사용하는것이불가 능하다. 가상기계환경에서는일반적으로 플랫폼의존적인기능을사용하기위해네 이티브인터페이스를제공한다. 네이티브 언어로작성된함수를사용하는가상기계 코드의어셈블(Assemble) 과실행을위해

2 12 프로그래밍언어논문지제21권제1 호( ) 서는네이티브함수에대한추가적인정보 가필요하다. 네이티브함수에대한정보는 사전에네이티브함수테이블과함수원형 파일을생성하여가상기계환경에제공될 수있다. 그러나네이티브함수테이블과 함수원형파일을가상기계개발자가직접 작성할경우문제가발생할가능성이크다. 본논문에서는네이티브함수를위한정 보를용이하게생성하기위해네이티브인 터페이스정의언어와언어로부터네이티 브인터페이스사용에필요한정보를생성 하는컴파일러를설계및구현한다. 네이 티브인터페이스정의언어는명시적으로 함수정보를작성할수있도록설계하고 기존 EVM(Embedded Virtual Machine) 환경과의호환성을고려한다. 네이티브정 의언어컴파일러는네이티브정의언어로 작성된소스코드는입력으로하여네이티 브함수테이블과네이티브함수에대한 원형파일을생성한다. 가상기계의어셈블 러, 디스어셈블러, 실행엔진은생성된테 이블을사용하여네이티브함수와관련된 작업을수행한다. 컴파일러의결과인네이 티브함수테이블과함수원형파일은임 베디드시스템을위한가상기계인 EVM에 적용하여검증한다. 제안된언어와컴파일 러의설계및구현을통해가상기계개발 자에게네이티브함수테이블과함수원형 파일생성의편의성을제공할수있다. 본논문의 한가상기계인 2장에서는본논문에서사용 EVM에대한소개와특징 에대하여간략히언급하고, 현재사용되고 있는네이티브인터페이스와인터페이스 정의언어에대해서정리한다. 3장에서는 네이티브인터페이스정의언어의역할, 네 이티브인터페이스정의언어문법, 네이티 브인터페이스정의언어컴파일러에대해 소개한다. 4장실험및결과에서는실험데 이터를작성하여제안한방법을 EVM에 적용하고실험하여결과를확인한다. 마지 막 5장결론에서는본논문에서제시한네 이티브인터페이스정의언어를요약하고 향후연구방향에대하여언급한다. 2. 관련연구 2.1 EVM(Embedded Virtual Machine) EVM 은스택기반가상기계로서모바일 디바이스 (Mobile Device), 셋톱박스 (Set-top Box), 디지털 TV(Digital TV) 등에탑재되 어동적응용프로그램을다운로드하여실 행하는가상기계솔루션이다. EVM 은 ( 그 림 1) 과같이크게변환기, 어셈블러, 가상 기계의세부분으로나눌수있다. 변환기는 ( 그림 1) EVM 시스템구성도 C# 이나자바등의고급프로그 래밍언어로작성된프로그램을가상기계의 어셈블리포맷인 SAF(Standard Assembly Format) 로번역하고어셈블러는 SAF를 가상기계에서실행가능한형태인 EFF (Executable File Format) 파일로변환하며

3 가상기계를위한네이티브인터페이스정의언어 13 EVM은실제하드웨어에탑재되어 EFF 파일을실행하는가상기계역할을한다 [1][2]. EVM의중간언어인 SIL(Standard Intermediate Language) 은스택연산, 산 술연산, 흐름제어등총 6개의카테고리 로분류되는스택기반의명령어집합으로 언어독립성과하드웨어및플랫폼독립성 을갖고있다. SIL은다양한프로그래밍언 어를수용하기위해서바이트코드 [3],.NET IL[4] 등기존의가상기계코드들의분석을 토대로정의되었다. 또한프로그램의확장 성을위해순차적언어와객체지향언어를 모두수용할수있도록설계되었다. 각각의 명령어집합은 이진코드와 EVM에서실행될수있는 1:1 대응된다[5][6]. 고급언어로작성된코드는변환기를통 해서의사코드와연산코드로구성된 EVM의어셈블리포맷인 SAF로변환된 다. 이는어셈블러에의해 EFF 형태로변 환되고시스템의운영체제나구조에상관 없이 EVM 에의해실행된다. SAF는임베 디드시스템을위한가상기계의표준어셈 블리포맷으로설계되었으며, 클래스선언 등특정작업의수행을의미하는의사코 드와가상기계에서실행되는실제명령어 에대응되는연산코드로이루어져있다. 연산코드는스택기반의명령어집합이며 특정프로그래밍언어에종속되지않는언 어독립성과하드웨어및플랫폼독립성을 갖고있다. 따라서연산코드의연상기호 는특정하드웨어나소스언어에종속되지 않는추상적인형태를지닌다 [7][8]. EFF 는실행에필요한모든정보를가진 EVM 의실행파일포맷으로서이진형태 의바이트스트림으로구성되어있다. 다양 한프로그래밍언어를수용하기위해서자 바클래스파일[3],.NET PE 파일[4] 등기 존에널리사용되고있는가상기계실행 파일포맷들의분석을토대로정의하였다. EFF 는크게헤더, VM 코드, 메타데이터 의세부분으로구분할수있다. 헤더는해 당파일이 EFF 파일임을나타내고프로그 램의버전, 시작점등과같은정보를가지 고있다. VM 코드는프로그램에대한실 질적인명령어집합을포함하고있다. 메타 데이터는총 15 개의테이블로구분되며, 상 수값, 메소드정보와같은실행에필요한 그밖의정보들을저장하고있다 [9][10][11]. 2.2 네이티브인터페이스 JNI(Java Native Interface) JNI 는자바에서제공하는네이티브인터 페이스다. 자바로작성된프로그램은자바 가상기계(Java Virtual Machine) 상에서 수행된다. 따라서플랫폼의존적인부분을 직접개발할수없다. 이에대한해결책으 로자바에서는네이티브언어와연결할수 있는방법을제공하고있고이를네이티브 인터페이스라지칭한다. 네이티브인터페 이스를통해개발자는플랫폼의존적인기 능을구현하거나이미다른언어로작성된 라이브러리나프로그램을사용하여자바 프로그램을작성할수있다. 또한프로그램 의성능에크게영향을주는코드를네이 티브언어로작성하여속도향상을꾀할 수있다 [12][13]. 네이티브메소드를작성하고실행하는 방법은 ( 그림 2) 에서볼수있듯이컴파일 과정을통한클래스파일생성, Javah 유틸 리티를사용하여헤더파일생성, 네이티브 언어로메소드구현, 동적라이브러리파일 생성, 실행의 5 단계로나눌수있다. 우선자바프로그래머는네이티브메소

4 14 프로그래밍언어논문지제21권제1 호( ) 자는언어의각기다른네이티브인터페이 스사용방법을인지하고있어야하는어 려움이있다. SWIG는 C나 C++ 로작성된 프로그램과다른여러가지언어들을연결 시켜서사용할수있도록도와주는인터페 이스컴파일러이다[15]. SWIG를사용하면 서로다른언어의네이티브함수에대한 연결을일관된방법으로해결할수있다. ( 그림 3) 은 SWIG의구조를그림으로도식 화한것이다. ( 그림 2) JNI를통한네이티브메소드구현과정 드가포함된자바클래스를만든다. 자바 언어가아닌다른언어로메소드구현을 작성한다면, 자바클래스안에메소드를정 의할때 native native 키워드를포함해야한다. 키워드는함수가네이티브언어로 작성된함수라는것을컴파일러에게알린 다. 자바클래스에서네이티브메소드의선 언은단지메소드원형만있고구현은존 재하지않는다. 메소드는개별적인네이티 브언어소스파일에서구현된다. 작성한 자바프로그램을컴파일(Compile) 한후 javah 유틸리티를사용하여네이티브메소 드를위한헤더파일을생성할수있다. 생 성된헤더파일의정보를이용하여실제 메소드를 C/C++ 과같은네이티브언어로 구현하여컴파일러를사용하여공유라이 브러리파일을생성한다. 자바가상기계는 클래스파일과공유라이브러리파일을사 용하여프로그램을실행한다 [14] SWIG(Simplified Wrapper and Interface Generator) 언어별로지원하고있는네이티브인터 페이스는사용방법이복잡하고서로에대 한호환성을고려하지않는다. 따라서사용 ( 그림 3) SWIG의구조 SWIG 의입력인인터페이스파일은함수 원형과변수선언을포함한다. %module 지시자는 SWIG에의해생성되는모듈의 이름을정의한다. %{, %} 블록은 C 헤더 파일혹은추가적인 C 선언과같은추가적 인코드를삽입하기위한장소를규정한다. /* example.i */ %module example %{ /* Put header files here or function declarations like below */ extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time(); %} extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time(); ( 그림 4) SWIG의인터페이스파일

5 가상기계를위한네이티브인터페이스정의언어 15 SWIG 파서는입력파일을구문분석하 여코드생성기과문서생성기에전달한다. 각각의모듈은특정한스크립트언어를위 한인터페이스와생성된인터페이스를설 명하는문서를생성한다. 3. 가상기계를위한네이티브인터 페이스정의언어 가상기계환경에서실행되는프로그램은 플랫폼독립적인장점을갖는다. 그러나가 상기계에서제공하지않는플랫폼에의존 적인기능을사용하는것이불가능하다. 따 라서가상기계환경에서는일반적으로플 랫폼의존적인기능을사용하기위해네이 티브인터페이스를제공한다. ( 그림 5) 는 가상기계의네이티브인터페이스를그림으 로도식화한것이다. ( 그림 5) 가상기계의네이티브인터페이스 네이티브인터페이스를사용하기위해서 는가상기계환경에네이티브함수에대한 추가적인정보를내부표현의형태로제공 해야한다. 본논문에서는네이티브함수를위한추 가적인정보를표현하는네이티브함수테 이블과함수원형파일을자동적으로생성 하기위해네이티브함수에대한정보를 기술할수있는네이티브인터페이스정의 언어를설계하고컴파일러를구현한다. 네이티브인터페이스정의언어는네이 티브함수를위한테이블과구현하고자하 는네이티브함수에대한원형을용이하게 생성하기위한인터페이스정의언어이다. 일반적인인터페이스정의언어와비슷하 게함수집합에대한정의만을허락하며 구현부는포함할수없다. 새로운언어를 정의하기위해서는그언어에대한문법과 컴파일러가필요하다. 3.1 네이티브인터페이스정의언어 의역할 가상기계에네이티브함수로구현된기 능을추가하기위해서는함수에대한정보 를제공하는테이블과실제구현부가필요 하다. 네이티브함수에대한정보는사전에네 이티브함수테이블과함수원형파일을 생성하여가상기계환경에제공될수있다. 그러나네이티브함수테이블과함수원형 파일을가상기계개발자가직접작성할경 우문제가발생할수있다. 첫째로개발과정에서개발자가처리해 야할작업량이늘어나기때문에오류수 정이어렵다. 이진수로표현되는정보를저 장하는네이티브함수테이블과함수원형 파일을정해진규약에맞게실수없이직 접작성하는것은많은노력이필요하다. 두번째는네이티브함수테이블과함수 원형파일사이의일관성문제이다. 네이티 브함수테이블과함수원형파일의정보 는서로밀접한관계를가지고있고, 함수 이름등과같은특정정보는항상일치하 도록구성해야한다. 각각의개발자가파일 을직접수정하면서로다른파일에대한 일관성을유지하는데어려움이있다. 네이티브함수테이블은함수인덱스, 이

6 16 프로그래밍언어논문지제21권제1 호( ) 진수로표현되는디스크립터등의정보를 가지고있다. 또한, 테이블은정해진구조 에대하여유연하지않기때문에약간의 오차도허용하지않는다. 따라서네이티브 함수의수가증가할수록오류없는테이블 을직접작성하는것은쉽지않은작업이다. 네이티브인터페이스정의언어를도입 하면언급한문제점을쉽게해결할수있 다. 개발자는쉽고명확한문법으로정의된 네이티브인터페이스정의언어로네이티 브함수정보를소스파일로기술할수있 다. 네이티브함수테이블과함수원형파 일은소스파일로부터자동적으로생성된 다. 따라서개발자는이진수로구성된데이 터의작성과같은복잡한문제점을고려할 필요가없고네이티브함수테이블과함수 원형파일이일관성있는정보를유지한 형태로생성된다. 또한, 가상기계개발과 정을단순화하여프로그램에대한오류를 쉽게수정하고, 오류자체를줄일수있다. 3.2 네이티브인터페이스정의언어 문법 기존의인터페이스정의언어는가상기 계에대한고려가없기때문에가상기계에 그대로적용하기어려운측면이있고문법 이복잡하여컴파일러를구현하기힘들다. 특히, 임베디드가상기계는제한된자원을 가진장치에서사용되기때문에간결한인 터페이스정의언어가필요하다. 본논문에서는네이티브인터페이스를 위한내부정보를최대한간결한형태로 기술할수있도록반환값, 매개변수등최 소한의정보만을기술할수있는언어를 정의한다. 이와같은설계목표는부수적으 로프로그래머가새로운언어를익히는부 담을줄이는효과를얻을수있다. ( 그림 6) 은네이티브인터페이스정의언어의문법 을 EBNF(Extended Backus-Naur Form) 의형태로표기한것이다. <NIDL> ::= { <ninterface_dcl> } <ninterface_dcl> ::=.ninterface <modifiers> <ninterface_name>.bgn <ninterface_body>.end <ninterface_body> ::= <method_dcl> { <method_dcl> } <method_dcl> ::=.method <modifiers> <type_specifier> <method_name> ( [<formal_param>] ) <formal_param> ::= <type_specifier> <formal_param_name> {, <type_specifier> <formal_param_name> } <ninterface_name> ::= $identifier <method_name> ::= $identifier <formal_param_name> ::= $identifier <modifiers> ::= public private static terminal guarded interfacce concept <type_specifier> ::= byte integer long float double short char reference boolean void ( 그림 6) 네이티브인터페이스정의언어문법 (EBNF) 네이티브인터페이스정의언어는인터 페이스단위로구성되어있다. 따라서프로 그램은지정어.ninterface 를통해인터페 이스를선언하는것으로시작된다. 하나의 인터페이스안에는.method 지정어를사용 하여다수의함수를정의할수있으며, 함 수정의시반환값, 매개변수등의함수에 대한정보를명시할수있도록설계한다. 또한, 접근수정자와타입정보는가상기계 에서제공하는종류와완전히일치시킨다. 설계된문법에따라네이티브인터페이스 정의언어로작성하는소스파일은함수의 원형만을정의할수있으며, 구현부는작성 할수없다.

7 가상기계를위한네이티브인터페이스정의언어 네이티브인터페이스정의언어 컴파일러 네이티브인터페이스정의언어컴파일 러는일반적인컴파일러와같이어휘분석 기, 구문분석기, 생성기로구성되어있다. ( 그림 7) 은네이티브인터페이스정의언어 컴파일러를그림으로도식화한것이다. ( 그림 7) 네이티브인터페이스정의언어컴파일러 어휘분석기는소스프로그램을읽어들 여일련의토큰을생성한다. 구문분석기는 토큰을입력받아소스프로그램의에러를 체크하고올바른문장에대해서구문구조 를만든다. 구문구조는추상구문트리의 형태로생성되며, 생성기는트리를운행하 여네이티브함수테이블, 네이티브함수 원형파일을생성한다. 파서의출력인추상구문트리는 ( 그림 6) 의문법으로작성한프로그램의의미있 는정보만을표현하는트리로써, ( 그림 8) 과같은형태로설계한다. 생성기는네이티브인터페이스컴파일러 의출력인네이티브함수테이블, 네이티브 함수에대한원형파일을생성하며테이블 정보는 ( 표 1) 과같이네이티브함수에대 한인덱스, 이름, 디스크립터와링크로구 성된다. 네이티브함수원형파일은네이티브 함수구현시필요한네이티브함수에대한 원형을저장한다. ( 그림 9) 는네이티브함 수원형을위한헤더파일의구조를나타 낸것이다. ( 그림 8) 네이티브인터페이스정의언어의추상 구문트리 #ifndef NATIVE_FUNCTION_H #define NATIVE_FUNCTION_H extern C { #include NativeInterface.h Native Function Prototypes void ENF_<Interface_Name>_<Function_Name> (pevm pvm, int *error) } #endif // NATIVE_FUNCTION_H ( 그림 9) 네이티브함수원형을위한헤더 Descriptor 파일의구조 ( 표 1) 네이티브함수테이블 항목설명 Index Name Link Flag Length Attribute 네이티브함수의인덱스 네이티브함수의이름 필드와함수를구분 속성의길이 네이티브함수의매개변수및반환값 네이티브함수의구현부분과연결

8 18 프로그래밍언어논문지제21권제1 호( ) 헤더파일은 NativeInterface.h 파일을 포함하고있다. 함수이름은가독성을높이 고함수이름충돌을피하기위해네이티 브함수임을나타내는문자 ENF_ 와함수 를기능별로구분하는모듈이름, 해당함 수가처리하는작업을명시적으로나타내 는명칭으로구성된다. 매개변수는가상기 계의자료구조와오류정보를전달하기 위한변수로구성되어있다. 네이티브함수 구현부는이파일을내부적으로포함하여 작성된다. 4. 실험및결과 본논문에서제안한네이티브인터페이 스정의언어는컴파일러의출력인네이티 브함수테이블과함수원형파일을임베 디드시스템을위한가상기계인 EVM에 적용하여검증한다. 정의언어컴파일러는 일러인 네이티브인터페이스 ANSI-C 호환컴파 Microsoft Visual C 를사용 하여구현하였다. 파서는차후문법의수정 혹은기능추가를고려하여확장성이뛰어 난 LR(Left to right scanning / Right parse) 구문분석기의형태로구현하였으 며, LR 구문분석기구현시필요한파싱테 이블은동국 -PGS(Dongguk-Parser Generating System) 를통해생성하였다. 실험은펜티 엄4 2.0 프로세서와 1기가의메모리를갖는 IBM 호환컴퓨터와운영체제로서 Microsoft Windows XP 를사용하였다. 가상기계에정수, 실수, 문자등의입 출력기능을추가하기위해네이티브인터 페이스정의언어를사용하여표준입 출 력함수의정보를 ( 그림 10) 과같이기술하 였다..interface public StdIO.bgn.method public void PrintInt(integer i).method public void PrintFloat(float f).method public void PrintChar(char c).method public void PrintLn().method public integer ReadInt().method public float ReadFloat().method public char ReadChar().end ( 그림 10) 표준입 출력함수에대한 인터페이스정의파일 #ifndef NATIVE_FUNCTION_H #define NATIVE_FUNCTION_H extern C { #include ExeEngine/NativeInterface/NativeInterface.h enum nativefunctionindex { ienf_startindex = 0xFFFEFFFF, ienf_stdio_printint, ienf_stdio_printfloat, ienf_stdio_printchar, ienf_stdio_println, ienf_stdio_readint, ienf_stdio_readfloat, ienf_stdio_readchar }; NITable nativetable = { 7, {{ienf_stdio_printint, ENF_StdIO_PrintInt, {0x0000, 4, {0x0000, 0x5300}}, ENF_StdIO_PrintInt}, {ienf_stdio_printfloat, ENF_StdIO_PrintFloat, {0x0000, 4, {0x0000, 0x5400}}, ENF_StdIO_PrintFloat}, {ienf_stdio_printchar, ENF_StdIO_PrintChar, {0x0000, 4, {0x0000, 0x5100}}, ENF_StdIO_PrintChar}, {ienf_stdio_println, ENF_StdIO_PrintLn, {0x0000, 2, {0x0000}}, ENF_StdIO_PrintLn}, {ienf_stdio_readint, ENF_StdIO_ReadInt, {0x0000, 2, {0x5300}}, ENF_StdIO_ReadInt}, {ienf_stdio_readfloat, ENF_StdIO_ReadFloat, {0x0000, 2, {0x5400}}, ENF_StdIO_ReadFloat}, {ienf_stdio_readchar, ENF_StdIO_ReadChar, {0x0000, 2, {0x5100}}, ENF_StdIO_ReadChar} }}; } #endif // NATIVE_INTERFACE_TBL ( 그림 11) 네이티브함수테이블파일 네이티브인터페이스정의언어컴파일 러를사용하여작성한소스코드를컴파일 한결과네이티브함수테이블과네이티브 함수원형파일이생성되었다.

9 가상기계를위한네이티브인터페이스정의언어 19 #ifndef NATIVE_FUNCTION_H #define NATIVE_FUNCTION_H extern C { #include ExeEngine/NativeInterface/NativeInterface.h void ENF_StdIO_PrintInt(pEVM pvm, int *error); void ENF_StdIO_PrintFloat(pEVM pvm, int *error); void ENF_StdIO_PrintChar(pEVM pvm, int *error); void ENF_StdIO_PrintLn(pEVM pvm, int *error); void ENF_StdIO_ReadInt(pEVM pvm, int *error); void ENF_StdIO_ReadFloat(pEVM pvm, int *error); void ENF_StdIO_ReadChar(pEVM pvm, int *error); } #endif // NATIVE_FUNCTION_H ( 그림 12) 네이티브함수원형파일 네이티브함수테이블에서는열거형을 사용하여인덱스를결정하게되며, 내부적 으로복잡한필드구성을갖는테이블자 료구조를자동적으로생성한다. 네이티브인터페이스정의언어컴파일 러의출력으로생성된네이티브함수테이 블과함수원형파일을검증하기위해 EVM 에적용하고다양한프로그램을통해 네이티브함수의작동을검증하였다. 본논 문에는시스템의존적인기능인표준입 출력에관한함수를사용하는계산기프로 그램을수록하였다. 작성된프로그램은사 칙연산과나머지연산등다양한연산기 능을지원한다. 프로그램및실행결과는 ( 그림 13), ( 그림 14) 와같다. 계산기프로그램은표준입력을통해수 행할연산과피연산자를결정하고, 표준출 력으로결과를내보낸다. 5. 결론및향후연구 가상기계환경에서실행되는프로그램은 플랫폼독립적인장점이있지만, 가상기계.class public CalculatingMachine.bgn.method public void main().bgn.locals (integer choice, operand1, operand2) $$3: ldc.i 1 calli ENF_StdIO_ReadInt str.i choice ldl.i choice ldc.i 5 eq.i brt $$1 ldc.i 1 eq.i brf $$2 add.i.end.end ( 그림 13) 계산기프로그램 >>>>>> Starting program <<<<<< 1 Addition 2 Subtraction 3 Multiplication 4 Division 5 Modulation 6 Quit Select Menu 4 Operand 2048 Operand 256 Result is 8 ( 그림 14) 계산기프로그램실행결과 에서제공하지않는플랫폼의존적인기능 은사용할수없다. 이와같은문제를해결 하기위해서가상기계환경에서는일반적 으로네이티브인터페이스를제공한다. 네 이티브인터페이스를사용하면, 가상기계 에서네이티브코드로작성된프로그램을 사용할수있다. 네이티브코드로작성된 프로그램혹은함수는가상기계에네이티 브함수를위한정보를제공해야한다. 네이 티브함수에대한정보는일반적으로네이 티브함수테이블과함수원형파일을통 해제공된다.

10 20 프로그래밍언어논문지제21권제1 호( ) 본논문에서는네이티브함수테이블과 함수원형파일을자동적으로생성하기위 해네이티브인터페이스정의언어와언어 로부터네이티브인터페이스사용에필요 한정보를생성하는컴파일러를설계및 구현하였다. 네이티브인터페이스정의언 어는기존 EVM 환경과의호환성을고려 하고, 명시적으로함수정보를작성할수 있도록설계하였다. 컴파일러의결과인네 이티브함수테이블과함수원형파일은 임베디드시스템을위한가상기계인 EVM 에적용하여검증하였고, 예제프로그램을 작성하여정확한동작여부를확인하였다. 제안된언어와컴파일러의설계및구현을 통해가상기계개발자에게네이티브함수 테이블과함수원형파일생성의편의성을 제공할수있었다. 또한, 네이티브함수테이 블과함수원형파일을가상기계개발자가 직접작성할경우발생하는문제점을해결 하여개발과정을단순화하고각각의파일 에대한정보의일관성을유지할수있었다. 향후에는네이티브함수를사용하는가 상기계코드를네이티브함수에대한정보 와독립적으로어셈블할수있는방법에 대한연구가필요하다. 추가적으로, 네이티 브함수에대한의사코드를추가하여어 셈블러와네이티브정의언어컴파일러를통 합하는방안에대한연구도고려할수있다. 참고문헌 [1] 오세만, 이양선, 고광만, 임베디드시스 템을위한가상기계의설계및구현, 멀티미디어학회논문지, 제 8 권, 제 9 호, pp , [2] 손윤식, 오세만, 실행파일포맷생성 기의설계및구현, 한국정보처리학회 추계학술발표대회논문집, 제 11 권, 제 2 호, pp , [3] 전병준, 이창환, 오세만, 퍼베이시브 컴퓨팅을위한가상기계의어셈블러, 한국정보처리학회추계학술발표대회논 문집, 제13 권, 제 2 호, pp , [4] 최유리, 이창환, 오세만, 퍼베이시브 컴퓨팅을위한가상기계의디스어셈블 러, 한국정보처리학회추계학술발표대 회논문집, 제 13 권, 제 2 호, pp , [5] 박지우, 이창환, 오세만, 퍼베이시브 컴퓨팅을위한가상기계의실행엔진, 한국정보처리학회추계학술발표대회논 문집, 제13 권, 제 2 호, pp , [6] Tim Lindholm and Frank Yellin, The Java Virtual Machine Specification, 2nd Edition, Addison Wesley, [7] MSIL Instruction Set Specification, Microsoft Corporation, [8] SIL Specification, 동국대학교프로그래 밍언어연구실, [9] SAF Specification, 동국대학교프로그래 밍언어연구실, [10] 정한종, 임베디드가상기계를위한실 행파일포맷, 동국대학교석사학위논 문, [11] EFF Specification, 동국대학교프로그 래밍언어연구실, [12] Sheng Liang, The Java Native Interface: Programmer's Guide and Specification, Addison Wesley, [13] Rob Gordon, Essential JNI: Java Native Interface, Prentice Hall, [14] Mary Campione, Kathy Walrath and Alison Huml, The Java Tutorial Continued: The Rest of the JDK,

11 가상기계를위한네이티브인터페이스정의언어 21 Addison Wesley, [15] David M. Beazley, SWIG Users Manual, ents.html, 박지우 1999 년~2004 년동국대학교전자 공학과( 학사) 2006 년~ 현재동국대학교컴퓨터 공학과( 석사과정) 관심분야 : 프로그래밍언어, 컴파일러, 가상기계 이창환 1994 년~1998 년동국대학교컴퓨터 공학과( 학사) 1998 년~2000 년동국대학교컴퓨터 공학과( 석사) 2000 년~2003 년동국대학교컴퓨터공학과( 박사) 2006 년~ 현재 ( 주) 링크젠책임연구원 2007 년~ 현재동국대학교산업기술연구원겸임교수 관심분야 : 프로그래밍언어, 컴파일러, 내장형시스템 오세만 1993 년~1999 년동국대학교컴퓨터 공학과대학원학과장 2001 년~2003년한국정보과학회 프로그래밍언어연구회위원장 2004 년~2005년한국정보처리학회게임연구회위원장 1985 년~ 현재동국대학교컴퓨터공학과교수 관심분야 : 프로그래밍언어, 컴파일러, 모바일컴퓨팅

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

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

Slide 1

Slide 1 SeoulTech 2011-2 nd 프로그래밍입문 (2) Chapter 11. 분리컴파일과 네임스페이스 박종혁교수 (http://www.parkjonghyuk.net) Tel: 970-6702 Email: jhpark1@snut.ac.kr 분리컴파일 프로그램부분 분리된파일에저장 분리되어컴파일 프로그램이실행되기전에상호간에링크됨 클래스정의 사용프로그램에서분리됨

More information

슬라이드 1

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

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

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

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

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

<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

JVM 메모리구조

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

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

자바에서 Swig를이용하기위해서는필요한파일은사용하고자하는 C/C++ 소스파일과 interface파일이필요합니다. 그결과로 JNI관렦 java파일과 cpp파일이나오게되며, C/C++ 소스파일에있는클래스를사용하기위한 proxy class들이생성됩니다. 다음부터 Swig를사

자바에서 Swig를이용하기위해서는필요한파일은사용하고자하는 C/C++ 소스파일과 interface파일이필요합니다. 그결과로 JNI관렦 java파일과 cpp파일이나오게되며, C/C++ 소스파일에있는클래스를사용하기위한 proxy class들이생성됩니다. 다음부터 Swig를사 Swig programming introduction 출처 : 1. Swig documentation www.swig.org 번역및추가 : 김성근 (danguria@gmail.com) 테스트홖경 : Ubunto, java1.6, g++, vim, swig1.3.40 Swig Overview SWIG는 Simplified Wrapper and Interface

More information

17장 클래스와 메소드

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

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

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

PowerPoint Presentation

PowerPoint Presentation Lecture 01: Compiler Overview Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2019 강의정보 교과목명 : 컴파일러 개설학과 : 컴퓨터공학과 4학년 학점및시수 : 3학점 3시간 강의시간 :

More information

OCW_C언어 기초

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

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

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

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

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4> 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

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

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

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

More information

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

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

EA0015: 컴파일러

EA0015: 컴파일러 5 Context-Free Grammar 무엇을공부하나? 앞에서배운 " 정규식 " 은언어의 " 어휘 (lexeme)" 를표현하는도구로사용되었다. 언어의 " 구문 (syntax)" 은 " 정규언어 " 의범위를벗어나기때문에 " 정규식 " 으로표현이불가능하다. 본장에서배우는 " 문맥자유문법 " 은언어의 " 구문 (syntax)" 을표현할수있는도구이다. 어떤 " 문맥자유문법

More information

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 어휘구조 토큰 주석 자료형기본자료형 참조형배열, 열거형 2 어휘 (lexicon) 어휘구조와자료형 프로그램을구성하는최소기본단위토큰 (token) 이라부름문법적으로의미있는최소의단위컴파일과정의어휘분석단계에서처리 자료형 자료객체가갖는형 구조, 개념, 값, 연산자를정의 3 토큰 (token) 정의문법적으로의미있는최소의단위예,

More information

컴파일러

컴파일러 YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

슬라이드 1

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

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint Template

PowerPoint Template 16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

ThisJava ..

ThisJava .. 자바언어에정확한타입을추가한 ThisJava 소개 나현익, 류석영 프로그래밍언어연구실 KAIST 2014 년 1 월 14 일 나현익, 류석영 자바언어에정확한타입을추가한 ThisJava 소개 1/29 APLAS 2013 나현익, 류석영 자바 언어에 정확한 타입을 추가한 ThisJava 소개 2/29 실제로부딪힌문제 자바스크립트프로그램분석을위한요약도메인 나현익,

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

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

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

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

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

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

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

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

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

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

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

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

More information

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - chap12-고급기능.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 - 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

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

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

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다 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 - 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

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

제4장  기본 의미구조 (Basic Semantics) 제 4 장블록및유효범위 Reading Chap. 5 숙대창병모 1 4.1 변수선언및유효범위 숙대창병모 2 변수선언과유효범위 변수선언 Declaration before Use! 대부분의언어에서변수는사용전에먼저선언해야한다. 변수의유효범위 (scope) 선언된변수가유효한 ( 사용될수있는 ) 프로그램내의범위 / 영역 변수이름뿐아니라함수등다른이름도생각해야한다. 정적유효범위

More information

Microsoft PowerPoint - CSharp-10-예외처리

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

More information

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

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

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

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

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

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 27. 파일의분할과헤더파일의디자인 2013.09.11. 오병우 컴퓨터공학과 설계 (design) 중요 27-1 프로그램의모듈화 변경, 확장등의유지보수가용이하도록설계 C 언어에서는 module 구성중요 C++, Java 등의객체지향언어에서는 class, abstraction 중요 Design Patterns 에대해 2 학년여름방학이나겨울방학에공부해보시기바랍니다.

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

BMP 파일 처리

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

More information

슬라이드 1

슬라이드 1 3 장. 선행자료 어휘원소, 연산자와 C 시스템 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2019-1 st 프로그래밍입문 (1) 2 목차 1.1 문자와어휘원소 1.2 구문법칙 1.3 주석 1.4 키워드 (Keyword) 1.5 식별자 (Identifier) 1.6 상수 (Integer,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

쉽게 풀어쓴 C 프로그래밍

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

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

슬라이드 1

슬라이드 1 UNIT 6 배열 로봇 SW 교육원 3 기 학습목표 2 배열을사용핛수있다. 배열 3 배열 (Array) 이란? 같은타입 ( 자료형 ) 의여러변수를하나의묶음으로다루는것을배열이라고함 같은타입의많은양의데이터를다룰때효과적임 // 학생 30 명의점수를저장하기위해.. int student_score1; int student_score2; int student_score3;...

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

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

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

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

More information

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074> 객체지향프로그램밍 (Object-Oriented Programming) 1 C++ popular C 객체지향 (object oriented) C++ C : 상위계층언어특징 + 어셈블리언어특징 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

EA0015: 컴파일러

EA0015: 컴파일러 4 Flex 무엇을공부하나? " 어휘분석기 (lexical analyzer 혹은 scanner)" 는다음과같은과정을거쳐서프로그램된다. 1 토큰정의, 2 정규식으로표현, 3 NFA로변환, 4 DFA로변환, 5 프로그램작성 위과정은앞장에서배운바와같이기계적으로이루어질수있다. "Flex(Fast Lexical Analyzer)" 는컴파일러개발자를위하여위과정을자동으로처리해주는도구이다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

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

4S 1차년도 평가 발표자료 모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 누구나즐기는 C 언어콘서트 제 1 장프로그래밍소개 이번장에서학습할내용 프로그램의이해 프로그래밍언어 알고리즘 프로그램개발과정 프로그램을작성하기에앞서서중요한개념들을살펴봅니다.. 컴퓨터란? Q) 컴퓨터 (computer) 는무엇인가? A) 컴퓨터는기본적으로계산 (compute) 하는기계 Q) 컴퓨터를이용하여데이터를처리하려면반드시데이터가숫자형태이어야한다. 왜? A)

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 인터페이스 배효철 th1g@nate.com 1 목차 인터페이스의역할 인터페이스선언 인터페이스구현 인터페이스사용 타입변환과다형성 인터페이스상속 디폴트메소드와인터페이스확장 2 인터페이스의역할 인터페이스란? 개발코드와객체가서로통신하는접점 개발코드는인터페이스의메소드만알고있으면 OK 인터페이스의역할 개발코드가객체에종속되지않게 -> 객체교체할수있도록하는역할 개발코드변경없이리턴값또는실행내용이다양해질수있음

More information

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

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

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

슬라이드 1

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

More information

Microsoft PowerPoint - C++ 5 .pptx

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

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

11장 포인터

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

More information

JDBC 소개및설치 Database Laboratory

JDBC 소개및설치 Database Laboratory JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }

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

4장.문장

4장.문장 문장 1 배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33] ANSI C 언어와유사 문장의종류 [3/33] 값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

설계란 무엇인가?

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

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

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

C 언어와 프로그래밍 개요

C 언어와 프로그래밍 개요 2019-1 st 프로그래밍입문 (1) 1 장. C 언어와프로그래밍개요 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 목차 C 소개 프로그래밍의개념 C 언어의특징 C 프로그램개발 일반적인 C 프로그램개발과정 Visual Studio 를이용한 C 프로그램개발과정 2 소프트웨어의중요성

More information

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 2강 컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.

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 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

3장 어휘분석

3장 어휘분석 Video & Image VIPL Processing Lab. Compiler Construction 한국방송통신대학교컴퓨터과학과출석수업 제 2012-2 공학박사김명진 (HCI & 지능형로봇연구소 ) 숭실대학교연구교수 컴파일러교재구성 2장 : 형식언어와오토마타 3장 : 어휘분석 4장 : Contex-free 언어와푸시다운오토마타 5장 : 구문분석 2 어휘분석

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

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

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

OCW_C언어 기초

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

More information

Microsoft PowerPoint - lec3.ppt

Microsoft PowerPoint - lec3.ppt 2008 학년도 1 학기 상지대학교컴퓨터정보공학부 고광만 강의내용 연산자 (operator) 연산자종류연산자우선순위자료형변환 문장 (statement) 배정문 혼합문 제어문조건문, 반복문, 분기문 표준입출력 2 연산자 식 (expression) 의의미를결정 식은연산자 (operator) 와피연자 (operand) 로구성식의값에따라산술식, 관계식, 논리식으로구분

More information