컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -

Slides:



Advertisements
Similar presentations
03 변수와 자료형 세종대학교 최옥경 교수 참고 : 한빛미디어 뇌를 자극하는 C, INFINITY Perfect C.
Advertisements

제6장 조건문.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
데이터의 표현과 연산 (1) (Chapter 3)
제 3 장 변수와 자료형.
슬라이드 1~21까지는 각자 복습! 슬라이드 22부터는 수업시간에 복습
쉽게 풀어쓴 C언어 Express 제5장 수식과 연산자 C Express Slide 1 (of 34)
C++ Espresso 제1장 기초 사항.
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
C 프로그래밍.
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)
4장: 자료형과 수식.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
변수와 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
기초C언어 제3주 C프로그램 구성요소, 변수와 자료형 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
Chapter 4 – 연 산 자 Outline 4.1 산술 연산자 4.2 관계 연산자 4.3 동등 연산자 4.4 논리 연산자
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
Chapter 06. 선택문.
변수와 자료형.
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4주차: Data Types and Functions
5장. 상수와 기본 자료형. 5장. 상수와 기본 자료형 5-1 C 언어가 제공하는 기본 자료형 자료형(data type) 기본 자료형 사용자 정의 자료형 int val; "선언할 변수의 특징을 나타내기 위한 키워드" 기본 자료형 기본적으로 제공이 되는 자료형 사용자.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Chapter 4 수식과 연산자.
제2장 데이터형과 표준 입출력문 문봉근.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제 3 장 연산자 (Operators).
쉽게 풀어쓴 C언어 Express 제15장 전처리 및 비트연산 C Express Slide 1 (of 29)
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 05. 상수와 기본 자료형.
제어문 & 반복문 C스터디 2주차.
프로그래밍 원리 Chapter 04 자료 처리와 연산자 신한대학교 IT융합공학부 박 호 균.
Chapter 04 자료 유형.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
Chapter 11. 배열과 포인터.
Chapter 05. 입출력 함수.
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
제 3장 데이터형과 연산자 Hello!! C 언어 강성호 김학배 최우영.
학습목표 Chapter 2-1. 변수와 포인터 변수의 선언과 변수에 대한 메모리 할당을 살펴본다.
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
-Part1- 제6장 자료형이란 무엇인가.
-Part1- 제8장 조건문이란 무엇인가 (교재 199페이지 ~ 224페이지)
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express Slide 1 (of 28)
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
-Part2- 제2장 다차원 배열이란 무엇인가.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
3주차: Control Flow and Others
박성진 컴퓨터 프로그래밍 기초 [03] 변수와 자료형 박성진
C 4장. 연산자 #include <stdio.h> int main(void) { int num;
C.
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
Presentation transcript:

컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 - 김선균 (kyun@kangwon.ac.kr) 2016. 03. 10

< 목 차 > Review 과제 설명 연산자 형변환 수식과 연산자의 개념 산술 연산자 증감 연산자 대입 연산자 복합 대입 연산자 관계 연산자 논리 연산자 연산자 우선순위와 결합규칙 형변환

0. Review 상수(constant): 저장된 값의 변경이 불가능한 공간 상수의 두 종류 Ex. 기호상수의 장점 리터럴(literal) 상수: 이름이 따로 정의되지 않은 상수 기호(symbolic) 상수: 변수와 같이 이름이 정의된 상수 Ex. 기호상수의 장점 가독성이 높아진다. 값을 쉽게 변경할 수 있다.

0. Review 기호상수의 장점

0. Review 기호상수를 선언하는 방법 선언 위치 PI라는 기호를 3.14로 정의 1) #define PI 3.14 2) const int pi = 3.14; Constant(상수)임을 의미하는 예약어

0. Review 식별자 : 변수나 함수의 이름 생성규칙 변수의 이름은 알파벳, 숫자, 언더 바(_)로 구성된다. 특수문자는 불가능 ex) int abc%;(X) C언어는 대소문자를 구분한다. 따라서 Money와 money는 서로 다르다. 변수의 이름은 숫자로 시작할 수 없고, 예약어 또한 사용이 불가능 하다. int 7money;(X), int double;(X) 변수의 이름은 공백이 포함될 수 없다. int kor money;(X) 변수는 함수 맨 위에서 선언할 수 있다.

