Microsoft PowerPoint - Chapter_02.pptx

Similar documents
OCW_C언어 기초

K&R2 Reference Manual 번역본

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 \

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-2pointer.ppt

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

Microsoft PowerPoint - chap-05.pptx

Microsoft PowerPoint - Chapter_04.pptx

untitled

03장.스택.key

PowerPoint 프레젠테이션

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

중간고사

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

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

Microsoft PowerPoint - [2009] 02.pptx

Chapter_06

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

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

KNK_C03_Expr_kor

chap x: G입력

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

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - KNK_C03_Expr_kor

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

슬라이드 1

untitled

슬라이드 1

Microsoft PowerPoint - chap05-제어문.pptx

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

Microsoft PowerPoint - c2.ppt

1.1.1 컴퓨터의 구성 p.19

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

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

슬라이드 1

1.4.3 증감연산자 후치증가 a++: 프로그램의한명령줄이끝나고 1을증가시킨값을다시 a에저장. 후치감소 a--: 프로그램의한명령줄이끝나고 1을감소시킨값을다시 a에저장. 전치증가 ++a: 1을증가시킨값을미리 a에저장하고프로그램을수행. 전치감소 --a: 1을감소시킨값을미리

OCW_C언어 기초

11장 포인터

11장 포인터

PowerPoint 프레젠테이션

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

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

Microsoft PowerPoint - chap-03.pptx

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - Lesson2.pptx

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

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

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

untitled

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

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

쉽게 풀어쓴 C 프로그래밍

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

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

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

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

PowerPoint 프레젠테이션

C 프로그래밊 개요

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

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

ch15

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

chap 5: Trees

Microsoft PowerPoint - lec3.ppt

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

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

Microsoft PowerPoint - chap06-1Array.ppt

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

PowerPoint Presentation

06 세상을 변화시키는 연산자

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

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

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - chap12-고급기능.pptx

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

C++ Programming

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

chap x: G입력

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

Microsoft PowerPoint - chap-11.pptx

프로그래밍 및 연습 1

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

1

chap10.PDF

컴파일러

PowerPoint Presentation

PowerPoint Presentation

설계란 무엇인가?

歯9장.PDF

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

Transcription:

프로그래밍 1 1 Chapter 2. Types, Operators, and Expressions March, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj

이장의강의목표 2 변수의이해 C언어의표준키워드연산자소개키보드입력

변수의이해 (1/9) 3 덧셈예제 3 + 4; Results... 연산자 (Operator) +, -, *, / 변수의 (variable) 필요성

변수의이해 (2/9) 4 변수 (Variable)? 값또는연산결과를저장할수있는메모리공간의이름변수를선언하면메모리공간이할당되고이름이붙음 변수의이름 이름을통해서메모리공간에접근이가능메모리공간에값을저장할수있고, 저장된값을참고할수있음

변수의이해 (3/9) 5 변수사용의예 int num; num = 20; printf("%d\n", num); int num; int : 정수의저장을위한메모리공간의할당 num : 할당된메모리공간의이름 num = 20; 변수 num 공간에 20 을저장 printf("%d\n", num); 변수 num 공간의 20 을참조

변수의이해 (5/9) 6 변수선언시주의사항 int num1; int num2; num1 = 0; num2 = 0; int num1; num1 = 0; int num2; num2 = 0; 과거 C 표준 함수의맨처음에변수의초기화필요 1999년 C언어표준에서는위치제한이없어짐

변수의이해 (6/9) 7 변수이름의규칙 1. 알파벳, 숫자, 언더바 (_) 로구성 2. C 언어는대소문자구문 (ex: num 과 Num 은다른변수 ) 3. 변수의이름은숫자로시작할수없고, 키워드를변수이름으로사용할수없음 4. 이름과이름사이에는공백이삽입될수없음 변수의좋은예 변수의나쁜예 int num1; int num2; int Sum; int CountOfBook; int 5Dogs; int phone#; int Count Of Book; int int;

