matematykaszkolna.pl
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 emotka 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? emotka 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ę emotka
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 rozumiememotka 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ść emotka
19 wrz 15:10
nx: Sprawdziłem przed chwilą działa jak nalezy.
19 wrz 15:16
tn: wiec wszystko OK emotka
19 wrz 15:23