A është shkruar saktë operatori i detyrës në Pascal. operatori i caktimit. Operatorët e hyrjes, daljes, caktimit

Lloji i mësimit:

  • arsimore. Studentët njihen me një operator të ri të gjuhës Pascal;
  • përsëritja e temës Kujtesa e brendshme kompjuter";
  • përforcimi i njohurive të fituara.

Tema e mësimit:“Programimi në Pascal. operatori i caktimit.

Qëllimet:

  • Prezantoni konceptin e "Operatorit të Caktimit".
  • Të dallojë veprimet e vlefshme për numrat e plotë dhe realë.
  • Hartoni dhe vlerësoni saktë shprehjet duke përdorur operatorin e caktimit.
  • Shkruani programe për detyra të thjeshta.

Kohëzgjatja e mësimit: 1 orë 30 minuta.

GJATË KLASËVE

Mesimi i pare

1. Përsëritje e temës së orës së mëparshme “Llojet e të dhënave”. Shembuj të përdorimit të fjalëve që tingëllojnë njësoj, por kanë kuptime të ndryshme.

Mësuesi dhe nxënësit punojnë në formë “pyetje-përgjigje” (10 minuta).

2. Mësuesi/ja shpjegon temën e re duke përdorur mësim-prezantimin multimedial “Programimi në Pascal. operatori i caktimit. Jepet përkufizimi i konceptit "operator caktimi", jepet forma e përgjithshme dhe strukturore e operatorit. Para se të shqyrtojmë punën e operatorit të caktimit, kujtojmë dhe përsërisim temën "Memoria me akses të rastësishëm, vetitë Kujtesë e gjallë».

I shoqëruar me një prezantim. Shtojca 1 (15 minuta).

3. Nxënësit punojnë në mënyrë të pavarur, lexojnë dhe mbajnë shënime për një temë të re (prezantimi i mësimit regjistrohet paraprakisht në kompjuterët e nxënësve, pyetjet për mbajtjen e shënimeve përcaktohen nga mësuesi). Këtu studentët mund të njihen me tekstet e programeve që përdorin operatorin e detyrës. Shtojca 2(20 minuta).

Mësimi i dytë

4. Nxënësit punojnë në dërrasën e zezë, duke bërë ushtrime (12-15 minuta).
1. Mësuesi/ja kryen kontrollin e njohurive në formë testi. Programi i testimit është i regjistruar paraprakisht në kompjuterët e nxënësve. Rezultati përcaktohet nga programi. Shtojca 5(10 minuta).
5. Nxënësit bëjnë pak punë të pavarur mbi kartat, ose shkruajnë dhe korrigjojnë një program në LPL Pascal, i cili përdor operatorin (ët) e detyrave (mësuesi thërret numrat e kartave me detyrat). Nxënësit vlerësohen për punën e tyre. Shtojca 3 . Shtojca 4(15 minuta).
Detyre shtepie. Nxënësit ftohen të shkruajnë tekstin e një programi të thjeshtë në LPL Pascal, i cili përdor operatorin(ët) e detyrës (për ata studentë që nuk patën kohë për të përfunduar detyrën në klasë).

Gjetjet:

  • Përmes bllokut 1 përsëritje e temës së mësimit të mëparshëm.
  • Nëpërmjet blloqeve 2, 3 dhe 4 jepet dhe rregullohet një temë e re “Operatori i caktimit”.
  • Nëpërmjet blloqeve 5 dhe 6 kryhet kontrolli i njohurive.

Programimi në Pascal

Mësimi numër 1 (2 orë). Variablat dhe konstantet. operatori i caktimit

  1. Kontrollimi i detyrave të shtëpisë.
  2. Temë e re.
  3. Detyre shtepie.

Kontrollimi i detyrave të shtëpisë.

2. Tema e re: “Ndryshoret dhe konstantet. Operatori i detyrës"

e ndryshueshme - është emri i zonës së memories (madhësia e zonës varet nga lloji i të dhënave) që ruan vlerën e caktuar për variablin. Një variabël mund të krahasohet me një kuti që përmban një vlerë (krahasimi më i mirë është me një ndërtesë apartamenti, pasi mund të nxirrni diçka nga kutia dhe do të jetë e fundit, d.m.th. kutia mbetet bosh, dhe ndryshorja, madje nëse është përdorur, mbetet në zonën e kujtesës).
Konstante - fikse vlera të vetme numerike ose teksti që nuk mund të ndryshohen gjatë ekzekutimit të programit.
operatori i caktimit. Një nga operatorët më të përdorur operatori i caktimit. Pamje e përgjithshme e operatorit të caktimit:

