1 / 28

Function

Function. 함수들은 각각 독립적이면서 특정한 목적을 수행하는 목적으로 만들어진다 . 하나의 프로그램은 많은 함수들을 포함하고 있다 . 우리가 지금까지 사용해 왔던 main() 도 함수이다 . 각 함수에는 지정된 입력 인자와 출력 인자가 명시되어 있으며 이들을 통해 함수들은 서로 대화하며 프로그램의 수행을 이루어간다 . C++ 언어에서는 함수 정의가 함수 호출문보다 뒤에 오는 경우 함수를 호출하기 전 반드시 함수 원형을 선언하여야 한다 . 함수 정의 함수 원형 함수 호출과 인자

lilia
Télécharger la présentation

Function

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. Function • 함수들은 각각 독립적이면서 특정한 목적을 수행하는 목적으로 만들어진다. 하나의 프로그램은 많은 함수들을 포함하고 있다. 우리가 지금까지 사용해 왔던 main() 도 함수이다. 각 함수에는 지정된 입력 인자와 출력 인자가 명시되어 있으며 이들을 통해 함수들은 서로 대화하며 프로그램의 수행을 이루어간다. • C++ 언어에서는 함수 정의가 함수 호출문보다 뒤에 오는 경우 함수를 호출하기 전 반드시 함수 원형을 선언하여야 한다. • 함수 정의 • 함수 원형 • 함수 호출과 인자 • 인라인(Inline) 함수

  2. 함수 정의 • 함수: 특정한 작업을 하도록 만들어진 독립적인 프로그램 • 서브루틴, 프로시저 • 주어진 입력 인자들의 값을 받아서, 작업을 수행하고 결과 값을 return문을 통해 호출자에게 돌려준다. [반환형] 함수 이름(인자1, 인자2, ... ) { 선언문; 수행문; [return 문;] } • 프로그램 작성 시간이 단축되고 프로그램의 길이가 줄어들고 읽기가 쉽고 프로그램을 변경하거나 에러를 수정하기가 쉽다

  3. 함수이름: 변수의 이름과 같이 사용자가 정의하며, 이미 정의 된 시스템이 제공하는 이름은 사용할 수 없다. • 함수의 인자: 상수, 변수, 수식, 배열이나 포인터 등 • 반환형: 이미 정의된 자료형으로 return 문에서 반환하는 값 • 반환 값이 없는 경우 -> 반환형을 쓰지 않거나, void • Return 문: 호출 문으로 값을 넘겨주기 위해 사용되는 문장 • Return 뒤에는 값, 수식 또는 변수 값 등이 사용 • 반환형이 void로 선언된 함수를 제외하고는 반드시 return문 사용

  4. 두 숫자를 입력으로 받아서 그 합을 돌려주는 함수 int sum(int num1, int num2) { int answer; answer = num1 + num2; return answer; }

  5. 함수 호출 • 프로그램의 수행이 함수로 넘어가도록 한다. • 호출 시 사용되는 인자들의 개수와 자료형은 함수 선언과 동일 함수의 원형이 먼저 선언 #include <iostream.h> // 함수 원형 선언 반환형 함수 이름(실인자1, 실인자2, ...); main() { 함수 이름(실인자1, 실인자2, ...) ; 또는   변수 = 함수 이름(인자1, 인자2, ....); ....... } • 함수의 작업이 끝난 후에는 제어가 다시 호출문으로 • 함수가 return 값을 갖는 경우와 return값이 없는 경우

  6. #include <iostream.h> int sum(int num1, int num2); main() { int score1, score2; int result; cout << ‘’Enter two values : ‘’; cin >> score1 >> score2; result = sum(score1, score2); cout << ‘’Sum is ‘’ << result<< endl; } int sum(int num1, int num2) { int answer; answer = num1 + num2; return answer; }; Enter two values : 23 34 Sum is 57

  7. 형식인자와 실인자 • 함수 호출문과 함수 선언부는 인자들을 통해 정보를 • 실인자 : 함수 호출시 호출문에 함수 이름과 함께 쓰인다 • 형식인자 : 함수 선언부에서 선언된 인자들이다. • 함수 호출시에 실인자들은 형식인자들과 왼쪽으로부터 차례대로 대응 • 형식인자들과 배열 순서와 자료형이 같아야 한다

  8. int max_val(int num1, int num2, int num3) { .......... } main() { int value1, value2, value3; ......... max = max_val(value1, value2, value3); .......... }

  9. #include <iostream.h> int math(int num1, int num2, int num3); main() { int value1, value2, value3; int result; value1 = 10; value2 = 20; value3 = 30; result = math(value1, value2, value3); cout << ‘’The 1st result is ‘’ << result << endl; result = math(value2, value3, value1); cout << ‘’The 2nd result is ‘’ << result << endl; result = math(value3, value1, value2); cout << ‘’The 3rd result is ‘’ << result << endl; }

  10. int math(int num1, int num2, int num3) { int temp; temp = num1 + num2 - num3; return temp; } 출력 The 1st result is 0 The 2nd result is 40 The 3rd result is 20

  11. return 문이 없는 경우 : VOID • 다음 프로그램의 함수 print_message()는 호출될 때마다 인쇄 작업을 하지만, 호출문으로 돌려주는 값은 없다. • 이때, 이러한 사실을 알리기 위해 변환형 자리에 void를 쓴다. #include <iostream.h> void print_message() { cout << ‘’Learning C++ is fun.’’ << endl; }  main() { print_message(); print_message(); }

  12. 인자 전달 방식 • Call By Value 와 Call By Reference • Call by value • 실인자의 값만을 형식인자에 전달 • 함수에서 형식인자에 대한 작업은 실인자에 영향을 미치지 않음

  13. 변수 a 와 b 의 각 값을 10과 20으로 각각 할당하고, 함수 change를 호출한 후에 a,b 값을 출력해 보는 프로그램 #include <iostream.h> void change (int front, int back); main() { int a = 10; int b = 20; change (a, b); cout << ‘’a = ‘’ << a; cout << ‘’ b = ‘’ << b << endl; }

  14. void change (int front, int back) { int temp; temp = front; front = back; back = temp; cout << ‘’front = ‘’ << front; cout << ‘’ back = ‘’ << back << endl; } front = 20 back = 10 a = 10 b = 20

  15. 인자 전달 방식 • Call by reference • 인자를 넘겨줄 때 형식인자의 주소를 인자로 넘겨주는 방법 • 함수의 수행 결과가 인자에 반영되어 호출한 함수에서 사용 • 함수 선언 부분의 형식인자 부분은 인자 앞에 ‘&’를 사용

  16. #include <iostream.h> void change (int &front, int &back); main() { int a = 10; int b = 20; change (a, b); cout << ‘’a = ‘’ << a; cout << ‘’ b = ‘’ << b << endl; }

  17. void change (int &front, int &back) { int temp; temp = front; front = back; back = temp; cout << ‘’front = ‘’ << front; cout << ‘’ back = ‘’ << back << endl; } front = 20 back = 10 a = 20 b = 10

  18. 인라인(Inline) 함수 • 함수가 실제로 호출되는 대신에 호출문의 자리에 삽입되도록 정의 • 장점: 함수 호출에서 야기되는 시간적인 지체를 없앤다. • 단점: 자주 호출될 때는 함수의 크기가 커진다 inline 반환형 함수 이름(인자1, 인자2, ...) { .... }; • 간단하고 코드의 길이가 짧은 경우 사용

  19. #include <iostream.h> inline int sum(int num1, num2) { int answer; answer = num1 + num2; return answer }; main() { int score1, score2; int result; cin >> score1 >> score2; result = sum(score1, score2); cout << result; }

  20. #include <iostream.h> int odd_even (int num) { if (num % 2 == 0) return (2); else return (1); } main() { int answer; answer = odd_even(7); if (answer == 1) cout << ‘’The number is odd \n’’; else cout << ’’The number is even \n’’; }

  21. #include <iostream.h> int fact (int num) { int x, result; result = 1; if (num == 0) return (result); else { for (x = 1; x <= num; x++) result = result * x; return (result); } }

  22. main() { int value; int answer; value = 3; answer = fact(value); cout << ‘’The result is ‘’ << answer; }

  23. #include <iostream.h> int add2 (int num1, int num2) { if ((num1 == 0) || (num2 == 0)) return (0); else return (num1 * num2); } int add4 (int num1, int num2, int num3, int num4) { int temp1, temp2; temp1 = add2(num1, num2)+ 10; temp2 = add2(num3, num4) - 5; return(add2(temp1, temp2); } main() { int answer; answer = add4(5, 6, 7, 8); cout << ‘’The result is ‘’ << answer; }

  24. 빈 line 채우기 #include <iostream.h> { if (score >= 90) else if (score >= 80) else if (score >= 70) else if (score >= 60) else if ( score >= 65 ) return('F'); }

  25. main() { int score; char grade; cout << "Enter your score: "; cin >> score; grade = grd_fun(score); cout << "Your grade is " << grade <<endl; }

  26. 경과된 시간을 몇 분 몇 초로 입력하면, 그것을 초로 돌려주는 프로그램 #include <iostream.h> int convert ( int min, int sec) { int total_sec; return total_sec; }

  27. main() { int min, sec; int result; cout << "Enter minutes and seconds: "; cin >> min >> sec; result = convert(min, sec); cout << "The result is " << result; }

  28. 1. 두 개의 정수a, b를 읽어서 a의 b 제곱승을 출력하는 프로그램을 함수를 이용하여 작성하시오. (예 : f(a, b) = ab ) 2. 입력된 정수의 절대값을 돌려주는 함수를 작성하시오. (예 : f(7) = 7. f(-7) = 7)

More Related