변수의이해 (4/9) 8 변수의다양한선언및초기화방법 int num1, num2; int num3=30, num4=40; printf("num1: %d, num2: %d \n", num1, num2); num1=10; num2=20; printf("num1: %d, num2: %d \n", num1, num2); printf("num3: %d, num4: %d \n", num3, num4); int num1, num2; 변수선언 ( 값할당을안함 이경우의미없는값할당 ), 를이용하여둘이상의변수선언가능 int num3=30, num4=40; 선언과동시에초기화

변수의이해 (7/9) 9 변수의자료형 (Data Type) 정수형변수 정수값저장을목적으로선언된변수 char, short, int, long 형변수로구분 실수형변수 실수값저장을목적으로선언된변수 float, double 형변수로구분... short num1 = 30; // 정수형중 short 형변수 int num2 = 30; // 정수형중 int 형변수 long num3 = 30; // 정수형중 long 형변수 float data1 = 3.14; // 실수형중 float 형변수 double data2 = 3.14; // 실수형중 double 형변수

변수의이해 (8/9) 10 덧셈예제 update 1 int num1 = 3; int num2 = 4; int result = num1 + num2; printf("add result: %d \n", result); printf("%d + %d = %d \n", num1, num2, result); printf("sum of %d and %d is %d.\n", num1, num2, result); Results Add result: 7 3 + 4 = 7 Sum of 3 and 4 is 7.

변수의이해 (9/9) 11 연습문제 두변수 int x = 4, y = 2; 이용하여사칙연산결과를출력하시오. 사칙연산의결과를보관할변수 4 개사용할것 Results Plus : 4 + 2 = 6 Minus : 4 2 = 2 Divide : 4 / 2 = 2 Multiply : 4 x 2 = 8 Q: int x = 5 로바꾸면연산결과는바뀌게된다. 이경우문제는없는가? 그이유는무엇인가?

C 언어의표준키워드 (Keyword) 12 키워드 (keyword) C언어의문법을구성하는단어변수또는함수이름으로사용할수없음 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volitile while

연산자소개 (1/15) 13 연산자 (Operator) 컴파일러가특정계산및논리연산을할수있게알려주는기호 산술연산자 (Arithmetic Operators) 관계연산자 (Relational Operators) 논리연산자 (Logical Operators) 비트연산자 (Bitwise Operators) 대입연산자 (Assignment Operators) 기타연산자 (Misc Operators)

연산자소개 (2/15) 14 대입연산자와산술연산자 (Assignment and Arithmetic Operators) 이항연산자 연산자설명예 = 연산자의오른쪽피연산자를왼쪽피연산자에게할당 C= A + B A+B의값을C에게할당 + 두피연산자를더한다 A+B 의값은 30 - 왼쪽피연산자에서오른쪽피연산자를뺀다 A-B 의값은 -10 * 두연산자를곱한다 A*B 의값은 200 / 왼쪽피연산자를오른쪽피연산자로나눈다 B/A 의값은 2 % 왼쪽피연산자를오른쪽피연산자로나누었을때나머지값 B%A 의값은 0 A = 10, B = 20

연산자소개 (3/15) 15 덧셈예제 update 1 int num1=9, num2=2; printf("%d + %d = %d \n", num1, num2, num1+num2); printf("%d - %d = %d \n", num1, num2, num1 num2); printf("%d %d = %d \n", num1, num2, num1*num2); printf("%quotient of %d %d =%d \n", num1, num2, num1/num2); printf("remainder of %d %d = %d \n", num1, num2, num1%num2); Results 9 + 2 = 11 9-2 = 7 9 2 = 18 quotient of 9 2 =4 remainder of 9 2 = 1

연산자소개 (4/15) 16 복합대입연산자 (Assignment Operators) 복합연산자 일반연산자예 복합연산자예 += a = a + b a += b -= a = a - b a -= b *= a = a * b a *= b /= a = a / b a /= b %= a = a % b a %= b Q: 왜복합대입연산자를사용할까? int num1=2, num2=4, num3=6; num1 += 3; // num1 = num1 + 3; num2 *= 4; // num2 = num2 * 4; num3 %= 5; // num3 = num3 % 5; printf("result: %d, %d, %d \n", num1, num2, num3); Results Result: 5, 16, 1

