Module: 서브루틴: 절차 및 기능 - 1


Problem

12/12

인수 변경

Theory Click to read/hide

문제:두 변수의 값을 교환하는 프로시저를 작성합니다.
이 작업의 특징은 호출 프로그램에 알려지려면 프로시저에서 변경한 사항이 필요하다는 것입니다.

다음과 같은 절차를 작성해 봅시다.

var x, y: 정수; <예비> 절차 Swap(a, b: 정수); // 프로시저 매개변수에 대한 설명과 함께 var c: 정수; 시작 // 인수 값 (x 및 y)을 복사합니다. // 변수 a와 b는 x와 y에 관련되지 않은 독립 변수입니다. 씨 := 아; a := b; b := c; 끝; 시작하다 엑스 := 1;   y := 2; 스왑(x,y); //변수 x 및 y(인수)의 값이 매개변수 a 및 b에 복사됩니다. writeln('x = ', x, ', y = ', y); // x=1, y=2 끝. 이 프로그램을 실행해보면 변수 xy의 값이 변하지 않은 것을 확인할 수 있다. 매개변수가 인수의 값을 변경하려면 참조로 데이터 전달을 사용해야 합니다. 이렇게 하려면 데이터 유형의 이름 뒤에 서브루틴의 헤더에 var 라는 단어를 넣어야 합니다. <예비> 프로시저 스왑(var a, b: 정수);   // 이제 변수 a와 b는 메모리에서 변수 x와 y의 주소를 얻습니다. var c: 정수;  시작하다 씨 := 아; a := b; b := c; 끝; 사용법: 인수를 참조로 전달하면 프로시저를 호출할 때 변수 이름(숫자 및 산술 표현식이 아님)만 이 위치에 있을 수 있습니다!< br />
다음과 같은 프로시저를 호출하지 마십시오. <예비> 스왑(x, 4); 스왑(5+x, y);

Problem

두 변수의 값을 교환하는 프로시저를 작성하세요.

이 절차에서 오류 찾기 및 수정