슬라이드 1

Similar documents
슬라이드 1

ABC 2장

K&R2 Reference Manual 번역본

C 언어와 프로그래밍 개요

untitled

OCW_C언어 기초

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

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

슬라이드 1

untitled

Microsoft PowerPoint - chap-03.pptx

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

슬라이드 1

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

OCW_C언어 기초

Microsoft PowerPoint - chap04-연산자.pptx

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - chap05-제어문.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - ch01.ppt

untitled

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

Microsoft PowerPoint - KNK_C01_intro_kor

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

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

KNK_C01_intro_kor

ABC 3장

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

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - [2009] 02.pptx

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

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

Microsoft PowerPoint - chap03.ppt

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap06-2pointer.ppt

중간고사

untitled

슬라이드 1

歯9장.PDF

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

03장.스택.key

Chapter_06

컴파일러

Microsoft PowerPoint - chap13-입출력라이브러리.pptx


Microsoft PowerPoint - c2.ppt

C++ Programming

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

C++-¿Ïº®Çؼ³10Àå

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

PowerPoint Presentation

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

Microsoft PowerPoint - chap11-포인터의활용.pptx

Microsoft PowerPoint - chap08-1 [호환 모드]

Microsoft PowerPoint - chap09.ppt

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

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

슬라이드 1

슬라이드 1

chap7.key

본 강의에 들어가기 전

Microsoft PowerPoint - chap-07.pptx

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

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

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

PowerPoint Presentation

Microsoft PowerPoint - 03_(C_Programming)_(Korean)_Pointers

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션


슬라이드 1

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

<4D F736F F F696E74202D20C1A63132B0AD20B5BFC0FB20B8DEB8F0B8AEC7D2B4E7>

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

Microsoft PowerPoint - chap-05.pptx

03 상수, 변수, 자료형

02 C h a p t e r Java

ABC 9장

Microsoft PowerPoint - lec2.ppt

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

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

PowerPoint 프레젠테이션

11장 포인터

Microsoft PowerPoint - ch 전처리기, 다중 소스파일 pm1015

Microsoft PowerPoint - chap01-C언어개요.pptx

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

chap10.PDF

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - Lesson6.pptx

Transcription:

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, Constant) 2.7 문자상수, 문자열상수 2.8 연산자와구두점 2.9 연산자의우선순위와결합법칙 2.10 증가연산자와감소연산자 2.11 배정연산자 2.12 예제 : 2 의거듭제곱계산 2.13 C 시스템

3 어휘원소, 연산자, C 시스템 구문 올바른프로그램을만들수있게하는규칙 컴파일러 C 프로그램이구문에맞는지검사 오류가있다면, 오류메시지출력 오류가없다면, 목적코드생성 컴파일과정 C 프로그램 토큰으로분리 토큰을목적코드로변환 토큰종류 : 키워드, 식별자, 상수, 문자열상수, 연산자, 구두점

4 2.1 문자와어휘원소 프로그램에서사용할수있는문자 소문자 : a b c... z 대문자 : A B C... Z 숫자 : 0 1 2 3 4 5 6 7 8 9 특수문자 : + - * / = ( ) [ ] < > '! @ # $ % & _., ; :? 여백문자 : 공백, 개행, 탭 컴파일러는이러한문자들을구문단위인토큰으 로모은다.

5 어휘분석 /* Read in two integers and print their sum. */ 주석문 : /* 부터 */ 까지는공백으로대치 #include <stdio.h> 전처리지시자 : 전처리기가처리 int main(void){ int a, b, sum; 키워드 : int, void 식별자 : main, a, b, sum 연산자 : ( ) 구두점 : {,,, ; inta, b, sum; -> (X), int absum -->absum을하나의식별자,

6 예제프로그램 printf("input two integer: "); scanf("%d%d", &a, &b); printf, scanf : 식별자, (): 함수임을알림 "Input two integer: " : 문자열상수 & : 주소연산자, & a, & b (O), &a,&b (O), &a &b (X), a&, &b (X) sum=a + b ; =, + : 연산자, sum=a+b; (O), sum = a + b ; (O), s u m = a + b ;(X)

