Algoritmi și tehnici de
programare
Cursul 4
+
Cuprins
Validarea datelor
+
Organizarea relativă
Cheie relativă numărul relativ al articolului în fişier
Indicatorul de stare e un cîmp
rezultă spaţii libere şi spaţii ocupate în fişier
care poate lua două valori
distincţia se face prin includerea unui cîmpdistincte (uzual 0/1),
suplimentar în unde 0
identifică spaţii libere, iar 1
structura articolului: indicator de stare
identifică articole valide
Spaţiu liber
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Articol valid
+
Organizarea relativă
Căutarea în fişier
articol unic sau set de articole
Modificarea datelor
un articol sau mai multe
17
4 7 15 16 17
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
+
Creare fişier, cu populare
Start
Nume fișier
Calcul nr. articole nr
Deschidere fișier
Da Nu nr<=n Da
Stop x.is = 1
Scrie art. x în
fișier la poz. n
Preformare
Nr. articole nra
x.is = 0
i=0
i < nra Da
Scrie art.
Nu x în fișier
Stop i = i+1
+
Creare fişier, cu populare
Stop
+
Creare fişier, cu populare
!feof(stdin) Da
Prelucrare cheie n
Nu
Cheie articol
Închidere fișier căutat n
Stop
+
Prelucrare articol unic
Start
Nume fișier
Deschidere fișier
Nu nr<=n Da
Calcul număr de
articole nr Poziționare pe Mesaj eroare
art. cu nr. n “Cod eronat”
Cheie articol
căutat n Citire
articol x
!feof(stdin) Da Nu x.is == 1 Da
Mesaj eroare Prelucrare
Nu
“Cod eronat” articol
Închidere
fișier
Cheie articol
Stop
căutat n
+
Prelucrare articol (modificare)
Poziționare pe
articolul cu numărul n
Scrie articol în
fișier
+
Afișare articol
+
Prelucrare articol (modificare)
+
Prelucrare set de articole
(căutare, modificare, ştergere etc.)
Start
Articolele sunt identificate după o
Pregătire fișier valoare comună
!feof(stdin) Da
NU
Prelucrare val
Stop Valoare
căutată val
+
Prelucrare set de articole
(căutare, modificare, ştergere etc.)
Poziționare la
Verificare
începutul fiș. articol valid Verificare
articol căutat
Citire articol
din fișier x
!feof(f) Da
x.is == 1 Da
Nu
x.cîmp == val Da
Nu
Prelucrare
NU
articol
Citire articol
din fișier x
+
Afișare set de articole
+
Prelucrare set de articole
+
Afișare integrală
+
Operații de bază
Prelucrare
Căutare
Vizualizare articol găsit (ecran / fișier text)
Modificare
Vizualizare articol (partea semnificativă)
Confirmare (diverse metode)
Introducere valori noi
Rescriere articol, pe vechea lui poziţie în fişier
Ştergere
Modificarea câmpului indicator de stare pentru articolul ce trebuie
şters
+
Validarea datelor
Niveluri de validare
câmp – îndeplinirea condițiilor proprii
Natură
Lungime
Ex: CNP
Semn
Ex: Pret
apartenenţă la o mulţime / interval
Ex: Sex: {m, f}
Natură
int er, x;
er = 1;
while (er)
{
printf("\nVarsta = ");
getc(stdin);
if (scanf_s("%d", &x) == 1)
er = 0;
}
printf("%d\n", x);
+
Validarea datelor
Validare natură alfabetică
şir de caractere, verificat fiecare caracter
char nume[20];
int sum,i,n;
printf("numele=");
scanf_s("%s", nume, sizeof(nume));
fflush(stdin);
do
{sum = 0;
n = strlen(nume);
for (i = 0; i < n; i++)
if (((nume[i] >= 'a') && (nume[i] <= 'z')) || ((nume[i] >= 'A') &&
(nume[i] <= 'Z')))
sum =sum+ 1;
if (sum == n) puts(nume);
else
{printf("numele=");
scanf_s("%s", nume, sizeof(nume));}
} while (sum != n);
+
Validarea datelor
Lungime
existenţă (diferită de zero)
lungime propriu-zisă
NU condiţie 1 DA
erer=
=1
1 NU condiţie 2 DA
eroare 1
<- mesaj
eroare 2 NU condiţie n DA
Ecran e/ citire
Dacă fișier
erer =
=1 n
de la tastatură
jurnal
<- mesaj
eroare n
nr. = 0
er > 0 și erer>
== 10 DA
nr < max NU
+
Bibliografie