서브루틴 은 이름이 있고 별도의 작업을 해결하는 프로그램의 별도 부분입니다. 서브루틴은 메인 프로그램의 시작 부분에 있으며 이름을 지정하여 메인 프로그램에서 시작(호출)할 수 있습니다.
서브루틴을 사용하면 프로그램의 다른 위치에 동일한 코드를 작성해야 하는 경우 코드 중복을 피할 수 있습니다.
프로그램으로 가져온 라이브러리(예: 수학 라이브러리 math)는 누군가가 이미 컴파일한 서브루틴으로 구성됩니다. 프로그래머는 자신이 구현하는 알고리즘에 대해 생각할 필요가 없으며 정확히 수행하는 작업에 대해서만 생각하면서 적용하기만 하면 됩니다. 이것은 시간을 크게 절약해 줍니다. 다른 사람이 이미 작성한 알고리즘을 작성할 필요가 없습니다.
각 루틴은
다음 한 가지만 수행해야 합니다. 무언가를 계산하거나 일부 데이터를 출력하거나 다른 작업을 수행하십시오.
두 가지 유형의 서브루틴이 있습니다 -
절차 및
함수
서브루틴은 결과를 특정 형식으로 화면에 인쇄하는 것과 같은 일부 작업을 수행합니다(간단한 예,
writeln() 문은 다음으로 인쇄하는 표준 서브루틴입니다. 화면정보)
함수 서브루틴은 메인 프로그램에서 사용할 수 있는
결과를 반환(숫자, 문자열 등)합니다.
간단한 절차를 작성해 보겠습니다.
화면에 "Error"라는 문자열을 표시해야 한다고 가정합니다. 사용자의 잘못으로 인해 코드에 오류가 발생할 때마다(예: 잘못된 데이터를 입력한 경우)
이것은 진술문을 작성하여 수행할 수 있습니다.
<예비>
writeln('오류');
이제 그러한 줄을 프로그램의 여러 위치에 삽입해야 한다고 상상해 보십시오. 물론 아무데나 쓰셔도 됩니다. 하지만 이 솔루션에는 두 가지 단점이 있습니다.
1) 이 문자열은 메모리에 여러 번 저장됩니다.
2) 오류 시 출력을 변경하려면 프로그램 전체에서 이 줄을 변경해야 하므로 다소 불편합니다.
이러한 경우 절차가 필요합니다.
프로시저가 있는 프로그램은 다음과 같습니다.
<예비>
...
네임스페이스 표준 사용;
절차 printError(); // 절차 설명
시작하다
writeln('오류'); // 프로시저 본문 - 프로시저가 실행할 명령
끝;
// 메인 프로그램
시작;
...
인쇄오류(); // 실행 절차를 시작합니다. 실행하려는 절차의 이름을 지정하기만 하면 됩니다.
...
인쇄오류();
...
끝.
프로시저는
procedure
라는 단어로 시작합니다. 프로시저 이름 뒤에는 프로시저 실행이 의존하는 변수 및 유형을 나타내는 괄호가 표시됩니다. 예:
var a, b, 답변: 정수;
프로시저 합계(a, b: 정수);
시작하다
답변 := a + b;
종료;
프로시저에서 실행되는 모든 명령문은 들여쓰기됩니다.
프로시저는 메인 프로그램보다 먼저 작성됩니다
프로시저를 실행하려면 기본 프로그램에서
이름으로 호출하고 괄호를 작성하는 것을 기억해야 합니다!
프로그램에서 프로시저를 여러 번 호출할 수 있습니다.