Najlepsze pytania
Chronologia
Czat
Perspektywa

Przypisanie

Z Wikipedii, wolnej encyklopedii

Remove ads

Przypisanie (podstawienie) – informatyczna operacja nadania, umieszczenia, wpisania do określonej l-wartości nowej wartości.

Rodzaje przypisania

Podsumowanie
Perspektywa

Przypisanie może zostać dokonane:

Instrukcja przypisania

Osobny artykuł: Instrukcja przypisania.

To jedna z podstawowych instrukcji prostych występujących w językach programowania. Zwykle nie zawiera taka instrukcja słowa kluczowego, choć istnieją języki programowania wymagające lub zezwalające opcjonalnie na użycie słowa kluczowego. Typowa składania takiej instrukcji ma postać:

l-wartość symbol_przypisania wyrażenie [terminator]

W najprostszym przypadku l-wartość jest identyfikatorem zmiennej lub wskaźnikiem.

W pewnych językach wymagane może być poprzedzenie instrukcji przypisania słowem kluczowym, w nowych implementacjach słowo takie zwykle jest opcjonalne, np. Basic:

10 LET A=1

Operator przypisania

Operator przypisania to operator, który:

  • powoduje przypisanie, i
  • zwraca wartość równą wartości przypisanej do l-wartości.

Operator przypisania może wystąpić w instrukcji przypisania ale może także wystąpić wewnątrz wyrażeń, tak jak każdy inny operator, gdyż w przeciwieństwie do instrukcji posiada tę właściwość, że zwraca określony rezultat. Taka konstrukcja występuje w językach, w których każda konstrukcja może być traktowana jak wyrażenie zwracające wartość (np. Icon, Algol 68), lub jako operator w pozostałych językach (np. C).

Inne operatory powodujące przypisanie

Inne operatory powodujące przypisanie:

  • inkrementacja (np. w języku C operator ++)
  • dekrementacja (np. w języku C operator --)
  • operator wymiany wartości (np. Icon operator :=:).

Np. w języku C instrukcja: i++; spowoduje zwiększenie wartości zmiennej i o jeden, a więc przypisanie do l-wartości i nowej wartości równej i+1.

Inicjalizacja zmiennej

Osobny artykuł: Inicjalizacja zmiennej.

Inicjalizacja zmiennej może nastąpić w wielu punktach kodu, zależnie od możliwości danego języka i przyjętego przez programistę rozwiązania. Wczesna inicjalizacja – w deklaracji zmiennej – jest najlepsza metodą uniknięcia błędów polegających na odwołaniu do zmiennych niezainicjowanych tzn. takich którym nie przypisano jeszcze konkretnej, sensownej wartości.

Wywołanie podprogramu

Osobny artykuł: Instrukcja wywołania.
Osobny artykuł: Argument (informatyka).

Przy wywołaniu podprogramu, a więc

w podprogramach w których występują parametry formalne, przed wykonaniem instrukcji zawartych w ciele podprogramu, następuje przypisanie do tych paramentów nowych wartości równych wartościom argumentów, wyspecyfikowanych w wywołaniu podprogramu. Sposób przypisania zależny jest od przyjętych metod kojarzenia argumentów z parametrami.

Efekty uboczne

Ten rodzaj przypisania występuje np. w podprogramie, w którym następuje przypisanie wartości do zmiennej globalnej. Wykorzystywanie efektów ubocznych jest krytykowane w literaturze przedmiotu jako prowadzące do błędów. W kodzie źródłowym bowiem takie przypisanie jest niewidoczne. Wymaga więc odwołania się do kodu podprogramu, który może być niedostępny (np. podprogramy biblioteczne).

Przypisanie do innej l-wartości

Takie przypisanie następuje:

Szczególnie posługiwanie się dwoma ostatnimi konstrukcjami, również wymaga szczególnej ostrożności i staranności, gdyż również może prowadzić do błędów lub nieprzewidzianych efektów i wyników.

 { Przykład w Turbo Pascalu }
 var s : string;
     len : byte absolute s;
 ...
 s:='Turbo Pascal';
 writeln(s); { wyprowadzenie napisu 'Turbo Pascal' }
 len:=5;     { przypisanie do zmiennej nakładanej len na 1 bajt zmiennej s zawierający długość łańcucha }
 writeln(s); { wyprowadzenie napisu 'Turbo' }
 ...

Przypisanie w instrukcji wejścia

Instrukcje wejścia-wyjścia służą do komunikacji programu, procesu z otoczeniem. Instrukcja wejścia, która pobiera dane z otoczenia (np. urządzeń wejścia, plików itd.) musi pobrane dane zapamiętać w określonej lokacji, czyli dokonać przypisania do wskazanej w tej instrukcji l-wartości.

Remove ads

Typy przypisań

Podsumowanie
Perspektywa

Ze względu na duże znaczenie przypisania w programowaniu w niektórych językach istnieją specjalne konstrukcje przypisania, ułatwiające kodowanie złożonych operacji przypisania. Do konstrukcji takich można zaliczyć przypisania wielokrotne, przypisania strukturalne i inne. Można więc wyróżnić:

  • przypisanie proste
  • przypisanie wielokrotne.