연산자소개 (5/15) 17 부호연산의미를갖는 +, - int num1 = +2; int num2 = 4; num1 = num1; printf("num1: %d \n", num1); num2 = num2; printf("num2: %d \n", num2); num1 = num1; // 부호 num1 = num1; // 복합대입 num2 = num2; // 부호 num2 = num2; // 복합대입 Results num1: 2 num2: 4

연산자소개 (6/15) 18 증가, 감소연산자 (Arithmetic Operators) 연산자연산자의기능결합방향 ++num 값을 1 증가후속한문자의나머지를진행 ( 선증가, 후연산 ) 예 ) val=++num; num++ 속한문장을먼저진행후, 값을 1 증가 ( 선연산, 후증가 ) 예 ) val=num++; --num 값을 1 감소속한문자의나머지를진행 ( 선감소, 후연산 ) 예 ) val=--num; num-- 속한문장을먼저진행후, 값을 1 감소 ( 선연산, 후감소 ) 예 ) val=num--;

연산자소개 (7/15) 19 증가, 감소연산자 (Arithmetic Operators) 예제 1 int num1=12; int num2=12; printf("num1: %d \n", num1); printf("num1++: %d \n", num1++); printf("num1: %d \n\n", num1); printf("num2: %d \n", num2); printf("++num2: %d \n", ++num2); printf("num2: %d \n", num2); Results num1: 12 num1++: 12 num1: 13 num2: 12 ++num2: 13 num2: 13

연산자소개 (8/15) 20 증가, 감소연산자 (Arithmetic Operators) 예제 2 int num1=10; int num2=(num1 )+2; Results printf("num1: %d \n", num1); printf("num2: %d \n", num2); num1: 9 num2: 12 Q: 연산과정을단계별로설명하시오.

연산자소개 (9/15) 21 관계연산자 (Relational Operators) 연산자설명예 == 두피연산자의값이같은지비교같으면 true, 다르면 false!= 두피연산자의값이다른지비교다르면 true, 같으면 false > 왼쪽피연자가오른쪽보다큰지확인크면 true, 작으면 false < 왼쪽피연자가왼쪽보다작은지확인작으면 true, 크면 false >= 왼쪽피연자가오른쪽보다크거나같은지확인크거나같으면 true, 작으면 false <= 왼쪽피연자가오른쪽보다작거나같은지확인작거나같으면 true, 크면 false (A==B) is not true (A!=B) is ture (A>B) is not ture (A<B) is ture (A>=B) is not ture (A<=B) is ture 예 ) A=3; B=4; (A==B)?

연산자소개 (10/15) 22 관계연산자 (Relational Operators) 예제 int num1=10; int num2=12; int result1, result2, result3; result1=(num1==num2); result2=(num1<=num2); result3=(num1>num2); printf("result1: %d \n", result1); printf("result2: %d \n", result2); printf("result3: %d \n", result3); Results result1: 0 result2: 1 result3: 0

연산자소개 (11/15) 23 논리연산자 (Logical Operators) 연산자설명예 && 논리 AND 피연산자두개모두 0이아닐때true 논리 OR 피연산자둘중에하나만 0이아니면 ture! 논리 NOT 피연산자의논리상태를반대로변경 (A&&B) is false (A B) is ture!a is false!(a&&b) is? 예 ) A = 1, B = 0, (A&&B)?

연산자소개 (12/15) 24 논리연산자 (Logical Operators) 예제 int num1=10; int num2=12; int result1, result2, result3; result1 = (num1==10 && num2==12); result2 = (num1<12 num2>12); result3 = (!num1); printf("result1: %d \n", result1); printf("result2: %d \n", result2); printf("result3: %d \n", result3); Results result1: 1 result2: 1 result3: 0

연산자소개 (13/15) 25 콤마연산자 (,) 둘이상의변수를동시선언둘이상의문장을한행에삽입하는경우둘이상의인자를함수로전달할때도인자 int num1=1, num2=2; printf("hello "), printf("world! \n"); num1++, num2++; printf("%d ", num1), printf("%d ", num2), printf("\n"); Results Hello world! 2 3

연산자소개 (14/15) 26 연산자의우선순위와결합방향 우선순위 연산의순서에대한순위 덧셈과뺄쎔보다는곱셈과나눗셈의우선순위가높음결합방향 우선순위가동일한두연산자사이에서의연산을진행하는방향 덧셈, 뺄셈, 곱셈, 나눗셈모두결합방향이왼쪽에서오른쪽으로진행 연산자예 1. 3 + 4 * 5 6 2. 3 + 4 * 5 / 2 10 Q: 어떤순서로계산해야하는가?

