Download presentation
Presentation is loading. Please wait.
1
2019년 1월 16일 오후 6시 15분 제 6 장 함수
2
제6장 수행준거 C 프로그램에서 함수(function)의 개념과 종류를 설명할 수 있다.
함수를 이용하여 간단한 사칙 계산기 프로그램을 개발 학 수 있다.
3
제6장에서 설명은? 6.1 함수의 기본 구성 6.2 함수의 종류 6.3 함수의 호출 6.4 함수에서 결과 값 되돌려 받기
6.1 함수의 기본 구성 6.2 함수의 종류 6.3 함수의 호출 6.4 함수에서 결과 값 되돌려 받기 6.5 라이브러리 함수
4
6.1 함수의 기본 구성 (1) 함수는? (2) 함수의 기능은? ☞ 특정한 작업을 수행하도록 만들어진 하나의 독립된 프로그램
6.1 함수의 기본 구성 (1) 함수는? ☞ 특정한 작업을 수행하도록 만들어진 하나의 독립된 프로그램 (2) 함수의 기능은? ☞ 전달되는 어떤 값을 받아서 함수 코드를 수행하며, 그 결과 값을 반환
5
6.1 함수의 기본 구성 함수데이터형 함수명() { /* 함수 본체의 시작점 */ 변수 문장 } /* 함수 본체의 시작점 */
6.1 함수의 기본 구성 [사용형식] 함수데이터형 함수명() { /* 함수 본체의 시작점 */ 변수 문장 } /* 함수 본체의 시작점 */
6
6.1 함수의 기본 구성 퀴즈 풀어보기 교제 163 쪽 ( 1번 ~ 5번 )
7
6.2 함수의 종류 main function user defined function library function
8
6.2 함수의 종류 ① main 함수 ② 사용자 정의 함수 ③ 라이브러리 함수 - 하나의 프로그램 전체를 통제하는 함수
6.2 함수의 종류 ① main 함수 - 하나의 프로그램 전체를 통제하는 함수 - 하나의 프로그램 파일에 꼭 하나만 존재해야만 하는 함수 - 이 함수는 다른 함수의 호출 없이 자동으로 실행되는 함수 ② 사용자 정의 함수 - 사용자가 필요에 따라 직접 정의하여 사용하는 함수 - 이 함수는 필요한 만큼 정의하여 사용할 수 있음 - 단독으로는 독립된 역할을 못함 - 다른 함수의 호출이 있어야만 실행 - 함수의 원형을 main() 함수 위에 선언해 주어야 하는 함수 ③ 라이브러리 함수 - C언어 컴파일러 자체에서 지원해주는 함수 - 이 함수는 함수의 사용법에 따라 정의해야만 사용이 가능 - 함수의 본체가 정의된 해더파일을 포함시켜야만 사용 가능한 함수
9
6.2 함수의 종류 #include <stdio.h> void main() { char irum[20];
6.2 함수의 종류 ◀6-1.C▶ 메인 함수만으로 프로그래밍한 경우 #include <stdio.h> void main() { char irum[20]; printf("누구신가요? "); scanf("%s", irum); printf("%s 님 안녕하세요. \n", irum); } 실행결과 누구신가요? 한송이 <Enter> 한송이 님 안녕하세요.
10
6.2 함수의 종류 #include <stdio.h> void who(char name[20]);
6.2 함수의 종류 ◀6-2.C▶ 사용자정의 함수 who()를 이용한 경우 #include <stdio.h> void who(char name[20]); void main() { char irum[20]; printf("누구신가요? "); scanf("%s", irum); who( irum ); } void who( char name[20] ) printf("%s 님 안녕하세요. \n", name); 실행결과 누구신가요? 한송이 <Enter> 한송이 님 안녕하세요.
11
6.2 함수의 종류 퀴즈 풀어보기 교제 167 쪽 ( 6번 ~ 14번 )
12
6.3 함수의 호출 사용자 정의 함수와 라이브러리 함수는 다른 함수의 호출이 있어야 그 함수가 동작한다.
6.3 함수의 호출 사용자 정의 함수와 라이브러리 함수는 다른 함수의 호출이 있어야 그 함수가 동작한다. return 문이 없는 경우 return 문이 있는 경우
13
6.3 함수의 호출 (1) 리턴(return) 문이 없는 경우 #include <stdio.h>
6.3 함수의 호출 (1) 리턴(return) 문이 없는 경우 ◀6-3.C▶ 값을 전달하지 않고 호출하는 경우 #include <stdio.h> void add(); void main() { add(); } void add() int aa=10, bb=20, cc; cc = aa + bb; printf("함계: %d \n", cc); 실행결과 합계: 30
14
6.3 함수의 호출 #include <stdio.h> void add(int aa, int bb);
6.3 함수의 호출 ◀6-4.C▶ 값을 전달하면서 호출하는 경우 #include <stdio.h> void add(int aa, int bb); void main() { int a=10, b=20; add( a, b ); } void add( int aa, int bb ) int cc; cc = aa + bb; printf("합계: %d \n", cc); 실행결과 합계: 30
15
6.3 함수의 호출 (2) 리턴(return) 문이 있는 경우 #include <stdio.h> int add();
6.3 함수의 호출 (2) 리턴(return) 문이 있는 경우 ◀6-5.C▶ 값을 전달하지 않고 호출하는 경우 #include <stdio.h> int add(); void main() { int sum; sum = add(); printf("합계: %d \n", sum); } int add() int aa=10, bb=20, cc; cc = aa + bb; return( cc ); 실행결과 합계: 30
16
6.3 함수의 호출 #include <stdio.h> int add(int aa, int bb);
6.3 함수의 호출 ◀6-6.C▶ 값을 전달하면서 호출하는 경우 #include <stdio.h> int add(int aa, int bb); void main() { int sum; int a=10, b=20; sum = add( a ,b ); printf(“합계: %d \n", sum); } int add( int aa, int bb ) int cc; cc = aa + bb; return(cc); 실행결과 합계: 30
17
6.3 함수의 호출 퀴즈 풀어보기 교제 173 쪽 ( 15번 ~ 17번 )
18
6.4 함수에서 결과 값 되돌려 받기 1 개의 결과 값 되돌려 받기 여러 개의 결과 값 되돌려 받기
19
6.4 함수에서 결과 값 되돌려 받기 (1) 한 개의 결과 값 되돌려 받기 #include <stdio.h>
6.4 함수에서 결과 값 되돌려 받기 (1) 한 개의 결과 값 되돌려 받기 ◀6-7.C▶ #include <stdio.h> int add(int a, int b); void main() { int hab; hab = add( 1, 100 ); printf("합계: %d \n", hab); } int add( int a, int b ) int c=0, n; for(n=a; n<=b; n++) c = c + a; return( c ); 실행결과 합계: 5050
20
6.4 함수에서 결과 값 되돌려 받기 (2) 여러 개의 결과 값 되돌려 받기 여러 개의 결과 값을 되돌려 받기 위해서는
6.4 함수에서 결과 값 되돌려 받기 (2) 여러 개의 결과 값 되돌려 받기 여러 개의 결과 값을 되돌려 받기 위해서는 함수의 인자를 포인터(pointer)형으로 사용한다. 그 이유는 리턴(return)문을 이용하면, 하나의 결과 값만 되돌려 받기 때문이다.
21
6.4 함수에서 결과 값 되돌려 받기 #include <stdio.h>
6.4 함수에서 결과 값 되돌려 받기 ◀6-8.C▶ #include <stdio.h> void abc(int *x, int *y); void main() { int a=100, b=200; printf("호출 전: a=%d b=%d \n", a, b); abc( &a, &b ); printf("호출 후: a=%d b=%d \n", a, b); } void abc( int *x, int *y ) *x = 300; *y = 500; 실행결과 호출하기 전: a=100 b=200 호출한 후: a=300 b=500
22
6.4 함수에서 결과 값 되돌려 받기 퀴즈 풀어보기 교제 177 쪽 ( 18번 ~ 20번 )
23
6.5 라이브러리 함수 함수의 원형을 가지고 있는 헤더파일을 포함시켜야만 사용 가능한 함수이다.
6.5 라이브러리 함수 함수의 원형을 가지고 있는 헤더파일을 포함시켜야만 사용 가능한 함수이다. 문자(character) 처리 라이브러리 함수 문자열(string) 처리 라이브러리 함수 데이터 변환 라이브러리 함수 수학관련 함수 등
24
6.5 라이브러리 함수 (1) 문자 처리 함수 - 문자 처리 함수에는 문자의 종류를 구분하기 위한 is_형 함수가 있다.
6.5 라이브러리 함수 (1) 문자 처리 함수 - 문자 처리 함수에는 문자의 종류를 구분하기 위한 is_형 함수가 있다. - 그리고 문자를 변환하기 위한 to_형 함수가 정의되어 있다. - 문자처리 라이브러리함수를 이용할 때에는 ctype.h 해더파일을 포함시켜야 한다. 함수 설명 isalnum(c) isalpha(c) isdigit(c) islower(c) isupper(c) tolower(c) toupper(c) c가 영문자.(A~Z, a~z)이거나 숫자(0~9)이면 결과는 1(참)이다. c가 영문자(A~Z, a~z)이면 결과는 1(참)이다. c가 숫자(0~9)이면 1(참)이다. c가 소문자(a~z)이면 1(참)이다. c가 대문자(A~Z)이면 1(참)이다. 문자 c 를 소문자로 변환시킨다. 문자 c 를 대문자로 변환기킨다.
25
6.5 라이브러리 함수 #include <stdio.h> #include <ctype.h>
6.5 라이브러리 함수 ◀6-9.C▶ #include <stdio.h> #include <ctype.h> void main() { int n; char ch; for(n='a'; n<='z'; n++){ if( islower(n) ){ ch = toupper(n); printf("%c", ch); } 실행결과 ABCDEFGHIJKLMNOPQRSTUVWXYZ
26
6.5 라이브러리 함수 (2) 문자열 처리 함수 - 문자열을 처리하는 데 필요한 함수들이 정의되어 있다.
6.5 라이브러리 함수 (2) 문자열 처리 함수 - 문자열을 처리하는 데 필요한 함수들이 정의되어 있다. - 포함시켜야 할 해더파일은 string.h 이다. 함수 설명 strlen(s) strcpy(s1, s2) strcat(s1, s2) strcmp(s1, s2) 문자열 s 의 길이를 구해준다. 문자열 s1 에 문자열 s2 를 복사시킨다. 문자열 s1 의 뒤에 문자열 s2 를 연결한다. 문자열 s1 과 s2 의 값을 비교한다. 이때 s1>s2 이면 양수 값을, s1<s2 이면 음수 값을, s1==s2 이면 0 값을 반환한다.
27
6.5 라이브러리 함수 #include <stdio.h> #include <string.h>
6.5 라이브러리 함수 ◀6-10▶ #include <stdio.h> #include <string.h> void main() { char s1[20]="abcde", s2[20] ="ABC"; printf("(1) %s \n", s1 ); strcpy(s1, s2); printf("(2) %s \n", s1); strcat(s1, s2); printf("(3) %s \n", s1);; } 실행결과 (1) abcde (2) ABC (3) ABCABC
28
6.5 라이브러리 함수 (3) 데이터 변환 함수 - 문자열 데이터를 숫자로 변환하는 함수들이 정의되어 있다.
6.5 라이브러리 함수 (3) 데이터 변환 함수 - 문자열 데이터를 숫자로 변환하는 함수들이 정의되어 있다. - 포함시켜야 할 해더화일은 stdlib.h 이다. 함수 설명 atoi(s) atol(s) atof(s) 문자열 s를 int 형으로 변환시킨다. 문자열 s를 long int 형으로 변환시킨다. 문자열 s를 double 형으로 변환시킨다.
29
6.5 라이브러리 함수 #include <stdio.h> #include <stdlib.h>
6.5 라이브러리 함수 ◀6-11.C▶ #include <stdio.h> #include <stdlib.h> void main() { int a; double b; char s[20]=" "; printf("s=%s \n", s); a=atoi(s); printf("a=%d \n", a); b=atof(s); printf("b=%f \n", b); } 실행결과 s = a = 123 d =
30
6.5 라이브러리 함수 (4) 수학관련 함수 - 수학 상수 및 함수를 처리해주는 함수들이 정의되어 있다.
6.5 라이브러리 함수 (4) 수학관련 함수 - 수학 상수 및 함수를 처리해주는 함수들이 정의되어 있다. - 포함시켜야 할 해더화일은 math.h 이다.
31
6.5 라이브러리 함수 함수 설명 exp(x) sqrt(x) pow(x,y) sin(x) cos(x) tan(x)
6.5 라이브러리 함수 함수 설명 exp(x) sqrt(x) pow(x,y) sin(x) cos(x) tan(x) acos(x) asin(x) atan(x) sinh(x) cosh(x) tanh(x) fabs(x) fmod(x,y) log(x) log10(x) e(=2.718)의 자승을 구합니다. x의 제곱근을 구합니다. x의 y승을 구합니다. sine 값을 구합니다. cosine 값을 구합니다. tangent 값을 구합니다. arccosine 값을 구합니다. arcsine 값을 구합니다. arctangent 값을 구합니다. hyperbolic sine 값을 구합니다. hyperbolic cosine 값을 구합니다. hyperbolic tangent 값을 구합니다. x의 절대치 값을 구합니다. x/y의 나머지를 구합니다. 자연 로그 값을 구합니다. 상용 로그 값을 구합니다.
32
6.5 라이브러리 함수 #include <stdio.h> #include <math.h>
6.5 라이브러리 함수 ◀6-12.C▶ #include <stdio.h> #include <math.h> void main() { printf("2의 3승은 %f \n", pow(2.0, 3.0) ); printf("2의 제곱근은 %f \n", sqrt(2.0) ); printf("e의 3승은 %f \n", exp(3.0) ); } 실행결과 2의 3승은 2의 제곱근은 e의 3승은
33
6.5 라이브러리 함수 퀴즈 풀어보기 교제 183 쪽 ( 21번 ~ 25번 )
34
Question and Answer 제6장 끝
Similar presentations