Czy operator przypisania jest poprawnie napisany w Pascalu? Operator przypisania. Operatory wejścia, wyjścia, przypisania

Typ lekcji:

  • edukacyjny Studenci zapoznają się z nowym operatorem Pascala;
  • powtórzenie tematu” Wewnętrzna pamięć komputer";
  • utrwalenie zdobytej wiedzy.

Temat lekcji:„Programowanie w Pascalu. Operator przypisania."

Cele:

  • Przedstaw pojęcie „operatora przypisania”.
  • Rozróżnij operacje na liczbach całkowitych i rzeczywistych.
  • Poprawnie konstruuj i oceniaj wyrażenia za pomocą operatora przypisania.
  • Pisz programy do prostych zadań.

Czas trwania lekcji: 1 godzina 30 minut.

PODCZAS ZAJĘĆ

Pierwsza lekcja

1. Powtórzenie tematu z poprzedniej lekcji „Typy danych”. Przykłady użycia słów, które brzmią tak samo, ale mają różne znaczenia semantyczne.

Nauczyciel i uczniowie pracują w formacie pytanie-odpowiedź (10 minut).

2. Nauczyciel wyjaśnia nowy temat korzystając z lekcji prezentacji multimedialnej „Programowanie w Pascalu. Operator przypisania." Podano definicję pojęcia „operator przypisania” oraz podano ogólną i strukturalną postać operatora. Zanim rozważymy działanie operatora przypisania, przypomnijmy i powtórzmy temat „Pamięć losowa, właściwości Pamięć o dostępie swobodnym».

Towarzyszy prezentacja. Aneks 1 (15 minut).

3. Uczniowie pracują samodzielnie, czytając i robiąc notatki na nowy temat (prezentacja lekcji jest nagrywana na komputerze uczniów, pytania do zanotowania ustala nauczyciel). Tutaj studenci mogą zapoznać się z tekstami programów korzystających z operatora przypisania Załącznik 2(20 minut).

Druga lekcja

4. Studenci pracują przy tablicy wykonując ćwiczenia (12-15 minut).
1. Nauczyciel przeprowadza kontrolę wiedzy w formie testu. Program testu jest wstępnie nagrany na komputerach uczniów. Wynik jest przydzielany przez program. Dodatek 5(10 minut).
5. Uczniowie wykonują małą samodzielną pracę nad kartkami lub piszą i debugują program w języku ALP Pascal, który wykorzystuje operator(y) przypisania (nauczyciel wywołuje numery kart z zadaniami). Uczniowie otrzymują ocenę za swoją pracę. Dodatek 3 . Dodatek 4(15 minut).
Praca domowa. Studenci proszeni są o napisanie tekstu prostego programu w języku ASL Pascal, który wykorzystuje operator(y) przypisania (dla tych uczniów, którzy nie mieli czasu na wykonanie zadania na zajęciach).

Wnioski:

  • Do bloku 1 powtarzaj temat z poprzedniej lekcji.
  • W blokach 2, 3 i 4 wprowadzony i wzmocniony jest nowy temat „Operator przypisania”.
  • Poprzez bloki 5 i 6 realizowana jest kontrola wiedzy.

Programowanie w Pascalu

Lekcja nr 1 (2 godziny). Zmienne i stałe. Operator przypisania

  1. Sprawdzanie pracy domowej.
  2. Nowy temat.
  3. Praca domowa.

Sprawdzanie pracy domowej.

2. Nowy temat: „Zmienne i stałe. Operator przypisania"

Zmienny - to nazwa obszaru pamięci (wielkość obszaru zależy od typu danych), w którym przechowywana jest wartość przypisana do zmiennej. Zmienną można porównać do pudełka, w którym znajduje się wartość (najlepiej jest z apartamentowcem, bo z pudełka można coś wyjąć i będzie to ostatnie, czyli pudełko pozostanie puste, a zmienna, nawet jeśli został użyty, pozostaje w obszarze pamięci).
Stała – stałe pojedyncze wartości liczbowe lub tekstowe, które nie mogą ulec zmianie podczas wykonywania programu.
Operator przypisania. Jeden z najczęściej używanych operatorów operator przypisania. Ogólny widok operatora przypisania:

