Documente Academic
Documente Profesional
Documente Cultură
baza de date propri-zisa; sistemul de gestiune a bazelor de date, care realizeaza gestiunea si prelucrarea datelor continute de baza de date; dictionarul bazei de date (informatii referitoare la structura datelor, statistici, documentatie...) mijloace hardware utilizate; reglementari administrative personalul implicat: administrator, utilizatori finali, operatori, programatori;
codul elevului (poate fi ales numarul matricol, de exemplu); nume prenume media scoala profil1 profil2 profil3
Dupa cum observati, fiecare elev isi va putea exprima trei optiuni, in ordinea preferintei, ei urmand a fi repartizati in functie de preferinta si medie. O tabela de date contine o multime de inregistrari, iar o inregistrare este compusa din mai multe articole (cimpuri). Structura tabelei de date va fi, intuitiv, cea din figura 2.1 Figura 2.1 -Structura unei tabele (Jpeg Image 546x222x16M
colors -29 KB)
Tabela, impreuna cu inregistrarile pe care le contine, pot fi privite ca fiind un tabel, in care:
capul de tabel corespunde structurii tabelei (numele campului apare la inceputul unei coloane de date) inregistrarea corespunde unei linii a tabelului
numele(name) = identificator unic prin intermediul caruia se pot manipula valorile efective ale campului tipul (type)= specifica domeniul in care poate lua valori atributul campului; In VFP sunt admise valori de urmatoarele tipuri: o character = sir de caractere o numeric = intreg sau real o integer = intreg de maxim 4 cifre o float = real (20 cifre cu 19 zecimale) o double = real (8 cifre si 18 zecimale) o logical = logic (cu valori .T. - true si .F. - false) o date = data calendaristica (lungime fixa de 8 caractere) o date time = data si ora o currency = moneda (marime fixa de 8 caractere) o memo = sir lung de caractere, memorat separat si afisat doar la cerere; in campurile de acest tip se memoreaza de fapt un pointer la zona ce contine sirul; o general = valorile acestui tip sunt obiecte de diverse tipuri: grafice, sunet, foaie de calcul. Inglobarea acestor obiecte se face prin mecanismul OLE Object Linking and Embedding (legare si incorporare de obiecte); marimea (width) = specifica numarul de caractere/cifre; anumite tipuri au valori de lungime fixa (vezi mai sus); zecimale (decimals) = numar de zecimale (valabil doar pentru campurile double, float, numeric); index (index) = specifica daca tabela este indexata dupa acel camp (vom vedea mai tarziu ce inseamna asta); Null = .........;
din meniul TOOLS -> Wizards ->Table se porneste construirea tabelei prin asistenta pas cu pas; in fereastra de comenzi se da comanda: CREATE [nume_tabela]
care lanseaza fereastra de editare a structurii tabelei (table designer); Figura 2.2 - Fereastra Table Designer (Jpeg Image
478x296x16M colors -22 KB)
intr-un modul de program sau in fereastra de comenzi se poate da comanda: CREATE TABLE nume.dbf ( nume_cimp1 tip [ (marime [scala])] [, nume_cimp2 ...] unde:
o o o o
nume.dbf - numele, eventual calea, fisierului care va contine tabela; tip - o singura litera care specifica tipul: C-character, N - numeric, F float, ... marime - este specificata doar pentru tipurile care nu au marime fixa; scala - numarul de zecimale (pentru tipuri reale);
Pentru tabela considerata in exemplul de mai sus vom da comanda: Create Table elev.dbf ( cod N(4), nume C(20), prenume C(15), media F(2,2) ,scoala C(20), profil1 C(2), profil2 C(2), profil3 C(3)) Dupa definirea structurii bazei de date in fereastra Table Designer, utilizatorul este intrebat daca introduce sau nu inregistrari in momentul respectiv. Daca raspunsul este afirmativ, va apare pe ecran fereastra de editare a valorilor campurilor, sub forma unui tabel sau a unei liste. Introducerea inregistrarilor se incheie prin inchiderea ferestrei de editare.
deschiderea tabelei operatii de actualizare a datelor: modificare, stergere, adaugare crearea de rapoarte (report), filtre (query), etichete (label), statistici,...(operatii de consultare a tabelei in vederea obtinerii de informatii pe baza datelor pe care le contine); inchiderea tabelei de date;
Deschiderea unei baze de date. Zone de lucru VFP dispune de un numar de 255 de zone de memorie, numerotate de la 1 la 255, care sunt utilizate pentru a stoca tabelele de date care sunt deschise. In fiecare zona de
memorie se poate deschide o singura tabela. Primele zece zone pot fi identificate si prin litere (A,B,...), iar urmatoarele doar prin numarul corespunzator. Deschiderea unei tabele se face prin comanda: USE nume_tabela [IN zona_de_lucru] Mod de functionare:
Deschide tabela cu numele specificat in zona_de_lucru specificata prin litera sau numarul corespunzator; Daca sectiunea IN... nu exista, tabela este deschisa in zona de lucru curenta;
Exemplu: Baza de date creata mai sus poate fi deschisa prin comanda:
USE elev.dbf IN 3 USE elev USE elev IN C &&deschide tabela in zona 3 &&deschide tabela in zona curenta &&deschide tabela in zona 3
Zona de lucru curenta este unica (nu se poate lucra in acelasi timp in doua zone distincte) si poate fi selectata de utilizator prin comanda:
SELECT zona_de_lucru
Exemplu:
SELECT c USE elev USE profesor IN 2 SELECT 1 &&zona 3 devine curenta &&tabela elev este deschisa in zona 3 &&deschide tabela profesor in zona 2, fara a deveni zona curenta &&zona 1 devine curenta
Pentru a testa daca o zona de lucru este sau nu utilizata se foloseste functia:
USED ([zona_de_lucru]) cu valorile: .T. daca zona_de_lucru este utilizata .F. in caz contrar
Daca dorim sa stim ce tabela de date este deschisa intr-o zona de lucru vom utiliza functia:
DBF([zona_de_lucru]) care intoarce un sir de caractere reprezentand numele tabelei deschise in zona specificata sau sirul vid, daca nu exista o tabela deschisa in acea zona;
Exemplu:
SELECT a USE elev.dbf ? USED() ? DBF(1)
Observatii:
semnele && introduc un comentariu, care se termina la sfarsitul liniei ? este comanda de afisare ;
USE fara a specifica un parametru - inchide tabela din zona curenta; USE IN zona_de_date - inchide tabela din zona specificata; CLOSE DATABASE - inchide toate bazele de date si stabileste zona 1 ca zona curenta; CLOSE ALL - inchide toate fisierele deschise si selecteaza zona 1 ca zona curenta;
la incheierea definirii structurii tabelei (vezi mai sus); prin utilizarea comenzii APPEND [BLANK] care functioneaza astfel: deschide fereastra de editare, permitand introducerea datelor; daca este folosita clausa BLANK, atunci se introduce o inregistrare vida, care poate fi completata mai tarziu; prin comanda BROWSE - care afiseaza continutul tabelei (sub forma unui tabel) si permite modificare valorilor campurilor; prin comanda INSERT [BEFORE] [BLANK] care permite introducerea unei inregistrari in interiorul unei tabele (comanda Append adauga inregistrari tabelei de date); Daca este prezenta clauza BEFORE noua inregistrare este introdusa inainte de inregistrarea curenta, altfel inregistrarea este introdusa dupa inregistrarea curenta. Daca se foloseste clauza BLANK este introdusa o inregistrare vida.
Afisarea inregistrarilor
Afisarea inregistrarilor dintr-o tabela se poate face cu una dintre comenzile:
DISPLAY [[FIELDS] <lista_campuri>] [domeniu] [FOR expL] [WHILE expL]
Comanda afiseaza datele in urmatorul format: o pe prima linie numele campurilor afisate o pe urmatoarele linii inregistrarile din tabela, una pe fiecare linie; o se adauga un camp suplimentar ce reprezinta numarul de ordine al fiecarei inregistrari; Sa comentam putin sintaxa comenzii Display:
o o
clauza FIELDS precizeaza care dintre campurile tabelei sa fie afisate, in absenta sa afisandu-se toate; domeniu - stabileste o multime de inregistrari asupra careia actioneaza comanda, avand una dintre valorile: ALL - toate inregistrarile; NEXT expN - urmatoarele expN inregistrari incepand cu inregistrarea curenta; RECORD expN - inregistrarea cu numarul expN REST - toate inregistrarile de la inregistrarea curenta si pana la sfarsitul tabelei; OBSERVATIE: - Precizarile de mai sus sunt valabile pentru toate comenzile care actioneaza asupra unei multimi de inregistrari
o o
clauza FOR - selecteaza din domeniu inregistrarile care satisfac conditia logica; clauza WHILE - selecteaza din domeniu inregistrari atata timp cat conditia este adevarata (cand conditia devine falsa, nu se mai continua explorarea domeniului);
care are aceeasi sintaxa ca Display, deosebirea fiind aceea ca domeniul implicit al inregistrarilor este ALL, in timp ce pentru Display este NEXT 1 (inregistrarea curenta). Exemplu: Sa presupunem ca am creeat o tabela numita agenda.dbf cu urmatoarele campuri: nume C(20), prefix C(3), telefon N(7), adresa C(30). Cerinte:
1. 2. 3. 4.
Sa se afiseze toate inregistrarile Sa se afiseze doar campurile Nume si telefon Sa se afiseze toate persoanele care au prefixul 038 Sa se afiseze numele si adresa persoanelor cu numele care incepe cu F
Rezolvare:
CLOSE ALL USE agenda LIST DISPLAY ALL FIELDS nume, telefon DISPLAY ALL FOR prefix='038' LIST FOR UPPER(substr(prefix,1,1))='F' FIELDS nume, adresa USE
Observatii:
DISPLAY ALL este echivalent cu LIST, iar DISPLAY cu LIST NEXT 1 functia substr(sirC,inceput, nr_caractere) intoarce subsirul lui sirC, care incepe de la caracterul inceput si are nr_caractere caractere; functia UPPER(sirC) intoarce sirul sirC scris cu majuscule
Exercitii propuse
1. Sa se creeze baza de date agenda.dbf cu structura din exempul de mai sus. Sa se introduca in aceasta baza 5 inregistrari. 2. Introduceti in fereastra de comenzi, rand pe rand, comenzile ce rezolva cerintele din exemplul de mai sus; 3. Sa se creeze tabela salariat.dbf cu urmatoarele campuri: nume, prenume, vechime, salariu. Sa se afiseze: a. lista cu numele si prenumele salariatilor b. salariatii cu vechimea de peste 5 ani c. salariatii cu salariul de 1 000 000 lei d. salariatii cu salariul de sub un milion lei e. salariatii cu vechimea intre 3 si 5 ani f. informatiile complete despre salariatii cu numele ce incepe cu litera C si prenumele care incepe cu I 4. Gasiti inca o deosebire intre Display si List (indicatie: inregistrarile sa nu poata fi afisate intr-un singur ecran)
absolut necesar sa existe comenzi care sa repozitioneze indicatorul de inregistrari in functie de necesitatile de prelucrare ale utilizatorului. De asemenea, sunt necesare comenzi (de fapt functii) pentru aflarea numarului inregistrarilor din tabela, pentru aflarea inregistrarii curente... Vom lucra cu urmatoarele functii:
Daca nu se specifica o tabela anume, functia intoarce numarul inregistrarii curente din tabela curenta;
Prima forma a comenzi determina ca inregistrarea cu numarul expN din tabela precizata sa devina inregistrare curenta. Daca nu este specificata o tabela anume se considera tabela curenta. A doua forma determina pozitionarea indicatorului de inregistrarila inceputul tabelei (clauza TOP) sau la sfarsitul acesteia (clauza BOTTOM).
care pozitioneaza indicatorulde inregstrari la a expN inregistrare incepand de la inregistrarea curenta, in tabela specificata. Daca nu se precizeaza nici o clauza (se foloseste doar comanda SKIP), indicatorul de inregistrari se pozitioneaza pe inregistrarea urmatoare. Observatii: Daca se depaseste ultima inregistrare a tabelei, indicatorul de inregistrari contine valoarea numarului de inregistrari din tabela plus 1. In acest caz functia EOF() intoarce valoarea .T. Daca saltul se face inaintea primei inregistrari din tabela, functia BOF() intoarce valoarea .T.
RECCOUNT([zona_de_date]) = intoarce numarul de inregistrari din tabela specificata. RECSIZE([zona_de_date]) = intoarce dimensiunea unei inregistrari.
Stergerea inregistrarilor
O facilitate absolout necesara, alaturi de posibilitatea de a adauga si modifica inregistrari, este aceea de a putea sterge inregistrari din tabelele de date. Stergerea poate fi realizata la doua nivele:
logic: inregistarea nu este stearsa efectiv din tabela, dar primeste un marcaj special, care indica stergerea acesteia (spunem ca inregistrarea a fost marcata pentru stergere. Unele comenzi FoxPro iau in considerare marcajul de stergere, astfel ca inregistrarile sterse logic sunt ca si inexistente. fizic: inregistrarile sunt sterse efectiv din tabela de date.
Mecanismul de stergere al inregistrarilor este urmatorul: mai intai sunt marcate pentru stegere inregistrarile dorite (comanda DELETE), iar apoi sunt sterse fizic (comanda PACK), deci nu mai pot fi refacute. Comanda Delete are urmatoarea sintaxa:
DELETE [domeniu] [For expL1] [While expL2]
Mod de functionare: marcheaza pentru stergere toate inregistrarile din domeniul precizat, domeniul implicit fiind inregistrarea curenta. Inregistrarile nu vor fi definitiv sterse decat dupa aplicarea comenzii PACK. Exemplu: Sa se stearga inregistrarea cu numarul 7 din tabela elevi.dbf
USE elevi DELETE RECORD 7 PACK
Stergerea mai multor inregistrari se face ca in exemplul urmator: Exemplu: Sa se stearga primele 10 inregistrari din tabela elevi.
USE elevi
care are aceeasi sintaxa ca si DELETE. Mod de functionare: Anuleaza marcajul de stergere pentru inregistarile din domeniu. Inregistrarile din acest domeniu care nu sunt marcate ca sterse nu sunt afectate. Stergerea permanenta a inregistrarilor marcate pentru stergere se face cu ajutorul comenzii:
PACK
Mod de functionare: Sterge definitiv inregistrarile din tabela curenta, care sunt marcate pentru stergere. Comanda
ZAP
Mod de functionare: Sterge definitiv toate inregistrarile din tabela curenta, fara posibilitatea refacerii acestora. Pentru a verifica daca o inregistrare este marcata pentru stergere putem folosi functia:
DELETED([zona_de_lucru])
Mod de functionare: Intoarce valoarea .T. daca inregistrarea curenta din zona de lucru specificata (din tabela specificata) este marcata pentru stergere si .F. in caz contrar. Daca nu se specifica tabela se considera tabela curenta. Exemplu:
GO 2 DELETE ? DELETED() GO 7 ? DELETED()
si functioneaza astfel: se evalueaza expresia; valoarea expresiei va fi depusa in zona de memorie alocata variabilei; tipul variabilei este dat de tipul valorii expresiei; daca variabila nu exista inca este creata in acest moment; daca variabila exista deja, ea va capata noua valoare, iar tipul variabilei devine tipul expresiei (indiferent daca variabila avea alt tip); prin comanda STORE, care are urmatoarea sintaxa:
o o o o STORE expresie TO lista_de_variabile
si functioneaza astfel: se evalueaza expresia, iar valoarea acesteia este atribuita tuturor variabilelor din lista; daca variabilele nu existau sunt create la executarea comenzii. Eliberarea memoriei alocate variabilelor se poate face prin comenzile:
RELEASE cu sintaxa:
RELEASE lista_variabile
In forma Release All elibereaza din memorie toate variabilele Daca se foloseste clauza Like macheta se sterg toate variabilele cu numele ce corespunde machetei specificate. Daca se foloseste clauza Except macheta se sterg toate variabilele cu exceptia celor cu numele ce corespunde machetei specificate.
Macheta este un sir de caractere care include caracterele * si ?, reprezentand orice sir de caractere, respectiv orice caracter (sunt caractere "joker"; aceeasi semnificatie o au si in sistemul de operare MS-DOS).
CLEAR ALL sau CLEAR MEMORY care au si efectul de a sterge din memorie variabilele.
Daca dorim sa stim care sunt variabilele definite in program la un moment dat, vom putea utiliza comenzile DISPLAY MEMORY si LIST MEMORY, care au aceeasi sintaxa:
DISPLAY MEMORY [LIKE macheta] [TO PRINTER | TO FILE nume_fisier] [NO CONSOLE]
cu semnificatia: afiseaza variabilele din memorie precizand pentru fiecare numele, tipul, continutul, precum si numarul variabilelor definite de utilizator, memoria folosita si memoria disponibila. Folosind clauza LIKE, se pot afisa doar variabilele conforme cu macheta precizata. Lista poate fi tiparita la imprimanta (clauza TO PRINTER) sau intr-un fisier cu numele specificat (clauza TO FILE). Daca dorim ca lista sa nu apara si pe ecran (in cazul in care tiparim sau scriem intr-un fisier), utilizam clauza NO CONSOLE. Exemplu:
a = 10 b = 5 c = 2 suma = a+b+2 prod = a*b*c
? suma && afiseaza 17 ? prod && afiseaza 100 STORE 50 TO a, a1, a2 ? a, a1, a2 && afiseaza 50, 50, 50 RELEASE ALL LIKE a* && sterge variabilele a, a1, a2
Exercitiul 1: Rulati programul precedent si urmariti rezultatele. Adaugati si comanda pentru afisarea variabilelor din memorie atat inainte de stergerea variabilelor a, a1, a2, cat si dupa. Verificati toate clauzele comenzilor Release si Display Memory
si functioneaza astfel: afiseaza valoarea expresiilor din lista_expresii, avand ca punct de reper pozitia curenta a cursorului. Afisarea se face conform cu formatul precizat in clauzele Picture si Function. Daca dorim ca afisarea sa se faca incepand de la o anunita coloana (de pe linia curenta), utilizam clauza AT. Diferenta dintre ? si ?? este urmatoarea: ?? incepe afisarea imediat de la pozitia cursorului, iar ? de la inceputul liniei imediat urmatoare celei pe care se afla cursorul. Stabilirea formatului de afisare va fi discutat la comanda SAY. Comenzile \, \\, TEXT...ENDTEXT Sunt utilizate pentru afisarea mai comoda a liniilor de text. Comenzile \ si \\ afiseaza sirul de caractere care le urmeaza, prima trecand cursorul pe linia urmatoare dupa afisare. Daca dorim afisarea unui text mai mare vom folosi:
Daca dorim sa introducem in text si expresii ce trebuiesc evaluate, acestea trebuiesc incadrate intre << si >>. Pentru a putea utiliza aceasta facilitate trebuie sa folosim comanda:
SET TEXTMERGE [ON | OFF] [TO fisier]
cu semnificatia:
Clauza ON determina evaluarea expresiilor dintre << si >>, care apar in sirurile de caractere afisate cu \, \\ si TEXT; Clauza TO permite specificarea unui fisier in care se se faca afisarea (valabila doar pentru \ si \\);
Comanda @...Say Comanda @...Say este, probabil, cea mai utilizata comanda de afisare din FoxPro si are urmatoarea sintaxa:
@ linie, coloana SAY expresie [FUNCTION format][PICTURE format] [SIZE n1,n2] [FONT nume_font, marime] [STYLE stil] [COLOR SCHEME schema] [COLOR lista perechi de culori]
cu semnificatia: afiseaza incepand de la linia si coloana spacificate o expresie, utilizand un format stabilit prin Function si Picture, fontul, culoarea si stilul precizate in clauzele corespunzatoare. Stilul este definit printr-un sir in care pot sa apara, printre altele urmatoarele caractere: B- bold, I- italic, U - underline. Clauzele Function si Picture, care apar si la alte comenzi FoxPro, au urmatoarea semnificatie: Function stabileste un format de citire/scriere pentru intregul text, in timp ce Picture stabileste un format pentru fiecare caracter din text. Codurile Picture sunt: Cod Semnificatie A Permite doar caractere alfabetice
W N X Y 9
Permite doar date logice Litere si cifre Orice caracter Doar Y,y,N,n pe care le trece la majuscule Daca se aplica sirurilor, permite doar cifre, altfel permite cifre si semne
Pentru Function voi aminti doar caracterul A (permite doar caractere alfabetice), S(n) (limiteaza marimea campului de afisare la n caractere) si ! (toate caracterele alfabetice sunt trecute la majuscule). Listele complete de coduri pentru Function si Picture pot fi gasite in diverse carti de FoxPro. Exemple:
Clear \ Afisez rezultatul unei adunari \\ 12+10 = 22 \\ fara sa evaluez vreo expresie Set TextMerge ON \ Acum evaluez \ 12 + 10 =<<12+10>> @ 10, 5 Say 'Afisez la linia 10, coloana 5' Function '!'; Font 'Arial Black', 15 Style 'BI' Text Va placut acest font Arial Black de marime 16 ? Si ce daca ? EndText Set TextMerge OFF
Exercitiul 2: Executati exemplul de mai sus si urmariti efectele. Exercitiul 3: Afisati pe ecran sablonul unei scutiri medicale Exercitiul 4: Afisati pe ecran cursul valutar pentru USD si DM din ultima saptamana, sub forma unui tabel
Citirea datelor
In limbajul FoxPro, citirea datelor se realizeaza in doua etape:
Se definesc zonele in care se vor introduce valorile (campuri de editare) folosind comanda @...GET; Se da comanda READ, care citeste efectiv valorile de la tastatura, conform campurilor de editare definite anterior, si le atribuie variabilelor precizate;
Sintaxa comenzii GET este urmatoarea, exceptand unele clauze, pe care le-am "sarit":
@ linie, coloanaGET variabila | camp [FUNCTION format][PICTURE format] [SIZE n1, n2] [FONT nume_font, marime] [STYLE stil] [DEFAULT expresie] ...
cu semnificatia: se defineste un camp de editare incepand de la linie, coloana, conform cu formatul din clauzele Function si Picture, stilul, fontul si culoarea precizate; valoarea citita ulterior de comanda READ va fi depusa intr-o variabila sau intr-un camp al bazei de date. Precizari:
Daca variabila nu exista, va trebui folosita clauza Default, care precizeaza valoarea initiala a variabilei. Daca variabila este un masiv (tablou), aceasta trebuie sa fi fost definita anterior Se poate afisa un mesaj explicativ, afisat atat timp cat campul respectiv este activ (Message sir_de_caractere) Se poate defini campul intr-o fereastra de editare specificata prin Window nume_fereastra. Stabilirea unui domeniu de valori pentru valoarea ceruta se face prin clauza Range limita_inferioara, limita_superioara Se pot face verificari asupra valorii introduse, stabilindu-se daca valoarea este sau nu acceptabila. Aceasta se realizeaza prin clauza VALID expr_logica. Daca valoarea expresiei logice este .T., valoarea introdusa este considerata corecta si se trece la urmatorul camp de editare, altfel nu este permisa iesirea din campul de editare.
Exemplul 1: Vom scrie un program care gaseste solutia unei ecuatii de gradul 1. Se vor citi valori pentru coeficientii ecauatiei. Pentru coeficientul necunoscutei se va pune conditia de validare a<>0; Codul este:
Clear a = 0 b = 0 @5,5 Say 'a=' Get a Picture '9999'; Valid a<>0
@6,5 Say 'b=' Get b Picture '9999' READ ? 'Solutia este:', -b/a
Observatii:
Caracterul ";" este folosit nu ca separator de instructiuni, ci pentru a marca faptul ca instructiunea / comanda se continua pe randul urmator. Valorile pentru a si b nu pot depasi maxim 4 caractere (4 cifre), asa cum precizeaza clauza Picture. Daca dorim sa introducem date de dimensiuni mai mari, vom folosi functiile Space si Replicate, asa cum vedeti in exemplul urmator.
Exemplul 2: Sa se introduca datele referitoare la un elev: nume, prenume, data nasterii, notele la romana, matematica, romana si istorie. Codul este:
Clear nume = Space (15) prenume = Space (10) data_n = { / / } rom = 1 mat = 1 ist = 1 @ 5, 5 Say 'Nume :' Get nume Picture Replicate('x',15) @ 6, 5 Say 'Prenume:' Get prenume Picture Replicate('x',10) @ 7, 5 Say 'Data :' Get data_n Function 'd' @ 8, 5 Say 'Romana :' Get rom Picture '99'; Range 1, 10 Message 'Nota la romana' @ 8, 20 Say 'Matematica: ' Get mat Picture '99'; Range 1, 10 Message 'Nota la matematica' @ 8, 37 Say 'Istoria: ' Get ist Picture '99'; Range 1, 10 Message 'Nota la istorie' READ media = (rom + mat + ist)/3 Set TextMerge ON \ Media este:<<media>> Set TextMerge OFF
Observatie: Functia Space (nr) are ca rezultat un sir de caractere compus din nr spatii. Functia Replicate are ca rezultat un sir de caractere format prin multiplicarea unui sir de un numar specificat de ori. Exercitii 5. Sa se scrie un program care calculeaza aria totala, volumul si lungimea diagonalei unui paralelipiped dreptunghic cu dimensiunile a, b, c 6. Sa se construiasca o macheta de introducere a datelor pentru realizarea unui depozit bancar. Sa fie citite urmatoarele date: numele si prenumele depunatorului, seria si numarul buletinului de identitate, data nasterii, adresa, suma depusa (mai
mare de 500000 lei), termenul de depunere (1, 3 sau 6 luni), tip depozit (cu capitalizarea dobanzii sau fara capitalizare), data la care s-a constituit depozitul 7. Completati rezolvarea exercitiului precedent cu generarea unui fisier text care sa contina datele introduse de utilizator (contractul de depozit). Afisarea sa se faca si pe ecran, utilizand diferite fonturi, ...