0. Review 자료형의 종류 자료형 마다 크기와 역할이 서로 다르다. 따라서 변수를 선언할 때, 값에 맞는 적절한 자료형을 선택해야 한다. 자료형 설명 바이 트수 범위 정수형 부호있음 short short형 정수 2 -32768~32767 int 정수 4 -2147483648~2147483647 long long형 정수 부호없음 unsigned short 부호없는 short형 정수 0~65535 unsigned int 부호없는 정수 0~4294967295 unsigned long 부호없는 long형 정수 문자형 char 문자 및 정수 1 -128~127 unsigned char 문자 및 부호없는 정수 0~255 부동소수점형 (실수형) float 단일정밀도 부동소수점 1.2E-38~3.4E38 double 두배정밀도 부동소수점 8 2.2E-308~1.8E308

0. Review 정수를 저장하는 자료형

0. Review 오버플로우(overflow) : 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생

0. Review 규칙성이 있다 수도 계량기나 주행거리계와 비슷하게 동작 ... - 32768 32767 32766 1 1 65534 65535 short 의 경우 unsigned short

과제 설명 #include <stdio.h> int main(void) { int money, price, change; printf("고객으로부터 받은 돈: "); scanf("%d", &money); printf("물건값: "); scanf("%d", &price); change = (money - price); printf("오천원:%d ", change / 5000); printf("천원:%d ", (change % 5000) / 1000); printf("오백원:%d ", (change % 5000 % 1000) / 500); printf("백원:%d ", (change % 5000 % 1000 % 500) / 100); printf("오십원:%d ", (change % 5000 % 1000 % 500 % 100) / 50); printf("십원:%d ", (change % 5000 % 1000 % 500 % 100 % 50) / 10); return 0; }

1. 연산자 연산자의 분류 연산자 의미 대입 = 오른쪽을 왼쪽에 대입 산술 + - * / % 사칙연산과 나머지 연산 부호   증감 ++ -- 증가, 감소 연산 관계 > < == != >= <= 오른쪽과 왼쪽을 비교 논리  && || ! 논리적인 AND, OR 조건 ? 조건에 따라 선택 콤마 , 피연산자들을 순차적으로 실행 비트 단위 연산자 & | ^ ~ << >> 비트별 AND, OR, XOR, 이동, 반전 sizeof 연산자 sizeof 자료형이나 변수의 크기를 바이트 단위로 반환 형변환 (type) 변수나 상수의 자료형을 변환 포인터 연산자 * & [] 주소계산, 포인터가 가리키는 곳의 내용 추출 구조체 연산자 .  -> 구조체의 멤버 참조

1. 연산자 피연산자의 수에 따른 분류 이항 연산자: 피연산자의 수가 2개 삼항 연산자: 연산자의 수가 3개 단항 연산자: 피연산자의 수가 1개 이항 연산자: 피연산자의 수가 2개 삼항 연산자: 연산자의 수가 3개 ++x; --y; x + y x - y x ? y : z

1. 산술 연산자 x+y x-y x*y x/y x%y Ex. 13%5 = 3 덧셈, 뺄셈, 곱셈, 나눗셈 등의 사칙 연산을 수행하는 연산자 Ex. 13%5 = 3 연산자 기호 의미 덧셈 x+y x와 y를 더한다 뺄셈 x-y x에서 y를 뺀다. 곱셈 x*y x와 y를 곱한다. 나눗셈 x/y x를 y로 나눈다. 나머지 x%y x를 y로 나눌 때의 나머지 값

1. 산술 연산자 초단위의 시간을 입력하시요:(32억초이하) 70 70초는 1분 10초 입니다. // 나머지 연산자 프로그램 #include <stdio.h> #define SEC_PER_MINUTE 60  // 1분은 60초 int main(void) {        int input, minute, second;        printf("초단위의 시간을 입력하시요:(32억초이하) ");        scanf("%d", &input);         // 초단위의 시간을 읽는다.         minute = input / SEC_PER_MINUTE; // 몇 분        second = input % SEC_PER_MINUTE; // 몇 초        printf("%d초는 %d분 %d초입니다. \n", input, minute, second);        return 0; } 초단위의 시간을 입력하시요:(32억초이하) 70 70초는 1분 10초 입니다.

1. 증감 연산자 ++x x++ --x x-- 증가 및 감소하는 값은 1이다. 증감 연산자 의미 수식의 값은 증가된 x값이다.

1. 증감 연산자

1. 대입 연산자(배정, 할당 연산자) 왼쪽에 있는 변수에 오른쪽의 수식의 값을 계산하여 대입 Ex) z = x + y; 변수(variable) = 수식(expression);

1. 대입 연산자(배정, 할당 연산자) 대입 연산자 주의점 x = x + 1; 100 = x + y; //컴파일 오류(등호의 왼편이 변수가 아니기 때문에 잘못된 수식!) x = x + 1; 변수의 값을 1만큼 증가시킨다.

