ABC 2장

Similar documents
슬라이드 1

슬라이드 1

K&R2 Reference Manual 번역본

OCW_C언어 기초

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

ABC 3장

untitled

Microsoft PowerPoint - chap03.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

Microsoft PowerPoint - chap04-연산자.pptx

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

Microsoft PowerPoint - c2.ppt

untitled

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

본 강의에 들어가기 전

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

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

OCW_C언어 기초

Microsoft PowerPoint - chap-04.pptx

슬라이드 1

Microsoft PowerPoint - chap-04.pptx

C 언어와 프로그래밍 개요

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

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

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

Microsoft PowerPoint - chap-03.pptx

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

Microsoft PowerPoint - chap12-고급기능.pptx

슬라이드 1

Microsoft PowerPoint - Lesson2.pptx

untitled

Microsoft PowerPoint - KNK_C01_intro_kor

KNK_C01_intro_kor

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - ch01.ppt

슬라이드 1

Microsoft PowerPoint - chap05-제어문.pptx

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

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap10-함수의활용.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

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

쉽게 풀어쓴 C 프로그래밍

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

슬라이드 1

untitled

11장 포인터

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

KNK_C02_form_IO_kor

PowerPoint 프레젠테이션

OCW_C언어 기초

C 프로그래밊 개요

02장.배열과 클래스

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

컴파일러

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter_04.pptx

Chapter_06

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

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

ABC 3장

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

슬라이드 1

PowerPoint Presentation

03장.스택.key

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 \

untitled

Microsoft PowerPoint - Chapter_08.pptx

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

Microsoft PowerPoint - chap-06.pptx

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

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

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

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

C 프로그램의 기본

Microsoft PowerPoint - chap-11.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap09.ppt

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

쉽게 풀어쓴 C 프로그래밍

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

chap10.PDF

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

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

Microsoft PowerPoint - 제11장 포인터

C++ Programming

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

ch15

Microsoft PowerPoint - Chapter_05.pptx

<4D F736F F F696E74202D20C1A634C0E520BAAFBCF6BFCDC0DAB7E1C7FC>

Microsoft PowerPoint - chap06-2pointer.ppt

프로그래밍 및 연습 1

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

Transcription:

3 장 C 프로그램을이루는구성요소 김명호

내용 주석문 토큰 키워드 식별자 상수 문자열상수 구두자 1

구문 Syntax 올바른프로그램을만들수있게하는규칙 컴파일러 C 프로그램이구문에맞는지검사 오류가있다면, 오류메시지출력 오류가없다면, 목적코드생성 전처리기 컴파일러이전에호출 2

컴파일러 컴파일과정 C 프로그램 토큰으로분리 토큰을목적코드로변환 토큰종류 : 키워드, 식별자, 상수, 문자열상수, 구두자 3

주석문 컴파일러는주석문을공백으로처리 주석문 여러줄주석 줄단위주석 (C99) 주석은문서화도구로사용됨 프로그램설명이나알고리즘등기술 4

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

주석예제 프로그램 3.1 /***************************************** * 이프로그램은예제프로그램입니다. * * 2431 년 9 월 1 일 * *****************************************/ #include <stdio.h> int main(void) { printf(" 나의 "); printf(" 첫번째프로그램 "); return 0; } 6

/* 첫번째주석예제 */ /*** 두번째주석예제 ***/ /* * 세번째 * 주석예제 */ 주석예제 /*************************** * 네번째 * * 주석예제입니다. * ****************************/ 7

주석예제 프로그램 3.2 /* 반지름을입력받아원의넓이를구하는프로그램 * 2014 년 3 월 20 일 * 김진혁작성 */ #include <stdio.h> int main(void) { } float a; // 반지름변수 printf(" 반지름 : "); scanf("%f", &a); // 원의넓이 = 반지름 * 반지름 * 원주율 (3.14) printf(" 반지름이 %f인원의넓이 : %f\n", a, a * a * 3.14); return 0; 8

키워드 키워드 C 언어에서고유한의미를가지는토큰 예약된단어 프로그래머가다른의미로재정의할수없음 변수나함수이름으로사용할수없음 9

프로그램 /* 반지름을입력받아원의넓이를구하는프로그램 * 2014년 3월 20일 * 김진혁작성 */ #include <stdio.h> int main(void) { float a; // 반지름변수 printf(" 반지름 : "); scanf("%f", &a); // 원의넓이 = 반지름 * 반지름 * 원주율 (3.14) printf(" 반지름이 %f인원의넓이 : %f\n", a, a * a * 3.14); return 0; } 10

프로그램 /* 반지름을입력받아원의넓이를구하는프로그램 * 2014년 3월 20일 * 김진혁작성 */ #include <stdio.h> int main(void) { float a; // 반지름변수 printf(" 반지름 : "); scanf("%f", &a); // 원의넓이 = 반지름 * 반지름 * 원주율 (3.14) printf(" 반지름이 %f인원의넓이 : %f\n", a, a * a * 3.14); return 0; } 11

