Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoć oko procedure

[es] :: Pascal / Delphi / Kylix :: Pomoć oko procedure

[ Pregleda: 1628 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

93 Stefan
Stefan 93

Član broj: 208278
Poruke: 624
*.dynamic.sbb.rs.



+13 Profil

icon Pomoć oko procedure15.03.2010. u 22:23 - pre 171 meseci
Ćao svima, izvinite što vas opet smaram sa ovim jednostavnim stvarima, ali mi očigledno imamo nikakvog profesora koji uopšte ne zna da objasni ništa.
Hitno je, pa vas molim da pomognete, treba mi najkasnije sutra do podneva objašnjenje.
Dakle imam ovaj zadatak i pitanje je šta se štampa:
Citat:
program test;
var a,b,c,d:integer;
procedure p(var b:integer; c:integer);
var d:integer;
begin
a:=5;
b:=6;
c:=7;
d:=8;
writeln (a,b,c,d)
end;
begin
a:=1;
b:=2;
c:=3;
d:=4;
p(a,b);
writeln (a,b,c,d)
end.

Rešenje je:
Citat:
6,6,7,8
6,2,3,4

Jasno mi je kako se dobije ovaj drugi niz, ali ne i ovaj prvi. U čemu je razlika između te gore formulacije i ove:
Citat:
program test;
var a,b,c,d:integer;
procedure p(var x:integer; y:integer);
var w,z:integer;
begin
w:=5;
x:=6;
y:=7;
z:=8;
writeln (a,b,c,d)
end;
begin
a:=1;
b:=2;
c:=3;
d:=4;
p(a,b);
writeln (a,b,c,d)
end.

U kojoj se dobija:
Citat:
5,6,7,8
6,2,3,4

?
Kako se kreće promena vrednosti koje se uzimaju van procedure u toj prvoj proceduri?
Da li ovako
a:=5;
a:=6;
b:=7?
Izvinjavam se svima koje sam razgnevio svojim pisanjima. Trudiću se da se popravim.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Pomoć oko procedure16.03.2010. u 00:05 - pre 171 meseci
> Jasno mi je kako se dobije ovaj drugi niz, ali ne i ovaj prvi.

Zar je teško napisati kod lepo formatiran i razdvojen? Molim te da koristiš code tagove za pisanje koda.

Code:

var
  a, b, c, d: integer;

procedure p(var b: integer; c: integer);
var
  d: integer;
begin
  a := 5;  // menja se globalna promenljiva a
  b := 6;  // menja se parametar b, koji je u stvari globalna promenljiva a
  c := 7;  // menja se lokalna promenljiva c
  d := 8;  // menja se globalna promenljiva d
  writeln(a, b, c, d)
end;

begin
  a := 1;
  b := 2;
  c := 3;
  d := 4;
  p(a, b); // po povratku a je promenjen, b nije
  writeln(a, b, c, d);
end.


> U čemu je razlika između te gore formulacije i ove:

To ostavljam tebi kao vežbu, pusti program kroz debugger i biće ti jasno.
 
Odgovor na temu

93 Stefan
Stefan 93

Član broj: 208278
Poruke: 624
*.dynamic.sbb.rs.



+13 Profil

icon Re: Pomoć oko procedure16.03.2010. u 09:38 - pre 171 meseci
Code:
d := 8;  // menja se globalna promenljiva d

Valjda se menja lokalna promenljiva d? Definisana je u var u okviru procedure.
A pogledaću sad za koji minut to u debuggeru, hvala.
Izvinjavam se svima koje sam razgnevio svojim pisanjima. Trudiću se da se popravim.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Pomoć oko procedure16.03.2010. u 12:21 - pre 171 meseci
> Valjda se menja lokalna promenljiva d? Definisana je u var u okviru procedure.

Da tako je, prevideo sam tu deklaraciju.
 
Odgovor na temu

93 Stefan
Stefan 93

Član broj: 208278
Poruke: 624
*.dynamic.sbb.rs.



+13 Profil

icon Re: Pomoć oko procedure16.03.2010. u 19:00 - pre 171 meseci
Hvala na pomoći, ipak nije dala tako neke zeznutije primere na kontrolnom, pa sam lepo uradio.
Izvinjavam se svima koje sam razgnevio svojim pisanjima. Trudiću se da se popravim.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Pomoć oko procedure

[ Pregleda: 1628 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.