Download presentation
Presentation is loading. Please wait.
1
프로그래밍실습 제 4 강
2
강의 내용 치환문의 사용 증감연산자와 누적치환연산자 수학식의 사용 절댓값, 나머지, 지수, 로그 함수
수학식의 사용 절댓값, 나머지, 지수, 로그 함수 삼각함수, 역삼각함수, 쌍곡선함수 수학식의 사용 수학식 사용시 주의할 점 원주율 값을 정의하여 사용하는 세 가지 방법: 관계연산자를 사용한 C에서의 대소 비교 조건문 if 의 사용 if문에서 중괄호의 사용 조건문 if … else 의 사용
3
제 3장, 수식과 연산: 치환문의 사용 (치환문의 사용) 다음 프로그램의 출력을 예상하여 보자. #include<stdio.h> main() { int a=1,b=10,c=100,d=1,e=5; a=a-1; // a-1의 값을 a변수에 다시 저장 b=b+4; c=c*d; d=d/2; e=e%3; // 나머지 연산 printf("%d %d %d %d %d\n",a,b,c,d,e); } 출력:
4
a++ 은 a=a+1 과 같은 의미이다.(즉, 현재의 a값을 1증가 시킴)
증감연산자와 누적치환연산자 a++ 은 a=a+1 과 같은 의미이다.(즉, 현재의 a값을 1증가 시킴) ++a 도 a=a+1 과 같은 의미이다.(즉, 현재의 a값을 1증가 시킴) a-- 은 a=a-1 과 같은 의미이다.(즉, 현재의 a값을 1감소 시킴) --a 도 a=a-1 과 같은 의미이다.(즉, 현재의 a값을 1감소 시킴) a+=2 는 a=a+2의 의미이다. a-=3 은 a=a-3의 의미이다. a*=4 는 a=a*4의 의미이다. a/=5 은 a=a/5의 의미이다. a%=6 는 a=a%6의 의미이다. 주의: a++ 와 ++a 의 기능이 완전히 같은 것은 아니다. (뒤의 설명 참조)
5
증감연산자와 누적치환연산자의 사용 다음 프로그램의 출력을 예상하여 보자. #include<stdio.h> main() { int a=1,b=10,c=100,d=1,e=5; a--; // a=a-1;과 같은 의미 b+=4; // b=b+4;와 같은 의미 c*=d; // c=c*d;와 같은 의미 d/=2; // d=d/2;와 같은 의미 e%=3; // e=e%3;과 같은 의미 printf("%d %d %d %d %d\n",a,b,c,d,e); } 출력:
6
a++와 ++a 차이 다음 프로그램의 출력을 예상하여 보자. #include<stdio.h> main() { int a=10,b=10,c=20,d=5,e=20,f=5; printf("a=%d ",a++); //a를 출력 후 1증가시킴 printf("a=%d ",a); printf("b=%d ",++b); //b를 1증가시킨 후 출력 printf("b=%d ",b); c+=d++; //c=c+d를 수행한 후 d를 1증가시킴 printf("c=%d d=%d ",c,d); e+=++f; //f를 1증가시킨 후 e=e+f를 수행함 printf("e=%d f=%d ",e,f); } 출력: a=10 a=11 b=11 b=11 c=25 d=6 e=26 f=6
7
수학식의 사용 수학 관련 함수를 사용하기 위해서는 math.h가 필요하다.
수학식의 사용 수학 관련 함수를 사용하기 위해서는 math.h가 필요하다. 수학식의 인자형은 원칙적으로 실수이고 계산 결과도 실수이다. 수학관련 함수를 사용하기 위해서는 해당하는 내장함수를 호출하면 된다. 연산의 우선 순위는 수학에서의 우선 순위를 그대로 따른다. 대표적인 내장함수는 다음과 같다.
8
절댓값, 나머지, 지수, 로그 함수 수학식 C언어 표현 | x | fabs(x) a를 b로 나눈 나머지 fmod(a,b)
pow(a,b) √ x sqrt(x) e x exp(x) ln x (= log e x ) log(x) log10 x log10(x) 참고: a 또는 b가 음수인 경우 fmod(a,b)의 부호는 a의 부호와 같다.
9
삼각함수, 역삼각함수, 쌍곡선함수 수학식 C언어 표현
sin x sin(x) cos x cos(x) tan x tan(x) arcsin x (= sin-1x) asin(x) arccos x (= cos-1x) acos(x) arctan x (= tan-1x) atan(x) sinh x sinh(x) cosh x cosh(x) tanh x tanh(x) 참고: sin(x), cos(x), tan(x)에서 x값은 모두 라디안(radian)이다.
10
값을 소숫점이하 10자리까지 출력하는 프로그램을 작성하라. #include<stdio.h>
수학식의 사용 (1) 값을 소숫점이하 10자리까지 출력하는 프로그램을 작성하라. #include<stdio.h> #include<math.h> main() { double a=2.,b; b=sqrt(a); printf("sqrt(%g)=%.10f\n",a,b); } 출력: sqrt(2)=
11
수학식 사용시 주의할 점 double형 변수는 입력시 변환문자로 반드시 %lf를 사용하여야 한다.
#include<math.h>를 첫머리에 포함시킨다. 실수의 절대값을 계산할 때는 fabs를 사용한다. fabs는 정수형에도 사용가능 하다. (그러나 abs는 정수형에만 사용가능하다.) 실수를 어떤 수로 나눈 나머지를 계산할 때는 fmod를 사용한다. fmod는 정수형에도 사용가능 하다. (그러나 %는 정수형에만 사용 가능하며, math.h는 포함시킬 필요없다.)
12
수학식의 사용 (2) x = 3.258일 때 f (x) = x7 + 4x2 – | x – 9 |
다음 계산을 하는 프로그램을 작성하라. x = 3.258일 때 f (x) = x7 + 4x2 – | x – | #include<stdio.h> #include<math.h> main() { double x=3.258, f; f=pow(x,7.)+4.*x*x-fabs(x-9.*sqrt(x)); printf("x=%g, f(x)=%.3f\n",x,f); } 출력: x=3.258, f(x)=
13
원주율 ( ) 값을 정의하여 사용하는 세 가지 방법:
원주율 ( ) 값을 정의하여 사용하는 세 가지 방법: 1. 변수 선언 및 직접 초기화 const double pi= ; 2. 역삼각함수의 이용 const double pi=acos(-1.); 또는 const double pi=2.*asin(1.); const double pi=4.*atan(1.); 3. 프로그램 첫머리에 선행처리기 define을 이용하는 방법: #define pi
14
x = 일 때 f (x) = 3 sin x + tan 2x + e x + ln x #include<stdio.h>
수학식의 사용 (3) 다음 계산을 하는 프로그램을 작성하라. x = 일 때 f (x) = 3 sin x + tan 2x + e x + ln x #include<stdio.h> #include<math.h> main() { double x, f; const double pi=acos(-1.);//acos을 이용한 pi 계산 x=pi/3.; f=3.*sin(x)+tan(2.*x)+exp(x)+log(x); printf("x=%.3f, f(x)=%.3f\n",x,f); } 출력: x=1.047, f(x)=3.762
15
다음 계산을 하여 소수점아래 10자리까지 출력하는 프로그램을 작성하라.
수학식의 사용 (4) 다음 계산을 하여 소수점아래 10자리까지 출력하는 프로그램을 작성하라. x = 일 때 f (x) = 3 cos x + #include<stdio.h> #include<math.h> main() { const double pi=acos(-1.);//acos을 이용한 pi 계산 double f, x=pi/3.; f=3.*cos(x)+1./2.; printf("x=%.10f, f(x)=%.10f\n",x,f); } 출력: x= , f(x)=
16
수학식의 사용 (5) double형 변수 x값을 입력 받아 다음 함수 값을 출력하는 프로그램을 작성하여 보자.
#include<stdio.h> #include<math.h> main() { double x, f; const double pi= ; //pi 선언 및 초기화 printf("실수를 입력하십시오: "); scanf("%lf",&x); f=sqrt(fabs(sin(x)))+exp(-2.*x)+pi/3.; printf("x=%g, f(x)=%.5f\n",x,f); } 입출력 예: 실수를 입력하십시오: 3.78 x=3.78, f(x)=
17
선행처리기 define을 이용하여 를 계산한 예
#include<stdio.h> #include<math.h> #define pi //끝에 세미콜론이 없음에 유의할 것 main() { double x, f; //선행처리기로 정의된 pi는 새로운 선언 없이 사용한다. printf("실수를 입력하십시오: "); scanf("%lf",&x); f=sqrt(fabs(sin(x)))+exp(-2.*x)+pi/3.; printf("x=%g, f(x)=%.5f\n",x,f); } 입출력 예: 실수를 입력하십시오: 3.78 x=3.78, f(x)= (앞 프로그램과 결과는 완전히 같다.)
18
참고: 표준적인 방법은 아니지만 MS Visual C에서는 다음과 같은 방법으로 를 비롯한 수학 상수들을 사용할 수 있다.
#include<stdio.h> #define _USE_MATH_DEFINES #include <math.h> main() { printf("pi=%.12f\n",M_PI); printf("sin(pi/6)=%g\n",sin(M_PI/6.)); printf("e=%.12f\n",M_E); } 출력: pi= sin(pi/6)=0.5 e=
19
관계연산자를 사용한 C에서의 대소 비교 a>b : a는 b보다 크다. a<b : a는 b보다 작다.
주의: 수학에서와 달리 a=b의 의미는 “b의 값을 a에 저장하라” 는 것이다. a와 b가 같다는 것을 나타내기 위해서는 반드시 두 개의 등호를 써서 a==b로 나타내야 한다. C코드: 03_00.c ~ 03_07.c 참조
20
제4장, 제어문: 조건문 if 의 사용 예: a가 2일 때만 “a는 2입니다.”를 출력하려면 다음과 같이 한다:
printf("a는 2입니다.\n"); #include<stdio.h> main() { int input; printf("정수를 입력하십시오: "); scanf("%d",&input); if(input==2) printf("입력된 정수는 2입니다.\n"); } * 입력된 정수가 2가 아니면? 아무 일도 일어나지 않는다.
21
if문에서 중괄호의 사용 If문의 조건이 만족될 때 수행되는 내용이 여러 문장 이면 중괄호{}를 이용하여 묶어준다. 예:
if(a!=0){ printf(“a는 %d입니다.\n”,a); printf(“10을 a로 나눈 나머지는 %d입니다.\n”,10%a); } 출력의 예: (a가 3일 때) a는 3입니다. 10을 a로 나눈 나머지는 1입니다. (a가 0일 때: 아무 일도 일어나지 않음)
22
조건문 if … else 의 사용 예: #include<stdio.h> main() { int input;
printf("정수를 입력하십시오: "); scanf("%d",&input); if(input==2) // input이 2인 경우 printf("입력된 정수는 2입니다.\n"); else // input이 2가 아닌 모든 경우 printf("입력된 정수는 2가 아닙니다.\n"); }
23
Square root 계산 프로그램 예: #include<stdio.h> #include<math.h>
main() { double x; printf("[[ Square root 계산 프로그램 ]]\n\n"); printf("실수를 입력하십시오: "); scanf("%lf",&x); if(x>0.) // 입력된 값이 0이상인 경우 printf("x=%g sqrt(x)=%g\n",x,sqrt(x)); else // 입력된 값이 음수인 경우 printf("입력된 수는 음수입니다.\n"); }
Similar presentations