1. 대입 연산자(배정, 할당 연산자) /* 대입 연산자 프로그램 */ #include <stdio.h> int main(void) {         int x, y;         x = 1;         printf("수식 x+1의 값은 %d\n", x+1);         printf("수식 y=x+1의 값은 %d\n", y=x+1);         printf("수식 y=10+(x=2+7)의 값은 %d\n", y=10+(x=2+7));         printf("수식 y=x=3의 값은 %d\n", y=x=3);                  return 0; } 수식 x+1의 값은 2 수식 y=x+1의 값은 2 수식 y=10+(x=2+7)의 값은 19 수식 y=x=3의 값은 3

x += y 1. 복합 대입 연산자 복합 대입 연산자란 += 처럼 대입연산자 ‘=‘와 산술 연산자를 합쳐놓은 연산자 복합 대입 연산자란 += 처럼 대입연산자 ‘=‘와 산술 연산자를 합쳐놓은 연산자 소스를 간결하게 만들 수 있다! x = x + y와 의미가 같음! x += y

1. 복합 대입 연산자 복합 대입 연산자 의미 x += y x = x + y x -= y x = x - y x *= y

1. 복합 대입 연산자

x == y x y 1. 관계 연산자 두개의 피연산자를 비교하는 연산자 결과값은 참(1) 아니면 거짓(0)

1. 관계 연산자 연산자 의미 x == y x와 y가 같은가? x != y x와 y가 다른가? x > y

1. 관계 연산자 #include <stdio.h> int main(void) { int x, y; printf("두개의 정수를 입력하시오: "); scanf("%d%d", &x, &y); printf("x == y의 결과값: %d", x == y); printf("x != y의 결과값: %d", x != y); printf("x > y의 결과값: %d", x > y); printf("x < y의 결과값: %d", x < y); printf("x >= y의 결과값: %d", x >= y); printf("x <= y의 결과값: %d", x <= y); return 0; } 두개의 정수를 입력하시오: 3 4 x == y의 결과값: 0 x != y의 결과값: 1 x > y의 결과값: 0 x < y의 결과값: 1 x >= y의 결과값: 0 x <= y의 결과값: 1

1. 논리 연산자 p && q 여러 개의 조건을 조합하여 참과 거짓을 따지는 연산자 결과값은 참(1) 아니면 거짓(0) x와 y가 모두 참인 경우에만 참이 된다. p && q

1. 논리 연산자 연산자 의미 x && y AND 연산, x와 y가 모두 참이면 참, 그렇지 않으면 거짓 x || y OR 연산, x나 y중에서 하나만 참이면 참, 모두 거짓이면 거짓 !x NOT 연산, x가 참이면 거짓, x가 거짓이면 참

1. 논리 연산자 AND 연산자 OR 연산자

2 1 1. 논리 연산자(계산과정) == 논리 연산의 결과값은 항상 1또는 0이다. Ex) (1==2)||(2==2) || 1 || 2 == 0이 아닌 값을 참으로 취급하지만 논리 연산의 결과값은 항상 1또는 0이다.

1. 논리 연산자 피연산자의 값이 참이면 연산의 결과값을 거짓으로 만들고, 피연산자의 값이 거짓이면 연산의 결과값을 참으로 만든다. result = !; // result에는 0이 대입된다. result = !(2==3); // result에는 1이 대입된다.

1. 논리 연산자 논리 연산자의 예 “x는 1 ,2 ,3 중의 하나인가” “x는 60이상 100미만이다.” (x==1) || (x==2) || (x==3) “x는 60이상 100미만이다.” (x>=60) && (x<100) “x가 0이 아니고 1도 아니다.” (x != 0) && (x != 1) // x≠0 이고 x≠1이다.

1. 논리 연산자 #include <stdio.h> int main(void) { int x, y; printf("두개의 정수를 입력하시오: "); scanf("%d%d", x, &y); printf("%d && %d의 결과값: %d", x, y, x && y); printf("%d || %d의 결과값: %d", x, y, x || y); printf("!%d의 결과값: %d", x, !x); return 0; } 두개의 정수를 입력하시오: 1 0 1 && 0의 결과값: 0 1 || 0의 결과값: 1 !1의 결과값: 0

1. 연산자의 우선순위 어떤 연산자를 먼저 계산할 것인지에 대한 규칙 우선순위가 같을 때는 결합규칙에 따름

1. 연산자의 우선순위

1. 연산자의 우선순위 어떤 연산자를 먼저 계산할 것인지에 대한 규칙

1. 연산자의 우선순위 콤마 < 대입 < 논리 < 관계 < 산술 < 단항 괄호 연산자는 가장 우선순위가 높다. 모든 단항 연산자들은 이항 연산자들보다 우선순위가 높다. 콤마 연산자를 제외하고는 대입 연산자가 가장 우선순위가 낮다. 연산자들의 우선 순위가 생각나지 않으면 괄호를 이용 ( x <= 10 ) && ( y >= 20 ) 관계 연산자나 논리 연산자는 산술 연산자보다 우선순위가 낮다. x + 2 == y + 3

