Presentation is loading. Please wait.

Presentation is loading. Please wait.

쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)

Similar presentations


Presentation on theme: "쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)"— Presentation transcript:

1 쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)

2 모듈의 개념 모듈(module) 독립되어 있는 프로그램의 일부분 모듈러 프로그래밍 모듈 개념을 사용하는 프로그래밍 기법
모듈러 프로그래밍의 장점 각 모듈들은 독자적으로 개발 가능 다른 모듈과 독립적으로 변경 가능 유지 보수가 쉬워진다. 모듈의 재사용 가능 C에서는 모듈==함수 Slide 2 (of 26)

3 함수의 개념 함수(function): 특정한 작업을 수행하는 독립적인 부분
함수 호출(function call): 함수를 호출하여 사용하는 것 함수는 입력을 받으며 출력을 생성한다. Slide 3 (of 26)

4 함수들의 연결 프로그램은 여러 개의 함수들로 이루어진다. 함수 호출을 통하여 서로 서로 연결된다.
제일 먼저 호출되는 함수는 main()이다. Slide 4 (of 26)

5 함수의 종류 Slide 5 (of 26)

6 함수의 정의 반환형(return type) 함수 헤더(function header) 함수 몸체(function body)
Slide 6 (of 26)

7 함수의 구조 Slide 7 (of 26)

8 예제 #1 정수의 제곱값을 계산하는 함수 반환값: int 함수 이름: square 매개 변수: int n
{   return(n*n); } Slide 8 (of 26)

9 예제 #2 두개의 정수중에서 큰 수를 계산하는 함수 반환값: int 함수 이름: get_max
매개 변수: int x, int y int get_max(int x, int y) {   if( x > y ) return(x);   else return(y); } Slide 9 (of 26)

10 예제 #3 정수의 절대값을 계산하는 함수 반환값: int 함수 이름: absolute 매개 변수: int x
{   if( x > 0 )         return x;    else         return -x; } Slide 10 (of 26)

11 함수 호출과 반환 함수 호출(function call): 함수를 사용하기 위하여 함수의 이름을 적어주는 것
함수안의 문장들이 순차적으로 실행된다. 문장의 실행이 끝나면 호출한 위치로 되돌아 간다. 결과값을 전달할 수 있다. Slide 11 (of 26)

12 인수와 매개 변수 인수(argument): 실인수, 실매개 변수라고도 한다.
매개 변수(parameter): 형식 인수, 형식 매개 변수라고도 한다. #include <stdio.h> int add(int x, int y) {         return (x + y); } int main(void)         // 2와 3이 add()의 인수가 된다.         add(2, 3);          // 5와 6이 add()의 인수가 된다.         add(5, 6);          return 0; Slide 12 (of 26)

13 반환값 반환값(return value): 호출된 함수가 호출한 곳으로 작업의 결과값을 전달하는 것
인수는 여러 개가 가능하나 반환값은 하나만 가능 return 0; return(0); return x; return x+y; return x*x+2*x+1; Slide 13 (of 26)

14 함수 원형 함수 원형(function prototyping): 컴파일러에게 함수에 대하여 미리 알리는 것 함수 원형
// 정수의 제곱을 계산하는 함수 예제 #include <stdio.h> int square(int n);                          // 함수 원형 int main(void) {         int i, result;         for(i = 0; i < 5; i++)         {                 result = square(i);         // 함수 호출                 printf("%d \n", result);         }         return 0; } int square(int n)                           // 함수 정의         return(n * n); 함수 원형 Slide 14 (of 26)

15 함수 원형을 사용하지 않는 예제 #include <stdio.h> // 함수 정의
int compute_sum(int n) {         int i;         int result = 0;         for(i = 1; i <= n; i++)                 result += i;         return result; } int main(void)         int n, sum;         printf("정수를 입력하시오: ");         scanf("%d", &n);         sum = compute_sum(n);               // 함수 사용         printf("1부터 %d까지의 합은 %d입니다. \n", n, sum); return 0; 정수를 입력하시오: 10 1부터 10까지의 합은 55입니다. Slide 15 (of 26)

