Proceduren |
Nationellt centrum för flexibelt lärande 2002 |
|
I Delphi
har vi två typer av underprogram vi kan använda, procedurer
och funktioner.
Dessa kodas ovanför huvudprogrammets begin.
Proceduren
Procedurer
har du faktiskt redan använt i kursen fast du kanske inte riktigt
tänkt på det. Det är procedurer som redan är
gjorda åt oss så att programmeringen ska vara enkel.
Sådana procedurer är t ex:
- clrscr
- writeln()
- readln()
En
procedur kan ta, men behöver inte, flera parametrar.
En parameter är ett värde som skickas med till proceduren
när den anropas.
Ex:
- writeln('Hej');
anropar proceduren writeln med parametern 'Hej'.
- readln(tal);
anropar proceduren readln med parametern tal.
- clrscr;
är en procedur som saknar parametrar.
Deklarera
en procedur.
procedure hejsan(antal
: integer);
var i:integer;
begin
for i:=1 to antal do
writeln('Hejsan');
end;
Vi
ser att proceduren heter hejsan och att den har en parameter, antal,
som är av integer typ.
Därefter kommer det eventuella variabler som behövs inne
i proceduren.
Här behövs tydligen en heltalsvariabel, i.
Observera att den variabeln ENDAST finns inne i proceduren, man
kan inte komma åt den från något annat ställe
i programmet.
Därefter kommer ett begin som startar proceduren.
Det verkar som att proceduren skriver ut 'Hejsan' på skärmen
det antal gånger som parametern antal talar om.
Slutligen avlutas proceduren med ett end.
Värdeparametrar/Var-parametrar
Man
deklarerar parametrarna på lite olika sätt ifall man
vill tillåta eller inte tillåta att parametern förändras
i huvudprogrammet. På så sätt kan man få
proceduren att returnera förändrade parametrar till huvudprogrammet
ifall man vill.
Värdeparametern deklareras (precis som vanligt) så här:
program underprogram;
uses Crt32;
{$APPTYPE Console}
procedure parametertest(i
: integer);
begin
i:=i+1;
end;
var tal: integer;
begin
tal:=5;
parametertest(tal);
writeln(tal);
readln;
end.
Om
man provkör programmet kommer 5 att skrivas ut.
Anledningen till det är att proceduren inte tillåts att
förändra parametern från huvudprogrammet.
Rent praktiskt kan man tänka att proceduren bara får
arbeta med en kopia av den ursprungliga parametern. Det proceduren
gör med kopian påverkar alltså inte originalet
som finns i huvudprogrammet.
Byt
ut koden i procedurhuvudet mot följande:
procedure parametertest(var
i : integer);
Vi
har alltså lagt till ett var framför namnet på
parametern i proceduren. Den har blivit var deklarerad, en var-parameter
alltså.
Om programmet körs nu skrivs siffran 6 ut.
Det beror på att proceduren tillåts att arbeta med den
ursprungliga parametern, dvs originalet. När proceduren ändrar
parameterns värde så kommer ändringen att märkas
även i huvudprogrammet.
Filer
från videoavsnittet
Procedur exempel
Proceduren addera
Proceduren swap
Studiehandledningen!
|