nazwa zmiennej:= wyrażenie;

Wyrażeniem może być konkretna wartość (czyli liczba całkowita lub rzeczywista, np. 22 lub 2,5, wartość symboliczna: „ABC”, wartość logiczna: PRAWDA lub FAŁSZ) oraz jakieś wyrażenie (wartości + operacje na nich ), którego wynik zostanie przypisany do zmiennej po lewej stronie.

PRZYKŁADY:

PAG:= 10;(konkretna wartość jako liczba);
X:= X + 1;(wyrażenie);
C:=B;(nazwa zmiennej);
G:= „Witam”; ( konkretne znaczenie ma charakter symboliczny);
X:= (-A + SIN(Y) – 4 * B * X) / (2 * C);(wyrażenie matematyczne);
T:= PRAWDA;(konkretna wartość logiczna).

Różnica między operacją przypisania w matematyce i programowaniu.

W matematyce wyrażenie = b oznacza, że ​​obliczone wartości a i b muszą być równe.
W programowaniu A:=B oznacza, że ​​wartość przechowywana w komórce pamięci o nazwie B jest umieszczana w komórce pamięci o nazwie A. Dlatego wyrażenie odwrotne
B:= A daje inny wynik.
Przykład: wartości 5 i 9 są umieszczone odpowiednio w A i B.

O: = 5;
B: = 9

a) Wynik operacji A:= B;

b) Wynik operacji B:= A;

Oto kolejna istotna różnica między znakiem równości a operatorem przypisania: A = A + 1;
W matematyce takie wyrażenie jest po prostu bez znaczenia, ponieważ tożsamość jest fałszywa. Nie ma wartości liczbowych A, dla których byłoby to prawdą. W programowaniu oznacza to, że do wartości zapisanej w komórce A dodawana jest 1, a nowo uzyskana wartość zastępuje starą w komórce A. Przykładowo, jeśli przed wykonaniem tej instrukcji A miało wartość 5, to po jej wykonaniu będzie równa 6.

Następująca różnica: wyrażenie matematyczne A + 9 – B = X jest całkiem rozsądne i może oznaczać, że podstawiwszy po lewej stronie wyrażenia zamiast A i B pewne liczby, otrzymamy H. Jednocześnie w zaprogramowanie tego wyrażenia nie ma sensu, gdyż lewa strona wyrażenia musi zawierać nazwę obszaru pamięci, do którego przypisana jest obliczona po prawej stronie wartość. Jeśli spróbujesz wstawić takie wyrażenie do swojego programu, pojawi się komunikat o błędzie, ponieważ nazwa zmiennej to A + 9 – B nie zrozumiem.

napisz w standardowej formie:

(– b + sqrt(sqr(b) – 4 * a * c))/(2 * a);
a/b* (c + d) – (a – b)/b/c + 1E – 8;

Bibliografia:

  • V.B. Popow„TURBO PASCAL dla uczniów”, „Finanse i statystyka”, Moskwa, 1996
  • AA Cherno w „Notatkach z lekcji informatyki w klasach 9–11”, „Nauczyciel”, Wołgograd, 2004.
  • DM Zlatopolski„Chodzę na zajęcia z informatyki. Zadania programistyczne, klasy 7–11”, „Pierwszy września”, Moskwa, 2001.

Operator– polecenie wykonania określonych czynności. Język programowania Pascal zawiera 11 operatorów.

Operator przypisania w Pascalu

Operator przypisania jest najczęściej używanym operatorem w języku Turbo Pascal.

Format nagrywania: X:=A;
Gdzie: X– nazwa zmiennej;
A- wyrażenie ;
:= - znak przydziału.

