함수** (중요)
3 - 1 사용자 정의 함수
목차
- 함수의 개념
- 함수의 종류
- 함수의 정의
- 사용자 정의 함수 만들기
- 용어 정리
함수의 개념
함수 : 독립적으로 수행하는 프로그램 단위
C 언어는 여러 개의 함수들로 이루어짐
프로그램에서 반복적으로 수행되는 기능을 함수로 만들어 호출
- 함수는 문제 해결의 방법
- 주어진 문제를 작은 문제, 즉 여러 함수로 나누어 생각할 수 있으므로 함수를 만드는 것은 문제 해결의 하나의 방법
- 함수 이용의 장점
- 함수로 구성된 프로그램은 함수 단위로 구성되어 있어, 읽기 쉽고, 이해하기 쉬움
- 이미 정의된 함수는 여러 번 호출이 가능하므로
소스의 중복을 최소화
하여 프로그램의 양을 줄이는 효과
C프로그램 함수의 종류
1) 주(main)함수 : 프로그램의 시작과 종료를 나타내는 함수로, 프로그램에 main()함수는 꼭 있어야 하는 함수이자 사용자 정의 함수라 할 수 있음
2) 사용자 정의 함수 : 사용자(프로그래머)가 문제를 분석하여 필요한 기능으로 분류하여 기능별로 코딩하고자 할 때 만드는 함수
ex) 더하기 - add(), 자료정렬 - swap()
3) 시스템 라이브러리 함수 : 컴파일러가 사용자가 만든 프로그램소스를 기계어로 바꿔주는 소프트웨어이다. 이 컴파일러회사에서는 사람들이 많이 사용할거같은 기능들을 함수화하여 제공하기도 함. 그리고 표준함수라 하는 것은 프로그램을 만들 당시에(C언어를 만들 당시) 이 함수는 꼭 필요하고 많이 사용되는 것들이니 미리 만들어놓고 사용자들이 갖다 쓸 수 있도록 제공한다는 함수를 말한다.
ex) 입출력함수(scanf(), pritnf())
=> 이 세개의 구조는 다 같다고 볼 수 있다.
C언어 구조 : C프로그램은 여러개의 함수로 구성
- 이것에 대해 하나하나 정의해보자.
함수의 정의(Function definition) : 함수 만들기
-
두 개의 정수를 매개변수로 입력 받아 더한 값을 리턴하는 함수로 만들기
-
매개변수란, 함수와 함수 사이에 서로 주고받는 데이터를 말함
-
이는 사용자 정의 함수로써 내가 add라는 이름으로 총합을 구하는 함수를 만든 것. 괄호 안에는 매개변수가 되는 변수들의 개수가 어느정도인지, 이름은 무엇인지를 적어주게 된다.
-
맨 앞의 int는 함수를 호출한 후 문자을 실행하고 값을 가지고 return되는 것의 타입을 의미함.
사용자 정의 함수 만들기
- 이 프로그램은 사용자(user)로부터 a, b를 입력받아 그 값들을 더한 값을 sum에 넣어 모니터에 출력해주는 프로그램이다.
- 일단 여기선 add라는 함수를 만들지 않고 main에서 하나로 만드는 예시이다.
- 우리가 세 개의 변수가 필요할때, 같은 데이터 타입이라면 하나의 데이터 타입에 여러 변수를 입력한 후 초기화를 시켜주되 콤마로 구분을 해준다. 이렇게 하면 메모리에 저장할 수 있는 공간이 만들어지고 그 앞에 변수명이 붙게 된다. 그러면 세 개의 방이 생기며 a라는 방이 생기면 메모리는 숫자로 되어있는 메모리의 주소가 설정된다. 이 주소는 컴파일 할때마다 값이 달라진다.
- 사용자로부터 a, b에 각각 10, 20이라는 값이 입력되었다고 할때, a에 있던 0 이라는 값은 10으로 바뀌게 된다. 이 값을 통해 a가 주소를 통해 a에 찾아가서 그 값을 변경했다고 봐도 될 것.
sum = a + b
에서 sum은 오른쪽에 있는 애들을 먼저 계산해서 그 결과값을 sum으로 넘기는 것이다.
용어 정리
- 변수(variable)
- 프로그램에서 데이터를 저장하는 공간
- 변수명(variable name)
- 선언된 변수의 메모리에 붙여진 이름
- 변수명에 다른 값을 대입하면 예전 값은 지워지고 새로운 값을 저장(int a = 10; a = 100;)
- 데이터 타입(data types, 자료유형, 자료형)
- 변수를 선언할 때, 변수의 특성에 적합한 메모리를 할당하도록 만들어 놓은 예약어
(ex : int, char, double)
- 변수를 선언할 때, 변수의 특성에 적합한 메모리를 할당하도록 만들어 놓은 예약어
- 함수(function, 모듈, 메소드(C++, Java))
- 프로그램에서 기능별로 나누고 독립적으로 실행할 수 있는 프로그램 단위
- (python에선 함수, 모듈, 메소드의 정의가 조금씩 달라지니까 주의... 근데 원래 C도 사실 조금씩 의미가 다른데 여기선 그냥 뭉뜽그려서 설명한건지 잘 모르겠다.)
- 함수 정의(function definition)
- 함수를 만드는 것
- 함수 원형(function prototype, 함수 선언)
- 함수를 사용(호출)하기 이전에 함수의 머리(헤더)부분을 기술하는 단계
'컴퓨터공학입문' 카테고리의 다른 글
3 - 3 함수 호출 방법 (0) | 2019.08.31 |
---|---|
3 - 2 함수와 매개변수 (0) | 2019.08.28 |
2 - 4 프로그램 구조 (0) | 2019.08.26 |
2 - 3 데이터 타입(data types) (0) | 2019.08.25 |
2 - 2 변수와 상수 (0) | 2019.08.25 |