Programmering A

 
Introduktion
Första programmet
Strukturerad programmering
Variabler
Selektion
Sammansatta villkor
Iteration
Underprogram
 
Introduktion
Proceduren
Funktionen
Självrättande övning 8.1
Insändningsuppgift 3
Klassrum
Hjälp
   
Senaste nytt
Till kursens början
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!

Proceduren Upp
   Kursindex © HSw CFL 2002