키워드 auto double inline sizeof volatile break else int static while case enum long struct _Bool char extern register switch _Complex const float restrict typedef _Imaginary continue for return union default goto short unsigned do if signed void * inline, restrict, _Bool, _Complex, _Imaginary 는 C99 에서추가 12

키워드 프로그램 3.3 #include <stdio.h> int main(void) { typedef int double; // 오류 : double을 int로재정의 int float; // 오류 : float을 int 형의변수로선언 return 0; } 13

식별자 변수, 함수, 사용자정의형에이름을부여하기위함 14

프로그램 /* 반지름을입력받아원의넓이를구하는프로그램 * 2014년 3월 20일 * 김진혁작성 */ #include <stdio.h> int main(void) { float a; // 반지름변수 printf(" 반지름 : "); scanf("%f", &a); // 원의넓이 = 반지름 * 반지름 * 원주율 (3.14) printf(" 반지름이 %f인원의넓이 : %f\n", a, a * a * 3.14); return 0; } 15

식별자 식별자는문자, 숫자, 그리고특수문자인밑줄문자 (_) 로구성된토큰으로, 문자또는밑줄문자로시작해야함 C 는소문자와대문자를구별함 식별자는그의미를생각하고선택해야함 키워드는사용자식별자로사용할수없음 라이브러리함수명, main, 미리정의된문자상수등은사용자식별자로사용하지않는것이좋음 16

식별자 올바른식별자 k _id iamanidentifier2 so_am_i 잘못된식별자 not#me 101_south -plus 17

예제프로그램 프로그램 3.4 #include <stdio.h> int main(void) { float a, b; } scanf("%f", &a); b = a * 2.54; printf("%f => %f\n", a, b); return 0; 18

프로그램 3.5 예제프로그램 #include <stdio.h> #define INCH2CM 2.54 int main(void) { float length_inch, length_cm; scanf("%f", &length_inch); length_cm = length_inch * INCH2CM; printf("%f => %f\n", length_inch, length_cm); return 0; } 19

상수 정수상수 부동형상수 문자상수 열거상수 enum 에의해선언된상수 상수는값과형을가짐 20

정수상수 정수상수 (Integer Constant) 10진정수 16진정수 : 0x로시작 8진정수 : 0으로시작 21

10 진정수상수 0, 17, 234 16 진정수상수 0~9, a(a)~f(f) 0x17, 0x234, 0xFFFF 변환명세 : %x, %#x 8 진정수상수 0~7 017, 0234 변환명세 : %o, %#o 정수상수 22

프로그램 3.6 #include <stdio.h> int main(void) { } 예제프로그램 printf("%d %x %o\n", 19, 19, 19); printf("%d %x %o\n", 0x1c, 0x1c, 0x1c); printf("%d %#x %#o\n", 017, 017, 017); return 0; 23

프로그램결과 19 13 23 28 1c 34 15 0xf 017 24

부동형상수 부동형상수 (Floating Constant) 0.17, 0.234 정수상수와구분해서사용해야함 10 진부동형상수 1.7e10 (= 1.7 X 10 10 ) 16 진부동형상수 0x1.7p10 (= (0x1.7) X 2 10 ) 25

프로그램 3.7 예제프로그램 #include <stdio.h> int main(void) { printf("%.2f\n", 1 / 3); printf("%.2f\n", 1 / 3.0); return 0; } 26

프로그램결과 0.00 0.33 27

문자상수 문자상수 (Character Constant) 작은따옴표로둘러싸인문자 'a', 'b', '+',... 와이드문자상수 일반문자상수에 L 접두사붙여표현 L'a', L'b',... 탈출문자 키보드로표현할수없는문자를나타내기위해 '\n', '\a', '\t',... 28

탈출기법 인쇄할수없는문자는탈출기법을사용하여표현함 예를들어, 수평탭문자는문자상수와문자열에서 \t 로표현됨 \t 가 \ 와 t 두문자로기술되지만, 이것은한문자임 프로그램내에서특별한의미를갖는문자들이본래의의미를갖기위해서도탈출기법을사용해야함 큰따옴표를포함하는 "abc" 라는문자열은 "\"abc\"" 로표기함 작은따옴표문자상수 ' 는 '\'' 로표기함 29

탈출문자 탈출문자 \a \\ \b \r \" \f \t \n \0 \' \v 의미 경고역슬래시백스페이스캐리지리턴큰따옴표폼피드수평탭개형널문자작은따옴표수직탭 30

프로그램 3.8 예제프로그램 #include <stdio.h> int main(void) { printf("\a"); printf("i like\b\b\bove C.\n"); return 0; } 31

프로그램결과 < 삑 > I love C. 32

열거상수 열거상수 (Enumeration Constant) - enum 으로정의된식별자 33

문자열상수 문자열상수 (String Constant) 큰따옴표에의해묶인일련의문자들 문자열내에 를넣기위해서는앞에 \ 붙임 공백에의해분리된두문자열상수는하나의문자열로결합 문자열상수중간에 \ 를삽입하면다음줄로문자열이연결됨 34

