Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 08. 함수.

Similar presentations


Presentation on theme: "Chapter 08. 함수."— Presentation transcript:

1 chapter 08. 함수

2 함수란? 특별한 기능을 수행하는 코드 단위이다. - 두 정수값을 더하는 기능을 수행하는 함수의 예 a b

3 ▶ 함수 만들기(정의) 두 정수값을 더하는 함수 만들기 – 함수가 어떤 기능을 수행하는가?
1. 함수의 기능에 맞는 이름을 정한다 – 함수가 어떤 기능을 수행하는가? 2. 매개변수를 선언한다 – 함수에 필요한 값들은 무엇인가? 3. 리턴값의 형태를 적어준다 – 함수가 실행된 후의 결과는 무엇인가? 4. 함수의 몸체를 만들자 – 함수가 수행하는 기능을 기술한다.

4 함수의 이름으로 호출하여 함수의 기능을 사용한다.
▶ 함수 사용하기(호출) 함수의 이름으로 호출하여 함수의 기능을 사용한다. - 함수를 호출할 때는 함수에 필요한 값을 전달인자로 준다. - 전달인자가 필요 없는 함수를 호출할 때도 괄호는 사용해야 한다.

5 ▶ 함수의 실행과정 (1/3) 함수는 호출하기 전에 정의되어 있어야 한다. 다른 함수가 먼저 있어도 프로그램은 항상 메인함수부터 시작된다.

6 ▶ 함수의 실행과정 (2/3) 메인함수의 실행 중에 다른 함수를 호출하면 그 때 함수가 실행된다. 함수가 호출될 때 전달인자는 매개변수에 복사된다.

7 ▶ 함수의 실행과정 (3/3) 함수가 실행을 마치고 리턴할 때는 제어와 함께 리턴값도 돌려준다. 함수가 리턴하는 값은 복사되어 임시기억공간에 저장되며, 이 값은 따로 저장하지 않으면 버려지므로 다른 변수에 저장해서 사용한다.

8 ▶ 함수를 사용한 성적계산 프로그램 메인함수 외에 총점과 평균을 구하는 부분을 함수로 작성한다.

9 ▶ 함수를 사용한 성적계산 프로그램 #include <stdio.h> int main() {
int total(int kor, int eng, int mat) { int tot; tot=kor+eng+mat; return tot; } double average(int tot) double avg; avg=tot/3.0; return avg; int main() { int kor, eng, mat; int tot; double avg; printf("세 과목의 점수를 입력하세요 : "); scanf("%d%d%d", &kor, &eng, &mat); tot=total(kor, eng, mat); avg=average(tot); printf("총점 : %d, 평균 : %.1lf\n", tot, avg); return 0; }

10 ▶ 함수의 선언 함수를 호출하기 전에 정의되어 있지 않으면 컴파일에러가 발생한다. 호출함수 뒤에 함수를 정의할 경우에는 먼저 선언해야 한다.

11 함수의 선언은 함수의 머리(head)를 그대로 적고 세미콜론을 붙인다.
▶ 함수의 선언 함수의 선언은 함수의 머리(head)를 그대로 적고 세미콜론을 붙인다. 성적계산 프로그램을 함수의 선언을 사용하여 작성하는 경우 #include <stdio.h> int total(int, int, int); double average(int); int main() { tot=total(kor, eng, mat); avg=average(tot); printf(“%d, %d”, tot, avg); } // total함수의 선언, 매개변수명은 생략할 수 있다. // average함수의 선언 total, average함수의 정의는 메인함수 뒤에 한다.

12 다양한 형태의 함수 함수는 용도에 따라 매개변수나 리턴값이 없는 다양한 형태가 있다. 매개변수가 없는 함수 리턴값이 없는 함수 리턴값과 매개변수가 모두 없는 함수

13 양수값을 키보드로 입력 받아서 리턴하는 함수의 예
▶ 매개변수가 없는 함수 양수값을 키보드로 입력 받아서 리턴하는 함수의 예 int get_positive() { int pos; printf(“양수값 하나를 입력하세요 : ”); scanf(“%d”, &pos); return pos; } // 매개변수가 없고 리턴값만 있다. 메인함수에서 호출할 때 int main() { int n; n=get_positive(); } // 전달인자는 없지만 리턴하는 값은 사용한다.

14 ▶ 리턴값이 없는 함수 전달인자의 값을 단지 출력하는 경우라면 리턴값이 필요없다.
리턴값이 없는 함수는 리턴값의 형태를 void로 한다. 특정문자를 반복해서 출력하는 함수의 예 void char_print(char ch, int n) { int i; printf(“%c문자를 %d번 출력합니다 => ”, ch, n); for(i=0; i<n; i++){ printf(“%c”, ch); } // 매개변수는 있지만 리턴하는 값은 없다. 메인함수에서 호출할 때 int main() { char_print(‘X’, 5); return 0; } // 출력할 문자와 그 횟수를 전달인자로 주고 호출한다.

15 제목과 같이 일정한 문자열만을 출력하는 경우에 사용한다.
▶ 리턴값과 매개변수가 모두 없는 함수 제목과 같이 일정한 문자열만을 출력하는 경우에 사용한다. void title_print() { printf(“==========<< 성적표 >>=============\n\n”); printf(“ 언어 역사 과학 총점 평균\n”); } // 매개변수와 리턴값이 모두 없다. 메인함수에서 호출할 때 int main() { title_print(); } // 함수의 이름만으로 호출한다.

16 프로그램이 크거나 복잡하면 함수를 만드는 것이 좋다. - 2부터 100까지의 수 중에서 소수를 모두 구하는 예
함수의 필요성 프로그램이 크거나 복잡하면 함수를 만드는 것이 좋다. - 2부터 100까지의 수 중에서 소수를 모두 구하는 예 이 부분을 함수로 작성하면 문제는 간단해진다! - 하나의 정수를 전달인자로 받아서 소수인지를 판단하는 함수를 만든다. int prime_check(int n) { int i; for(i=2; i<=n-1; i++){ if(n%i==0) return 0; } return 1; // 반복 제어변수 // i는 2부터 n-1까지 하나씩 증가한다. // n이 한번이라도 i로 나누어 떨어지면 소수가 아니다. // for문 중간에 리턴하지 않았다면 소수이다.

17 함수의 필요성 잘 만들어진 함수는 코드의 재활용성을 높인다. - printf함수와 scanf함수는 이미 만들어진 함수를 사용하는 것이다. 그러므로 함수는 재활용이 잘 되도록 작성해야 한다.


Download ppt "Chapter 08. 함수."

Similar presentations


Ads by Google