Home Random Page


CATEGORIES:

BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism






Procedure-declarations

procedure-declaration = procedure-heading ';' directive

½ procedure-identification ';' procedure-block

½ procedure-heading ';' procedure-block .

procedure-heading = 'procedure' identifier [ formal-parameter-list ] .

procedure-identification = 'procedure' procedure-identifier .

procedure-identifier = identifier .

procedure-block = block .

The occurrence of a formal-parameter-list in a procedure-heading of a procedure-declaration shall define the formal-parameters of the procedure-block, if any, associated with the identifier of the procedure-heading to be those of the formal-parameter-list.

The occurrence of an identifier in the procedure-heading of a procedure-declaration shall constitute its defining-point as a procedure-identifier for the region that is the block closest-containing the procedure-declaration.

Each identifier having a defining-point as a procedure-identifier in a procedure-heading of a procedure-declaration in which the directive forward occurs shall have exactly one of its applied occurrences in a procedure-identification of a procedure-declaration, and this applied occurrence shall be closest-contained by the procedure-and-function-declaration-part closest-containing the procedure-heading.

The occurrence of a procedure-block in a procedure-declaration shall associate the procedure-block with the identifier in the procedure-heading, or with the procedure-identifier in the procedure-identification, of the procedure-declaration.

There shall be at most one procedure-block associated with a procedure-identifier.

 

Examples of procedure-and-function-declaration-parts:

 

Example 1:

NOTE --- This example is not for level 0.

 

procedure AddVectors (var A, B, C : array [low..high : natural] of real);

var

i : natural;

begin

for i := low to high do A[i] := B[i] + C[i]

end {of AddVectors};

 

Example 2:

procedure readinteger (var f : text; var x : integer);

var

i : natural;

begin

while f­ = ' ' do get(f);

{The buffer-variable contains the first non-space char}

i := 0;

while f­ in ['0'..'9'] do begin

i := (10 * i) + (ord(f­) - ord('0'));

get(f)

end;

{The buffer-variable contains a non-digit}

x := i

{Of course if there are no digits, x is zero}

end;

 

procedure bisect (function f(x : real) : real;

a, b : real;

var result : real);

{This procedure attempts to find a zero of f(x) in (a,b) by the method of bisection.

It is assumed that the procedure is called with suitable values of a and b such that

(f(a) < 0) and (f(b) >= 0)

The estimate is returned in the last parameter.}

const

eps = 1e-10;

var

midpoint : real;

begin

{The invariant P is true by calling assumption}

midpoint := a;

while abs(a - b) > eps * abs(a) do begin

midpoint := (a + b) / 2;

if f(midpoint) < 0 then a := midpoint else b := midpoint

{Which re-establishes the invariant: P = (f(a) < 0) and (f(b) >= 0)

and reduces the interval (a,b) provided that the value of midpoint is distinct from both a and b.}



end;

{P together with the loop exit condition assures that a zero is contained in a small subinterval.

Return the midpoint as the zero.}

result := midpoint

end;

 

procedure PrepareForAppending (var f : FileOfInteger);

{ This procedure takes a file in any state suitable for reset and places it in a condition for appending data

to its end. Simpler conditioning is only possible if assumptions are made about the initial state of the file.}

var

LocalCopy : FileOfInteger;

procedure CopyFiles (var from, into : FileOfInteger);

begin

reset(from); rewrite(into);

while not eof(from) do begin

into­ := from­;

put(into); get(from)

end

end {of CopyFiles};

begin {of body of PrepareForAppending }

CopyFiles(f, LocalCopy);

CopyFiles(LocalCopy, f)

end {of PrepareForAppending};

 


Date: 2015-12-24; view: 803


<== previous page | next page ==>
Example of a type-definition-part | Function-declarations
doclecture.net - lectures - 2014-2024 year. Copyright infringement or personal data (0.007 sec.)