Kezdőoldal » Számítástechnika » Programozás » Free Pascal: mikor kell...

Free Pascal: mikor kell paraméterátadást használni és ha anélkül van megoldva a dolog de működik úgy is, okozhat a későbbiekben ez hibát?

Figyelt kérdés

Mutatok egy példát, egy kis programmal. Egyik eljárásban átadtam a tömböt változóként, amelyen az eljárás műveleteket végzett, másik esetben pedig nem adtam át és ugyanúgy megtörténtek a műveletek.

Meglepődtem, hogy a programban deklarált globális változókat használhattam az eljárásban, volt hogy addig nem tudtam továbblépni amíg lokális változókkal nem oldottam meg a deklarálást az adott eljáráson belül...

Tehát mitől függ a paraméterátadás, inkább szabályos módon szeretném csinálni minthogy a később a helytelen használat miatt "meghatározhatatlan hiba" lépjen fel a program futása, memóriakezelése során... Tényleges szabályok érdekelnének paraméterátadás esetén, amelyeket ajánlott betartani.


A program:

uses crt;

type

tombtip=array[0..3] of byte;

var

t:tombtip;

i,elem:byte;

procedure feltolt (var t:tombtip);

{var

i,elem:byte;}

begin

randomize;

for i:=0 to 3 do

begin

elem:=random(10);

t[i]:=elem;

end;

end;

procedure fparamnelkul;

begin

randomize;

for i:=0 to 3 do

begin

elem:=random(10);

t[i]:=elem;

end;

end;


begin

feltolt(t);

writeln('parameteratadassal:');

for i:=0 to 3 do writeln(t[i]);

writeln;

writeln('parameteratadas nelkul');

fparamnelkul;

for i:=0 to 3 do writeln(t[i]);

readln;

end.



2014. dec. 4. 04:32
 1/2 anonim ***** válasza:

Szerintem a példádban nincs jelentősége, mivel egy globális tömbváltozót adtál át az eljárásnak, amit az amúgy is lát. Akkor van jelentősége, amikor másik eljárás vagy függvény lokális változóját kell átadnod egy másik függvénynek. Ott kénytelen vagy átadni, mert egy függvényből nem látszik egy másik függvény lokális adata.


Érdemes ilyeneknek utánaolvasnod még, hogy változó élettartama és láthatósága, ezen kívül érték szerinti és cím szerinti paraméter átadás.

2014. dec. 4. 06:54
Hasznos számodra ez a válasz?
 2/2 SimkoL ***** válasza:

Ha a programunk több eljárása és függvénye is használ egy adatbázist, jelen esetben a 't' tömböt akkor érdemes globális változóként deklarálni, megspórolva vele egy pár sort. A ciklus és egyéb változókat nem szabad mivel könnyen 'szemetet' hagyhatnak maguk után ha egy eljárásban vagy függvényben nem állítod 'alaphelyzetbe' őket.

A minta programodban felesleges a típus és az elem deklarációja. Típust olyankor készítünk, ha nem áll rendelkezésre, pl. egy rekord szerkezet. A tombtip minden eleme byte típusú, lehet neki közvetlenül értéket adni, nem kell az elem változó. A Crt unit felesleges mivel semmit nem használsz belőle, a Randomize eljárást elég a főprogramban egyszer meghívni az elején, valamint a #10#13 a sok WriteLn elkerülésére használható.

WriteLn(#10#13,'parameteratadas nelkul'); egyenértékű a

WriteLn;

WriteLn('parameteratadas nelkul'); sorokkal.

Továbbá javaslom még, hogy tanulj meg szép kódot írni. Bár a Pascal nem érzékeny a kis és nagybetűkre, de égeti a szemem. A foglalt szavak kisbetűsek, a többi nagybetűvel kezdődik és ha összetett szó a többi szó is. Tehát:

Randomize, WriteLn = Write Line, ClrScr = Clear Screen....

Érdemes most hozzászokni, mert a C típusú nyelveknél 'leszopod' magad egy-egy betű miatt.

2014. dec. 4. 12:36
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!