• 검색 결과가 없습니다.

수식

N/A
N/A
Protected

Academic year: 2022

Share "수식"

Copied!
37
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

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

천인국지음을 발췌 수정하였음

프로그래밍개론및 실습

(2)

CHAPTER 8

컴퓨터로 수식계산하기

(3)

수식

수식(expression)

상수, 변수, 연산자의 조합

연산자와 피연산자로 나누어진다.

(4)

산술 연산자

산술 연산: 컴퓨터의 가장 기본적인 연산

덧셈, 뺄셈, 곱셈, 나눗셈 등의 사칙 연산을 수행하는 연산자

연산자 기호 의미

덧셈

x+y

x와 y를 더한다

뺄셈

x-y

x에서 y를 뺀다.

곱셈

x*y

x와 y를 곱한다.

나눗셈

x/y

x를 y로 나눈다.

나머지

x%y

x를 y로 나눌 때의 나머지값

(5)

나눗셈 연산자

정수형끼리의 나눗셈에서는 결과가 정수형으로 생성하고 부동소수 점형끼리는 부동소수점 값을 생성된다.

정수형끼리의 나눗셈에서는 소수점 이하는 버려진다.

(6)

예제

#include <stdio.h>

int main() {

int x, y, result;

printf("두 개의 정수를 입력하시오: ");

scanf("%d %d", &x, &y);

result = x + y;

printf("%d + %d = %d", x, y, result);

result = x - y; // 뺄셈

printf("%d - %d = %d", x, y, result);

result = x * y; // 곱셈

printf("%d + %d = %d", x, y, result);

result = x / y; // 나눗셈

printf("%d / %d = %d", x, y, result);

return 0;

}

두 개의 정수를 입력하시오: 7 4 7 + 4 = 11

7 - 4 = 3 7 + 4 = 28 7 / 4 = 1

(7)

나머지 연산자

나머지 연산자(modulus operator)는 첫 번째 피연산자를 두 번째 피 연산자로 나누었을 경우의 나머지를 계산

10 % 2는 0이다.

5 % 7는 5이다.

30 % 9는 3이다.

나머지 연산자를 이용한 짝수와 홀수를 구분

x % 2가 0이면 짝수

나머지 연산자를 이용한 5의 배수 판단

x % 5가 0이면 5의 배수

(8)

나머지 연산자

#include <stdio.h>

int main(void) {

int remainder;

int n;

printf("정수를 입력하시오: ");

scanf("%d", &n);

remainder = n % 2;

printf("2로 나누었을 때 나머지=%d \n", remainder);

return 0;

}

(9)

핵심예제 : 몫과 나머지 구하기

사용자로부터 2개의 정수를 입력 받아서 첫 번째 정수를 두 번째 정 수로 나눈 몫과 나머지를 계산하여 출력하여 본다.

#include <stdio.h>

int main(void) {

int remainder;

int n;

printf("정수를 입력하시오: ");

scanf("%d", &n);

remainder = n % 2;

printf(“ %d \n", remainder);

return 0;

}

(10)

핵심예제소스

#include <stdio.h>

int main(void) {

int x, y, q, r;

printf("2개의 정수를 입력하시오(예 9 2): ");

scanf("%d %d", &x, &y);

q = x / y;

r = x % y;

printf("몫은 %d입니다. ", q);

printf("나머지는 %d입니다. ", r);

return 0;

}

(11)

핵심예제 : 거스름돈 계산 프로그램

상점에서 고객이 상품을 사고 돈을 냈을 경우에 거스름돈을 계산해주 는 프로그램을 작성하여 보자.

(12)

핵심예제소스

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

}

(13)

수식에서의 자동적인 형변환

서로 다른 자료형이 혼합하여 사용되는 경우, 더 큰 자료형으로 통일 된다.

(14)

명시적인 형변환

형변환(type cast): 사용자가 데이터의 타입을 변경하는 것

 (int) 1.23456

// double형으로 변환

(double) x // double형으로 변환

(long) (x+y) // long형으로 변환

(15)

예제

#include <stdio.h>

