Pridať komentár

Príspevok, na ktorý odpovedáte

Re: nutnost pouzivania argumentov funkcii a procedur v jazyku PASCAL 03.01.2009 | 21:43
Avatar Zefram Cochrane MS Windows Vista Ultimate 64bi  Používateľ
>> treba predávať globálne premenné definované v hlavnom programe pomocou argumentov ?

nie

>> Teda ked pracujem s premennou "a" v procedure "dva" tak je to vlastne ta globalna prenenna "a"

ano

>> teda nie lokalna verzia z oboru platnosti funkcie "jedna"

lokalne premenne su neviditelne mimo vlastnu proceduru

>> Nebolo by logickejšie keby zo bola tá premenná z volanej funkcie?

nie, mohol by si lubovolne menit lokalne premenne "rodicovskej funkcie", program by bol imho neudrziavatelny, predstav si toto:
procedure aaa;
var a,b,c : integer;
begin
  a := 123;
  b := 666;
  c := sin(5);
  writeln(c);
end;

Funckcia "sin" je nejaka cudzia funkcia. Urcite by jej autor potreboval nejake pomocne premenne na docasne vypocty, medzisucty atd. Keby si nahodou on zvolil pomocnu premennu "a" tak by prepisal tvoju premennu a. Cize autor funckie sinus by musel poznat mena vsetkych lokalnych premennych vo vsetkych existujucich aj buducich programoch a musel by pouzit iny identifikator.
program pokus;	      // namespace pre globalne premmene

var p : integer = 5;  // plobalna premenna p

procedure foo;
begin
  writeln(p);         // vypise plobalnu premennu
end;

procedure bar(p : integer);
begin
  writeln(p);         // vypise parameter p 
end;

procedure zzz;
var p : integer;     // lokalna premenna ma prioritu pred globalnou
begin
  p := 1234;         // globalnu nezmeni
  writeln(p);        // vypise lokalnu
  writeln(pokus.p);  // vypise globalnu premennu (program,unit,self alebo inherited je namespace identifikator)
end;

begin
  zzz;               // 1234, 5
  foo;               // 5
  bar(666);          // 666
end.

2 + 4 plus tisíc (číslom)

Maximálna veľkosť je: 2,0 MB