Tak, jak pisali koledzy - nazwa zmiennej ma znaczenie wtedy, gdy są one w tym samym zakresie (ang. scope
). Aczkolwiek od formalnej strony, to nazwa jest istotna jedynie dla programisty, bo kompilator/interpreter/cokolwiek, co dany kod wykonuje nie operuje nazwami, ale adresami/wskaźnikami na wartości. Nazwy opisowe są stosowane po to, żeby programiście było wygodniej się połapać. Bo jednak bardziej intuicyjne jest odwołanie się do zmiennej iloscSamochodowWleasingu
niż $0fac0013
;)
W rzeczywistości zmienna to taka "szufladka" która przechowuje jakąś wartość, a gdy odwołujesz się w programie do zmiennej, to tak naprawdę wydajesz polecenie w stylu "otwórz szufladkę o nazwie xxx, weź jej zawartość i zrób z nią określone rzeczy" ;) Niektóre języki wymuszają pilnowanie typów, to znaczy że do szufladki przeznaczonej do trzymania liczb nie wsadzisz niczego innego niż liczba, z kolei część języków ma to zupełnie gdzieś i ta sama szufladka może trzymać liczbę, a zaraz potem możesz do niej wsadzić jakiś napis.
Poniżej masz pseudokod, którym postaram się zilustrować temat:
Chory1 = "Nowak";
Chory2 = "Maćkowiak";
function Wylecz(Pacjent) {
alert(Pacjent);
}
Wylecz(Chory1);
Wylecz(Chory2);
}
Wyobraźmy sobie, że jesteśmy u lekarza, a nasze zmienne są pacjentami w poczekalni. Pielęgniarka przychodzi i mówi "Pan Nowak proszę wejść do gabinetu". Nazwisko tak naprawdę ma jedynie na celu wskazanie, o którego pacjenta chodzi (analogicznie do "numeru szufladki" ze zmienną). Od razu widać też, dlaczego nie może być dwóch zmiennych o tej samej nazwie w jednym zakresie. Przecież jakby było dwóch Nowaków w poczekalni, to nie wiedzielibyśmy, który Nowak ma wejść na badanie.
Wywołujemy funkcję Wylecz
przekazując jej jako argument nazwisko pacjenta. Następnie ta funkcja rozpoczyna działanie i wykonuje pracę z danym Pacjentem. I teraz ten sam pacjent ma jakby dwie nazwy: "Nowak", czyli nazwisko pod którym jest znany wszędzie indziej, a także "Pacjent" - czyli jego określenie podczas badania. Gdy w gabinecie jest pacjent, lekarz mówiąc do pielęgniarki nie używa formy "proszę podać p. Nowakowi zastrzyk", ale mówi "proszę pacjentowi dać zastrzyk". Ale ponieważ w danej chwili tylko jeden pacjent jest badany, używając nazwy "Pacjent" wszyscy wiedzą, o kogo chodzi. Oczywiście, można podczas badania używać nazwiska (w naszym przykładzie zrobić w funkcji Wylecz
coś w stylu alert(Chory1);
, ale przez to stracilibyśmy uniwersalność tej funkcji, mogłaby ona jedynie działać na tym konkretnym chorym. A robiąc to w powyższej postaci, możemy do funkcji przesłać dowolnego pacjenta, na którym funkcja będzie mogła działać.
Mam nadzieję, że teraz trochę Ci temat wyjaśniłem. Jeśli nadal czegoś nie łapiesz to śmiało pytaj. W każdym razie ważna rzecz do zapamiętania - nazwa zmiennej to tylko postać opisowa stosowana, żeby ułatwić życie programistom. I nieraz kilka nazw może się odnosić do tego samego obiektu/wartości/szufladki. Wywołując funkcję Wylecz(Chory1);
w jej wnętrzu zarówno Chory```` jak i
Pacjent``` oznaczają tą samą zmienną.