...alidari la nivel de campuri si la nivel de articol se refera laExistenta NaturaLungimeSemnApartenenta la o multime sau lista de valoriRespectarea unor corelatii aritmetice sau logice intre campuriDaca o data nu indeplineste toate conditiile stabilite, se considera eroare si se solicita reintroducerea ei. Introducerea se poate repeta, fie pana se obtine o data corecta, fie pana cand se depaseste un numar prestabilit de reintroduceri.Cand un camp este corect, se trece la inroducerea si validarea urmatorului camp. Cand articolul este corect, se scrie in suportul extern si se trece la urmatorul articol.Figura urmatoare prezinta o secventa de principiu de validare a unui camp dupa mai multe conditii------------------------------------------
-----Pentru a construi structura repetitiva, necesara reluarii introducerii campului, se utilizeaza o variabila semafor booleana ER, care ia valoarea 1, daca a fost eroare nu s-a indeplinit un criteriu de validare din multimea C1, C2, , Cn, sau 0, in caz contrar.1.VALIDAREA EXISTENTEIO data se considera existenta daca in campul corespunzator ei nu se introduce doar ENTER . Verificarea existentei se realizeaza in functie de in functie de semnificatia tastei ENTER la citirea diverselor tipuri de date Pentru date numerice- rol de separator,fiind ignorata la citirePentru date de tip caracter- furnizeaza codul ASCII al caracterului CR 13Pentru date de tip STRING- rol de terminatorAnaliza presupune ca datele sunt introduse camp cu camp, cu procedura READLN. Avand in vedere ca la citirea datelor numerice, ENTER este ignorat si ca la citirea intr-o variabila de tip CHAR a lui ENTER se solicita un nou ENTER , rezulta ca, indiferent de tipul datei, singura posibilitate de verificare a existentei este citirea in variabile STRING, la care numai prin apasarea tastei ENTER se genereaza transferul sirului vid. Daca LENGTHsir0 sau siri0s 0, se considera ca data nu a fost introdusa. Daca valoarea introdusa este diferita de sirul vid se va proceda astfelPentru date numerice, valoarea STRING va fi convertita cu procedura VAL, definita in unit-ul SYSTEM, care se apeleaza astfelVALs,n,codserS este variabila STRING care va fi convertita, n este variabila numerica in care s va depune rezultatul conversiei, iar codser e o variabila de tip INTEGER care va contine valoarea 0, daca conversia sin ASCII in binar s-a realizat fara eroare, sau pozitia in cadrul sirului a caracterului care nu a putut fi convertit caz in care valoarea lui n nu se modifica.ExempluVAR Cod ORD cods STRINGi5s codser INTEGER er BOOLEANBEGIN REPEAT Erfalse riteiaCod as Readln codsIF cods i0s 0 THEN BEGIN ertrueriteln aNu ati inrodus valoare!a EndELSE Val cods,cod,codser UNTIL NOT erENDPenru date de tip caracter, valoare STRINGi1s citita va fi atribuita variabilei de tip CHAR.ExempluVARSexCHAR sexsSTRINGi1s erBOOLEANBEGINREPEAT Erfalse riteasexaReadlnsexsIF sexsi0s0 THENBEGIN ertrue ritelnaNu ati introdus valoarea!a ENDELSE sexsexsi1s UNTIL NOT er ENDPentru date de tip sir de caractere nu este necesara alta prelucrare.ExempluVARNumeSTRINGi30serBOOLEANBEGINR
EPEATErfalse rite aNumea Readln nume IF Length nume0 THEN BEGIN ertrue ritelnaNu ati introdus valoarea!a ENDUNTIL NOT erEND.2.VALIDAREA LUNGIMIILungimea sirului extern introdus de la tastatura se poate determina numai daca citire se face in variabile STRING. Dupa introducere, se testeaza lungimea sirului efectiv, determinata prin functia LENGTH sau preluata din octetul 0. Daca lungimea nu indeplineste conditia impusa de regule,sa fie egala cu o valoare prestabilita data se considera eronata. Daca data este corecta, se va proceda similar validarii de existenta. De fapt, acesta este un caz particular al validarii de lungime lungimea datei sa fie diferita de 0.Pentru date numerice VAR CodORD codsSTRINGi5s codserINTEGER erBOOLEANCONSTIscorecta5BEGINREPEAT ErfalseriteacodaReadln codsIF Ord codsi0sIscorecta THEN BEGIN ertrue ritelnaLungime eronata!aENDELSE Val cods,cod,codserUNTIL NOT erEND.Pentru date de tip caracterVARSexCHAR sexsSRINGi1serBOOLEANBEGINREPEAT Erfalse riteasexaReadlnsexsIF sexsi0s1 THEN BEGIN ertrue ritelnaLungime eronata!a ENDELSE sexsexsi1s UNTIL NOT er ENDPentru date de tip sir de caractereVARNumeSTRINGi30serBOOLEANCONSTIscorecta1
5BEGINREPEATErfalse rite aNumea Readln nume IF Length numeIscorecta THEN BEGIN ertrue ritelnaLungime eronata!a ENDUNTIL NOT erEND.3.VALIDAREA NATURIIDatele pot avea urmatoarele naturiNumericaAlfanumericaAlfabeticaIn campul extern al datei numerice pot aparea semnul, cifrele 0 9, punctul zecimal si caracterele cu rol de spatiu. In campul extern al datei alfabetice pot aparea caracterele A-Z,a-z, spatiul si, eventual, alte caractere de exemplu a-a. Pentru datele numerice si alfabetice se pot construi proceduri de validare a naturii, cu toate ca limbajul PASCAL nu poseda instructiuni dedicate unei astfel de operatii.1.Validarea de numericitete se realizeaza fie direct, ...
Download