연산자소개 (15/15) 27 연산자의우선순위 연산자 설명 결합방향 ( ) [ ]. -> ++ -- 함수호출 (Parentheses) 인덱스 (Brackets array subscript) 직접지정 (Member selection via object name) 간전지정 (Member selection via pointer) 후위증가, 감소 (Postfix increment/decrement) left-to-right ++ -- + -! ~ (type) * & sizeof 전위증가, 감소 (Prefix increment/decrement) 부호연산 음수, 양수 (Unary plus/minus) 논리 NOT / 비트단위 NOT (Logical negation/bitwise complement) 자료형변환 (Cast) (convert value to temporary value of type) 간전지정연산 (Dereference) 주소연산 (Address) (of operand) 바이트단위크기계산 (Determine size in bytes on this implementation) right-to-left * / % 산술연산 (Multiplication/division/modulus) left-to-right + - 산술연산 (Addition/subtraction) left-to-right << >> 비트이동 (Bitwise shift left, Bitwise shift right) left-to-right < <= 관계연산자 (Relational less than/less than or equal to) > >= 관계연산자 (Relational greater than/greater than or equal to) left-to-right ==!= 관계연산자 (Relational is equal to/is not equal to) left-to-right & 비트연산 (Bitwise AND) left-to-right ^ 비트연산 (Bitwise exclusive OR) left-to-right 비트연산 (Bitwise inclusive OR) left-to-right && 논리연산 (Logical AND) left-to-right 논리연산 (Logical OR) left-to-right? : 조건연산 (Ternary conditional) right-to-left = += -= *= /= %= &= ^= = <<= >>= 대입연산 (Assignment) Addition/subtraction assignment Multiplication/division assignment Modulus/bitwise AND assignment Bitwise exclusive/inclusive OR assignment Bitwise shift left/right assignment right-to-left, Comma (separate expressions) left-to-right

키보드입력 (1/5) 28 SimpleAddTwo 프로그램 (PPT. 10) int num1 = 3; int num2 = 4; int result = num1 + num2; printf("add result: %d \n", result); printf("%d + %d = %d \n", num1, num2, result); printf("sum of %d and %d is %d.\n", num1, num2, result); Q: 이프로그램의문제점은무엇일까요?

키보드입력 (2/5) 29 SimpleAddTwo 프로그램업그레이드 scanf 함수사용 (1) 하나의값입력받기 int num; scanf("%d", &num);... scanf 사용법 2. 입력한값을 num 변수에저장 scanf("%d", &num); 1. 10진수로사용자가입력 Q: printf 와 scanf 사용법이어떻게다른가요?

키보드입력 (3/5) 30 SimpleAddTwo 프로그램업그레이드 2 개의정수입력후합을구하는예 int result; int num1, num2; printf(" 정수 one: "); scanf("%d", &num1); printf(" 정수 two: "); scanf("%d", &num2); // 첫번째정수입력 // 두번째정수입력 result=num1+num2; printf("%d + %d = %d \n", num1, num2, result); Results 정수 one: 1 정수 two: 2 1 + 2 = 3

키보드입력 (4/5) 31 SimpleAddTwo 프로그램업그레이드 3개의정수입력후합을구하는예 Q: 값을입력할때공백을많이주거나 enter를입력하면? int result; int num1, num2, num3; printf(" 세개의정수입력 : "); scanf("%d %d %d", &num1, &num2, &num3); result = num1 + num2 + num3; printf("%d + %d + %d = %d \n", num1, num2, num3, result); Results 세개의정수입력 : 1 2 3 1 + 2 + 3 = 6

키보드입력 (5/5) 32 연습문제 scanf 함수를사용하여정수를입력받고해당하는구구단을출력 입력받은정수는 (1~9) Results 원하는구구단 (1~9): 5 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45

이장의결론 33 변수의이해 변수의사용이유, 메모리의구조 C언어의표준키워드연산자소개 연산자우선순위 키보드입력 scanf 함수