함수

Written on April 18, 2017

최근 시간에 많은 함수들을 만들어보았습니다.

함수를 배우는 목적에는 크게 함수 내의 알고리즘을 이해하는 것함수를 만들고 사용하는 방법을 익히는 것이 있다고 생각하는데,

전자는 비교적 쉽게 이해하는 반면 후자를 이해하는데 어려움을 겪는 것 같아 이번 글에서는 함수를 만들고 사용하는 방법에 초점을 두고자 합니다.

먼저 main함수 내에 두 정수 사이의 모든 정수를 출력(두 정수 포함)하도록 하는 소스 코드를 작성해보겠습니다.

#include <stdio.h>

int main(){
  int a=5, b=10; // a<b 가정
  int count=a;
  
  while(count<=b){
    printf("%d\n",count);
    
    count++;
  }
  
  return 0;
}
출력 결과
5
6
7
8
9
10

만약 추가로 12~14까지의 정수도 출력하려고 한다면 소스 코드는 다음과 같을 것입니다.

#include <stdio.h>

int main(){
  int a=5, b=10; // a<b 가정
  int count=a;
  
  while(count<=b){
    printf("%d\n",count);
    
    count++;
  }
  
  int x=12, y=14; // x<y 가정
  int count2=x;
  
  while(count2<=y){
    printf("%d\n",count2);
    
    count2++;
  }
  
  return 0;
}
출력 결과
5
6
7
8
9
10
12
13
14

비슷한 기능을 하는 소스 코드가 반복되면서 소스 코드가 길어지고 복잡해집니다.

만약 두 정수 사이의 모든 정수를 출력(두 정수 포함)하는 기능을 하는 함수를 만들어서 사용한다면,

#include <stdio.h>

void printInteger(int a, int b){
  int count = a; // a<b 가정

  while(count<=b){
   printf("%d\n",count);

   count++;
  }
}

int main(){
  printInteger(5,10);
  printInteger(12,14);

  return 0;
}
출력 결과
5
6
7
8
9
10
12
13
14

소스 코드가 간결해지고 불필요한 반복을 제거할 수 있습니다.

이번에는 다른 경우인데 main함수 내에 두 정수 사이의 모든 정수를 출력(두 정수 포함)하는 기능과 정수 2개 중 작은 정수를 출력하는 기능을 하는, 복수의 기능이 있는 소스 코드를 작성해보겠습니다.

#include <stdio.h>

int main(){
  int a=5, b=10; // a<b 가정
  int count=a;

  while(count<=b){
    printf("%d\n",count);

    count++;
  }

  int x=2, y=3;

  if(x<y)
   printf("%d\n",x);
  else
   printf("%d\n",y);

  return 0;
}
출력 결과
5
6
7
8
9
10
2

소스 코드의 어떤 부분이 무슨 역할을 하는지 한 눈에 보기가 어렵습니다.

이를 함수를 만들어서 해결해보면,

#include <stdio.h>

void printInteger(int a, int b){
  int count = a; // a<b 가정

  while(count<=b){
   printf("%d\n",count);

   count++;
  }
}

void printSmaller(int a, int b){
  if(a<b)
   printf("%d\n",a);
  else
   printf("%d\n",b);
}

int main(){
  printInteger(5,10);
  printSmaller(2,3);
 
  return 0;
}
출력 결과
5
6
7
8
9
10
2

소스 코드에서 어떤 부분이 무슨 역할을 하는지가 좀 더 명확해집니다.