Blog/JAVA기반 스마트웹 개발2021

프로그래밍 언어 활용 part 1 - 함수

고구마달랭이 2021. 7. 26. 20:23

함수

 

[학습내용]  [학습목표]
▪  함수 정의
▪  함수 선언 및 호출
▪  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)을 기술함

• 함수 선언 시 매개변수명은 생략 가능함