16 함수 원형과 헤더 파일 보통은 헤더 파일에 함수 원형이 선언되어 있음 Slide 16 (of 26)

17 다중 소스 프로그램 함수 원형 정의는 헤더 파일에 들어 있고 여러 파일에서 헤더 파일을 포함 Slide 17 (of 26)

18 다중 소스 프로그램 예제 common.h main.c // 헤더 파일 #include <stdio.h>
#define MAX_INPUT  30 int get_integer(void); int combination(int n, int r); int factorial(int n); main.c // 수학적인 조합값을 구하는 예제 #include "common.h" int main(void) {         int a, b;         a = get_integer();         b = get_integer();         printf("C(%d, %d) = %d \n", a, b, combination(a, b));         return 0; } Slide 18 (of 26)

19 다중 소스 프로그램 예제 combination.c factorial.c // 수학적인 조합값을 계산
#include "common.h" int combination(int n, int r) {         return (factorial(n)/(factorial(r) * factorial(n-r))); } factorial.c // 팩토리얼 계산 #include "common.h" int factorial(int n) {         int i;         long result = 1;         for(i = 1; i <= n; i++)                 result *= i;         // result = result * i         return result; } Slide 19 (of 26)

20 다중 소스 프로그램 예제 get_input.c // 사용자로부터 정수를 입력받는 함수 정의 #include "common.h"
int get_integer(void) {         int n;         printf("정수를 입력하시오: ");         scanf("%d", &n);         return n; } Slide 20 (of 26)

21 라이브러리 함수 라이브러리 함수(library function): 컴파일러에서 제공하는 함수 표준 입출력 수학 연산
문자열 처리 시간 처리 오류 처리 데이터 검색과 정렬 Slide 21 (of 26)

22 수학 라이브러리 함수 Slide 22 (of 26)

23 예제 // 삼각 함수 라이브러리 #include <math.h> sin( 1.570796 ) = 1.000000
#include <stdio.h> int main( void ) {         double pi = ;         double x, y;         x = pi / 2;         y = sin( x );         printf( "sin( %f ) = %f\n", x, y );         y = sinh( x );         printf( "sinh( %f ) = %f\n",x, y );         y = cos( x );         printf( "cos( %f ) = %f\n", x, y );         y = cosh( x );         printf( "cosh( %f ) = %f\n",x, y ); } sin( ) = sinh( ) = cos( ) = cosh( ) = Slide 23 (of 26)

24 난수 생성 라이브러리 함수 rand() 난수를 생성하는 함수 0부터 RAND_MAX까지의 난수를 생성 // 난수 생성 프로그램
#include <stdlib.h> #include <stdio.h> #include <time.h> // n개의 난수를 화면에 출력한다. void get_random( int n ) {         int i;         for( i = 0; i < n; i++ )                 printf( "  %6d\n", rand() ); } int main( void )         // 일반적으로 난수 발생기의 시드(seed)를 현재 시간으로 설정한다.         // 현재 시간은 수행할 때마다 달라지기 때문이다.         srand( (unsigned)time( NULL ) );         get_random( 10 );         return 0;    21783    14153     4693    13117    21900    19957    15212    20710     4357    16495 Slide 24 (of 26)

25 함수를 사용하는 이유 소스 코드의 중복을 없애준다. 한번 만들어진 함수를 여러 번 호출하여 사용할 수 있다.
한번 작성된 함수를 다른 프로그램에서도 사용할 수 있다. 복잡한 문제를 단순한 부분으로 분해할 수 있다. void print_heading(void) {   printf("*************************************");   printf("  NAME    ADDRESS      PHONE         "); } int main(void)   // 출력이 필요한 위치 #1   print_heading();    ...   // 출력이 필요한 위치 #2 int main(void) { ... read_list(); sort_list(); print_list(); } Slide 25 (of 26)

26 Q & A Slide 26 (of 26)


Download ppt "쉽게 풀어쓴 C언어 Express 제8장 함수 C Express Slide 1 (of 26)"

Similar presentations


Ads by Google