1 / 18

함수의 활용 - 프로그램의 모듈화

Module 1. Module 2. Module 3. Module 4. Module 5. Module 6. 함수의 활용 - 프로그램의 모듈화. 수 천 , 수 만 라인의 대규모 프로그램을 하나의 단위로 모두 구현하기는 불가능하다 . 즉 프로그램을 쉽게 다룰 수 있고 개별적으로 구현 가능한 단위 ( 모듈 ) 로 나누어 작성한다 . 프로그램 모듈화 ( 조립식 설계 ) 프로그램을 여러 개의 모듈들로 분리 어느 하나의 모듈이 작성되기 전에 전체 프로그램의 설계가 가능함. taxes( ). net_pay( ).

Download Presentation

함수의 활용 - 프로그램의 모듈화

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Module 1 Module 2 Module 3 Module 4 Module 5 Module 6 함수의 활용 - 프로그램의 모듈화 • 수 천, 수 만 라인의 대규모 프로그램을 하나의 단위로 모두 구현하기는 불가능하다. • 즉 프로그램을 쉽게 다룰 수 있고 개별적으로 구현 가능한 단위(모듈)로 나누어 작성한다. • 프로그램 모듈화(조립식 설계) • 프로그램을 여러 개의 모듈들로 분리 • 어느 하나의 모듈이 작성되기 전에 전체 프로그램의 설계가 가능함 C Program-I Review

  2. taxes( ) net_pay( ) gross_pay() output() C 언어의 모듈화 • 모듈화의 장점 • 코드의 재사용성이 높다. • 판독성이 높아진다. • 오류 수정이 쉽다. • 여러 프로그래머들의 협동작업이 가능하다. • C 언어에서는 각 모듈을 함수 형태로 구현한다. C Program-I Review

  3. 여러 개의 함수를 가진 프로그램 • 함수(Function)은 C 프로그램을 만드는 모듈이다. • 현재까지 프로그램 예제들은 오직 main() 함수만 포함하고 있었다.(main도 하나의 함수이다) • 일반적인 C 프로그램은 여러 개의 함수로 구성된다. • 예) int main(void) { … func1(); i = func2(); return 0; } void func1(void) { …….. } int func2(void) { …….. } C Program-I Review

  4. 함수의 호출 순서 • 하나의 프로그램에는 하나의 main() 함수가 존재한다. • 항상 main() 함수부터 시작하고, main()함수에서 끝난다. • 다른 함수를 호출하면 그 호출된 함수를 수행 • 호출된 함수의 수행이 끝나면, 다시 원래 함수(호출하였던)의 다음 문장으로 복귀 void func1(void) { printf(“like “); } void func2(void) { printf(“program“); func3(); } void func3(void) { printf(“ !!!!“); } #include <stdio.h> int main(void) { printf(“\n I “); func1(); printf(“ C “); func2(); return 0; } C Program-I Review

  5. First Number Second Number a * b Result 함수의 인수(입력) 및 리턴 값(출력) • 함수의 인수 전달 및 리턴 값 • 호출하는 문장은 호출되는 함수에게 인수(함수의 입력)를 전달할 수 있다. • 호출되는 함수(피함수)는 자신을 호출한 문장에게 값을 리턴(함수의 출력)할 수 있다. -> 함수의 수행 결과가 이 리턴 값으로 치환된다. • 참고: 인수를 매개변수라고도 부른다. • 함수의 예 ……. num = mul(2,3); ……... int mul(int a, int b) { int c; c = a * b; return c; } C Program-I Review

  6. 함수의 구성 • 함수 선언 (function prototype) • 변수 선언과 흡사하게 앞으로 이 함수를 사용할 것임을 알려주는 역할 • mul() 함수의 호출 • 함수의 인수(입력)로 i, j 값을 넘겨줌 • 함수의 리턴 값을 k에 대입 • 함수 몸체(정의) • a <- main()의 i 값(10) • b <- main()의 j 값(20) • c 값을 함수의 수행 결과로 리턴, 결국 main()의 k에는 200이 대입된다. #include <stdio.h> int mul(int , int ); int main(void) { int i=10, j=20, k; k = mul(i, j); printf(“\n k = %d”, k); return 0; } int mul(int a, int b) { int c; c = a * b; return c; } C Program-I Review

  7. 함수의 사용법(1) • 함수 선언문(함수 원형(prototype)) • 변수와 동일하게 앞으로 이런 함수를 사용할 것임을 알려줌 • int mul(int, int); • int mul(int a, int b); 라고 선언해도 됨(변수 명까지 써도 상관 없음) • void 라는 특수 데이터 형은 리턴 값이나 인수가 없음을 나타냄 • 예) void test1(int, int); -> 두개의 int형 인수를 전달 받으나, 리턴값은 없음 int test2(void) -> int형 값은 리턴하나, 인수는 없음. • 함수 리턴 값의 데이터 형(data type) • 함수의 이름(변수의 이름과 동일한 규칙으로 작성) • 첫번째 인수(입력)의 데이터 형 • 두번째 인수의 데이터 형 C Program-I Review

  8. 함수의 사용법(2) • 함수의 정의 부분(몸체) • main() 함수와 동일하게 변수 선언 및, 연산, 제어 등을 수행할 수 있다. • 참고: 하나의 함수 내에서 선언된 변수는 그 함수 내에서만 유효하다. • void 형이 아닌 함수의 경우에는 return 문을 사용하여 함수의 결과 값을 리턴 해야 한다. • return a; 또는 return(a); • C 언어에서는 오직 하나의 값만 리턴 할 수 있다. • main() 도 하나의 함수이다. • main() 함수는 운영체제(명령행 라인)로부터 인수를 넘겨 받을 수 있다. (나중에 배울 것임) • main() 함수의 리턴 형이 int로 선언되었으므로, main() 함수의 끝에 return 0; 수행한다.(이 값도 운영체제로 전달됨) C Program-I Review

  9. 함수 작성 예(두수의 평균값) #include <stdio.h> float ave(int a, int b); int main(void) { int i, j; float ret; scanf(“%d %d”, &i, &j); ret = ave(i, j); printf(“\n ret = %f”, ret); return 0; } float ave(int a, int b) { float c; c = (a+b)/2.0; return c; } C Program-I Review

  10. 함수 작성 예(소수 검사) #include <stdio.h> int is_prime(int a); int main(void) { int i; float ret; for(i=1; i<=100; i++) { if(is_prime(i)) printf(“ %d”, i); } return 0; } int is_prime(int a) { int isprime=1, b; for(b=2; b<a; b++) { if(a%b==0) isprime=0; } return isprime; } C Program-I Review

  11. 실습 예제 • Factorial 을 구하는 사용자 정의 함수,int fact(int)를 작성하시오. (n! = n*(n-1)*(n-2) … 2 * 1) • 앞에 작성한 factorial 함수를 활용하여 순열(permutation)과 조합(combination) 함수를 작성하여 아래의 예와 같이 실행시키시오. (단 nPr = n! / (n-r) !, nCr = n! / r!(n-r)!) 6 P 3 (입력) => 120 6 C 2 (입력) => 15 C Program-I Review

  12. 표준(라이브러리) 함수 • 사용자 정의 함수 • 사용자가 필요에 의해 직접 작성하여 활용하는 함수 • 앞장에서 작성한 모든 함수들은 사용자 정의 함수이다. • 표준 함수 • 국제적으로 정해진 표준에 근거하여, C 컴파일러 제작회사에서 미리 만들어 제공하는 함수 • 내장 함수 또는 라이브러리(library) 함수라고도 한다. • C 언어에는 사용 빈도가 높은 함수들을 표준으로 정의하여 어떤 컴파일러 회사에서도 동일하게 제공한다. • 우리가 사용했던 scanf(), printf()도 표준함수에 해당된다. • 사용자는 표준함수의 기능이 어떻게 구현되어 있는지 알 필요 없이 함수 사용법(인수, 리턴 형)에 맞추어 사용하면 된다. C Program-I Review

  13. 표준 함수 사용법 • 사용하고자 하는 표준 함수의 원형(선언문)이 들어 있는 헤더 파일(xxx.h)을 #include 문을 사용하여 프로그램 내에 삽입한다. • 인수와 리턴 형에 맞게 그 표준 함수를 호출한다. • 예 #include <stdio.h> int main(void) { …….. …….. printf(“\Welcome to C world!!); } 헤더 파일 표준함수 호출 C Program-I Review

  14. 표준 함수 종류 • 자세한 함수 사용법은 교재나 C 라이브러리 함수 온라인 도움말을 참조하기 바람. C Program-I Review

  15. C 프로그램 컴파일단계 Editor S/W (메모장, 문서편집기) …….. a = 1; b = 2; c = a+b; …….. 편집(Editing) 소스파일 (Test.c) 에러발생 번역(Compile) Compiler S/W (visual-c, cc, gcc) 01001000101 11001101000 10110010001 …… 실행파일 (Test.obj) 에러(bug) 발생 각종 라이브러리 (xxx.lib) 링크(Link) 실행(Execution) C Program-I Review

  16. 표준함수 사용 예 printf() 함수 호출 #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i; srand((unsigned)time(0)); for( i=1; i<=10; i++) printf(“ %d”, rand()); for( i=1; i<=10; i++) printf(“ %d”, rand()%100); return 0; } rand (), srand () 함수 호출 time() 함수 호출 rand ()을 위한 초기화, 현재 시스템 시간을 이용하여 난수를 발생시킬때 마다 서로 다른 랜덤 패턴이 발생하도록 함. 0 ~ RAND_MAX(32767) 사이의 난수를 10개 발생 0 ~ 99 사이의 난수를 10개 발생 C Program-I Review

  17. 실습 예제 • 숫자 맞추기 게임 • 앞의 난수 발생 예를 참조하여 0~99 사이의 난수를 하나 발생시켜 사용자가 알아 맞추도록 하시오. • 사용자가 입력한 수가 틀릴 때 마다 난수로 발생시킨 값이 입력한 수보다 큰지 작은지 알려주시오. • 사용자가 맞추었을 경우, 총 몇 번 만에 맞추었는지 알려주시오. • 난수 평균 출력 프로그램 • 사용자에게 난수 발생 횟수를 입력 받음 • 사용자의 입력한 횟수 만큼 1~10 사이의 난수(1, 10 포함)를 발생한 후, 그 평균 값을 출력 • 위의 동작을 계산 반복하는데, 사용자가 입력한 난수 발생 횟수가 0이면 프로그램 종료 C Program-I Review

  18. 함수의 장점(복습) • 코드의 재 사용성이 높아진다. • 기존의 작성했던 함수 등을 다시 가져와서 사용하거나, 조금 수정해서 사용할 수 있다. • 판독성이 높아진다. • main() 함수에 모든 코드를 넣지않고, 전체 코드를 여러 개의 함수로 분리함으로써 판독성이 높아짐. • 오류 수정이 쉬워진다. • 각 함수 별로 디버깅이 가능해짐 • 협동 작업이 가능해진다. • 전체 프로그램을 여러 개의 모듈(함수들)로 분리하여 각각의 프로그래머가 각 모듈을 구현할 수 있다. • 코드가 적어진다. • 매번 같은 내용의 코드가 빈번히 사용할 경우, 그 코드를 여러 번 작성할 필요 없이 함수로 구현하여, 필요할 때마다 호출함. C Program-I Review

More Related