int main(void) {

int i;

printf("%d\n", 3/2);

printf("%f\n", 3.0/2);

printf("%f\n", (double)3/ 2);

i = (int)1.3+ (int)1.8;

printf("%d\n", i);

return 0;

}

(16)

Lab: 화씨 온도를 섭씨로 바꾸기

섭씨온도 5

9 화씨온도 32

(17)

#include <stdio.h>

int main(void) {

double f_temp;

double c_temp;

printf("화씨온도를 입력하시오");

scanf("%lf", &f_temp);

c_temp = 5 / 9 * (f_temp - 32);

printf("섭씨온도는 %f입니다, c_temp);

return 0;

}

잘못된 부분은 어디에 ?

(18)

#include <stdio.h>

int main(void) {

double f_temp;

double c_temp;

printf("화씨온도를 입력하시오");

scanf("%lf", &f_temp);

c_temp = 5.0 / 9.0 * (f_temp - 32);

printf("섭씨온도는 %f입니다, c_temp);

return 0;

}

잘못된 부분은 어디에 ?

화씨온도를 입력하시오: 90 섭씨온도는 0.000000입니다 .

(19)

증감 연산자

증감 연산자: ++, --

변수의 값을 하나 증가시키거나 감소시키는 연산자

(20)

증감 연산자 정리

증감 연산자 의미

++x

수식의 값은 증가된 x값이다.

x++

수식의 값은 증가되지 않은 원래의 x값이다.

--x

수식의 값은 감소된 x값이다.

x--

수식의 값은 감소되지 않은 원래의 x값이다.

(21)

예제

#include <stdio.h>

int main(void) {

int x=5, y=5;

++x;printf("x=%d", x);

--y;

printf("y=%d", y);

return 0;

}

(22)

대입 (배정, 할당) 연산자

왼쪽에 있는 변수에 오른쪽의 수식의 값을 계산하여 대입

(예) z = x + y;

변수(variable) = 수식(expression);

(23)

대입 연산자 주의점

100 = x + y;

// 컴파일 오류!

(24)

대입 연산자 주의점

x = x + 1;

변수의 값을 1 만큼 증가시킨다.

(25)

복합 연산자

복합 연산자란 +=처럼 대입연산자 =와 산술연산자를 합쳐 놓은 연산자

소스를 간결하게 만들 수 있음

x += y

x = x + y와 의미가 같음!

(26)

복합 대입 연산자

복합 대입 연산자 의미

x += y x = x + y x -= y x = x - y

x *= y x = x * y

x /= y x = x / y

x %= y x = x % y

(27)

복합 대입 연산자

// 복합 대입 연산자 프로그램

#include <stdio.h>

int main(void) {

int x = 5, y = 5;

x += 1;

y *= 2;

printf("x = %d y = %d \n", x, y);

return 0;

}

x = 11 y = 20

(28)

핵심예제 : 구의 부피

구의 부피를 계산하는 프로그램을 작성하여 보자. 구의 부피는 다음 과 같은 공식으로 계산된다.

4 3

(29)

핵심 예제 소스

#include <stdio.h>

int main(void) {

double volume;

double radius = 3;

const double PI = 3.141592;

volume = 4.0 * PI * (radius * radius * radius)/ 3.0;

printf( "구의 부피: %f", volume );

return 0;

}

(30)

우선 순위

어떤 연산자를 먼저 계산할 것인지에 대한 규칙

(31)

우선 순위

우선 순위 연산자 결합 규칙

1 () [] -> . ++(후위) --(후위) ->(좌에서 우)

2 sizeof &(주소) ++(전위) --(전위) ~ ! *(역참조) +(부호) -(부호),

형변환 <-(우에서 좌)

3 *(곱셈) / % ->(좌에서 우)

4 +(덧셈) -(뺄셈) ->(좌에서 우)

5 << >> ->(좌에서 우)

6 < <= >= > ->(좌에서 우)

7 == != ->(좌에서 우)

8 &(비트연산) ->(좌에서 우)

9 ^ ->(좌에서 우)

10 | ->(좌에서 우)

11 && ->(좌에서 우)

12 || ->(좌에서 우)

13 ?(삼항) <-(우에서 좌)

14 = += *= /= %= &= ^= |= <<= >>= <-(우에서 좌)

15 ,(콤마) ->(좌에서 우)

(32)

우선 순위의 일반적인 지침

콤마 < 대입 < 논리 < 관계 < 산술 < 단항

괄호 연산자는 가장 우선순위가 높다.

모든 단항 연산자들은 이항 연산자들보다 우선순위가 높다.

콤마 연산자를 제외하고는 대입 연산자가 가장 우선순위가 낮다.

연산자들의 우선 순위가 생각나지 않으면 괄호를 이용

( x <= 10 ) && ( y >= 20 )

관계 연산자나 논리 연산자는 산술 연산자보다 우선순위가 낮다.

x + 2 == y + 3

(33)

결합 규칙

만약 같은 우선순위를 가지는 연산자들이 여러 개가 있으면 어떤 것 을 먼저 수행하여야 하는가의 규칙

: *와 %의 우선순위가

같으므로 왼쪽에서 오른쪽으로 연산을 수행한다.

(34)

결합 규칙

만약 같은 우선순위를 가지는 연산자들이 여러 개가 있으면 어떤 것 을 먼저 수행하여야 하는가의 규칙

= 연산자는 오른쪽 우선 결합이므로

오른쪽부터 계산된다.

(35)

Lab: 탄도 위치 계산

구의 부피를 계산하는 프로그램을 작성하여 보자. 구의 부피는 다음 과 같은 공식으로 계산된다.

(36)

탄도의 위치 (x, y)를 계산하는 식

0.5 ∗ ∗

(37)

핵심 예제 소스

#include<stdio.h>

intmain(void) {

doublex, y, t;

const doubleg = 9.8;

const doublevx = 20.0;

const doublevy = 20.0;

const doublex0 = 0.0;

const doubley0 = 0.0;

t = 1.0;

x = x0 + vx*t;

y = y0 + vy*t - 0.5*g*t*t;

printf("1초후의 위치=(%f, %f) ", x, y);

t = 2.0;

x = x0 + vx*t;

y = y0 + vy*t - 0.5*g*t*t;

printf("2초후의 위치=(%f, %f) ", x, y);

t = 3.0;

x = x0 + vx*t;

y = y0 + vy*t - 0.5*g*t*t;

printf("3초후의 위치=(%f, %f) ", x, y);

return0;

}

참조

관련 문서

인간의 단기기억은 한정된 자원을 가지고 있어 언어이해 과정에서 결 정적 변수로 작용할 수 있다. 장기기억에 저장된 다양한 지식들은 어떻게 구조화되

• 기업은 고객이 원하는 상품을 원하는 시간에 원하는 양만큼 원하는 곳에 서 얻을 수 있도록 , 물류와 재고 비용 등의 거래비용을 경감하는 유통경로 를

It is difficult to foresee any end to the necessity for this task in the immediate future, but then one never can tell, After the procedure is completed

리츠회사(REITs, 부동산 투자신탁)는 투자자의 돈을 모아 부동산에 투자하고, 그 수익을 배 당형식으로 돌려주는 회사이다. 하지만 COVID-19 상황이 지속되면서

○ 식품 관련 경제 주체들에 영향을 주는 외부 요인은 사회경제적 요인 및 전 지구적 환경 요인으로 구성, 이 중 외부요인들은 식품시스템 내 경제주체의 활동과 식량안보,

그리고 주사위를 던져 자신이 선택한 눈이 나오면 베팅한 만 큼 돈을 따고, 반대의 눈이 나오면 그 만큼 돈을 잃는 간단한 방식 이었다.. 게임은 밤새

 거짓말탐지기가 유·무죄를 가리는 결정적 도구가 되지 못한다는 사실을 알면서도 오는 26 일 서울시장 보궐선거를 앞두고 벌어지고 있는 후보진영 간

언어 혹은 사고의 우월성을 확인할 수 있는 한국어 문 화권의 예는 무엇이 있는가. 사고에서 활용되는 언어외적