1) 사용자 정의 함수란?
사용자 정의 함수(Function)는 사용자가 필요에 의하여 직접 함수를 정의하
여 사용하는 것을 의미하며 내장 함수처럼 인자를 전달할 수 있고 함수의 결과
값을 되돌려 받을 수 있으며 함수 내부에서 사용되는 변수로 인하여 함수 외부
에서 사용되는 변수에 영향을 주지 않을 수도 있다.
2) 사용자 정의 함수의 선언
형식)
function [형선언문] 함수명([형선언문] 인자1, ... , [형선언문] 인자N)
{
문장1;
.
.
문장N;
[return 연산식];
}
-. [ ] 안의 내용은 생략 가능함을 의미한다.
-. 형선언문: 함수의 인자나 결과값에 대한 자료형 선언문으로 생략시 free형
으로 지정된다.
-. 함수명: 변수명 작성 규칙과 같은 방법의 명칭을 사용해야하며 내장 함수나
명령어와 동일한 명칭은 사용할 수 없다.
-. 인자1 부터 인자N까지의 인자는 변수명이어야 하며 함수안에서만 통용되는
지역 변수이다.
3) 사용자 정의 함수 내에서의 변수 사용
a. 선언하지 않고 변수를 사용할 경우
사용자 정의 함수를 호출하기 전에 해당 변수를 주 프로그램(Main program)
에서 이미 선언 하였거나 또는 선언 없이 변수를 사용하였을 경우에는 전체
프로그램에서 통용이 되는 전역 변수가 된다.
호출전에 해당 변수를 선언하지 않았고 또한 사용하지 않았으며 사용자 정
의 함수 내에서 최초로 사용할 경우에는 그 함수 내에서 통용이 되는 지역
변수이며 함수가 실행될 때 생성이 되고 함수가 종료되면 사라지게 된다.
※ 사용자 정의 함수 내에서 변수를 선언 하지 않고 사용할 경우에는 전역
변수 또는 지역 변수가 될 수 있기 때문에 함수를 호출하기 전에 해당
변수의 상황을 알고 있어야 한다.
b. 형 선언문으로 선언후 변수를 사용할 경우
사용자 정의 함수 내에서만 통용이 되는 지역 변수로써 함수가 실행될 때
해당 변수가 생성(확보)되고 함수가 종료되면 사라지게 된다.
c. static 으로 선언후 변수를 사용할 경우
사용자 정의 함수 내에서만 통용이 되는 지역 변수로써 함수를 정의할 때
변수가 생성(확보)되며 실행시 해당 변수를 확보하거나 초기화 하지 않는다.
이와 같은 변수는 항상 그 값을 유지하며 함수 외부에서 참조할 수 없다.
d. global 로 참조 지정 후 변수를 사용할 경우
해당 변수가 전역 변수로 참조 지정되어 함수 내의 변수가 아니라 함수
외부의 주 프로그램(Main program) 상의 변수가 된다.
3) 사용자 정의 함수의 회귀 값(Return value)
a. return 문을 사용할 경우
함수의 형(function 다음의 형 선언문)과 다르면 형 변환하여 그 값을
되돌리며, 함수의 형이 생략되었을 경우에는 free 형이 되어 형 변환을
하지 않는다.
b. return 문을 사용하지 않을 경우
최후에 사용된 문장의 상수값을 되돌린다. 이 경우 되돌려지는 값이
무엇인지 명확하지 않을 수 있기 때문에 함수의 결과값을 변수에 대입할
경우 주의를 해야한다.
4) 사용자 정의 함수의 예#1
function int add(int a, int b)
{
int c; // 인자 a,b 및 변수 c는 지역변수임
c= a + b;
return c; // a+b의 결과를 되돌림
}
ad= add(3,2); // 3을 a에 2를 b에 전달하여 함수를 실행한 후 결과 5를
print(ad); // ad변수에 대입한 후 출력함
5) 사용자 정의 함수의 예#2
function int add()
{
global a; // 전역변수 a를 참조하도록 지정함
c= a + b; // 변수 b는 선언되지 않아서 전역변수를 참조함
return c; // 변수 c는 호출전에 선언 또는 사용하지 않아
} // 함수내에서 통용되는 지역변수로 확보됨
a= 3; // 전역 변수 a에 3을 대입함
b= 2; // 전역 변수 b에 2를 대입함
ad= add(); //함수를 실행한 후 결과 5를 ad변수에 대입한다.
print(ad); // ad변수의 값을 출력함
6) 사용자 정의 함수의 예#3
function int count()
{
static int cnt= 0; // 내부 정적변수로 cnt에 0을 대입하는
// 초기화는 최초에 1회만 한다.
cnt= cnt + 1;
return cnt;
}
a= count(); // 함수를 실행하여 1을 a에 기억함
b= count(); // 함수를 실행하여 2를 b에 기억함
print(a, " ", b, "\n");
|