Zmienna (komputer)

W informatyce , zmienne są symbole , które kojarzą się nazwisko ( identyfikator ) o wartości. W większości języków, a zwłaszcza w najpopularniejszych, zmienne mogą zmieniać wartość w czasie ( dynamicznie ). W językach niektórych paradygmatów , w szczególności programowania funkcjonalnego , ich wartość jest natomiast zamrożona w czasie ( statyczna ).

Zmienne i stałe

W przeciwieństwie do zmiennej, stała jest identyfikatorem powiązanym ze stałą wartością. Składniowo ten identyfikator zawiera wszystkie aspekty zmiennej. Jednak przypisywana jest jej wartość końcowa, czyli stała , na przykład wielkość szachownicy (8x8). Stała zawiera wartość, która może mieć różne wartości w zależności od egzekucji, na przykład w trałowiec , w którym gracz może wybrać rozmiar planszy.

Programowanie zmiennych

W języku programowania zmienną jest miejsce do przechowywania wyniku . Jednak możliwości Zmiennej są ściśle powiązane z językiem programowania, do którego się odnosimy. Na przykład zmienna w C ++ będzie miała sześć cech:

Można jednak znaleźć języki, które ograniczają te cechy:

Zmienne i wskaźniki

We wszystkich językach, które pozwalają na dynamiczne tworzenie adresów (nowość w C ++ czy Javie), pojęcie zmiennej jest uzupełnione pojęciem wskaźnika (typ danych związanych ze zmienną, której wartości są adresy). Adres zawarty w zmiennej wskaźnikowej może być niedostępny dla programisty (PHP, Java, Python) lub bezpośrednio dostępny (C ++) .

Nazwy zmiennych

W niektórych językach nazwy zmiennych (np. Identyfikatorów ) muszą koniecznie rozpoczynać się literą (wielką lub małą literą) lub znakiem _ ( podkreślonym ). Pozostałe znaki tworzące nazwę zmiennej muszą być literą, cyfrą lub _ . Zróżnicowanie wielkich i małych liter (uwzględnianie wielkości liter) w nazwie zmiennej zależy od rozważanego języka.

Przykłady prawidłowych nazw zmiennych w C  :

Przykład nieprawidłowej nazwy zmiennej w C:

Tak więc pierwszy znak nie może być liczbą, ponieważ umożliwia to ułatwienie kompilacji lub interpretacji programu poprzez usunięcie niejednoznaczności: gdy kompilator odczytuje liczbę, wie, że następujące po niej znaki będą stanowić wartość liczbową. Podobnie, jeśli odczyta literę lub podkreślenie, będzie wiedział, że ma do czynienia ze zmienną.

Wszystkie te nazwy zmiennych są prawidłowe w Lisp .

Pisanie na maszynie

Kiedy typ zmiennej jest określony podczas kompilacji (jawnie przez programistę lub automatycznie na podstawie wnioskowania o typie ), mówimy o typowaniu statycznym . Wartości tej zmiennej muszą być tego typu (w szerokim sensie, to znaczy tego samego typu lub typu pochodnego).

Statyczne typowanie pomaga generować bardziej wydajny kod obiektowy (pod względem zużycia pamięci i szybkości wykonywania). Zabrania jednak refleksyjności podczas wykonywania.

W przeciwnym razie, w przypadkach, gdy to nie zmienne mają typ, ale wartości, mówimy o typowaniu dynamicznym lub typie ukrytym.

O silnym typowaniu mówimy wtedy, gdy język wymaga zadeklarowania zmiennych w typie i użycia w tym typie (np .: Ada lub C ++). O słabym typowaniu mówimy wtedy, gdy język przyznaje, że zmienna może zmieniać typ w trakcie swojego istnienia (w szczególności w celu dostosowania się do semantyki wyrażenia).

Cykl życia zmiennych

Zwykle jest pięć operacji na zmiennych, z których każda może przybierać różne formy składniowe.

Języki, takie jak C , Caml czy Pascal , wymagają zadeklarowania zmiennej lub nawet nadania jej typu przed użyciem. Zmuszony deklaracja zmiennych umożliwia kompilator lub interpreter do identyfikowania błędów typograficznych jako zmienne niezgłoszonych lub zmiennych jednobrzmiących. Inne języki składają deklarację w momencie pierwszego przypisania (tak jest w przypadku większości języków skryptowych ) lub przy pierwszym pojawieniu się w kodzie (jak w Prologu).

Jeśli chodzi o inicjalizację zmiennych, to znaczy przypisanie wartości w tym samym czasie co definicja, niektóre języki wymagają zainicjowania zmiennej przed jej pierwszym odczytem, ​​inne podają wartość niejawną (określoną lub nieokreśloną), a na koniec inni pozwalają zmiennej mieć nieokreśloną wartość. Języki takie jak Oz czy Prolog, ściśle mówiąc, nie wykonują inicjalizacji. Deklarując zmienne żadna wartość nie jest skojarzona, mówimy, że zmienna nie jest związana . Wartość zmiennej jest określana w trakcie wykonywania programu. Nazywa się to unifikacją .

W programowaniu funkcjonalnym lub logicznych językach programowania zmienne mogą mieć tylko jedną wartość podczas swojego istnienia.

Refleksyjność

W większości języków zmienne istnieją tylko jako narzędzia dla programisty. Zatem zmiana nazwy wszystkich wystąpień zmiennej nie będzie modyfikować działania programu.

Wręcz przeciwnie, w celu zapewnienia dodatkowej wyrazistości, niektóre języki pozwalają nazwa zmiennej powinna być traktowana jako wartość jak każdy inny (na przykład, są to symbole z Common Lisp i Smalltalk ). Jest to bardzo przydatna technika do wydajnej implementacji algorytmów obliczeń symbolicznych .

Uwagi i odniesienia

  1. W języku C nie zmienia się w czasie, jeśli użyjemy słowa kluczowego const

Zobacz też