프로그래밍 언어 활용 part 1 - 함수
함수
[학습내용] | [학습목표] |
▪ 함수 정의 ▪ 함수 선언 및 호출 |
▪ C언어에서 함수의 의미와 역할을 설명할 수 있다. ▪ 사용자 정의함수를 정의하고 사용할 수 있다. |
함수 정의
1. 함수 이해
함수란?
▪ 특정한 작업을 수행하는 문장을 모아둔 단위
장점
▪ 코드가 중복되지 않고 간결함
▪ 코드의 재사용성이 증가함
▪ 프로그램의 모듈화가 증대됨
▪ 유지보수가 용이함
2. 함수 정의 형식
리턴형
▪ 함수는 처리 후 결과를 함수를 호출한 곳으로 값을 보내줄 수 있음
▪ 리턴되는 값의 데이터 타입이 함수의 리턴형
▪ void, char, int, float…..
매개변수(Argument)
▪ 함수 호출 시 입력값을 전달하는 역할
▪ “,” 로 구분하여 여러 개 전달 가능
▪ 매개변수가 없는 경우는 void
리턴 X | 매개변수 X | 리턴 X | 매개변수 O | 리턴 O | 매개변수 O |
void sub() { ...... } |
void sub( int a, int b) { ...... } |
int sub( int a) { int s; ...... return s; } double sub(void) { double a; ...... return a; } |
함수 선언 및 호출
1. 선언과 호출
선언
▪ 함수는 사용 전 반드시 선언해야 함
▪ 선언은 함수의 원형(Prototype)을 기술함
▪ 선언 시 매개변수 이름은 생략 가능함
▪ 함수 호출 전에 정의문이 먼저 기술된 경우는 생략 가능함
호출
▪ 함수를 실행함
▪ 함수 이름과 매개변수를 기술함
▪ 호출 시 해당 함수에 정의된 문장이 수행됨
예제
▪ 두 수의 합을 출력하는 함수(연산 결과를 수행 함수에서 출력)를 작성하시오.
#include <stdio.h>
void add(int, int);
int main()
{
int a,b;
scanf(“%d %d”, &a, &b);
add( a, b);
}
void add(int x, int y)
{
printf(“%d+%d=%d”, x, y, x+y );
}
▪ 두 수의 합을 출력하는 함수(연산 결과를 호출하는 함수에서 출력)를 작성하시오.
#include <stdio.h>
int add(int, int);
int main()
{
int a,b, sum;
scanf(“%d %d”, &a, &b);
sum = add( a, b);
printf(“%d+%d=%d”, a, b, sum );
}
int add(int x, int y)
{
return x+y;
}
▪ 주어진 정수의 factorial 값을 계산하는 함수를 작성하시오.
#include <stdio.h>
void fact(int);
int main()
{
int a;
scanf(“%d”, &a);
printf(“%d! 값은 %d 이다”, a, fact(a) );
}
int fact(int a)
{
int i, re=1;
for(i=a ; i>0 ; i--)
re *= i;
return re;
▪ 입력한 두 개의 정수값에 대한 나누기 연산 결과를 출력하시오.
#include <stdio.h>
double div(int, int);
int main()
{
int a,b;
double re;
scanf(“%d %d”, &a, &b);
re = div( a, b);
printf(“%d+%d=%f”, a, b, re );
}
double add(int a, int b)
{
return (double)a/b;
}
평가하기
Q1. 함수를 정의할 때 사용할 수 있는 매개변수는 최대 몇 개인가?
① 8
② 32
③ 256
④ 제한 없음
매개변수의 개수는 제한 없이 사용 가능합니다.
Q2. 4칙연산을 수행하는 함수를 작성하고자 할 때, 피연산자 2개의 실수와 1개의 연산자(3,’+’, 2)와 같은 형태로 매개변수를 전달하는 함수 원형으로 옳은 것은 무엇인가?
① double calc(double a, b , char v);
② void calc(double, char);
③ double calc(double, double, char)
④ double calc(double, char, double)
전달하는 매개변수의 순서대로 선언해야 합니다.
Q3. 리턴은 없고 double형 매개변수 2개를 가진 함수를 다음과 같이 정의할 경우 옳은 것은 무엇인가?
① sub(double a, double b){ }
② sub (double a, b){ }
③ void sub( double a, b) { }
④ void sub(double a, double b){ }
매개변수 선언은 함수 내에서의 변수 선언과 달리 각각 데이터 타입을 기술해야 합니다.
학습정리
1. 함수 정의
• 함수의 정의는 ‘리턴형 함수명 ( 매개변수 ) { }’의 형식으로 정의함
• 매개변수는 함수의 입력값으로 사용됨
• return은 함수를 호출한 곳으로 값을 반환하는 역할을 함
• return에 의해 반환할 수 있는 값은 한 개임
2. 함수 선언 및 호출
• 함수 선언은 함수의 원형(Prototype)을 기술함
• 함수 선언 시 매개변수명은 생략 가능함