emri i ndryshores:= shprehje;

Shprehja mund të jetë edhe një vlerë specifike (d.m.th. një numër i plotë ose i vërtetë, për shembull, 22 ose 2.5, një vlerë simbolike: "ABC", një vlerë logjike: TRUE ose FALSE), dhe disa shprehje (vlera + operacione në ato), rezultati i të cilit do t'i caktohet ndryshores në anën e majtë.

SHEMBUJ:

PAG:= 10;(vlera specifike si numër);
X:= X + 1;(shprehje);
C:=B;(emri i ndryshores);
G:= 'Përshëndetje'; ( vlera simbolike specifike);
X:= (-A + SIN(Y) - 4 * B * X) / (2 * C);(shprehje matematikore);
Y:= E VËRTETË;(vlera logjike specifike).

Dallimi midis operacionit të detyrës në matematikë dhe programimit.

Në matematikë, shprehja = in do të thotë që vlerat e llogaritura për a dhe b duhet të jenë të barabarta.
Në programim, A := B kuptohet se do të thotë që një vlerë e ruajtur në një zonë memorie të quajtur B vendoset në një zonë memorie të quajtur A. Prandaj, shprehja e kundërt
B:= A jep një rezultat të ndryshëm.
Shembull: Vlerat 5 dhe 9 vendosen përkatësisht në A dhe B.

Përgjigje: = 5;
B:=9

a) Rezultati i operacionit A:= B;

b) Rezultati i operacionit B:= A;

Këtu është një tjetër ndryshim domethënës midis shenjës së barabartë dhe operatorit të caktimit: A = A + 1;
Në matematikë, një shprehje e tillë është thjesht e pakuptimtë, pasi identiteti është i rremë. Nuk ka vlera të tilla numerike të A-së për të cilat do të ishte e vërtetë. Në programim, kjo do të thotë që 1 i shtohet vlerës së ruajtur në qelizën A, dhe vlera e fituar rishtazi zëvendëson atë të vjetër në qelizën A. Për shembull, nëse A kishte një vlerë prej 5 përpara se të ekzekutonte këtë deklaratë, atëherë pas ekzekutimit do të të jetë 6.

Dallimi tjetër: shprehja matematikore A + 9 - B = X është mjaft e arsyeshme dhe mund të nënkuptojë se kur zëvendësoni disa numra në vend të A dhe B në anën e majtë të shprehjes, do të merrni N. Në të njëjtën kohë, në programimi i kësaj shprehjeje është i pakuptimtë, pasi ana e majtë e shprehjes duhet të përmbajë emrin e zonës së memories së cilës i është caktuar vlera e llogaritur në anën e djathtë. Nëse përpiqeni të futni një shprehje të tillë në programin tuaj, do të merrni një mesazh gabimi, sepse emri i ndryshores është A + 9 - B nuk do të kuptojë.

shkruani në formën e zakonshme:

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

Bibliografi:

  • V.B. Popov"TURBO PASCAL për nxënësit e shkollës I", "Financa dhe statistika", Moskë, 1996
  • A.A. Cherno në "Sinopsi i mësimeve të shkencave kompjuterike në klasat 9 - 11", "Mësues", Volgograd, 2004.
  • D.M. Zlatopolsky“Unë po shkoj në një klasë të shkencave kompjuterike. Problemet në programim, klasat 7 - 11", "Shtatori i Parë", Moskë, 2001.

Operatori- një urdhër për të kryer veprime specifike. Gjuha e programimit Pascal përmban 11 operatorë.

Operatori i caktimit në Pascal

Operatori i caktimit është operatori më i përdorur në Turbo Pascal.

Formati i regjistrimit: X:=A;
ku: X– emri i ndryshores;
A- shprehje ;
:= - shenjë e detyrës.

Puna e operatorit: Gjatë ekzekutimit të deklaratës, vlera në anën e djathtë të shprehjes llogaritet dhe i caktohet emrit të ndryshores.

Lloji i ndryshores dhe lloji i shprehjes duhet të përputhen, me përjashtim të rasteve kur shprehja është e një tipi numër të plotë dhe ndryshorja është e një lloji real. Në këtë rast, vlera e llogaritur e shprehjes konvertohet në një lloj real.

