경우생략이가능하다 첫번째절은정의절 (definition section) 이라하며최종프로그램에포함하고자하는 C 프로그램의내용을삽입하는기능을담당한다. 선언 (declaration) 이나정의 (definition) 가포함된다. 그러나최종파일안에반드시포함되어야하는헤더파일이존재

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "경우생략이가능하다 첫번째절은정의절 (definition section) 이라하며최종프로그램에포함하고자하는 C 프로그램의내용을삽입하는기능을담당한다. 선언 (declaration) 이나정의 (definition) 가포함된다. 그러나최종파일안에반드시포함되어야하는헤더파일이존재"

Transcription

1 LEX 와 YACC 작성자 : americanojh 1. LEX 가. LEx 소개컴파일러구성을도와주는대표적인소프트웨어도구로써일정한구조에따라입력된내용을변환하는프로그램을만드는데유용하게쓰인다. 입력파일에서일정한패턴을찾아내는간단한텍스트검색프로그램에서소스프로그램을최적화된목적코드 (object code) 로변형하는 C 컴파일러까지다양한프로그램을만드는데도움을준다. 원래 UNIX의산실인 AT&T Bell Laboratories에서 UNIX 시스템의유틸리티로서개발되었다. Lex의개발자는 Mark Lesk 이다. 이후이도구들의유용성이확장되면서 Sun의 Solaris나 Linux와같은 UNIX 계열의운영체제는물론이고, Microsoft Windows 등의상이한운영체제에서도이식되어서널리사용되고있다. 일정한구조를가진입력을받아들이는프로그램에서지속적으로반복하는작업은입력내용을의미있는단위 (unit) 로분해하여그들사이의관련성을파악하는일이다. 입력을토큰이라고하는단위로나누는작업을대개어휘분석 (lexical analysis) 혹은줄여서렉싱 (lexing) 이라고한다. 렉스는몇개의토큰을받아들여주어진토큰을식별할수있는 C 루틴 (routine) 을생성한다. 이루틴을어휘분석기 (lexical analyzer) 또는렉서 (lexer) 나스캐너 (scanner) 라고한다. 한편사용자가렉스에기술하는내용을일컬어렉스명세서 (lex specification) 라한다. 렉스가사용하는토큰설명 (token descriptions) 을보통정규표현식 (regular expressions) 이라하며, grep이나 egrep 같은유닉스명령어에서사용하는패턴을크게확장한버전이다. 렉스는찾고자하는표현식의개수에관계없이렉서가입력텍스트를최대한빠르게검색할수있는형태로이러한정규표현식을바꾸어준다. 나. LEX 동작방법 lex를연동하면구문분석기를만드는 C 소스코드를생성할수있다. lex는설정파일을사용하여각각설정파일을받아들여적절한 C 코드를생성한다. lex 도구가생성하는 C 코드는특정한어휘를식별한후토큰을반환한다. LEX 는 3 개의절로나뉜다. 각절의끝에는 %% 기호를넣는다. 이세부분들중꼭 있어야하는필수부분은두번째부분이고, 첫번째와세번째부분은필요없는

2 경우생략이가능하다 첫번째절은정의절 (definition section) 이라하며최종프로그램에포함하고자하는 C 프로그램의내용을삽입하는기능을담당한다. 선언 (declaration) 이나정의 (definition) 가포함된다. 그러나최종파일안에반드시포함되어야하는헤더파일이존재하는경우에는이절이단순한삽입이상의중요한기능을담당한다. 이절에존재하는 C 코드는 "%{" 과 "%" 라는특별한분리자 (delimiter) 로둘러싸여있다. 렉스는이분리자사이에있는내용을 C파일에그대로복사한다. 두번째절은규칙절 (rules section) 이다. 본론에해당하는것으로서각프로그램이수행하는일에대한규칙 ( 보통번역규칙 (translation rule) 이라고부른다 ) 을기술하고각각의규칙은두부분, 즉공백으로구분된패턴 (pattern) 과동작 (action) 으로이루어진다. 렉스가생성하는렉서는패턴을인식했을때주어진동작을수행한다. 이러한패턴은유닉스에서흔히사용되는정규표현식 (regular expressions) 과비슷하지만, grep, sed, ed 등에서사용하는표현식보다는좀더확장된내용을담고있다. 패턴이중복될수있으므로렉스에는모호함을제거하는규칙이있다, 렉서가제대로동작하도록하는두가지규칙은다음과같다. 1. 렉스패턴은주어진문자나문자열에오직한번만매치한다. 2. 렉스는현재주어진입력에서패턴에매치하는문자또는문자열중가장길게매치할수있는것 (longest possible match) 에대한동작을수행한다. 세번째절은사용자서브루틴절 (user subroutine section) 이며, 보조프로시저 (auxiliary procedure) 또는지원프로그램 (supporting routines) 을담고있다. 일반적인 C 코드가작성될수있는곳이다. 렉스는생성한 C코드뒤에이절에있는내용을복사한다.

