실 매개변수와 형식 매개변수의 대응
호출문에서 값의 순서를 바꿔 적으면 어떻게 될까?
위치 대응
적힌 순서대로 짝짓습니다
실 매개변수를 형식 매개변수에 짝짓는 방법은 둘입니다. 위치 대응은 순서로 짝짓습니다. 첫 번째 값이 첫 번째 자리에 묶입니다. 안전하고 효과적입니다.
이렇게 넘기는 것을 위치 매개변수(positional parameter)라고 합니다. 예시 코드이고, 값은 일한 시간, 시급, 보너스입니다.
키워드 대응
이름표를 따라 짝짓습니다
키워드 대응은 값 옆에 형식 매개변수의 이름을 적습니다. 어떤 순서로 적어도 되어 짝을 잘못 짓는 오류가 줄어듭니다. 대신 부르는 사람이 그 이름을 알아야 합니다.
이렇게 넘기는 것을 키워드 매개변수(keyword parameter)라고 합니다. 예시 코드입니다.
기본값
빈 자리는 스스로 채워집니다
형식 매개변수에 기본값(default value)을 적어 둘 수 있는 언어가 있습니다. 실 매개변수를 넘기지 않으면 그 값이 쓰입니다. C++, 파이썬, 루비, PHP가 그렇습니다.
예시 코드입니다. 이런 자리를 기본값 매개변수(default parameter)라고 합니다.
C++의 기본값
기본값은 맨 뒤에만 둡니다
C++은 위치 대응만 씁니다. 순서로만 짝지으니 가운데 자리를 건너뛸 수 없습니다. 그래서 기본값이 있는 매개변수는 목록의 맨 뒤에 와야 합니다.
예시 코드입니다. float은 소수, int는 정수 타입입니다. 아래 헤더는 C++이 허용하지 않습니다.
가변 개수 매개변수
몇 개를 넘길지 정하지 않을 때
값의 개수를 정해 두지 않고 받는 언어도 있습니다. C#은 타입이 같은 값을 몇 개든 받아, params를 붙인 배열 하나에 담습니다. 배열은 값을 줄지어 담은 것입니다.
예시 코드입니다. * 자리는 헤더에서 앞에 *를 붙인 형식 매개변수입니다. 튜플은 5강에서 봤습니다.
설계 고려 사항
언어를 만들 때 정할 것들
서브프로그램을 언어에 넣으려면 정할 것이 많습니다. 낯선 말은 해당 편에서 풀이합니다. 다음 편부터 하나씩 봅니다.
지역 변수는 서브프로그램 안에서 선언한 변수입니다.
다음 편