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

Size: px
Start display at page:

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

Transcription

1 LEX 와 YACC 작성자 : americanojh americano@korea.ac.kr 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 개!!!@t#(5 개 ), \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

슬라이드 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

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

3장 어휘분석

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

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

슬라이드 1

슬라이드 1 2 장. 어휘원소, 연산자와 C 시스템 박종혁교수 UCS Lab Tel: 970-6702 Email: jhpark1@seoultech.ac.kr SeoulTech 2018-1 st 프로그래밍입문 (1) 2 목차 2.1 문자와어휘원소 2.2 구문법칙 2.3 주석 2.4 키워드 (Keyword) 2.5 식별자 (Identifier) 2.6 상수 (Integer,

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

OCW_C언어 기초

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

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

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

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

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

EA0015: 컴파일러

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

More information

슬라이드 1

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

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

<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

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

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음 CHAPTER 9 둘중하나선택하기 관계연산자 두개의피연산자를비교하는연산자 결과값은참 (1) 아니면거짓 (0) x == y x 와 y 의값이같은지비교한다. 관계연산자 연산자 의미 x == y x와 y가같은가? x!= y

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

ABC 2장

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

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

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

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

슬라이드 1

슬라이드 1 3. 자료와변수 3.1 자료형 자료형 컴퓨터는숫자 (= 데이터 ) 를다룬다. 컴퓨터가다룰수있는숫자의유형이있다. C 언어에서의자료형 크기 (byte) 정수형 ( 문자형 ) char 1 정수형 실수형 ( 부동소수형 ) short 2 int 4 long 4 long long 8 float 4 double 8 long double 8 / 16 강 C 프로그래밍 3

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

OCW_C언어 기초

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

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

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

EA0015: 컴파일러

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

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

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

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (I) Contents 변수와상수 블록과변수의범위 수식과연산자 제어문과반복문 문자와문자열 배열, 포인터, 메모리관리 구조체 디버거 (gdb) 사용법 2/17 Reference The C Programming language, Brian W. Kernighan, Dennis M. Ritchie, Prentice-Hall

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

쉽게 풀어쓴 C 프로그래밍

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

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

중간고사

중간고사 중간고사 예제 1 사용자로부터받은두개의숫자 x, y 중에서큰수를찾는알고리즘을의사코드로작성하시오. Step 1: Input x, y Step 2: if (x > y) then MAX

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

untitled

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

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

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.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 언어 프로그래밊 과제 풀이

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

<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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 15 고급프로그램을 만들기위한 C... 1. main( ) 함수의숨겨진이야기 2. 헤더파일 3. 전처리문과예약어 1. main( ) 함수의숨겨진이야기 main( ) 함수의매개변수 [ 기본 14-1] main( ) 함수에매개변수를사용한예 1 01 #include 02 03 int main(int argc, char* argv[])

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

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

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 1 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 2 3.1 Operational Semantics 숙대창병모 3 의미론의종류 Operational Semantics 프로그램의동작과정을정의 Denotational

More information

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시 The C++ Programming Language 4 장타입과선언 4.11 연습문제 4.11.1 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include //#include 문, 헤더파일, 전처리지시자로호칭 using namespace std; //using 키워드를사용하여 std 네임스페이스를사용선언

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

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

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

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

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 6 장선택과반복 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break문 continue문 지금까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 3 가지의제어구조 조건문 문장이실행되는순서에영향을주는문장 조건에따라서여러개의실행경로가운데하나를선택

More information

쉽게 풀어쓴 C 프로그래밍

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

More information

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

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

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

제 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 프로그래밊 개요 구조체 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

Microsoft PowerPoint - lec2.ppt

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

More information

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

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

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

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

Microsoft PowerPoint - chap-03.pptx

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

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

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

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

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

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

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

구조체정의 자료형 (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

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

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드] 02 C 프로그래밍기초 충남대학교이형주 1 C 프로그램구조 콘솔응용프로그램 2 프로그램실행순서 C 프로그램은여러함수의조합으로구성 함수란정해진규칙에의하여일련의작업을수행하는프로그램의단위 실행순서 main 함수는프로그램이실행되면가장먼저시작되는부분 모든함수내부에서는위에서아래로, 좌에서우로, 문장이위치한순서대로실행 3 전처리기 전처리기 (preprocessor) 미리처리하는프로그램으로,

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

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

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

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

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

Microsoft PowerPoint - semantics

Microsoft PowerPoint - semantics 제 3 장시맨틱스 (Semantics) Reading Chap 13 숙대창병모 Sep. 2007 1 3.1 Operational Semantics 숙대창병모 Sep. 2007 2 시맨틱스의필요성 프로그램의미의정확한이해 소프트웨어의정확한명세 소프트웨어시스템에대한검증혹은추론 컴파일러혹은해석기작성의기초 숙대창병모 Sep. 2007 3 의미론의종류 Operational

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

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수 The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 5.9.1 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수정수에대한포인터, 정수에대한상수포인터. 그리고각각의객체를초기화하자. Ex 문자에대한포인터 char

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

4장.문장

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

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

임베디드시스템설계강의자료 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 - 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

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

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

More information

PowerPoint 프레젠테이션

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

More information