1. 결합 규칙 2 * 5 % ① 10 3 ② 1 x = y z ③

1. 연산자의 우선순위

2. 형변환 연산시에 데이터의 유형이 변환되는 것 대입연산시 형변환 자동적인 형변환 정수연산시 형변환 수식연산시 형변환 형변환 명시적인 형변환

2. 형변환 대입 연산시 자동적인 형변환이 된다. 올림변환 내림변환 double f; f = 10 ; // f에는 10.0이 저장된다. int i; i = 3.141592; // i에는 3이 저장된다.

2. 형변환 #include <stdio.h> int main(void) { char c; int i;         float f;                  c = 10000;            // 내림 변환         i = 1.23456 + 10;    // 내림 변환         f = 10 + 20;          // 올림 변환         printf("c = %d, i = %d, f = %f \n", c, i, f); return 0; } c=16, i=11, f=30.000000

2. 형변환 정수 연산시 char형이나 short형의 경우, 자동적으로 int형으로 변환하여 계산한다. 서로 다른 자료형이 혼합하여 사용되는 경우, 더 큰 자료형으로 통일 된다.

2. 형변환 1.23456 1.23456 형변환(type cast) : 사용자가 데이터의 타입을 변경하는 것 (int) 1.23456 // double형으로 변환 (double) x // double형으로 변환 (long) (x+y) // long형으로 변환 1.23456 1 1.23456 (int)

2. 형변환 int i; double f; f = 5 / 4; f = (double)5 / 4; f = (double)5 / (double)4;  i = 1.3 + 1.8;                i = (int)1.3 + (int)1.8;    정수형 변수 i 선언 부동 소수점형 변수 f 선언 (정수/ 정수)는 정수지만 f에 저장되면서 1.0으로 변환된다.                    5를 부동소수점으로 변환하여 계산, 전체는 부동소수점형이 됨 4를 부동소수점으로 변환하여 계산, 전체는 부동소수점형이 됨 5와 4를 모두 부동소수점으로 변환하여 계산 1.3+1.8은 3.1로 계산되고 정수형 변수에 대입되므로 i는 3 (int)1.3 + (int)1.8은 1+1로 되어서 i는 2

실습 #1 윤년을 판단하는 문제 윤년의 조건 연도가 4로 나누어 떨어지지만 100으로는 나누어 떨어지지 않는 연도 400으로 나누어 떨어지는 연도는 윤년이다.

실습 #1

실습 #2 1 -1 1 -1 #include <stdio.h> int main(void) {        int x=0, y=0; int result; result = 2 > 3 || 6 > 7; printf("%d", result); result = 2 || 3 && 3 > 2; result = x = y = 1; result = - ++x + y--; return 0; } 1 -1 1 -1

실습 #3 // 나머지 연산자 프로그램 #include <stdio.h> #define SEC_PER_MINUTE 60  // 1분은 60초 int main(void) {        int input, minute, second;        printf("초단위의 시간을 입력하시요:(32억초이하) ");        scanf("%d", &input);         // 초단위의 시간을 읽는다.         minute = input / SEC_PER_MINUTE; // 몇 분        second = input % SEC_PER_MINUTE; // 몇 초        printf("%d초는 %d분 %d초입니다. \n", input, minute, second);        return 0; }

조건문 - if if 문의 사용 – 만약에 (조건)을 만족한다면...? 사용법 if 문을 사용한 예 if( 조건 ) { 조건 만족 시 내용 } int time = 5; if(time <= 4) { printf(“time은 4보다 작거나 같다.\n”); }

조건문 – if-else else 문의 사용 – 그렇지 않다면...? else는 단독으로 사용될 수 없음. if 문과 함께 사용 if 문에서 조건을 만족하지 않았을 때 처리되는 내용이 실행 if-else의 사용의 예 if( age < 20 ) { printf(“당신은 성인이 아닙니다.\n”); } else { printf(“당신은 성인입니다.\n”);

2. 조건문 – if-else 예제

3. 조건문 – else if else if 문의 사용 – 여러 경우일 때 사용 조건의 경우가 여러 경우일 때 사용한다.

조건문 – else if 예제

과제 #2

과제 #2 #include <math.h> 헤더파일 추가 제곱근 함수와 제곱 함수를 사용! 작성한 학생은 kyun@kangwon.ac.kr로 보내주세요 메일 제목 : [학번][이름] 과제#2 4월 3일 까지 제출해주세요

4. Q&A