Przypisanie proste jest omówione wyżej. Przypisanie wielokrotne to zapis w jednym przypisaniu wielu przypisań:

l-w1, l-w2, … l-w_n = wyrażenie
wszystkim l-wyrażeniom od 1 do n zostanie przypisana wartość wyrażenia, co jest równoważne zapisowi:
l-w1 = l-w2 = … l-w_n = wyrażenie
taka konstrukcja jest dostępna w tych językach w których występuje operator przypisania,
l-w1, l-w2, … l-w_n = w1, w2, … w_n
co jest równoważne l-w1=w1, l-w2=w2, …, l-w_n=w_n, konkretna implementacja musi określać interpretację takiego zapisu, w którym obie listy będą różnej długości, co może być, ale nie musi, interpretowane jako błąd.

Przykładowo w języku PL/I dostępna jest instrukcja przypisania:

l-w1, l-w2, … l-w_n = wyrażenie;

która jest równoważna instrukcji Algolu 68:

l-w1 := l-w2 := … l-w_n := wyrażenie;

Odrębnym zagadnieniem są przypisania strukturalne, tzn. przypisania tablicowe, w których poszczególne elementy jednej tablicy otrzymują wartość odpowiadających elementom innej tablicy, oraz przypisania strukturowe, w których odpowiednim polom jednej struktury (rekordu) przypisane zostają wartości innej struktury. Różne rozwiązania mogą stawiać wymogi co do zgodności reprezentacji pamięciowej poszczególnych pól, lub zgodności nazw (identyfikatorów) pól.

Remove ads

Specyficzne formy przypisania

Podsumowanie
Perspektywa

Specyfika niektórych języków programowania, których założenia i składnia odbiegają do większości uniwersalnych języków sprawia, że zapis przypisania odbiega znacząco od przypisania w typowych językach.

Forth

Przypisanie w języku Forth ma postać:

wyrażenie l-wartość <! | C! >

Powyższy zapis wynika z prostej zasady tego języka, według której wszystkie operacje pobierają argumenty ze stosu. Wyrażenie (dowolnie rozbudowane) i l-wartość, która na stosie ma postać adresu (i również może być dowolnie rozbudowanym wyrażeniem) umieszczane są na stosie, a operatory powodują przypisanie danej do odpowiedniego adresu. l-wartość może być identyfikatorem zmiennej lecz działanie będzie identyczne: identyfikator zostanie zinterpretowany jako operacja umieszczenia na stosie adresu zmiennej. W tym języku można więc l-wyrażenie wyrazić za pomocą, np. literału liczbowego, pod warunkiem, że literał ten będzie reprezentował poprawny adres, co w typowych językach jest w uogólnieniu niedopuszczalne.

Lisp

W językach opartych na języku Lisp, operuje się listami, a więc i przypisanie realizowane jest przez listę. Przypisanie może więc mieć postać:

(setq l-wyrażenie wyrażenie)

przy czym oba argumenty mogą być również listami.

Smalltalk

W języku Smalltalk (uznawanym za najbardziej obiektowy język programowania) wszystko jest obiektem. Przypisanie jako takie więc realizowane jest przypisanie do pewnej wartości (stanowiącej obiekt) nowej właściwości, stanowiącej l-wartość

l-wartość <- wartość

Cobol

Język Cobol projektowany był głównie do przetwarzania danych administracyjnych, finansowych itp., co znalazło swoje odzwierciedlenie w składni, która miała przypominać język naturalny (angielski). Sąd przypisanie może mieć formę:

 MOVE wyrażenie TO l-wartość

Dopuszczalna jest jednak także forma typowa dla języków programowania:

 COMPUTE l-wartość=wyrażenie

Symbole przypisania

Podsumowanie
Perspektywa

Przypisanie w kodzie źródłowym reprezentowane jest w pewnych kontekstach (instrukcja przypisania, operator przypisania), przez odpowiedni symbol/symbole zdefiniowane przez składnię rozpatrywanego języka programowania.

Podział symboli

Symbole przypisania można podzielić na:

  • proste, np. =, :=,
  • złożone, np. +=, **:=.

Proste symbole realizują operację przypisania. Symbole złożone reprezentują określone działanie, przeważnie operator, i przypisanie, typowy symbol złożony ma składnię:

 l-wartość operator= wyrażenie

Działanie takiego przypisania złożonego jest substytutem zapisu:

 l-wartość = l-wartość operator wyrażenie

We wczesnych wersjach języka C stosowany był zapis w postaci:

 l-wartość =operator wyrażenie

lecz tę formę zmieniono na współczesną ze względu na niejednoznaczność takiego zapisu, np. x=-5;.

Nieco inaczej definiowane są symbole złożone przypisania, składające się z operatora porównania i przypisania, dostępne w języku Icon, które interpretowane są następująco:

 l-wartość operator_porównania:= wyrażenie
 # jest interpretowane jak:
 if l-wartość operator_porównania wyrażenie then l-wartość := wyrażenie

np.

 a<:=b
 # jest równoważne:
 if a<b then a:=b

Symbole w językach programowania

Więcej informacji rodzaj symbolu, operacja ...

Języki programowania

Więcej informacji język programowania, rodzaj ...
Remove ads

Zobacz też

Przypisy

Bibliografia

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads