Valoare (informatică) - Value (computer science)

În informatică , o valoare este reprezentarea unei entități care poate fi manipulată de un program. Membrii unui tip sunt valorile acelui tip.

„Valoarea unei variabile” este dată de maparea corespunzătoare din mediu . În limbile cu variabile asignabile , devine necesar să se facă distincția între valoarea r (sau conținutul) și valoarea l (sau locația) unei variabile.

În limbile declarative (la nivel înalt), valorile trebuie să fie transparente referențial . Aceasta înseamnă că valoarea rezultată este independentă de locația expresiei necesare pentru a calcula valoarea. Numai conținutul locației (biții, indiferent dacă sunt 1 sau 0) și interpretarea lor sunt semnificative.

Atribuire: valori l și valori r

Unele limbi folosesc ideea l-valori și r-valori , care rezultă din modul tipic de evaluare de pe partea stângă și dreaptă a unei instrucțiuni de atribuire. O valoare l se referă la 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.

Noțiunea de valori l și valori r a fost introdusă de Limbajul de programare combinat (CPL). Noțiunile dintr-o expresie de valoare r, valoare l și valoare r / valoare l sunt analoage modurilor parametrilor parametrului de intrare (are o valoare), parametrul de ieșire (poate fi atribuit) și parametrul de intrare / ieșire (are o valoare și poate fi atribuit), deși detaliile tehnice diferă între contexte și limbi.

Valori R și adrese

În multe limbi, în special familia C , valorile l au adrese de stocare care sunt accesibile programatic pentru programul care rulează (de exemplu, prin intermediul unei adrese de operator cum ar fi „&” în C / C ++), ceea ce înseamnă că sunt variabile sau de- referințe la o anumită locație de memorie. Valorile R pot fi valori l (vezi mai jos) sau valori non-l - un termen folosit doar pentru a distinge de valorile l. Să considerăm expresia C 4 + 9. Când este executat, computerul generează o valoare întreagă de 13, dar deoarece programul nu a desemnat în mod explicit unde este stocat acest computer în 13, expresia este o valoare non-l. Pe de altă parte, dacă un program C declară o variabilă x și atribuie valoarea de la 13 la x, atunci expresia xare o valoare de 13 și este o valoare-l.

În C, termenul l-value însemna inițial ceva care ar putea fi atribuit (de unde și numele, indicând că este în partea stângă a operatorului de atribuire), dar din moment ce cuvântul rezervat const(constantă) a fost adăugat la limbă, termenul este acum „valoare l modificabilă”. În C ++ 11 există un glif semantic special &&(nu trebuie confundat cu &&operatorul utilizat pentru operații logice), pentru a indica utilizarea / accesul adresei expresiei numai pentru compilator ; adică, adresa nu poate fi recuperată folosind adresa &operatorului în timpul rulării programului (vezi utilizarea semanticii de mutare ).

Acest tip de referință poate fi aplicat tuturor valorilor r, inclusiv valorilor non-l, precum și valorilor l. Unele procesoare furnizează una sau mai multe instrucțiuni care iau o valoare imediată , denumită uneori „imediat” pe scurt. O valoare imediată este stocată ca parte a instrucțiunii care o folosește, de obicei pentru a încărca, adăuga sau scădea dintr-un registru. Celelalte părți ale instrucțiunii sunt codul opțional și destinația. Acesta din urmă poate fi implicit. (O valoare non-imediată poate locui într-un registru sau poate fi stocată în altă parte în memorie, necesitând instrucțiunea să conțină o adresă directă sau indirectă [de exemplu, adresa de registru index] a valorii.)

Expresia de valoare l desemnează (se referă la) un obiect. O valoare l nemodificabilă este adresabilă, dar nu poate fi atribuită. O valoare l modificabilă permite schimbarea și examinarea obiectului desemnat. O valoare r este orice expresie, o valoare non-l este orice expresie care nu este o valoare l. Un exemplu este o „valoare imediată” (a se vedea mai jos) și, prin urmare, nu poate fi adresată ..

În limbajul asamblării

O valoare poate fi practic orice fel de date de un anumit tip de date , de exemplu un șir, o cifră, o singură literă.

Procesoarele acceptă adesea mai multe dimensiuni de date imediate, de exemplu, 8 sau 16 biți, folosind un cod opțional și mnemonic unic pentru fiecare variantă de instrucțiuni. Dacă un programator furnizează o valoare de date care nu se potrivește, ansamblatorul emite un mesaj de eroare „În afara intervalului”. Majoritatea ansamblurilor permit ca o valoare imediată să fie exprimată ca date ASCII , zecimale , hexazecimale , octale sau binare . Astfel, caracterul ASCII 'A'este același cu 65sau 0x41. Ordinea de octeți a șirurilor poate diferi între procesoare, în funcție de arhitectura ansamblorului și computerului.

Note

Referințe

linkuri externe