프로그램 3.9 예제프로그램 #include <stdio.h> int main(void) { printf("%s\n", " 재 "" 미 " " 있는 " "\"C\"!"); printf("%s\n", "\\n는 \ 개행문자.\n"); return 0; } 35

프로그램결과 재미있는 "C"! \n 는개행문자. 36

구두자 구두자 (Punctuator) [ ] ( ) { }. -> ++ -- & * + - ~! / % << >> < > <= >= ==!= ^ &&? : ;... = *= /= %= += -= <<= >>= &= ^= =, # ## <: :> <% %> %: %:%: // 다이그래프 (digraph) // [, ], {, }, #, ## 37

구두자 어떤구두자는사용된위치에따라의미가달라질수있음 ( ) printf("%d", a * (b + a)); 어떤구두자는다른문자와같이사용되면다른의미를가짐 + +, ++, += 38

산술연산자 프로그램 3.10 #include <stdio.h> int main(void){ printf("9 + 5 = %d\n", 9 + 5); printf("9-5 = %d\n", 9-5); printf("9 * 5 = %d\n", 9 * 5); printf("9 / 5 = %d\n", 9 / 5); printf("-9 = %d\n", -9); printf("+9 = %d\n", +9); printf("9 %% 5 = %d\n", 9 % 5); printf("9.0 + 5.0 = %f\n", 9.0 + 5.0); printf("9.0-5.0 = %f\n", 9.0-5.0); printf("9.0 * 5.0 = %f\n", 9.0 * 5.0); printf("9.0 / 5.0 = %f\n", 9.0 / 5.0); printf("-9.0 = %f\n", -9.0); printf("+9.0 = %f\n", +9.0); return 0; } 39

프로그램결과 9 + 5 = 14 9-5 = 4 9 * 5 = 45 9 / 5 = 1-9 = -9 +9 = 9 9 % 5 = 4 9.0 + 5.0 = 14.000000 9.0-5.0 = 4.000000 9.0 * 5.0 = 45.000000 9.0 / 5.0 = 1.800000-9.0 = -9.000000 +9.0 = 9.000000 40

우선순위와결합순위 하나의수식에여러개의연산자가올수있음 운선순위와결합순위는수식의평가순서를결정함 연산자 ( ) ++ ( 후위 ) --( 후위 ) + ( 단항 ) - ( 단항 ) ++ ( 전위 ) -- ( 전위 ) * / % + - = += -= *= /= %= >>= <<= &= ^= = 결합순위좌에서우로우에서좌로좌에서우로좌에서우로우에서좌로 41

우선순위와결합순위 예 우선순위 1 + 2 * 3 1 + (2 * 3) -a b (-a) - b 결합순위 1 + 2-3 + 4 5 (((1 + 2) - 3) + 4) - 5 괄호로우선순위변경가능 (1 + 2) * 3 42

배정연산자 배정수식형식 예 변수 = 수식 // = 기호오른쪽수식의값이변수에배정됨 a = b + c x = x + 1 배정문 b = 2; 43

배정연산자 다른언어와는달리 C 는 = 를연산자로다룸 b = 2; c = 3; a = b + c; a = ( b = 2 ) + ( c = 3 ); a = b = c = 0; a = (b = (c = 0)); 44

증가와감소연산자 전위증가연산자 ++i i = i + 1 전위감소연산자 --i i = i 1 후위증가연산자 i++ i = i + 1 후위감소연산자 i-- i = i - 1 45

증가와감소연산자 전위와후위연산자는같은기능을하지만수식의값에차이가있음 ++i 수식의값 : 새로운 i 의값 --i 수식의값 : 새로운 i 의값 i++ 수식의값 : 이전 i 의값 i-- 수식의값 : 이전 i 의값 46

i 가 3 일때 ++i 수식의값 : 4 --i 수식의값 : 2 i++ 수식의값 : 3 i-- 수식의값 : 3 증가와감소연산자 47

프로그램 3.11 예제프로그램 #include <stdio.h> int main(void) { int a, b, c, d; c = d = 0; a = ++c; // 이전값이 0인 c에전위 ++ 적용 b = d++; // 이전값이 0인 d에후위 ++ 적용 printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d); return 0; } 48

프로그램결과 a = 1, b = 0, c = 1, d = 1 49

복합배정연산자 다른연산자와배정연산자가연결된형태 변수의새로운값이이전값과연관될때유용 k = k + 2 형태의수식을축약해서표현 복합배정연산자 +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, = k = k + 2; k += 2; ( 주의 ) j *= k + 3;? j = j * k + 3;? j = j * (k + 3); 50

프로그램 3.12 예제프로그램 #include <stdio.h> int main(void) { int i = 1, j = 2, k = 3, m = 4; printf("i += j + k : %d\n", i += j + k); printf("j *= k = m + 5 : %d\n", j *= k = m + 5); return 0; } 51

프로그램결과 i += j + k : 6 j *= k = m + 5 : 18 52