Praca operatora: Podczas wykonywania operatora obliczana jest wartość znajdująca się po prawej stronie wyrażenia i przypisywana do nazwy zmiennej.

Typ zmiennej i typ wyrażenia muszą być zgodne, z wyjątkiem sytuacji, gdy wyrażenie jest typem całkowitym, a zmienna jest typem rzeczywistym. W tym przypadku obliczona wartość wyrażenia jest konwertowana na typ rzeczywisty.

Przykład 9.1. Napisz program obliczający funkcje:

y=cosa+lnb; n=k+1; r=ord(nr 65).

Var
a, b, y: rzeczywiste;
k, n: liczba całkowita;
r:znak;
t, v, u: wartość logiczna;
* * *
y:= cos(a)+ln(b);
n:=k+1;
r:=ord(#65);
t:=(v i u)lub(v i nie u);
* * *
Koniec.

Operator przejścia w Pascalu

W Turbo Pascalu przyjęto naturalną kolejność wykonywania operatorów, tj. w kolejności, w jakiej pojawiają się w tekście programu. Operator skoku przerywa naturalny porządek wykonywania instrukcji i przekazuje kontrolę instrukcji oznaczonej etykietą określoną w operatorze skoku.

Format nagrywania: GoTo m;

Gdzie: Iść do- iść do;
M- etykieta

Praca operatora: Operator skoku przekazuje kontrolę operatorowi oznaczonemu naklejką M.
Użycie operatora przejścia w TR jest niepożądane, ponieważ narusza integralność strukturalną programu. Taki program jest trudny do odczytania, debugowania i modyfikowania. Istnieją ograniczenia dotyczące stosowania operatora przejścia w TR, które nie pozwalają na jego niesystematyczne użycie.

Za pomocą operatora przejścia można przenieść kontrolę w obrębie jednego poziomu lub przejść z poziomu wewnętrznego na zewnętrzny. Przejścia z poziomów zewnętrznych na wewnętrzne są zabronione. Na przykład z programu do treści podprogramu lub wewnątrz instrukcji pętli lub instrukcji warunkowej.


Operator przypisania jest najprostszym i najczęstszym operatorem.

Format operatora przypisania

Operator przypisania to wpis zawierający symbol = (znak równości), z nazwą zmiennej po lewej stronie i wyrażeniem po prawej stronie. Operator przypisania kończy się znakiem; (średnik).

Zmienny = Wyrażenie ; // Operator przypisania

Operator przypisania można rozpoznać w tekście programu po znaku równości. Wyrażenie może być stałą, zmienną, wywołaniem funkcji lub samym wyrażeniem.

Reguła wykonania operatora przypisania

Operator przypisania, jak każdy inny operator, jest wykonywalny. Oznacza to, że wpis składający się na operator przypisania wykonywany jest zgodnie z regułą. Po wykonaniu operatora przypisania obliczana jest wartość po prawej stronie, a następnie wartość ta jest przypisana do zmiennej po lewej stronie znaku równości. W wyniku wykonania operatora przypisania zmienna po lewej stronie zawsze otrzymuje nową wartość; wartość ta może być inna lub taka sama jak poprzednia wartość tej zmiennej. Wyrażenie po prawej stronie operatora przypisania jest oceniane zgodnie z kolejnością, w jakiej są oceniane wyrażenia (zobacz Operacje i wyrażenia).

Przykłady operatorów przypisania

W operatorze przypisania można zadeklarować typ zmiennej po lewej stronie znaku równości:

int In = 3 ;
podwójne Do = 2,0;
bool Bo = prawda ;
kolor Co = 0 x008000 ; // Zmienna Co ma przypisaną wartość stałej
ciąg St = "sss"; // Zmienna St ma przypisaną wartość stałą
data/godzina Da = D „01.01.2004”; // Zmienna Da ma przypisaną wartość stałą

W operatorze przypisania używane są wcześniej zadeklarowane zmienne bez określenia typu.

W = 7; // Zmienna In ma przypisaną wartość stałą
Do = 23,5; // Zmienna Do ma przypisaną wartość stałą
Bo = 0; // Zmienna Bo ma przypisaną wartość stałą

W operatorze przypisania niedozwolona jest deklaracja typu zmiennej po prawej stronie znaku równości:

In = int In_2; // Deklarowanie typu zmiennych po prawej stronie jest zabronione
Do = podwójne Do_2; // Deklarowanie typu zmiennych po prawej stronie jest zabronione

Operator przypisania nie pozwala na ponowną deklarację typu zmiennej.

Wet wew.; // Deklaracja typu zmiennej In
int In = In_2; // Ponowna deklaracja zmiennej (In) jest niedozwolona

Przykłady wykorzystania funkcji niestandardowych i standardowych po prawej stronie:

In = Moja_Funkcja () ; // In przypisana jest wartość użytkownika. Funkcje
Do = Gipo(Do1, Do1); // Do przypisana jest wartość użytkownika. Funkcje
Bo = Jest Połączony () ; // Bo jest ustawione na standard. Funkcje
St = NazwaObiektu(0); // St jest ustawione na standard. Funkcje
Da = Aktualny Czas(); // Da jest ustawione na standard. Funkcje

Przykłady użycia po prawej stronie wyrażeń:

In = (Moja_Funkcja() + In2) / 2; // Przypisany do zmiennej In
// ..wartość wyrażenia
Do = MathAbs (Do1 + Gipo (Do2, 5) + 2,5) ; // Przypisany do zmiennej Do
// ..wartość wyrażenia

Podczas wykonywania obliczeń w operatorze przypisania obowiązują zasady rzutowania typów danych (zobacz Rzutowanie typów).

Przykłady krótkich operatorów przypisania

MQL4 używa również krótkiej formy pisania operatorów przypisania. Jest to forma operatorów przypisania, która wykorzystuje operatory przypisania inne niż operator przypisania = (znak równości) (patrz Operacje i wyrażenia). Operatorzy skróconych formularzy podlegają tym samym zasadom i ograniczeniom. Dla przejrzystości w kodzie zastosowano krótką formę operatorów przypisania. Programista może według własnego uznania użyć tej lub innej formy operatora przypisania. Dowolny operator przypisania w formie skróconej można łatwo przepisać na operator w pełnej formie, a wynik wykonania operatora nie ulegnie zmianie.

W /= 33;
W = We / 33;

St += "_exp7"; // Krótka forma operatora przypisania
St = St + „_exp7”; // Pełna postać operatora przypisania

Przyjrzeliśmy się najprostszym programom napisanym w języku Pascal w środowisku PascalABC.Net. Tam wykonywaliśmy operacje arytmetyczne na liczbach, a następnie wyprowadzaliśmy je za pomocą operatora zapisu (lub writeln). Ale nie użyliśmy operatora przypisania, który jest bardzo powszechny w programowaniu. Czym zatem jest zadanie?

Rozważmy pewne zmienne M i N, które mają określone wartości, powiedzmy M = 12, N = 34. Dla każdej z tych wartości komputer przydziela osobną sekcję pamięci, czyli określoną liczbę komórek, czyli bitów (1 komórka = 1 bit). Wiele liczb (lub innych typów danych) nie może być przechowywanych w tym samym miejscu pamięci z tego samego powodu, dla którego w jednym litrowym słoiku nie można zmieścić dwóch litrów wody.

Bardzo często konieczne jest usunięcie wartości zmiennej M, która wynosi 12, i zamiast tego zrównanie jej z wartością zmiennej N, czyli 34. Co robi komputer? Znajduje miejsce pamięci, w którym wartość N jest „ukryta”, kopiuje ją (liczba 34), wraca do komórki pamięci M (równej 12), usuwa jej wartość i wstawia nową, czyli 34. Jak w rezultacie M = 12 zamieniło się na M = 34.

Przyporządkowanie to zapis danych w części pamięci komputera przeznaczonej dla wartości M, przy czym dane są przechowywane w innej części pamięci komputera, w której zapisana jest wartość wielkości N.

Przypisanie zapisuje się jako M:= N , co oznacza, że ​​wartość N trafia do M. Naturalnym pytaniem jest: co się stało z wartością N? Nic, po prostu wydawało się, że „dzieli” wartość ze zmienną M, ale sama się nie zmieniła. Czasami nowicjusze w programowaniu myślą, że zmienne M i N zmieniają wartości, ale tak nie jest. Aby zilustrować to zjawisko, rozważmy problem:

Zadanie. Podane liczby: M = 12, N = 34. Zamień ich wartości.

Musimy przypisać 34 do liczby M, a 12 do liczby N (odwrotnie). Bardzo często początkujący programiści piszą w ten sposób:


W pierwszym wierszu kodu M jest przypisane do N, czyli M:= 34. W drugim wierszu N jest przypisane do M, ale ostatnia zmienna nie jest już równa 12, gdyż zmieniła swoją wartość w poprzednia linia na 34. Zatem obie zmienne będą równe 34. Dla demonstracji napiszmy cały kod, który należy przepisać w środowisku programistycznym PascalABC.Net:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 odm M, N: wpisz liczbę całkowitą;

Opis:

")" onmouseout="toolTip()">liczba całkowita
; zaczynać napiszln( „Wprowadź liczby M i N:” <-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } M := N; { <== M присваивается N, поэтому M = 34 } N := M; { <== N присваивается M, поэтому N = 34 } koniec.

Uruchom program w celu wykonania; po wyświetleniu monitu o M wpisz 12, wpisz N wpisz 34 i naciśnij Enter. Jeśli wszystko zostało wykonane poprawnie, powinieneś zobaczyć:

Wpisz cyfry M i N:
M=12
N=34
Wynik:
M = 34 N = 34

Jak widać z ostatniej linijki, nie o to nam chodziło - zamienić wartości M i N.

Aby uzyskać poprawny wynik należy ustalić początkową wartość zmiennej M, np. s:= M („zapamiętaj” M wpisując jego wartość do zmiennej s). W rezultacie przypiszemy liczbie N nie wartość zmiennej M, która już się zmieniła, ale wykorzystamy równą jej wartość s:


Zgodnie z najnowszymi zmianami dotychczasowy program będzie miał postać:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 odm M, N, s: wpisz liczbę całkowitą;

Opis:
Reprezentuje 32-bitową liczbę całkowitą ze znakiem.

Zakres wartości: -2 147 483 648 .. 2 147 483 647")" onmouseout="toolTip()">liczba całkowita
; zaczynać napiszln( „Wprowadź liczby M i N:”) ; napisz(" M = "); czytaj(M); (<-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } s := M; { <== запоминаем M, равное 12 } M:= N; (M = 34, ponieważ N = 34) N := s; ( N = 12, ponieważ s = 12 ) writeln("Wynik:"); writeln(" M = ", M, " N = ", N); przeczytaj koniec.

Przepisz ten program w PascalABC.Net i uruchom (przycisk F9 na klawiaturze). Jeśli odpowiedź jest taka:

Wpisz cyfry M i N:
M=12
N=34
Wynik:
M = 34 N = 12

wtedy program działa poprawnie. Jak widać z ostatniej linii, wartości liczb M i N zamieniły się miejscami.

Zadanie- mechanizm wiązania w programowaniu, pozwalający na dynamiczną zmianę powiązań pomiędzy nazwami obiektów danych (najczęściej zmiennych) a ich wartościami. Ściśle mówiąc, zmiana wartości jest efektem ubocznym operacji przypisania, a w wielu współczesnych językach programowania sama operacja również zwraca jakiś wynik (najczęściej kopię przypisanej wartości). Na poziomie fizycznym wynikiem operacji przypisania jest zapisywanie i przepisywanie komórek pamięci lub rejestrów procesora.

Przypisanie jest jedną z głównych konstrukcji w imperatywnych językach programowania i jest realizowane wydajnie i prosto w oparciu o architekturę von Neumanna, która jest podstawą współczesnych komputerów.

W obiektowych językach programowania semantyka przypisań znacznie się różni. Na przykład w języku Kotlin po przypisaniu obiekt jest kopiowany, a w języku Rust obiekt jest przesuwany (semantyka przenoszenia) i stare łącze staje się nieważne.

Ustawić<целевая_переменная> <выражение>

Ten wpis jest równoznaczny z wywołaniem funkcji. Podobnie w starym języku COBOL:

POMNOŻENIE 2 PRZEZ 2 DAJE CZTERY.

Algorytm pracy

  • Oblicz wartość pierwszego operandu po lewej stronie. Na tym etapie znane jest położenie obiektu docelowego, odbiorcy nowej wartości.
  • Oblicz wartość drugiego operandu po prawej stronie. Ten etap może być dowolnie duży i zawierać inne stwierdzenia (w tym zadania).
  • Przypisz obliczoną wartość po prawej stronie do wartości po lewej stronie. Po pierwsze, jeśli występuje konflikt typów, należy przeprowadzić rzutowanie (lub ze względu na niemożność wygenerowania komunikatu o błędzie). Po drugie, faktyczne przypisanie wartości we współczesnych językach programowania można zastąpić i obejmować nie tylko przeniesienie wartości komórek pamięci (na przykład do „właściwości” obiektów w , przeciążenie operatora).
  • Zwróć obliczoną wartość praworęczną jako wynik operacji. Nie wymagane we wszystkich językach (na przykład nie potrzebne w Pascalu).

Przeznaczenie

Wybór znaku przypisania jest źródłem debaty wśród twórców języków. Istnieje argument, że użycie symbolu = do przypisania dezorientuje programistów, a także rodzi kwestię wyboru symbolu dla operatora porównania, co jest trudne do wykonania.

Notorycznie złym przykładem jest wybór znaku równości do wskazania przypisania, który sięga czasów Fortranu w 1957 roku i nadal jest na ślepo powtarzany przez dziesiątki twórców języków. Ten zły pomysł obala odwieczną tradycję używania znaku = do oznaczenia porównania równości, czyli predykatu, który przyjmuje wartości „prawda” lub „fałsz”. Ale w Fortranie ten symbol zaczął oznaczać przydział, wymuszający równość. W tym przypadku operandy znajdują się na nierównej pozycji: lewy operand, zmienna, musi być równy prawemu operandowi, wyrażeniu. Dlatego x = y nie oznacza tego samego, co y = x.

Tekst oryginalny (angielski)

Notorycznym przykładem złego pomysłu był wybór znaku równości do oznaczenia przypisania. Początki sięgają Fortranu w 1957 roku i zostały na ślepo skopiowane przez armie projektantów języków. Dlaczego to zły pomysł? Ponieważ obala stuletnią tradycję, aby „=” oznaczało porównanie równości, czyli orzeczenie, które jest albo prawdziwe, albo fałszywe. Ale w Fortran oznaczało to przydział, egzekwowanie równości. W tym przypadku operandy są traktowane nierówno: lewy operand (zmienna) należy zrównać z prawym operandem (wyrażenie). x = y nie oznacza tego samego, co y = x.

Realizację tego stanowiska Wirtha można uznać, że w języku Pascal, którego jest autorem, operatorem przypisania jest:=, natomiast dla porównania używa się go po prostu =.

Wybór symbolu operatora równości w języku przy użyciu = jako przypisania został rozwiązany:

  • Poprzez wprowadzenie nowego symbolu języka dla operatora równości.
A = B = C

zmiennej A przypisuje się wartość logiczną wyrażenia relacji B = C. Zapis ten powoduje zmniejszoną czytelność i jest rzadko używany.

Cechy semantyczne

„Intuicyjny” (dla programistów języków imperatywnych) sposób interpretacji przypisania nie zawsze jest jedynym słusznym i możliwym.

Ze składni stosowanej w językach imperatywnych nie zawsze można zrozumieć, w jaki sposób realizowana jest semantyka przypisania, chyba że jest to wyraźnie zdefiniowane w języku.

A = b = a a = 1000

Następnie b będzie miało wartość - po prostu dlatego, że jego wartość jest w rzeczywistości wartością a . Liczba odniesień do tego samego obiektu danych nazywana jest jego licznością, a sam obiekt zostaje zabity (zniszczony lub wyrzucony do śmieci), gdy jego liczność osiągnie zero. Języki programowania niższego poziomu (takie jak C) pozwalają programiście jawnie kontrolować, czy używana jest semantyka wskaźników, czy semantyka kopiowania.

Zastąpienie operacji

Wiele języków zapewnia możliwość zmiany znaczenia przypisania: albo poprzez mechanizm właściwości, albo poprzez przeciążenie operatora przypisania. Podstawienie może być konieczne w celu sprawdzenia ważności przypisanej wartości lub wykonania innych dodatkowych operacji. Przeciążanie operatora przypisania jest często stosowane w celu zapewnienia „głębokiego kopiowania”, czyli kopiowania wartości zamiast referencji, które w wielu językach są kopiowane domyślnie.

Takie mechanizmy pozwalają zapewnić wygodę podczas pracy, dlatego dla programisty nie ma różnicy pomiędzy korzystaniem z operatora wbudowanego, a przeciążonego. Z tego samego powodu możliwe są problemy, gdyż działania przeciążonego operatora mogą zupełnie różnić się od działań operatora domyślnego, a wywołanie funkcji nie jest oczywiste i można je łatwo pomylić z operacją wbudowaną.

Zaawansowane projekty

Konstrukcje przypisań w różnych językach programowania

Ponieważ operacja przypisania jest szeroko stosowana, twórcy języków programowania próbują opracować nowe konstrukcje upraszczające rejestrację typowych operacji (dodać tzw. „cukier składniowy”). Ponadto w językach programowania niskiego poziomu kryterium włączenia operacji często jest zdolność do kompilacji w wydajny kod wykonywalny. Język C jest szczególnie znany z tej właściwości.

Wiele celów

Alternatywą dla prostego operatora jest możliwość przypisania wartości wyrażenia do wielu obiektów. Przykładowo w języku PL/1 operator

SUMA, OGÓŁEM = 0

jednocześnie przypisuje wartość zero zmiennym SUM i TOTAL. W języku Ada przypisanie jest także operatorem, a nie wyrażeniem, zatem zapis przypisania wielokrotnego wygląda następująco:

SUMA, RAZEM: Liczba całkowita:= 0;

Podobne przypisanie w Pythonie ma następującą składnię:

Suma = suma = 0

W przeciwieństwie do PL/1, Ady i Pythona, gdzie wielokrotne przypisanie jest uważane jedynie za skróconą formę notacji, w C, Lisp i innych językach ta składnia ma ścisłe podstawy: operator przypisania po prostu zwraca przypisaną im wartość (patrz wyżej ). Zatem ostatni przykład to właściwie:

Suma = (ogółem = 0)

Taka linia będzie działać w C (jeśli dodasz na końcu średnik), ale spowoduje błąd w Pythonie.

Przypisanie równoległe

Ostatnia opcja działa tylko z typami obsługującymi operacje bitowe (przykładowo dla double kompilator języka nie pozwoli na wymianę wartości zmiennych w ten sposób).

||= 10

Konstrukcja ta przypisuje wartość zmiennej a tylko wtedy, gdy wartość nie została jeszcze przypisana lub jest równa false .

Operatory złożone

Złożony operator przypisania pozwala na skrócenie powszechnie używanej formy przypisania. Techniki tej można użyć na przykład do skrócenia zapisu przypisania, w którym zmienna docelowa jest używana jako pierwszy operand po prawej stronie wyrażenia.