서브루틴: 절차 및 기능 - 2


함수는 결과(숫자, 문자열 등)를 반환하는 서브루틴입니다.

온라인 상점에서 제품을 주문했다고 상상해 보십시오. 프로그래밍 관점에서 볼 때 특정 서브루틴을 호출했으며 절차와 달리 이 서브루틴은 결과를 반환해야 합니다. 주문한 제품을 배송합니다. 이러한 서브루틴을 함수라고 합니다.
함수는 프로시저와 거의 같은 방식으로 형식화됩니다. <예비> function <function name>(<variable name>:<its type> 세미콜론으로 구분된 매개변수 목록): <return value type> 시작하다 <함수 본체> 종료;
함수와 프로시저의 차이점은 함수는 값을 반환해야 한다는 것입니다. 이렇게 하려면 함수 이름을 변수로 사용하거나 특수 변수 Result를 사용해야 합니다. <예비> 함수 합계(a, b:정수): 정수; 시작하다 합계 := a + b; 종료; 또는 <예비> 함수 합계(a, b:정수): 정수; 시작하다 결과 := a + b; 종료;
두 정수의 산술 평균을 반환하는 함수는 다음과 같습니다. <예비> 함수 평균(a, b: 정수): 실수; 시작하다   평균 := (a + b) / 2; 끝; 메인 프로그램에서 이 함수를 호출하는 방법을 이해해야 합니다.
프로시저를 호출하는 것과 같은 방식으로 함수를 호출하면 안 됩니다. <예비> 평균(10, 5); 함수에 의해 반환된 값은 손실됩니다. 마치 온라인 상점의 상품이 누구에게도 주어지지 않고 버려지는 것과 같습니다. 고객이 좋아할 것 같지 않습니다.

결과를 변수에 저장(또는 화면에 인쇄)하는 것이 더 정확합니다. <예비> a := 평균(10, 5);

또는

<예비> writeln(평균(10, 5));

종종 프로그래머는 부울 값(true 또는 false(True 또는 False))을 반환하는 부울 함수를 사용합니다.
이러한 기능은   일부 속성을 확인하십시오.
숫자가 짝수인지 확인하는 논리 함수를 작성하는 두 가지 예를 고려하십시오. <몸>
함수 및 프로시저 작업에 대한 마지막 참고 사항: 프로그램의 함수 및 프로시저 수에는 제한이 없습니다. 또한 하나의 서브루틴은 다른 서브루틴을 호출할 수 있으며 심지어 자신을 호출할 수도 있습니다.
 

1)  더 나은 방법:
식 결과
n % 2 == 0
참(True) 또는 거짓(False)이 됩니다.
조건문을 작성할 필요가 없습니다!
2) 그러지 마세요!
그렇게 써도 되지만 기록이 길어질 것 같으니 안하는 것이 좋습니다
<예비> 부울 isEven(int n) { 반환 (n % 2 == 0); } <예비> 부울 isEven(int n) { 경우 (n % 2 == 0) true를 반환합니다. 또 다른 거짓을 반환합니다. }