From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,998965b11075593f X-Google-Attributes: gid103376,public From: fjh@cs.mu.oz.au (Fergus Henderson) Subject: Re: Beginner's question (array parameters to functions) Date: 1998/11/29 Message-ID: <73qc0p$24e$1@mulga.cs.mu.OZ.AU>#1/1 X-Deja-AN: 416655122 References: <365F4360.F7E85C1E@columbia.edu> Organization: Computer Science, The University of Melbourne Newsgroups: comp.lang.ada Date: 1998-11-29T00:00:00+00:00 List-Id: Matthew Heaney writes: >greg writes: >> One requirement of the assignment is that the >> sorting be done by a function which takes the array as a parameter and >> returns a sorted array. ... >> My question is the following: As I understand it, in an Ada function, a >> parameter must be passed in "in" mode. Therefore, I assume that in this >> assignment, the sorting function has to make a copy of the array >> parameter, sort the items in this second array, and finally return this >> second array to the caller subprogram, because, given that the array is >> passed as a parameter, there is no way to change the values of the array >> that is copied in for use in the function. >> >> Is my understanding correct, or is there some way to avoid having to use >> two arrays? > >But there are two arrays no matter what: one is unsorted When the sort function is called. >and one is sorted. When the sort function returns. >Having two arrays is a condition of the problem statement, >and has nothing to do with the language. This is not correct. In some languages, e.g. C++, arrays can be passed and returned by reference, and can be modified, so (unless there was some additional constraint in the assignment, e.g. that the function's input argument not be modified) the two arrays could be the same array. The fact that these two arrays have different contents is not a contraction, because the different contents occur at different times, and it's quite possible for a single array to have different contents at different times. In other languages, e.g. Clean and Mercury, arrays can't be modified, but it is possible to create new arrays by modifying existing arrays, so long as the old version will no longer be referenced. In these languages, the two arrays would be conceptually distinct, but could occupy the same storage area. -- Fergus Henderson | "Binaries may die WWW: | but source code lives forever" PGP: finger fjh@128.250.37.3 | -- leaked Microsoft memo.