7 2.2 구문규칙 BNF(Backus-Naur Form) 으로기술예 ) digit = 0 1 2 3 4 5 6 7 8 9 생산규칙 의미 : 구문카테고리 digit 는기호 0 또는 1,..., 또는 9 로다시쓸수있다.

8 생산규칙에사용되는기호들 italics 구문카테고리 ::= " 다시쓰면 " 의기호 선택들을분리 { } 1 괄호안의항목중하나만선택 { } 0+ 괄호안의항목을영번이상반복 { } 1+ 괄호안의항목을한번이상반복 { } opt 옵션인항목

9 ** 생산규칙예제 ** letter_or_digit letter_or_digit ::= letter digit letter ::= lowercase_letter uppercase_letter lowercase_letter ::= a b c... z uppercase_letter ::= A B C... Z digit ::= 0 1 2 3 4 5 6 7 8 9 alphanumeric_string ::= {letter_or_digit} 0+ 3, ab777c, 알파뉴메릭문자열 u_alpha_string ::= uppercase_letter {letter_or_digit} 0+ conditional_statement ::= if (expression) statement {else statement} opt

10 2.3 주석 주석 /* 과 */ 사이에있는임의의문자열 주석은토큰이아님 컴파일러는주석을하나의공백문자로대치 문서화도구로사용함 ( 프로그램설명, 정확성증명 등 ) C++ 주석 줄단위주석 // 다음부터그행끝까지가주석임 C 스타일의주석도사용

11 ** 주석예제 ** C 스타일주석 /* a comment */ /* * A comment can be written in this fashion * to set it off from the surrounding code. */ /**************************** * If you wish, you can * * put comments in a box. * ****************************/ C++ 스타일주석 // This is a comment in C++.

12 2.4 키워드 키워드 C 언어에서고유한의미를가지는토큰 예약된단어 C 키워드 auto do goto signed unsigned break double if sizeof void case char else enum int long static struct volatile while const extern register switch continue float return typedef default for short union

13 2.5 식별자 식별자는문자, 숫자, 그리고특수문자인밑줄문자 (_) 로구성된토큰으로, 문자또는밑줄문자로시작해야함. C 시스템은소문자와대문자를구별함. 식별자의선택은의미를생각하여함.

14 식별자생성규칙 identifier ::= {letter underscore} 1 {letter underscore digit} 0+ underscore ::= _ 올바른예제 K, _id, iamanidentifier2, so_am_i

15 식별자의틀린예 not#me /* special character # not allowed */ 101_south /* must not start with a digit */ -plus /* do not mistake - for _ */ C 표준라이브러리에정의된식별자 : printf, scanf,... 의미가쉽게연상되는식별자 ( 변수 ) 사용할것. 밑줄문자 (_) 로시작되는식별자는가급적사용하지말것.

16 2.6 상수 정수상수 0, 17, 234, 0x17 실수상수 1.0, 3.141592, 23E2 문자상수 'a', 'b', '+', '\n' 문자열상수 "hello", "very good" 열거상수 enum 에의해선언된상수 ( 주의 ) -49 : 상수수식 // 음수정수상수는상수수식으로간주함

17 2.7 문자열상수 문자열상수 - 큰따옴표에의해묶인일련의문자들 올바른예제 "a string of text" "" " " " a = b + c; " " /* this is not a comment */ " " a string with double quotes \" within" 잘못된예제 /* "this is not a string" */ "and neither is this"

18 2.8 연산자와구두점 연산자 +, -, *, /, % 구두점 괄호, 중괄호, 콤마, 세미콜론등 연산자와구두점은문맥에따라결정됨 % printf("%d", a); // 형식제어문자 a = b % 7; // 나머지연산자 ( ) printf("hello"); // 연산자 a = (23 + 2) * 2 // 구두점

