Semnificație (informatica)

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 24 februarie 2021; verificările necesită 2 modificări .

O valoare în programare este un  element de date , care este unul dintre membrii posibili ai unui tip de date [1] , care poate corespunde unei stări a unei variabile sau constante de tipul corespunzător. De exemplu, 2 este o valoare de tip întreg .

În limbile cu capacitatea de a atribui valori variabilelor, devine necesar să se facă distincția între valorile r (valoarea r - conținut) și valorile l (valoarea l - locația) ale unei variabile [ 2] .

În limbajele declarative , valorile trebuie să fie transparente referențial . Aceasta înseamnă că valoarea de ieșire este independentă de locația expresiei (sau subexpresiei) necesară pentru evaluarea valorii.

Valori L și valori r

Ideea valorilor-bl și a valorilor-r vine din limbaje de programare cu operatori de atribuire, în care valorile din stânga (stânga) și dreapta (dreapta) ale operatorului folosesc un mod diferit de evaluare. Valoarea l indică un obiect care persistă dincolo de o singură expresie. O valoare r este o valoare temporară care nu persistă dincolo de expresia care o folosește. [3]

Conceptele de valoare l și valoare r au fost introduse în limbajul CPL . Conceptele din expresiile valorilor r, valorile l și valorile r/l corespund următoarelor moduri de parametri : parametru de intrare (are o valoare), parametru de ieșire (poate fi atribuit) și parametru de intrare/ieșire ( are o valoare și poate fi atribuită), cu toate acestea, există diferențe tehnice între limbi, în funcție de context.

Valori R și adrese

În multe limbi, în special în cele asemănătoare C , valorile l au o adresă de stocare care este disponibilă programatic pentru programul de execuție (de exemplu, folosind operatorul de adresare „&” în C/C++). Aceasta înseamnă că valorile l sunt variabile sau referințe dereferențiate la anumite zone de memorie. Valorile R pot fi valori l (vezi mai jos) sau non-valori (un termen introdus pentru a le distinge de valorile l). Luați, de exemplu, o expresie 4 + 9în limbajul C. În timpul rulării, programul generează valoarea 13, dar deoarece programul nu specifică unde sunt conținute acele 13, expresia nu este o valoare l. Pe de altă parte, dacă un program C declară o variabilă x căreia i se atribuie valoarea 13, atunci expresia xare valoarea 13 și este o valoare l.

La început, termenul l-valoare a notat în limbajul C ceva căruia i se poate atribui ceva (de unde și numele, indicând că acesta se află în stânga (stânga) operatorului de atribuire), dar din moment ce cuvântul rezervat const(constant ) are fost adăugat la limbajul ), termenul sună acum ca „valoare l modificabilă”. În C++11 , există un glif semantic special &&pentru „utilizați adresa unei expresii numai de către compilator”; adică adresa nu poate fi calculată de către operator &în timpul executării programului. (vezi semantica mutarii ).

Semnificație imediată

Acest tip de referință poate fi folosit de toate valorile r, inclusiv de valorile l și non-valorile. Unele procesoare au instrucțiuni care iau o valoare imediată .  Valoarea imediată este stocată ca parte a unei instrucțiuni care o folosește de obicei pentru a o plasa într-un registru sau pentru a adăuga sau scădea din el. Celelalte părți ale instrucțiunii sunt opcode și receptorul (registrul). Acesta din urmă poate fi nespus. O valoare neimediată poate fi într-un registru sau în memorie, iar o instrucțiune trebuie să conțină o adresă directă sau indirectă a valorii, cum ar fi indexul registrului din care este luată valoarea.

Valoarea L

Valoarea L ca expresie indică un obiect[ specificați ] . O valoare l nemodificabilă (constantă) are o adresă, dar nu poate fi modificată. În schimb, o valoare l mutabilă vă permite nu numai să preluați un obiect, ci și să îi atribuiți o valoare diferită. O valoare R este orice expresie (inclusiv valorile l), iar o valoare non-l este orice expresie care nu este o valoare l. Un exemplu de valoare non-l este o valoare imediată care nu are nicio adresă.

În limbaj de asamblare

Valoarea poate fi din oricare dintre tipurile de date disponibile : poate fi un șir, o cifră sau un singur caracter.

Multe procesoare acceptă mai multe dimensiuni de valori imediate, cum ar fi 8 sau 16 biți, folosind coduri de instrucțiuni diferite pentru fiecare. Dacă programatorul introduce o valoare care nu se potrivește, atunci asamblatorul emite o eroare „În afara intervalului.  Majoritatea asamblatoarelor permit valori imediate în formate ASCII , zecimal , hexazecimal , octal sau binar . Aceasta înseamnă că caracterul ASCII este identic cu valoarea sau . Ordinea octeților în șirurile de text poate varia în funcție de tipul de procesor, versiunea de asamblare sau arhitectura computerului. 'A'650x41

Note

  1. Mitchell, 1996 , p. 9.
  2. Mitchell, 1996 , pp. 389–390.
  3. Lvalues ​​​​și Rvalues ​​​​(Visual C++) . MSDN . Preluat la 3 septembrie 2016. Arhivat din original la 9 octombrie 2018.

Literatură