Informatyka
nx: Witam czy jest tu ktoś kto zna się na programowaniu? konkretnie chodzi mi o procedury i
przekazywania parametrów przez zmienną i przez wartość głównie chodzi mi o roznice w
zastosowaniu obu przekazów.
19 wrz 13:44
Trivial:
Przekazując parametr przez wartość, w pamięci tworzy się kopia wartości zmiennej pod innym
adresem. Funkcja korzysta z tej kopii, wykonuje na niej obliczenia itd. Po zakończeniu
procedury pamięć jest zwalniania i może zostać znowu użyta. Oryginalna zmienna pozostaje
nienaruszona.
Przekazując przez referencję (zmienną?), przekazujesz adres komórki pamięci do tej zmiennej i
funkcja na niej operuje. Po zakończeniu procedury, oryginalna zmienna mogła ulec zmianie.
19 wrz 13:49
nx: Dzięki teraz juz to jakos ogarniam

ze wszystkiego co miałem do tej pory tylko tego nie
mogłem załapać
19 wrz 13:54
Trivial:
Jaki język? C?
19 wrz 13:55
nx: Nie Pascal
19 wrz 13:57
Trivial: To tego jeszcze ktoś używa?

Sam się uczysz, czy w szkole?
19 wrz 13:58
nx:
To czyli tak jesli mam taki przykład:
program united;
var a,b:integer;
procedure wartosci(x,y:integer);
begin
x:=x+6;
y:=y−4;
writeln('x = 'x);
writeln('y = 'y);
end;
begin
writeln('podaj parametr a');
readln(a);
writeln('Podaj parametr b');
readln(b);
wartosci(a,b);
writeln;
writeln('a = ',a);
writeln('b = ',b);
readln;
end.
to w tym programie parametry są zmieniane tylko wewnątrz procedury?
19 wrz 14:01
nx: No niestety

w szkole ale kiedys miałem stycznosc z c++ no i kontynuuje tego c++ samotnie
19 wrz 14:03
Trivial:
Nie znam się na Pascalu. Jeśli domyślnie do funkcji przekazuje się zmienne przez wartość (może
być inaczej) to tak.
19 wrz 14:06
nx: Aha ok to dzięki jescze raz za wyjasnienie tych roznic było to dla mnie kluczowe a nad tym to
sie juz tez zastanowie.
19 wrz 14:10
tn: w tej chwili przekazujesz rzeczywiście przez wartość, jeśli chciałbyś pracować na oryginale
musiałbyś użyć przed nazwą argumentu słowa kluczowego var,
bądź przekazać przez wskaźnik − co przypomina cplusplusowską referencję
19 wrz 14:25
tn: zapomniałem dopisać: przekazanie z użyciem słowa kluczowego var nazywa się przekazaniem przez
zmienną
19 wrz 14:28
nx: Ok czyli gitara juz to rozumiem

dzięki
tn teraz jeszcze musze powtorzyc funkcje. Ale to
juz pikuś.
Czyli program w wersji przekazania parametrów przez zmienną wyglądałby po prostu tak:
program united;
var
a,b:integer;
procedure wartosci(var x,y:integer);
begin
x:=x+6;
y:=y−4;
writeln('x = 'x);
writeln('y = 'y);
end;
begin
writeln('podaj parametr a');
readln(a);
writeln('Podaj parametr b');
readln(b);
wartosci(a,b);
writeln;
writeln('a = 'a);
writeln('b = 'b);
readln;
end.
19 wrz 14:37
tn: nie wrzucam tego na kompilator, ale na pierwszy rzut oka jest ok, sprawdź czy zmienia się
wartość
19 wrz 15:10
nx: Sprawdziłem przed chwilą działa jak nalezy.
19 wrz 15:16
tn: wiec wszystko OK
19 wrz 15:23