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

    2021. 7. 26.

    by. 고구마달랭이

    함수

     

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

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

     

    댓글