Controlul limitei

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În programare , monitorizarea limitelor (verificarea limitelor) este orice metodă pentru a afla dacă o variabilă se află în limitele sale înainte de a fi utilizată.

Este deosebit de important pentru o variabilă utilizată ca index la o matrice / vector pentru a se asigura că valoarea sa nu se află în afara limitelor sale.

De exemplu, dacă într-un vector de zece elemente, numerotate de la 1 la 10, programul încearcă să citească sau să scrie elementul numărul 11 ​​și nimic nu îl împiedică să facă acest lucru, locațiile de memorie imediat următoare celei de a zecea vor fi citite / scrise. element, indiferent de ceea ce ar putea conține, acest lucru conduce inevitabil programul să producă rezultate incorecte sau să se blocheze pentru că a generat adrese nevalide (protecția memoriei).

Un al doilea exemplu este cel al unei variabile scalare numerice întregi semnate reprezentate pe 16 biți, poate presupune valori cuprinse între -32768 și +32767: o valoare care depășește aceste limite ar provoca defecțiuni, rezultate incorecte și posibilă blocare a programului.

În primul caz vorbim de „verificarea indexului”, în al doilea de „verificarea intervalului”.

Dacă programul este echipat cu „control de limită”, adică conține instrucțiuni de control speciale care sunt executate de fiecare dată când sunt atinse variabilele, se generează un „semnal de excepție”

Deoarece verificarea limitei în timpul rulării este considerată a fi greoaie, nu se face aproape niciodată.

Unele compilatoare includ comutatoare de construcție pentru a activa sau dezactiva verificarea limitelor (și, de asemenea, alte verificări, cum ar fi overflow și underflow)

În prelegerea sa din 1980, „ Premiul Turing ”, C. Antony R. Hoare a descris experiența sa în proiectarea ALGOL 60 , un limbaj care include controlul limitelor, spunând:

O consecință a acestui principiu este că fiecare apariție a fiecărui indice din fiecare variabilă indexată este verificată pentru fiecare modificare în raport cu limitele superioare și inferioare declarate. Mulți ani mai târziu, am întrebat clienții noștri dacă doresc opțiunea de a dezactiva aceste verificări în interesul eficienței. În unanimitate ne-au cerut să nu facem acest lucru, știau frecvența acestor erori de indexare și știau că neidentificarea acestora va duce la rezultate dezastruoase. Observ cu teamă și groază că nici în 1980, proiectanții și utilizatorii de limbaje de programare nu au învățat această lecție. În orice ramură respectabilă a ingineriei, lipsa unor astfel de precauții elementare ar fi fost mult timp împotriva legii.

Limbile care includ neapărat controlul timpului de rulare includ Ada , Visual Basic , Java , JavaScript , PHP , Python , Ruby , Haskell , Lisp și C # . Limbile D și OCaml pot activa sau dezactiva verificările prin comutatoare de compilare.

C # acceptă și „regiuni nesigure”: secțiuni de cod care, printre altele, suspendă temporar controalele în interesul eficienței. Acest lucru este util pentru accelerarea execuției în porțiuni critice ale programului, fără a sacrifica fiabilitatea întregului program.

Data validarii

În contextul colectării datelor și al calității acestora, controlul se referă la verificarea faptului că datele introduse sau utilizate nu sunt trivial incorecte, de exemplu un procent trebuie să fie între zero și 100, o vârstă (registru) între zero și 120 l înălțimea unui adult între 0 și trei metri.

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT