Q&A

  • 다음 문장 해석 좀 부탁....


function Sum(const A:array of Integer):Integer;

var

i :Integer;

begin

Result:=0;

for i:= Low(A) to High(A) do

Result:= Result + A[i];

end;





Button1Click일 때

함수 호출시 매개변수는

X:= Sum(10,Y,27*i) //함수호출





2  COMMENTS
  • Profile
    이재식 2000.03.22 03:08
    김기용 wrote:

    >

    > function Sum(const A:array of Integer):Integer;

    > var

    > i :Integer;

    > begin

    > Result:=0;

    > for i:= Low(A) to High(A) do

    > Result:= Result + A[i];

    > end;

    >

    >

    > Button1Click일 때

    > 함수 호출시 매개변수는

    > X:= Sum(10,Y,27*i) //함수호출

    >

    >



    이재식 Wrote :

    안녕하세요?

    sum함수는 세개의 매개변수를 가집니다.

    즉, (10, 10, 81) 맞죠?



    이 세개의 값을 배열 A가 받습니다.

    그러면 A[0]에는 10, A[1]에는 10, A[2]에는 81이 들어갑니다.

    델파이는 배열첨자가 통상 0부터 시작합니다.

    값이 세개왔으니까 0부터 시작해서 2까지 값을 집어넣습니다.



    sum함수안의 for문에서 Low(A)는 0을 리턴합니다.

    Low(A)가 10을 리턴하는 것이 아닙니다.

    Low함수뒤에 매개변수로 배열이 오면 배열에 들어있는 값이 아니라,

    해당 배열의 제일작은 인덱스값을 리턴하는 것입니다.

    따라서, high(A)역시 81을 리턴하는 것이 아니라 2를 리턴합니다.

    왜냐하면, 배열 A는 세개의 매개변수를 받았기때문에

    0부터 2까지의 방이 만들어질테니까요.



    가령, Low(Integer), High(Integer)하고 비교해보세요.

    뒤에 변수타입이 올때하고, 배열이 올때하고 확실히 틀릴것입니다.



    결국 for문은 0부터 2까지 세번반복해서 10+10+81를 리턴하겠죠.



  • Profile
    김기용 2000.03.22 18:17
    이재식 wrote:

    > 김기용 wrote:

    > >

    > > function Sum(const A:array of Integer):Integer;

    > > var

    > > i :Integer;

    > > begin

    > > Result:=0;

    > > for i:= Low(A) to High(A) do

    > > Result:= Result + A[i];

    > > end;

    > >

    > >

    > > Button1Click일 때

    > > 함수 호출시 매개변수는

    > > X:= Sum(10,Y,27*i) //함수호출

    > >

    > >

    >

    > 이재식 Wrote :

    > 안녕하세요?

    > sum함수는 세개의 매개변수를 가집니다.

    > 즉, (10, 10, 81) 맞죠?

    >

    > 이 세개의 값을 배열 A가 받습니다.

    > 그러면 A[0]에는 10, A[1]에는 10, A[2]에는 81이 들어갑니다.

    > 델파이는 배열첨자가 통상 0부터 시작합니다.

    > 값이 세개왔으니까 0부터 시작해서 2까지 값을 집어넣습니다.

    >

    > sum함수안의 for문에서 Low(A)는 0을 리턴합니다.

    > Low(A)가 10을 리턴하는 것이 아닙니다.

    > Low함수뒤에 매개변수로 배열이 오면 배열에 들어있는 값이 아니라,

    > 해당 배열의 제일작은 인덱스값을 리턴하는 것입니다.

    > 따라서, high(A)역시 81을 리턴하는 것이 아니라 2를 리턴합니다.

    > 왜냐하면, 배열 A는 세개의 매개변수를 받았기때문에

    > 0부터 2까지의 방이 만들어질테니까요.

    >

    > 가령, Low(Integer), High(Integer)하고 비교해보세요.

    > 뒤에 변수타입이 올때하고, 배열이 올때하고 확실히 틀릴것입니다.

    >

    > 결국 for문은 0부터 2까지 세번반복해서 10+10+81를 리턴하겠죠.

    >



    이재식 님!

    명쾌한 해설 감사합니다.덕분에 완전히 이해를 했습니다.

    다음에 또 어려운 일 있으면 부탁합니다. 꾸벅