3 위의그림은렉스가생성한 C 코드인 lex.yy.c 의내부코드이다. 그리고이장면은 마지막에사용자서브루틴절이추가된화면이다. 2. 코드설명 가. 정의절 (definition section) %{ #include<stdio.h> int count_word = 0 int count_number = 0 int count_equal = 0 int count_lbracket = 0 int count_rbracket = 0 int count_mark = 0 % %% 정의절에는최종프로그램에포함하고자하는 C 프로그램의내용을삽입하는기능을담당한다. 삽입되는내용은최종파일에서출력을위해필요한헤더파일과분석된코드의카운트를담당하는변수가포함된다. 이변수들은그다음의규칙절에서사용되며해당되는패턴이나올경우값을 1씩증가시킨다. 최종적으로각토큰의개수를가지게된다.

4 나. 규칙절 (rules section) ([a-za-z])+ {count_word++ ([0-9])+ {count_number++ "=" {count_equal++ "{" {count_lbracket++ "" {count_rbracket++ \n {count_mark++. {count_mark++ %% 규칙절에서는입력된문자에서매칭되는문자열의패턴과그패턴이나타났을때 해당하는동작으로이루어졌다. 패턴 ([a-za-z])+ 동작 a부터 z까지혹은 A부터 Z까지의문자로만구성되는문자열이 나타났을때 count_word의변수값을 1증가시킨다. ([0-9])+ 0부터 9까지의숫자로구성되는수, 즉 10진수가나타났을때 count_number의변수값을 1증가시킨다. "=" = 의기호가나타나면 count_equal의변수값을 1 증가시킨다. "{" { 의기호가나타나면 count_lbracket의변수값을 1증가시킨다. "" 의기호가나타나면 count_rbracket의변수값을 1증가시킨다. \n 한줄개행이나타나면 count_mark의변수값을 1증가시킨다.. 위의패턴에해당되지않는코드가나타나면 count_mark의변수값을 1증가시킨다. 다. 사용자서브루틴절 (user subroutine section) int main() { yylex() int yywrap() { printf("word = %d\n",count_word) printf("'=' = %d\n",count_equal) printf("'{' = %d\n",countlbracket) printf("'' = %d\n",countrbracket) printf("mark = %d\n",count_mark) printf("number = %d\n", count_number) return 0 return 1 사용자서브루틴절에는각토큰들의개수를출력하는내용의 main 함수와 Lex

5 Functions 중하나인 yywrap() 가정의되어있다. main 함수를보면먼저 yylex() 함수가있다. 이함수는 yywrap() 와마찬가지로 Lex Functions 중하나로서실행되면입력파일의분석을시작한다. 그다음부터는정의절에서선언되었던변수들의값들을출력하는함수들이다. 이출력을위해서정의절에서각각의변수들과헤더파일이포함되었다. 마지막으로 yywrap 함수는파일의 EOF가나타나면불러지는함수이다. 이함수가 1을리턴하면파싱의종료를지시한다.

6 3. 출력화면 입력파일 : hw1.c word 3 개 aaa bbb ccc number 3 개 { 3 개 { { { 3 개 '=' 2 개 = = mark 20 개 ), \n(5 개 ), \t(9 개 ), EOF(1 개 ) 실행화면 : hw1.l

7 2. YACC 가. YACC 소개본래 YACC는유닉스환경에서실행되는구문분석테이블생성기를말하는것이었으나오늘날에는다른환경에서사용되는제품도개발되어있다. 구문분석테이블생성을위하여사용되는시스템소프트웨어로입력된프로그램명령어의구문을분석하여구문분석트리를자동적으로생성하는작업을수행한다. YACC는입력값에대해원하는것을찾아내는일과, 그찾아낸것들간의관계를따지는프로그램작성을도와준다. 입력값을의미단위 (token) 로나누는것을어휘분석 (Lexical Analysis) 이라고하며, 그런일을하는것을어휘분석기 (Lexical Analyzer 또는 lexer scanner) 라고부른다. 입력값이의미단위로나뉘게되면프로그램은그것들간의관계를따지게된다. 예를들어 C 컴파일러는토큰들이수식인지, 문장인지, 선언문인지, 블록인지, 프로시저인지를판별해낸다. 이런작업이구문분석이고그관계들을정해놓은규칙을문법 (Grammar) 이라고한다. YACC는구문분석기 (Parser) 를생성해주는도구이다. 구문분석기는어휘분석기로부터받은의미단위를문법에맞는지검사하는일을한다. 사용자가문법을정의하고그문법에맞을경우취할행동을 C 언어로기술해주면 YACC가알아서구문분석기를생성해준다. 구문분석기는의미단위를가져와서구문분석을하는프로그램이므로어휘분석을하는프로그램은따로구현이되어야한다. [ 출처 ] YACC [yet another compiler compiler ] 네이버백과사전 나. 야크문법 Yacc 의 Grammar 화일은 Lex Specification 과비슷하다. Yacc Grammar %{ C 선언부분 (C Definition Section) % Yacc 선언부분 (Yacc Definition Section) %% 문법부분 (Grammar Rules Section) %% 사용자정의함수 (User Subroutines)

8 1) C 선언부분 (C Definition Section) 이곳에쓰여진것들은그대로 y.tab.c에복사가된다. Lex에서와마찬가지로다른부분에서사용할변수가있다면이곳에서미리정의를하고헤더화일을 include해야한다. 2) Yacc 선언부분 (Yacc Definition Section) 문법부분에서사용하는토큰, 결합법칙, 변수나토큰들의타입등을선언한다. 3) 문법부분 (Grammar Rules Section) 인식할문법과그에따라취할 C 언어로된행동정의한다. -> 표시를할수없으므 로 : 으로대신하며, 문법의마지막은 으로끝나야한다. 4) 사용자정의함수 (User Subroutines) 사용자가만들어서사용해야할함수가있으면이곳에정의한다. 다. 동작방식 Yacc는토큰을계속읽어서사용자가정의한문법과맞춰가며구문분석을하게된다. 읽어들인토큰이문법을완전히만족하지않고다른토큰이더필요하다면그토큰을스택에쌓아두는데이것을스택에 shift 한다고해서 shift라고한다. 계속토큰을읽어서스택에있는토큰들과함께문법과비교를했더니문법에만족 을하면스택에있던토큰을꺼내고 (pop) 문법의왼쪽 (LHS) 심볼로대치한다. 이것 을 reduce 라고한다. Yacc가구문분석을하는데도움을주는툴이지만 Yacc도구문분석을할수없는문법이있다. 하나의토큰이여러개의문법에적용되어하나의파스트리가생성되지않고여러개의트리가생성되는모호한문법의경우나, Yacc는다음토큰하나를가져와서살펴보는데, 두개이상의토큰을가져와야분석을할수있는문법등을구문분석할수없다.

9 3. 코드분석 가. 함수선언 1) 일반형식 [type] 함수명 ([ 전달인자선언 ]) 2) 관련 YACC 문법 [type] 함수명 ([ 전달인자선언 ]) direct_declarator : IDENTIFIER direct_declarator '(' parameter_type_list ')' direct_declarator '(' identifier_list ')' direct_declarator '(' ')' declaration [type] 함수명 declaration_specifiers init_declarator_list '' [type] declaration_specifiers : storage_class_specifier storage_class_specifier declaration_specifiers type_specifier type_specifier declaration_specifiers type_qualifier type_qualifier declaration_specifiers 함수명 init_declarator_list -> init_declarator -> declarator declarator : pointer direct_declarator direct_declarator 3) 관련카운팅코드

10 direct_declarator direct_declarator '(' parameter_type_list ')' { def_func++ if(check==1) ptr_iden-- else var_iden-- check = 0 direct_declarator '(' identifier_list ')' { def_func++ if(check==1) ptr_iden-- else var_iden-- check = 0 direct_declarator '(' ')' { def_func++ if(check==1) ptr_iden-- else var_iden-- check = 0 4) 카운팅코드분석관련야크문법에함수선언카운팅변수를 1씩증가시킵니다. 단, 이 YACC 문법에들어오기전에포인터변수선언카운팅과일반변수선언카운팅과중복되므로그들의카운팅을 1씩빼주어야합니다. 나. 함수정의 1) 일반형식 [type] 함수명 ([ 전달인자선언 ]) { // 몸체시작내부변수선언 수행문장들 return 반환데이터타입 // 함수몸체종료 2) 관련 YACC 문법 [type] 함수명 { 내용 function_definition : declaration_specifiers declarator declaration_list compound_statement declaration_specifiers declarator compound_statement declarator declaration_list compound_statement declarator compound_statement

11 [type] declaration_specifiers : storage_class_specifier storage_class_specifier declaration_specifiers type_specifier type_specifier declaration_specifiers type_qualifier type_qualifier declaration_specifiers { 내용 compound_statement : '{' '' '{' statement_list '' '{' declaration_list '' '{' declaration_list statement_list '' 3) 관련카운팅코드 function_definition : declaration_specifiers declarator declaration_list compound_statement (dec_func++ def_func--) declaration_specifiers declarator compound_statement (dec_func++ def_func--) declarator declaration_list compound_statement (dec_func++ def_func--) declarator compound_statement (dec_func++ def_func--) 4) 카운팅코드분석관련야크문법에함수정의카운팅변수를 1씩증가시킵니다. 단, 이 YACC 문법은함수선언 + { 내용 으로구성되므로함수선언카운팅도같이실행됩니다. 따라서함수정의카운팅은 1 더해주되함수선언카운팅은 1씩빼줍니다. 다. 함수호출 1) 일반형식 함수명 ([ 전달인자 ]) 2) 관련 YACC 문법함수명 ([ 전달인자 ]) postfix_expression postfix_expression '(' ')' postfix_expression '(' argument_expression_list ')'

12 함수명 postfix_expression -> primary_expression primary_expression : IDENTIFIER '(' expression ')' ([ 전달인자 ]) argument_expression_list : assignment_expression argument_expression_list ',' assignment_expression 3) 관련카운팅코드 postfix_expression postfix_expression '(' ')' {cal_func++ postfix_expression '(' argument_expression_list ')' {cal_func++ 4) 카운팅코드분석 관련야크문법에함수정의카운팅변수를 1 씩증가시킵니다. 중복되는것은없으므로따로카운팅변수를빼주지않아도괜찮습니다. 라. 일반변수선언문 1) 일반형식 [type] 변수명 2) 관련 YACC 문법 declaration [type] declaration_specifiers init_declarator_list '' 변수명 [type] declaration_specifiers : storage_class_specifier storage_class_specifier declaration_specifiers type_specifier type_specifier declaration_specifiers type_qualifier type_qualifier declaration_specifiers

13 변수명 init_declarator_list -> init_declarator -> declarator init_declarator_list -> init_declarator -> declarator '=' initializer declarator -> direct_declarator direct_declarator : IDENTIFIER initializer -> assignment_expression assignment_expression : conditional_expression unary_expression assignment_operator assignment_expression 3) 관련카운팅코드 declarator direct_declarator : pointer direct_declarator {check = 1 direct_declarator : IDENTIFIER { if(check==1) else check = 0 ptr_iden++ var_iden++ 4) 카운팅코드분석변수명은오로지 IDENTIFIER만가능합니다. 하지만이 direct_declarator를통한 IDENTIFIER의접근은일반변수뿐만아니라포인터변수명, 그리고함수명에서도접근이가능합니다. 함수명은좀더복잡한문법이되므로함수카운팅하는곳에서따로카운팅문을만들어주고여기에서는 if문을사용하여포인터변수선언이아닐경우에만일반변수선언카운터를증가시켜주었습니다. 마. 포인터변수선언 1) 일반형식 [type] 포인터변수명 2) 관련 YACC 문법 declaration [type] declaration_specifiers init_declarator_list '' 포인터변수명

14 [type] declaration_specifiers : storage_class_specifier storage_class_specifier declaration_specifiers type_specifier type_specifier declaration_specifiers type_qualifier type_qualifier declaration_specifiers 포인터 init_declarator_list -> init_declarator -> declarator declarator : pointer direct_declarator 변수명 pointer : '*' '*' type_qualifier_list '*' pointer '*' type_qualifier_list pointer 포인터 변수명 init_declarator_list -> init_declarator -> declarator init_declarator_list -> init_declarator -> declarator '=' initializer declarator -> direct_declarator direct_declarator : IDENTIFIER initializer -> assignment_expression assignment_expression : conditional_expression unary_expression assignment_operator assignment_expression 3) 관련카운팅코드 declarator : pointer direct_declarator {check = 1 direct_declarator direct_declarator : IDENTIFIER { if(check==1) ptr_iden++ else var_iden++ check = 0 4) 카운팅코드분석 일반변수선언문과비슷합니다. 단지포인터변수의접근은꼭 pointer direct_declarator 를통 해접근하므로이때포인터변수임을체크를해주어서카운팅시일반변수와구분합니다.

15 바. 배열변수선언 1) 일반형식 [type] 변수명 [ 상수 ] 2) 관련 YACC 문법 [type] 변수명 [ 상수 ] declaration declaration_specifiers init_declarator_list '' [type] declaration_specifiers : storage_class_specifier storage_class_specifier declaration_specifiers type_specifier type_specifier declaration_specifiers type_qualifier type_qualifier declaration_specifiers 변수명 [ 상수 ] init_declarator_list -> init_declarator -> declarator -> direct_declarator direct_declarator : IDENTIFIER direct_declarator '[' constant_expression ']' direct_declarator '[' ']' direct_declarator : IDENTIFIER 변수명 [ 상수 ] constant_expression -> conditional_expression -> logical_or_expression -> logical_and_expression -> inclusive_or_expression -> exclusive_or_expression -> and_expression -> equality_expression -> relational_expression -> shift_expression -> additive_expression -> multiplicative_expression -> cast_expression -> unary_expression -> postfix_expression -> primary_expression primary_expression CONSTANT 3) 관련카운팅코드

16 direct_declarator direct_declarator '[' constant_expression ']' { arr_iden++ if(check==1) ptr_iden-- else var_iden-- check = 0 direct_declarator '[' ']' { arr_iden++ if(check==1) ptr_iden-- else var_iden-- check = 0 4) 카운팅코드분석배열의주포인트는 [ ] 기호입니다. 이기호가있을때만배열이선언되므로그기호를통해문법이정의되는곳에카운팅을해주었습니다. 하지만결국배열변수명은 IDENTIFER 이므로일반변수또는포인터변수와중복됩니다. 따라서일반변수또는포인터변수의값을 1씩빼주면서카운팅을해주었습니다. 사. 수식 1) 일반형식 식 2) 관련 YACC 문법 expression : assignment_expression expression ',' assignment_expression 식 3) 관련카운팅코드 expression : assignment_expression {exp_state++ expression ',' assignment_expression {exp_state++ 4) 카운팅코드분석 YACC의모든식은 expression으로표현됩니다. expression을분석하면연산자를이용한수식들을표현할수있는구문이나옵니다. expression 가식을표현하는가장제한적이면서최상위적인구문이므로이곳에카운팅을해주었습니다.

17 아. 리턴문 1) 일반형식 return 반환데이터타입 2) 관련 YACC 문법 jump_statement RETURN '' RETURN expression '' return 반환데이터타입 반환데이터타입 expression : assignment_expression expression ',' assignment_expression 3) 관련카운팅코드 jump_statement RETURN '' { ret_stat++ RETURN expression '' { ret_stat++ 4) 카운팅코드분석리턴문은오로지 return 토큰을이용해야만합니다. return 토큰뒤에는아무것도없을수도있고수식이존재할수있습니다. 따라서만약 return 뒤에수식이존재한다면리턴문카운터뿐만아니라수식카운터도같이증가하게됩니다. 자. 선택문 1) 일반형식 switch ( 조건수식 ) { case 상수 1 : 문장들 break case 상수 2 : 문장들 break : default : 문장들 2) 관련 YACC 문법 switch ( 조건수식 ) { 내용 selection_statement SWITCH '(' expression ')' statement

18 ( 조건수식 ) expression : assignment_expression expression ',' assignment_expression { 내용 statement -> labeled_statement labeled_statement CASE constant_expression ':' statement DEFAULT ':' statement 3) 관련카운팅코드 selection_statement SWITCH '(' expression ')' statement {swi_stat++ 4) 카운팅코드분석선택문은 switch라는토큰이있어야만실행되는구문이므로그구문이있는곳에카운팅을해주었습니다. 스위치문은필수적으로조건수식이있어야하므로무조건수식카운터또한증가하게됩니다. 차. 조건문 1) 일반형식 if( 조건문장 ) { 처리문장 다음문장 // 조건이참일때수행 // if 문과별개 if( 조건문장 ) { 처리문장 1 else { 처리문장 2 // 조건이참일때수행 // 조건이거짓일때수행 논리수식? 수식 : 조건수식 2) 관련 YACC 문법 if ( 조건문장 ) { 내용 : IF '(' expression ')' statement if ( 조건문장 ) { 내용 else { 내용 selection_statement IF '(' expression ')' statement ELSE statement

19 논리수식? 수식 : 조건수식 conditional_expression logical_or_expression '?' expression ':' conditional_expression ( 조건문장 ) 수식 expression : assignment_expression expression ',' assignment_expression statement : labeled_statement compound_statement expression_statement selection_statement iteration_statement jump_statement { 내용 논리수식 logical_or_expression : logical_and_expression logical_or_expression OR_OP logical_and_expression 조건수식 conditional_expression : logical_or_expression logical_or_expression '?' expression ':' conditional_expression 3) 관련카운팅코드 selection_statement : IF '(' expression ')' statement {if_state++ IF '(' expression ')' statement ELSE statement {if_state++ conditional_expression logical_or_expression '?' expression ':' conditional_expression {if_state++ 4) 카운팅코드분석조건문은크게 2가지로나누어집니다. 하나는 IF와 ELSE 라는토큰으로이루어진구문과다른하나는삼항연산자를이용한구문입니다. ELSE의사용여부에따라앞의구문또한작게 2가지로나누어집니다. 따라서그모든구문에카운팅을해주어야합니다. 여기서주의접은문법충돌이발생한다는점입니다. IF '(' expression ')' statement ELSE statement 문장안에는이미 IF '(' expression ')' statement 문장이포함되었기때문입니다. 그문장이모호하기때문에분석실행시문법충돌이발생합니다. 카. 선택문

20 1) 일반형식 for ( 초기식 조건식 증감식 ) { 반복할문장 While( 조건식 ) { 반복한문장 do { 반복한문장 while( 조건식 ) 2) 관련 YACC 문법 for ( 초기식 조건식 증감식 ) { 내용 iteration_statement FOR '(' expression_statement expression_statement ')' statement FOR '(' expression_statement expression_statement expression ')' statement while ( 조건식 ) { 내용 iteration_statement : WHILE '(' expression ')' statement do { 내용 while ( 조건식 ) iteration_statement DO statement WHILE '(' expression ')' '' expression_statement : '' expression '' 초기식 조건식 (for 문 ) 증감식 조건식 (while 문 ) expression : assignment_expression expression ',' assignment_expression statement : labeled_statement compound_statement expression_statement selection_statement iteration_statement jump_statement { 내용 3) 관련카운팅코드

21 iteration_statement : WHILE '(' expression ')' statement { for_stat++ DO statement WHILE '(' expression ')' '' { for_stat++ FOR '(' expression_statement expression_statement ')' statement { for_stat++ FOR '(' expression_statement expression_statement expression ')' statement { for_stat++ 4) 카운팅코드분석반복문은 for문 while문 do ~ while 문으로나누어집니다. 따라서 for, while, do 세토큰으로이루어진문법에카운팅을해주었습니다. for문의경우 ( 초기식 조건식 증감식 ) 인데이 3개의식은모두생략가능한테증감식뒤에는 기호가안붙으므로 for문은 2개의문법이정의되었습니다.

22 4. 전체코드 &{ #include<stdio.h> int def_func = 0 int dec_func = 0 int cal_func = 0 int ptr_iden = 0 int arr_iden = 0 int var_iden = 0 int exp_stat = 0 int swi_stat = 0 int if_state = 0 int for_stat = 0 int ret_stat = 0 int check++ & %token IDENTIFIER CONSTANT STRING_LITERAL SIZEOF %token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN %token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN %token XOR_ASSIGN OR_ASSIGN TYPE_NAME %token TYPEDEF EXTERN STATIC AUTO REGISTER %token CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE CONST VOLATILE VOID %token STRUCT UNION ENUM ELLIPSIS %token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN %start translation_unit %% primary_expression : IDENTIFIER CONSTANT STRING_LITERAL '(' expression ')' postfix_expression : primary_expression postfix_expression '[' expression ']' postfix_expression '(' ')' {cal_func++ postfix_expression '(' argument_expression_list ')' {cal_func++

23 postfix_expression '.' IDENTIFIER postfix_expression PTR_OP IDENTIFIER postfix_expression INC_OP postfix_expression DEC_OP argument_expression_list : assignment_expression argument_expression_list ',' assignment_expression unary_expression : postfix_expression INC_OP unary_expression DEC_OP unary_expression unary_operator cast_expression SIZEOF unary_expression SIZEOF '(' type_name ')' unary_operator : '&' '*' '+' '-' '~' '!' cast_expression : unary_expression '(' type_name ')' cast_expression multiplicative_expression : cast_expression multiplicative_expression '*' cast_expression multiplicative_expression '/' cast_expression multiplicative_expression '%' cast_expression additive_expression : multiplicative_expression additive_expression '+' multiplicative_expression additive_expression '-' multiplicative_expression

24 shift_expression : additive_expression shift_expression LEFT_OP additive_expression shift_expression RIGHT_OP additive_expression relational_expression : shift_expression relational_expression '<' shift_expression relational_expression '>' shift_expression relational_expression LE_OP shift_expression relational_expression GE_OP shift_expression equality_expression : relational_expression equality_expression EQ_OP relational_expression equality_expression NE_OP relational_expression and_expression : equality_expression and_expression '&' equality_expression exclusive_or_expression : and_expression exclusive_or_expression '^' and_expression inclusive_or_expression : exclusive_or_expression inclusive_or_expression ' ' exclusive_or_expression logical_and_expression : inclusive_or_expression logical_and_expression AND_OP inclusive_or_expression logical_or_expression : logical_and_expression logical_or_expression OR_OP logical_and_expression

25 conditional_expression : logical_or_expression logical_or_expression '?' expression ':' conditional_expression {if_state++ assignment_expression : conditional_expression unary_expression assignment_operator assignment_expression assignment_operator : '=' MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN expression : assignment_expression {exp_state++ expression ',' assignment_expression{exp_state++ constant_expression : conditional_expression declaration : declaration_specifiers '' declaration_specifiers init_declarator_list '' declaration_specifiers : storage_class_specifier storage_class_specifier declaration_specifiers type_specifier type_specifier declaration_specifiers

26 type_qualifier type_qualifier declaration_specifiers init_declarator_list : init_declarator init_declarator_list ',' init_declarator init_declarator : declarator declarator '=' initializer storage_class_specifier : TYPEDEF EXTERN STATIC AUTO REGISTER type_specifier : VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED struct_or_union_specifier enum_specifier TYPE_NAME struct_or_union_specifier : struct_or_union IDENTIFIER '{' struct_declaration_list '' struct_or_union '{' struct_declaration_list '' struct_or_union IDENTIFIER struct_or_union : STRUCT

27 UNION struct_declaration_list : struct_declaration struct_declaration_list struct_declaration struct_declaration : specifier_qualifier_list struct_declarator_list '' specifier_qualifier_list : type_specifier specifier_qualifier_list type_specifier type_qualifier specifier_qualifier_list type_qualifier struct_declarator_list : struct_declarator struct_declarator_list ',' struct_declarator struct_declarator : declarator ':' constant_expression declarator ':' constant_expression enum_specifier : ENUM '{' enumerator_list '' ENUM IDENTIFIER '{' enumerator_list '' ENUM IDENTIFIER enumerator_list : enumerator enumerator_list ',' enumerator enumerator : IDENTIFIER IDENTIFIER '=' constant_expression

28 type_qualifier : CONST VOLATILE declarator : pointer direct_declarator {check = 1 direct_declarator direct_declarator : IDENTIFIER { if(check==1) ptr_iden++ else var_iden++ check = 0 '(' declarator ')' direct_declarator '[' constant_expression ']' { arr_iden++ if(check==1) ptr_iden-- else var_iden-- check = 0 direct_declarator '[' ']' { arr_iden++ if(check==1) ptr_iden-- else var_iden-- check = 0 direct_declarator '(' parameter_type_list ')' { def_func++ if(check==1)

29 ptr_iden-- else var_iden-- check = 0 direct_declarator '(' identifier_list ')' { def_func++ if(check==1) ptr_iden-- else var_iden-- check = 0 direct_declarator '(' ')' { def_func++ if(check==1) ptr_iden-- else var_iden-- check = 0 ZZ pointer : '*' '*' type_qualifier_list '*' pointer '*' type_qualifier_list pointer type_qualifier_list : type_qualifier type_qualifier_list type_qualifier parameter_type_list : parameter_list parameter_list ',' ELLIPSIS parameter_list : parameter_declaration

30 parameter_list ',' parameter_declaration parameter_declaration : declaration_specifiers declarator declaration_specifiers abstract_declarator declaration_specifiers identifier_list : IDENTIFIER identifier_list ',' IDENTIFIER type_name : specifier_qualifier_list specifier_qualifier_list abstract_declarator abstract_declarator : pointer direct_abstract_declarator pointer direct_abstract_declarator direct_abstract_declarator : '(' abstract_declarator ')' '[' ']' '[' constant_expression ']' direct_abstract_declarator '[' ']' direct_abstract_declarator '[' constant_expression ']' '(' ')' '(' parameter_type_list ')' direct_abstract_declarator '(' ')' direct_abstract_declarator '(' parameter_type_list ')' initializer : assignment_expression '{' initializer_list '' '{' initializer_list ',' '' initializer_list : initializer

31 initializer_list ',' initializer statement : labeled_statement compound_statement expression_statement selection_statement iteration_statement jump_statement labeled_statement : IDENTIFIER ':' statement CASE constant_expression ':' statement DEFAULT ':' statement compound_statement : '{' '' '{' statement_list '' '{' declaration_list '' '{' declaration_list statement_list '' declaration_list : declaration declaration_list declaration statement_list : statement statement_list statement expression_statement : '' expression '' selection_statement : IF '(' expression ')' statement {if_state++ IF '(' expression ')' statement ELSE statement {if_state++ SWITCH '(' expression ')' statement {swi_stat++

32 iteration_statement : WHILE '(' expression ')' statement { for_stat++ DO statement WHILE '(' expression ')' '' { for_stat++ FOR '(' expression_statement expression_statement ')' statement { for_stat++ FOR '(' expression_statement expression_statement expression ')' statement { for_stat++ jump_statement : GOTO IDENTIFIER '' CONTINUE '' BREAK '' RETURN '' { ret_stat++ RETURN expression '' { ret_stat++ translation_unit : external_declaration translation_unit external_declaration external_declaration : function_definition declaration function_definition : declaration_specifiers declarator declaration_list compound_statement (dec_func++ def_func-- declaration_specifiers declarator compound_statement (dec_func++ def_func-- declarator declaration_list compound_statement (dec_func++ def_func-- declarator compound_statement (dec_func++ def_func-- %% #include <stdio.h> int main(){ yyparse() printf(" 함수선언 = %d\n",def_func) printf(" 함수정의 = %d\n",dec_func) printf(" 함수호출 = %d\n",cal_func) printf(" 일반변수선언문 = %d\n",ptr_iden)

33 printf(" 배열변수선언문 = %d\n",arr_iden) printf(" 포인터변수선언문 = %d\n", var_iden) printf(" 선택문 = %d\n", swi_stat) printf(" 조건문 = %d\n", if_state) printf(" 반복문 = %d\n", for_stat) printf(" 리턴문 = %d\n", ret_stat) printf(" 수식 = %d\n", exp_stat) return 0 yyerror(s) char *s { fflush(stdout)

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

컴파일러

컴파일러 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

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

3장 어휘분석

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

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

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

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

More information

Infinity(∞) Strategy

Infinity(∞) Strategy 반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()

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

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

ABC 2장

ABC 2장 3 장 C 프로그램을이루는구성요소 김명호 내용 주석문 토큰 키워드 식별자 상수 문자열상수 구두자 1 구문 Syntax 올바른프로그램을만들수있게하는규칙 컴파일러 C 프로그램이구문에맞는지검사 오류가있다면, 오류메시지출력 오류가없다면, 목적코드생성 전처리기 컴파일러이전에호출 2 컴파일러 컴파일과정 C 프로그램 토큰으로분리 토큰을목적코드로변환 토큰종류 : 키워드,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

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 - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.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

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 3 장 : 변수와데이터형 2012 년 이은주 학습목표 변수와상수의개념에대해알아본다. 리터럴상수, 매크로상수, const 변수에대해알아본 다. C 언어의데이터형에대해알아본다. 2 목차 변수와상수 변수 상수 데이터형 문자형 정수형 실수형 sizeof 연산자 3 변수와상수 변수 : 값이변경될수있는데이터 상수 : 값이변경될수없는데이터

More information

1. 27 (token descriptions) (regular expressions), grep egrep.. C. 1),., C (expressions), (statements), (declarations), (blocks) (procedures). (parsing

1. 27 (token descriptions) (regular expressions), grep egrep.. C. 1),., C (expressions), (statements), (declarations), (blocks) (procedures). (parsing (lex) (yacc). (object code) C. (unit).. C,,,,. ( ) (lexical analysis) (lexing). C (routine). (lexical analyzer) (lexer) (scanner). (lex specification). 1. 27 (token descriptions) (regular expressions),

More information

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4 Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x

More information

商用

商用 商用 %{ /* * line numbering 1 */ int lineno = 1 % \n { lineno++ ECHO ^.*$ printf("%d\t%s", lineno, yytext) $ lex ln1.l $ gcc -o ln1 lex.yy.c -ll day := (1461*y) div 4 + (153*m+2) div 5 + d if a then c :=

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 13 렉스와야크 01 렉스와야크 02 렉스와야크의입력파일형식 03 플렉스와바이슨설치방법 04 플렉스사용법 05 바이슨사용법 렉스와야크의개념에대해이해할수있다. 렉스의입력파일형식과야크의입력파일형식에대해이해할수있다. 플렉스와바이슨의설치방법에대해이해할수있다. 플렉스사용법에대해이해할수있다. 바이슨사용법에대해이해할수있다. 13.1 렉스와야크 프로그래밍언어와컴퓨터구조가다양해짐에따라

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장

More information

OCW_C언어 기초

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

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 - 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

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap-06.pptx 쉽게풀어쓴 C 언어 Express 제 6 장조건문 컴퓨터프로그래밍기초 이번장에서학습할내용 조건문이란? if 문 if, 문 중첩 if 문 switch 문 break문 continue문 goto 문 5장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 컴퓨터프로그래밍기초 2 조건문 조건에따라서여러개의실행경로가운데하나를선택

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 쉽게풀어쓴 C 언어 Express 제 6 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break 문 continue 문 goto 문 5 장까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장

More information

C 언어 프로그래밊 과제 풀이

C 언어 프로그래밊 과제 풀이 과제풀이 (1) 홀수 / 짝수판정 (1) /* 20094123 홍길동 20100324 */ /* even_or_odd.c */ /* 정수를입력받아홀수인지짝수인지판정하는프로그램 */ int number; printf(" 정수를입력하시오 => "); scanf("%d", &number); 확인 주석문 가필요한이유 printf 와 scanf 쌍

More information

untitled

untitled if( ) ; if( sales > 2000 ) bonus = 200; if( score >= 60 ) printf(".\n"); if( height >= 130 && age >= 10 ) printf(".\n"); if ( temperature < 0 ) printf(".\n"); // printf(" %.\n \n", temperature); // if(

More information

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

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

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

chap10.PDF

chap10.PDF 10 C++ Hello!! C C C++ C++ C++ 2 C++ 1980 Bell Bjarne Stroustrup C++ C C++ C, C++ C C 3 C C++ (prototype) (type checking) C C++ : C++ 4 C C++ (prototype) (type checking) [ 10-1] #include extern

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

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

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

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

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 누구나즐기는 C 언어콘서트 제 5 장조건문 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 goto 문 이제까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 조건문 조건에따라서여러개의실행경로가운데하나를선택 문장이실행되는순서에영향을주는문장 조건에따라서여러개의같은처리를반복

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - Lesson2.pptx Computer Engineering g Programming g 2 제 3 장 C 프로그래밍구성요소 Lecturer: JUNBEOM YOO jbyoo@konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() *

More information

C 프로그래밊 개요

C 프로그래밊 개요 구조체 2009 년 5 월 19 일 김경중 강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목

More information

untitled

untitled while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)

More information

Chapter_06

Chapter_06 프로그래밍 1 1 Chapter 6. Functions and Program Structure April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 문자의입력방법을이해한다. 중첩된 if문을이해한다. while 반복문의사용법을익힌다. do 반복문의사용법을익힌다.

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

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 F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2> 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

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

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

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

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

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

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

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

Microsoft PowerPoint - Chapter_04.pptx

Microsoft PowerPoint - Chapter_04.pptx 프로그래밍 1 1 Chapter 4. Constant and Basic Data Types April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 기본자료형문자표현방식과문자자료형상수자료형변환 기본자료형 (1/8) 3 변수 (Variables)

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

Microsoft PowerPoint - KNK_C01_intro_kor

Microsoft PowerPoint - KNK_C01_intro_kor Program: Printing a Pun 파일이름은자유롭게짓되확장자는항상.c 로지정할것을권고 for example: pun.c #include // directive 지시자 C Fundamentals adopted from KNK C Programming : A Modern Approach int main(void) // function

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

4장.문장

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

More information

KNK_C01_intro_kor

KNK_C01_intro_kor C Fundamentals adopted from KNK C Programming : A Modern Approach Program: Printing a Pun 파일이름은자유롭게짓되확장자는항상.c 로지정할것을권고 for example: pun.c #include // directive 지시자 int main(void) // function

More information

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

윈도우즈프로그래밍(1) 제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장

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

C 언어와 프로그래밍 개요

C 언어와 프로그래밍 개요 2019-1 st 프로그래밍입문 (1) 2 장. C 프로그램기본 박종혁교수 서울과학기술대학교컴퓨터공학과 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 주석 (Comment)

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계 ), 결과를화면에출력 ( 출력단계 ) 한다. 데이터입력

More information

중간코드생성

중간코드생성 컴파일러구성 제 11 강 결정적구문분석 10.1 10.2 10.3 10.4 Introduction Syntax-Directed Translation Code Generation U-Code Translator Formal Specification lexical structure : regular expression syntactic structure : context-free

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

슬라이드 1

슬라이드 1 UNIT 08 조건문과반복문 로봇 SW 교육원 2 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

More information

Microsoft PowerPoint - c2.ppt

Microsoft PowerPoint - c2.ppt 프로그램과표준입출력 프로그램 (program) 자료를입력받아서이를처리하여출력을하는일을수행함 2 장 C 언어의기초 입력 프로그램 ( 처리 ) 출력 식별자, 예약어 자료형 상수와변수 수식 연산자 : 산술연산자 자료형변환 표준입출력 (standard input and output: stdio) 표준입력 : 키보드입력 표준출력 : 모니터또는터미널로출력 (cf) DOS,

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 PowerPoint - chap06-4 [호환 모드]

Microsoft PowerPoint - chap06-4 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-4 참고자료 문자열의처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 문자열의연산 문자열은배열의형태로구현된응용자료형이므로연산을자유롭게할수없다. 배열에저장된문자열의길이를계산하는작업도간단하지않다.

More information

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

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 : ios 3.0 이상 - 콘텐츠형식 : MP4 (H264,AAC ), MP3 * 디바이스별해상도,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 데이터타입과변수및조건문, 반복문 배효철 th1g@nate.com 1 목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 2 목차 자바프로그램구조 변수및데이터타입 연산자 조건문 반복문 3 자바프로그램구조 public class Hello2 { public static int sum(int n, int m) { return n + m; } 메소드 클래스

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

Introduction to Geotechnical Engineering II

Introduction to  Geotechnical Engineering II Fundamentals of Computer System - chapter 9. Functions 민기복 Ki-Bok Min, PhD 서울대학교에너지자원공학과조교수 Assistant Professor, Energy Resources Engineering Last week Chapter 7. C control statements: Branching and Jumps

More information

Microsoft PowerPoint - C++ 5 .pptx

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

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

chap x: G입력

chap x: G입력 재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘

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

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

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

C언어 및 실습 C Language and Practice

C언어 및 실습  C Language and Practice C언어 및 실습 C Language and Practice Chap. 2 : 변수의 영역 동국대학교 멀티미디어공학과 Young-Sik Jeong C 언어메모리구조 지역변수들이저장되는곳. 정확히는지역변수와그에따른환경이같이저장된다. 복귀주소와호출함수의환경이저장된다. 동적기억장소를위한공간. 프로그램이실행되는중간에필요에의해서할당받는메모리영역을통칭한다. 크기가정해져있지않고유동적이다.

More information

슬라이드 1

슬라이드 1 CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if

More information

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 - Part2-3 3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터 3.1 포인터란 ü ü ü. ü. ü. ü ( ) ? 3.1 ü. ü C ( ).? ü ü PART2-4 ü ( ) PART3-4 3.2 포인터변수의선언과사용 3.2 포인터 변수의 선언과 사용 (1/8) 포인터 변수의

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 학습목표 변수와상수의개념에대해알아본다.

More information

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013. 쉽게풀어쓴 C 언어 Express 제 3 장 C 프로그램구성요소 이번장에서학습할내용 * 주석 * 변수, 상수 * 함수 * 문장 * 출력함수 printf() * 입력함수 scanf() * 산술연산 * 대입연산 이번장에서는 C 프로그램을이루는구성요소들을살펴봅니다. 일반적인프로그램의형태 덧셈프로그램 #1 데이터를받아서 ( 입력단계 ), 데이터를처리한후에 ( 처리단계

More information

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - 제11장 포인터 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

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

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

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

쉽게 풀어쓴 C 프로그래밍

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

More information

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