Shembulli 9.1. Shkruani një program për llogaritjen e funksioneve:

y=cosa+inb; n=k+1; r=ord (#65).

Var
a, b, y: real;
k, n: numër i plotë;
r: char;
t, v, u: Boolean;
* * *
y:= cos(a)+ln(b);
n:=k+1;
r:=ord(#65);
t:=(v dhe u) ose (v dhe jo u);
* * *
fund.

Operatori i kërcimit në Pascal

Në Turbo Pascal, miratohet rendi natyror i ekzekutimit të operatorëve, d.m.th. sipas radhës në të cilën shfaqen në tekstin e programit. Deklarata e kërcimit ndërpret rendin natyror të ekzekutimit të deklaratave dhe e transferon kontrollin në deklaratën e shënuar me etiketën e specifikuar në deklaratën e kërcimit.

Formati i regjistrimit: GoTo m;

ku: shkoj- shkoni në;
m- etiketë.

Puna e operatorit: Deklarata e kërcimit transferon kontrollin në deklaratën e shënuar me etiketë m.
Përdorimi i një deklarate kërcimi në një TR është i padëshirueshëm sepse cenon integritetin strukturor të programit. Një program i tillë është i vështirë për t'u lexuar, korrigjuar dhe modifikuar. Përdorimi i operatorit të kërcimit në TR është subjekt i kufizimeve që parandalojnë përdorimin e tij pa dallim.

Duke përdorur deklaratën e kërcimit, ju mund të transferoni kontrollin brenda një niveli ose të hidheni nga një nivel i brendshëm në një nivel të jashtëm. Kalimet nga shtresa e jashtme në shtresën e brendshme janë të ndaluara. Për shembull, nga një program në trupin e një nënprogrami ose brenda një deklarate cikli ose një deklarate të kushtëzuar.


Operatori i caktimit është operatori më i thjeshtë dhe më i zakonshëm.

Formati i operatorit të caktimit

Një operator caktimi është një shënim që përmban simbolin = (shenjë e barabartë), në të majtë të të cilit është emri i ndryshores, dhe në të djathtë - shprehja. Operatori i caktimit përfundon me një shenjë; (pikëpresje).

E ndryshueshme = Shprehje ; // operatori i caktimit

Operatori i caktimit mund të dallohet në tekstin e programit nga prania e një shenje të barabartë. Një shprehje mund të jetë një konstante, një ndryshore, një thirrje funksioni ose vetë shprehja.

Rregulli i ekzekutimit të operatorit të caktimit

Operatori i caktimit, si çdo operator tjetër, është i ekzekutueshëm. Kjo do të thotë se hyrja që përbën deklaratën e caktimit ekzekutohet sipas rregullit. Kur ekzekutohet një operator caktimi, vlerësohet vlera në anën e djathtë dhe më pas kjo vlerë i caktohet ndryshores në të majtë të shenjës së barazimit. Si rezultat i ekzekutimit të deklaratës së detyrës, ndryshorja në anën e majtë gjithmonë merr një vlerë të re; kjo vlerë mund të jetë e ndryshme ose e njëjtë me vlerën e mëparshme të kësaj variabli. Shprehja në anën e djathtë të operatorit të caktimit vlerësohet në përputhje me rendin në të cilin vlerësohen shprehjet (shih Operacionet dhe Shprehjet).

Shembuj të deklaratës së detyrës

Në një operator caktimi, një deklaratë e llojit të ndryshores lejohet në të majtë të shenjës së barazimit:

int In = 3;
dyfishtë Do = 2.0;
bool Bo = e vërtetë;
ngjyra Co = 0 x008000; // Variablës Co i caktohet një vlerë konstante
stringSt = "sss"; // Variablës St i caktohet vlera e një konstante
datatime Da = D "01/01/2004"; // Variablës Da i caktohet vlera e një konstante

Variablat e deklaruar më parë përdoren në një deklaratë caktimi pa specifikuar një lloj.

Në = 7; // Variablës In i caktohet vlera e një konstante
Do = 23,5 ; // Variablës Do i caktohet vlera e një konstante
Bo = 0; // Variablës Bo i caktohet vlera e një konstante

Në një operator caktimi, nuk lejohet të deklarohet lloji i një ndryshoreje në anën e djathtë të shenjës së barabartë:

In = int In_2; // Deklarimi i llojit të variablave në anën e djathtë është i ndaluar
Do = dyfish Do_2; // Deklarimi i llojit të variablave në anën e djathtë është i ndaluar

Deklarata e caktimit nuk lejon deklarimin e përsëritur të llojit të variablave.

int in; // Deklarata e llojit të ndryshores In
int In = In_2; // Rideklarimi i një variabli nuk lejohet (In)

Shembuj përdorimi në anën e djathtë të funksioneve të personalizuara dhe standarde:

In = My_Function(); // In është vendosur në përdorues. funksione
Do = Gipo (Do1, Do1); // Vendoseni te përdoruesi. funksione
Bo = IsConnected(); // Bo vendosur në std. funksione
St = Emri i Objektit (0) ; // St është vendosur në std. funksione
Da = KohaKurrente(); // Da është vendosur në std. funksione

Shembuj përdorimi në anën e djathtë të shprehjeve:

Në = (Funksioni_My() + In2) / 2; // Variabli In është caktuar
// ..vlera e shprehjes
Do = MathAbs (Do1 + Gipo (Do2 , 5 ) + 2,5 ); // Variabli Do Is Assigned
// ..vlera e shprehjes

Kur llogaritet në një operator caktimi, zbatohen rregullat për hedhjen e llojeve të të dhënave (shih Lloji i hedhjes).

Shembuj të caktimit të formularit të shkurtër

MQL4 përdor gjithashtu një formë të shkurtër të operatorëve të caktimit. Kjo është një formë e deklaratave të caktimit që përdor operacione të caktimit të ndryshme nga operacioni i caktimit = (shenjë e barabartë) (shih Operacionet dhe Shprehjet). Operatorët e formularit të shkurtër i nënshtrohen të njëjtave rregulla dhe kufizime. Forma e shkurtër e operatorëve të caktimit përdoret në kod për qartësi. Programuesi mund të përdorë një ose një formë tjetër të operatorit të caktimit sipas gjykimit të tij. Çdo operator i caktimit me formë të shkurtër mund të rishkruhet lehtësisht në një me format të plotë dhe rezultati i ekzekutimit të operatorit nuk do të ndryshojë.

Në /= 33;
Në = Në / 33;

St += "_exp7"; // Forma e shkurtër e operatorit të caktimit
St = St + "_exp7"; // Forma e plotë e operatorit të caktimit

Ne kemi shqyrtuar programet më të thjeshta të shkruara në Pascal në mjedisin PascalABC.Net. Atje kryenim veprime aritmetike mbi numrat dhe më pas i nxirrnim duke përdorur operatorin write (ose writeln). Por ne nuk kemi përdorur operatorin e caktimit, i cili është shumë i zakonshëm në programim. Pra, çfarë është caktimi?

Konsideroni disa variabla M dhe N që kanë vlera të caktuara, të themi, M = 12, N = 34. Për secilën nga këto vlera, kompjuteri cakton një zonë të veçantë memorie, e cila është një numër i caktuar qelizash, ose bit (1 qelizë = 1 pak). Numra të shumtë (ose lloje të tjera të dhënash) nuk mund të ruhen në të njëjtin vend memorie për të njëjtën arsye që dy litra ujë nuk mund të futen në një kavanoz litërsh.

Shumë shpesh bëhet e nevojshme të hiqet vlera e ndryshores M, e barabartë me 12, dhe në vend të kësaj të bëhet e barabartë me vlerën e ndryshores N, pra 34. Çfarë bën kompjuteri? Gjen vendndodhjen e memories ku është "fshehur" vlera e N, e kopjon atë (numrin 34), kthehet në vendin e ruajtjes M (e barabartë me 12), fshin vlerën e saj dhe fut një të re, domethënë 34. Si si rezultat, M = 12 u kthye në M = 34.

Caktimi është regjistrimi i të dhënave në zonën e kujtesës së kompjuterit të caktuar për vlerën e M, të dhënave që ruhen në një zonë tjetër të memories kompjuterike, ku regjistrohet vlera e N.

Detyra shkruhet si M:= N , që do të thotë se vlera e N shkon në M. Shtrohet pyetja e natyrshme: çfarë ndodhi me vlerën e N? Asgjë, ajo thjesht "ndau" vlerën me variablin M, por ajo vetë nuk ndryshoi. Ndonjëherë të sapoardhurit në programim mendojnë se ndryshoret M dhe N janë ndërruar, por nuk janë. Për të ilustruar këtë fenomen, merrni parasysh problemin:

Një detyrë. Janë dhënë numrat: M = 12, N = 34. Ndërroni vlerat e tyre.

Ne duhet të caktojmë 34 në numrin M, dhe 12 në numrin N (anasjelltas). Shumë shpesh, programuesit fillestarë shkruajnë kështu:


Në rreshtin e parë të kodit, M i caktohet N, domethënë M:= 34. Në rreshtin e dytë, N i caktohet M, por ndryshorja e fundit nuk është më e barabartë me 12, pasi ndryshoi vlerën e saj në rreshti i mëparshëm në 34. Prandaj, të dy variablat do të jenë të barabarta me 34. Për demonstrim do të shkruajmë kodin e plotë që duhet ta rishkruani në mjedisin e programimit PascalABC.Net:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var M, N: tipi numër i plotë;

Përshkrim:

")" onmouseout="toolTip()">numër i plotë
; fillojnë shkruajn( "Fut numrat M dhe N:" <-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } M := N; { <== M присваивается N, поэтому M = 34 } N := M; { <== N присваивается M, поэтому N = 34 } fund.

Ekzekutoni programin për ekzekutim; futni 12 kur ju kërkohet për M, futni 34 për N dhe shtypni Enter. Nëse gjithçka është bërë si duhet, duhet të shihni:

Futni numrat M dhe N:
M=12
N=34
Rezultati:
M=34 N=34

Siç mund ta shihni nga rreshti i fundit, kjo nuk është ajo që ne donim - të ndërronim vlerat e M dhe N në vende.

Për të arritur rezultatin e saktë, është e nevojshme të rregulloni vlerën fillestare të ndryshores M, për shembull, s:= M ("kujtoni" M duke shkruar vlerën e saj në ndryshoren s). Si rezultat, ne do t'i caktojmë numrit N jo vlerën e ndryshores M, e cila tashmë ka ndryshuar, por do të përdorim vlerën s të barabartë me të:


Në përputhje me ndryshimet më të fundit, programi i mëparshëm do të marrë formën:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var M, N, s: tipi numër i plotë;

Përshkrim:
Përfaqëson një numër të plotë të nënshkruar 32-bit.

Gama e vlerave: -2 147 483 648 .. 2 147 483 647")" onmouseout="toolTip()">numër i plotë
; fillojnë shkruajn( "Fut numrat M dhe N:") ; shkruani ("M="); readln(M); (<-- вводим 12 } write (" N = " ) ; readln (N) ; { <-- вводим 34 } s := M; { <== запоминаем M, равное 12 } M := N; (M = 34 sepse N = 34 ) N := s; ( N = 12 pasi s = 12 ) writeln("Rezultati:"); shkrimln (" M = ", M, " N = ", N); lexojn fund.

Rishkruajeni këtë program në PascalABC.Net dhe ekzekutoni (tasti F9 në tastierë). Nëse përgjigja është:

Futni numrat M dhe N:
M=12
N=34
Rezultati:
M=34 N=12

atëherë programi funksionon si duhet. Siç mund ta shihni nga rreshti i fundit, vlerat e numrave M dhe N janë shkëmbyer.

Detyrë- një mekanizëm lidhës në programim që ju lejon të ndryshoni në mënyrë dinamike lidhjet midis emrave të objekteve të të dhënave (zakonisht variablave) dhe vlerave të tyre. Në mënyrë të rreptë, ndryshimi i vlerave është një efekt anësor i operacionit të caktimit, dhe në shumë gjuhë programimi moderne, vetë operacioni gjithashtu kthen një rezultat (zakonisht një kopje të vlerës së caktuar). Në nivelin fizik, rezultati i një operacioni caktimi është shkrimi dhe rishkrimi i qelizave të memories ose regjistrave të procesorit.

Detyra është një nga konstruktet qendrore në gjuhët e programimit imperativ, i zbatuar në mënyrë efikase dhe thjesht në arkitekturën von Neumann që është baza e kompjuterëve modernë.

Në gjuhët e programimit të orientuara nga objekti, semantika e caktimit është mjaft e ndryshme. Për shembull, në gjuhën Kotlin, gjatë caktimit, objekti kopjohet, dhe në gjuhën Rust, objekti zhvendoset (lëviz-semantika) dhe pakoja e vjetër bëhet e pavlefshme.

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

Ky shënim është i barabartë me thirrjen e një funksioni. Në mënyrë të ngjashme, në COBOL të stilit të vjetër:

SHUMËZOJENI 2 ME 2 DHËNË KATËR.

Algoritmi i punës

  • Llogaritni vlerën e majtë të operandit të parë. Në këtë fazë, vendndodhja e objektit të synuar, marrësi i vlerës së re, bëhet i njohur.
  • Llogaritni vlerën e dorës së djathtë të operandit të dytë. Ky hap mund të jetë arbitrarisht i madh dhe të përfshijë deklarata të tjera (përfshirë detyrat).
  • Cakto vlerën e llogaritur të dorës së djathtë në vlerën e dorës së majtë. Së pari, në rast të një konflikti tipi, ato duhet të hidhen (ose lëshohet një mesazh gabimi për shkak të pamundësisë së tij). Së dyti, caktimi aktual i vlerave në gjuhët moderne të programimit mund të zëvendësohet dhe të përfshijë jo vetëm transferimin e vlerave të qelizave të kujtesës (për shembull, në "vetitë" e objekteve në , mbingarkimin e operatorit).
  • Ktheni vlerën e llogaritur në të djathtë si rezultat i operacionit. Nuk kërkohet në të gjitha gjuhët (për shembull, nuk nevojitet në Pascal).

Emërtimi

Zgjedhja e simbolit të detyrës është një çështje polemike midis stilistëve të gjuhës. Ekziston një mendim se përdorimi i simbolit = për caktimin i ngatërron programuesit, dhe gjithashtu ngre pyetjen e zgjedhjes së një simboli për operatorin e krahasimit, i cili është i vështirë për t'u zgjidhur mirë.

Një shembull i keq i njohur është zgjedhja e një shenje të barabartë për të treguar një detyrë, e cila daton në Fortran në 1957 dhe përsëritet ende verbërisht nga një masë e zhvilluesve të gjuhës. Kjo ide e keqe rrëzon traditën shekullore të përdorimit të shenjës "=" për të treguar një krahasim të barazisë, një kallëzues që vlerësohet si "i vërtetë" ose "i gabuar". Por në Fortran, ky simbol filloi të tregonte caktimin, detyrimin për barazi. Në këtë rast, operandët janë në një pozicion të pabarabartë: operandi i majtë, ndryshorja, duhet të bëhet i barabartë me operandin e djathtë, shprehjen. Pra x = y nuk do të thotë e njëjta gjë si y = x.

Teksti origjinal (anglisht)

Një shembull famëkeq për një ide të keqe ishte zgjedhja e shenjës së barabartë për të treguar detyrën. Ajo kthehet në Fortran në 1957 dhe është kopjuar verbërisht nga ushtritë e stilistëve të gjuhës. Pse është një ide e keqe? Sepse përmbys një traditë shekullore që të lejosh që "=" të tregojë një krahasim për barazi, një kallëzues që është ose i vërtetë ose i rremë. Por Fortran e bëri atë të nënkuptojë detyrën, zbatimin e barazisë. Në këtë rast, operandët janë në baza të pabarabarta: Operandi i majtë (një ndryshore) duhet të bëhet i barabartë me operandin e djathtë (një shprehje). x = y nuk do të thotë të njëjtën gjë si y = x.

Zbatimi i këtij pozicioni të Wirth mund të konsiderohet se në gjuhën Pascal, autor i së cilës është ai, operatori i caktimit është: = , ndërsa për krahasim përdoret thjesht =.

Zgjedhja e karakterit të operatorit të barazisë në gjuhë kur përdoret = si detyrë zgjidhet:

  • Duke futur një simbol të ri gjuhësor për operatorin e testit të barazisë.
A = B = C

ndryshores A i caktohet vlera Boolean e shprehjes së relacionit B = C. Ky shënim çon në një ulje të lexueshmërisë dhe përdoret rrallë.

Veçoritë semantike

Jo gjithmonë "intuitive" (për programuesit e gjuhëve imperative) mënyra e interpretimit të detyrës është e vetmja e vërtetë dhe e mundshme.

Nga sintaksa e përdorur në gjuhët imperative, nuk është gjithmonë e mundur të kuptohet se si zbatohet semantika e detyrës, përveç nëse ajo përcaktohet në mënyrë eksplicite në gjuhë.

A = b = a a = 1000

Pas kësaj, b do të ketë një vlerë - thjesht sepse, në fakt, vlera e tij është vlera e a . Numri i referencave për të njëjtin objekt të dhënash quhet kardinaliteti i tij, dhe vetë objekti vritet (shkatërrohet ose i jepet grumbulluesit të plehrave) kur kardinaliteti i tij arrin zero. Gjuhët e programimit të nivelit më të ulët (siç është C) i lejojnë programuesit të kontrollojë në mënyrë eksplicite nëse përdoret semantika e treguesit ose semantika e kopjimit.

Zëvendësimi i operacionit

Shumë gjuhë ofrojnë mundësinë për të ndryshuar kuptimin e një detyre, qoftë përmes mekanizmit të pronësisë ose përmes mbingarkesës së operatorit të caktimit. Zëvendësimi mund të jetë i nevojshëm për të kryer kontrolle mbi vlefshmërinë e vlerës së caktuar ose ndonjë operacion tjetër shtesë. Mbingarkimi i operatorit të caktimit përdoret shpesh për të siguruar një "kopje të thellë", domethënë kopjimin e vlerave në vend të referencave, të cilat kopjohen si parazgjedhje në shumë gjuhë.

Mekanizma të tillë bëjnë të mundur ofrimin e komoditetit në punë, kështu që për një programues nuk ka asnjë ndryshim midis përdorimit të një operatori të integruar dhe një të mbingarkuar. Për të njëjtën arsye, problemet janë të mundshme, pasi veprimet e operatorit të mbingarkuar mund të jenë krejtësisht të ndryshme nga veprimet e operatorit të paracaktuar, dhe thirrja e funksionit nuk është e dukshme dhe lehtë mund të ngatërrohet për një operacion të integruar.

Modele të zgjeruara

Konstruktet e detyrave në gjuhë të ndryshme programimi

Meqenëse operatori i caktimit përdoret gjerësisht, zhvilluesit e gjuhëve të programimit po përpiqen të zhvillojnë konstruksione të reja për të thjeshtuar shkrimin e operacioneve tipike (për të shtuar të ashtuquajturin "sheqer sintaksor" në gjuhë). Përveç kësaj, në gjuhët e programimit të nivelit të ulët, kriteri i përfshirjes është shpesh aftësia për t'u kompiluar në kod të ekzekutueshëm efikas. Gjuha C është veçanërisht e famshme për këtë pronë.

Objektiva të shumtë

Një alternativë ndaj operatorit të thjeshtë është aftësia për të caktuar vlerën e një shprehjeje në shumë objekte. Për shembull, në PL/1, operatori

SHUMË, TOTALI = 0

njëkohësisht cakton zero në SUM dhe TOTAL . Në Ada, caktimi është gjithashtu një deklaratë, jo një shprehje, kështu që shënimi për caktimin e shumëfishtë është:

SHUMË, TOTALI: Numri i plotë:= 0;

Një detyrë e ngjashme në Python ka sintaksën e mëposhtme:

Shuma = total = 0

Ndryshe nga PL/1, Ada dhe Python, ku caktimi i shumëfishtë konsiderohet vetëm një shënim stenografi, në C, Lisp dhe të tjera, kjo sintaksë ka një bazë strikte: operatori i caktimit thjesht kthen vlerën që i është caktuar (shih më lart). Pra, shembulli i fundit është në të vërtetë:

Shuma = (gjithsej = 0)

Një linjë si kjo do të funksionojë në C (nëse shtoni një pikëpresje në fund), por do të shkaktojë një gabim në Python.

Detyrë paralele

Opsioni i fundit funksionon vetëm me lloje që mbështesin operacionet bit (për shembull, për dyfishin, përpiluesi i gjuhës nuk do t'ju lejojë të shkëmbeni vlera të ndryshueshme në këtë mënyrë).

a ||= 10

Ky konstrukt i cakton një vlerë ndryshores a vetëm nëse vlera ende nuk është caktuar ose është e barabartë me false.

Deklarata të përbëra

Operatori i caktimit të përbërë ju lejon të shkurtoni një formë caktimi të përdorur zakonisht. Duke përdorur këtë metodë, mund të shkurtoni shënimin e një caktimi që përdor variablin objektiv si operandin e parë në anën e djathtë të shprehjes, për shembull.