Pages

Saturday, January 6, 2018

C/C++ 언어 프로그래밍-함수1

C/C++언어 코딩 복습 - 함수 1

- 함수란 특정 계산 혹은 기능들을 하는 독립적인 모듈로서 프로그래밍의 가장 기본이 되는 하나입니다. 코딩에 있어 필수 요소이고, 프로그램을 보다 간결하고 알아보기 쉽게 만들어 주는 장점이 있습니다.

- 예를 들면 앞장에서 for 반복문에 대해 정리해보았습니다. for 문의 경우 단순 반복을 하는 제어문으로 특정 수행문장을 여러 반복 수행해 줍니다. 만약 main 함수 내에서 같은 과정이 여러 반복된다면 그때마다 for 문을 작성해야 되고 결과 프로그램이 길어지고 복잡해 있습니다.

- 이를 사용자가 독립적이고 의미 있는 단위로 나누어 모듈화를 함수를 정의하고 함수들을 필요할 때마다 호출해 사용하면 효율적인 프로그램을 작성할 있습니다.

함수의 구조는 다음과 같습니다.

'(1) 자료형'  '(2) 함수이름' ( '(3) 인자들 (parameters)' )
{
 '(4) 수행문장들' ;
 '(5) return ('결과값') ;
}

'(1) 자료형' : 되돌려 받는 (return ) 자료형을 의미합니다. 예를 들면 정수형 값을 돌려받는다면 자리에 int 작성하면 됩니다. 돌려받는 값이 없다면 void 라고 작성하면 됩니다.

'(2) 함수이름' : 그대로 함수의 이름을 작성하는 부분입니다.

'(3) 인자들 (parameters)' : 함수에 사용될 인자들로 변수, 상수, 클래스 다양한 형태로 사용이 가능합니다. 물론 인자가 없는 함수도 있습니다.

'(4) 수행문장들' : 특정 기능들을 하는 수행문장들의 집합체로 함수에서 어떠한 기능을 하는가를 나타냅니다.

'(5) return ('결과값'): 함수의 결과값을 돌려주는 문구로 돌려받는 값이 없을 수도 있습니다.

함수는

* 함수의 선언 (prototype 선언)
* 함수의 정의
* 함수의 호출

이라는 요소들로 이루어져 있습니다.

함수의 선언 되돌려 받는 (return ) 자료형, 함수 이름, 입력 인자들을 프로그램 내에서 함수를 정의하기 전에 이러한 형태의 함수를 앞으로 사용하겠다고 선언하는 부분입니다.

작성된 프로그램들은 순차적으로 컴파일 되기 때문에 프로그램 내에서 함수가 먼저 호출되고 함수의 정의가 나중에 나오면 에러가 발생합니다. 함수를 미리 선언해두면 아직 정의되지 않은 함수들을 호출해도 문제가 없습니다.

함수의 정의 함은 어떠한 기능을 수행할 것인지를 구체적으로 작성하는 것입니다.

함수의 호출 프로그램 내에서 필요한 경우, 특정 위치에서 작성된 함수를 실행하는 것입니다.

간단한 출력함수를 작성해보도록 하겠습니다.

사용예시 :
예제코드

#include <iostream>
using namespace std;

void t_f1()
{
cout << " abcde " << endl;
}

int main() {
     t_f1();
     return 0;
}

- 리턴 값과 인자가 없는 't_f1' 이라는 이름의 함수를 만들고 함수 정의 부분에는 " abcde " 출력하는 문장을 작성했습니다. main 함수 내에서 't_f1();' 라는 문장으로 함수를 호출하도록 하였습니다.

실행결과


- 실행하면 'abcde' 출력되는 것을 확인할 있습니다.

- 만약 함수의 정의를 main 함수보다 뒤에 작성하면 어떻해 되는지 한번 살펴보겠습니다.

코드에서 main 함수와 t_f1() 함수의 순서를 다음과 같이 바꾸고 컴파일을 하면 에러가 발생함을 있습니다.

#include <iostream>
using namespace std;

int main() {
      t_f1();
      return 0;
}

void t_f1(){
cout << " abcde " << endl;
}

- main 함수 내에서 't_f1()' 호출하는데 't_f1()' 함수는 나중에 정의가 되어 있기 때문에 컴파일시점에 다음과 같은 에러메시지가 발생합니다.

ch4.c: In function ?int main()??
ch4.c:6: error: ? 't_f1??was not declared in this scope

- 함수 't_f1' 선언되어 있지 않다고 나옵니다. 함수의 프로토 타입을 main 함수 앞에 다음과 같이 작성해주면 이러한 문제를 해결할 있습니다.

#include <iostream>
using namespace std;

void t_f1();
int main() {
     t_f1();
     return 0;
}

void t_f1()
{
cout << " abcde " << endl;              
}

No comments:

Post a Comment