19 예제 ) 자판기잔돈계산프로그램 #include <stdio.h> int main() { int input, change; int w500, w100, w50, w10; } printf(" 돈을입력하세요 : "); scanf("%d", &input); change = input - 150; w500 = change / 500; change = change % 500; w100 = change / 100; change = change % 100; w50 = change / 50; change = change % 50; w10 = change / 10; printf("500 원짜리동전 %d 개 \n", w500); printf("100 원짜리동전 %d 개 \n", w100); printf("50 원짜리동전 %d 개 \n", w50); printf("10 원짜리동전 %d 개 \n", w10); return 0; // input 은투입액, change 는잔돈을저장할변수 // 각동전의개수를저장할변수 // 커피값이 150 원일때잔돈계산 // 500 원동전의개수 // 아직지급하지못한남은잔돈

20 2.9 우선순위와결합법칙 운선순위와결합법칙은평가순서를결정함 예 1 + 2 * 3 1 + (2 * 3) 1 + 2 3 ((1 + 2) 3) 연산자 ( ) ++ ( 후위 ) --( 후위 ) + ( 단항 ) - ( 단항 ) ++ ( 전위 ) -- ( 전위 ) * / % + - = += -= *= /= etc. 결합법칙 좌에서우로우에서좌로좌에서우로좌에서우로우에서좌로

21 우선순위 : (* /), (+-) 1+2*3 == 1+(2*3) --> 7 (1+2)*3 --> 9 문자열상수의예 결합법칙 : 좌에서우 1+2-3+4-5==(((1+2)-3)+4)-5

22 구구단프로그램 (1) 9 * 4 계산 #include <stdio.h> int main(void){ printf( 9 * 4 = %d\n", 9 * 4); return 0; }

23 구구단프로그램 (2) 9 * 4 계산 #include <stdio.h> int main(void){ int dap; } dap = 9 * 4; printf( 9 * 4 = %d\n", dap); return 0;

24 구구단프로그램 (3) 9 * 4 계산 #include <stdio.h> int main(void){ int a, b, dap; } a = 9; b = 4; dap = a * b; printf( %d * %d = %d\n", a, b, dap); return 0;

25 구구단프로그램 (4) 9 * 4 계산 #include <stdio.h> int main(void){ int a, b, dap; } printf("input two integers : "); scanf("%d%d", &a, &b); dap = a * b; printf( %d * %d = %d\n", a, b, dap); return 0;

26 2.10 증가와감소연산자 전위증감연산자 ++i, --i /* i = i + 1, i = i - 1 */ 후위증감연산자 i++, i-- /* i = i + 1, i = i - 1 */ 증감연산자수식의값 ++i, --i /* i + 1, i - 1 */ i++, i-- /* i, i */

27 증가 / 감소연산자틀린사용 777++ /* constant can not be incremented */ ++(a*b-1) /* ordinary expression not be incremented */ 예제코드 int a, b, c = 0; a = ++c; b = c++; printf("%d %d %d\n", a, b, ++c); /* 1 1 3 is printed */

28 2.11 배정연산자 다른언어와는달리 C 는 = 를연산자로다룸 a = ( b = 2 ) + ( c = 3 ); 배정연산자 =, +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, = ( 주의 ) j *= k + 3 은 j = j * k + 3 이아니라, j = j * (k + 3) 임

29 배정연산자 선언및초기화 int i = 1, j = 2, k = 3, m = 4; 수식동일한수식결과값 i += j + k i = (i+ (j + k)) 6 j *= k = m + 5 j = (j * (k = (m +5))) 18

30 2.12 예제 2 의거듭제곱계산 #include <stdio.h> int main(void){ } 출력 int i = 0, power = 1; while (++i <= 10) printf("%-6d", power *= 2); printf("\n"); return 0; 2 4 8 16 32 64 128 256 512 1024

31 2.13 C 시스템 C 시스템 C 언어, 전처리기, 컴파일러, 라이브러리, 편집기등으로구성 전처리기 # 으로시작하는행을전처리지시자라고함 #include <filename> #include "filename" #define PI 3.141592 표준라이브러리 프로그램에유용한함수들로 C 시스템이제공함 printf(), scanf(), 등 사용자가알아서해당헤더파일을포함시켜야함

32