Tematica laboratorului :
1. Comenzi de bazã ; Aplicaþii ;
2. Date, tipuri de date - tipul ºir de caractere, funcþii pentru prelucrarea ºirurilor de caractere ; Aplicaþii ;
1. &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; Comenzi de bazã
Comenzi referitoare la crearea/adãugarea/ afiºarea informaþiilor într-o tabelã:
· &nbs 19419u207t p; Crearea unei tabele:
CREATE nume_tabelã
Specificarea structurii unei tabele(Table Structure) presupune precizarea fiecãrui câmp component al acestuia, împreunã cu caracteristicile sale. Prin urmare trebuie precizate:
- &nbs 19419u207t p; numele câmpului (Name), reprezentând identificatorul prin care se va realiza accesul la acesta;
- &nbs 19419u207t p; &nbs 19419u207t p; tipul câmpului (Type), tipul datelor care vor fi memorate în câmpul respectiv. Ex: Character(ºir de caractere), Numeric, Float(real), Date(datã calendaristicã), Logical(logic), Memo, General, Imagine;
- &nbs 19419u207t p; &nbs 19419u207t p; lungimea câmpului (Width), specificând numãrul maxim de caractere pe care îl pot ocupa datele memorate în câmpul respectiv;
- &nbs 19419u207t p; &nbs 19419u207t p; numãrul de zecimale, (de cifre de dupã punctul zecimal), pentrul câmpurile de tip numeric;
OBS. Existã o serie de câmpuri care au o lungime prestabilitã, cum ar fi : data calendaristicã - 8 caractere, logic - 1 caracter, memo ºi general - 10 caractere.
Dupã specificarea structurii se cere confirmarea pentru introducerea înregistrãrilor (Input dada records now?).
· &nbs 19419u207t p; &nbs 19419u207t p; Adãugarea de înregistrãri într-o tabelã;
APPEND
APPEND BLANK-> determinã adãugarea unei înregistrãri goale la sfârºitul tabelei.
Comanda determinã deschiderea unei ferestre în care pot fi completate rând pe rând datele corespunzãtoare noilor înregistrãri ale tabelei.
· &nbs 19419u207t p; &nbs 19419u207t p; Modificarea informaþiilor din câmpul înregistrãrilor
EDIT
BROWSE--> afiºeazã conþinutul tabelei pe verticalã, ca o tabelã obiºnuitã;
· &nbs 19419u207t p; Activarea unei tabele
OBS. Pentru a se lucra cu o tabelã aceasta trebuie mai întâi sã fie activatã.
USE nume_tabelã
· &nbs 19419u207t p; Afiºarea informaþiilor ditr-o tabelã
LIST -> determinã afiºarea conþinutului tabelei curente (toate înregistrãrile), într-un format tabelar, pe ecranul monitorului; dacãse doreºte listarea la imprimantã, la comandã se adaugã clauza TO PRINTER; dacã se doreºte trimiterea conþinutului într-un fiºier, la comandã se adaugã clauza TO FILE nume_fiºier.
LIST FOR condiþie -> afiºeazã doar acele înregistrãri care îndeplinesc condiþia; dacã înregistrãrile trebuie sã îndeplineascã mai multe condiþii, acestea sunt enumerate folosind operatorul logic AND.
LIST expresie1, expresie2 -> afiºeazã valoarea expresie1, expresie2 (o expresie poate fi un câmp dintr-o tabelã, o variabilã sau o combinaþie între ele). In acest mod pot fi afiºate selectiv numai anumite câmpuri ale unei tabele, eliminându-le din formatul de afiºare pe acelea care nu prezintã interes momentan pentru utilizator.
DISPLAY -> afiºeazã doar înregistrarea curentã;
OBS. La aceste douã comenzi se va reveni !
APLICAÞII:
1. &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; a.)Sã se creeze o tabelã numitã Fructe, cu urmãtoarele câmpuri:Nume_fruct (C10), Gust (C10), Culoare (C15), Forma (C15). S\ se adauge 10 articole în aceastã tabelã.Sã se afiºeze fructele care au forma alungitã.
b.)Sã se creeze o tabelã cu numele aprozar cu urmãtoarele câmpuri:Nume_fruct(C10), Cantitate (C10), Preþ_kg (N5), Furnizor (C12). Sã se adauge 10 înregistrãri în aceastã tabelã. Sã se afiºeze numele fructelor ºi preþul pe kg. pentru acele fructe pentru care pretul pe kg. este mai mare de 5000 lei.
c.)Sa se afiºeze toate fructele care au culoarea "galbenã" ºi gustul "dulce".
2. &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; Date. Tipuri de date - tipul ºir de caractere. Funcþii pentru tipul ºir de caractere.
Tipul ºir de caractere reprezintã o mulþime ordonatã de caractere tratatã ca un tot unitar.
Fiecãrui caracter din ºi i se asociazã o cifrã reprezentând poziþia acestuia în cadrul ºirului (primul caracter poziþia 1 º.a.m.d.).
Numãrul caracterelor dintr-un ºir reprezintã lungimea ºirului.
Un subºir al ºirului dat reprezintã o porþiune dintr-un ºir , începând de la o poziþie specificatã ºi de luncime datã.Constantele de tip ºir de caractere se specificã prin mulþimea caracterelor ce le compun , încadrate între apostrofuri sau ghilimele (la ambele capete trebuie sã avem acelaºi tip de delimitatori).
OPERATORI SPECIFICI ªIRURILOR DE CARACTERE:
· &nbs 19419u207t p; operatori de concatenare:
- &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; &nbs 19419u207t p; operator de concatenare simplu, "+", face ca din douã ºiruri de caractere sã se obþinã un al treilea, prin alipirea celui de-al doilea la sfârºitul primului.
Ex: "strada_" + "George_Coºbuc" -> "strada_George_Coºbuc";
- operator de concatenare special, "-", asemãnãtor cu operatorul de concatenare simplu cu deosebirea cã blancurile de la sfârºitul primului ºir sunt trecute la sfârºitul ºirului al doilea.
Ex: "Salut " - " prieteni!" -> "Salut prieteni! " (Se obs. cã spaþiile de la începutul sirului 2 îºi pãstreazã poziþia).
· &nbs 19419u207t p; operatori relaþionali:
$ inclus în; ->returneazã TRUE dacã primul ºir este conþinut de al doilea ºir, altfel returneazã FALSE. Ex: "calcul"$"calculator" returneazã TRUE.
< mai mic decât;->returneazã TRUE dacã expresia din stânga, de tip ºir de caractere, este mai micã decât expresia din dreapta, de acelaºi tip.
OBS. Compararea a douã ºiruri se face astfel: se ia primul caracter din fiecare ºir ºi se comparã codurile ASCII corespunzãtoare. Dacã primul caracter al primului ºir va avea un cod ASCII mai mic decât codul ASCII al primului caracter din al doilea ºir, atunci primul ºir este mai mic decât al doilea ºir.In caz de egalitate, se comparã codurile ASCII ale caracterelor de pe poziþia a doua a fiecãrui ºir, urmându-se acelaºi algoritm.
Dacã lungimea celor douã ºiruri diferã, ºirul mai mic se completeazã cu caracterul cu codul ASCII 0 pânã la egalitatea lungimilor.
> mai mare decât;
<>, #, != diferit de;
<= mai mic sau egal;
>= mai mare sau egal;
== identic
Pentru operatorii de mai sus se aplicã acelaºi algoritm de calcul.
Funcþii pentru prelucrarea ºirurilor de caractere.
· &nbs 19419u207t p; funcþia LEN ( ) -> aratã lungimea unui ºir de caractere.
EX. ? LEN(,'Bucureºti')
9
· &nbs 19419u207t p; funcþia SUBSTR ( ) -> realizeazã extragerea unui subºir dintr-un ºir.
Aceastã funcþie primeºte ca prim argument ºirul din care se extrage subºirul.
Al doilea argument este un numãr care indicã poziþia din cadrul ºirului de bazã de la care începe extragerea subºirului (indicã prima poziþie a subºirului).
Al treilea argument indicã lungimea ºirului ce se extrage.
Ex. ? SUBSTR(,'ABCDEF', 2,3)
BCD
? SUBSTR(,'Ziua bunã' , 6)
bunã,
· &nbs 19419u207t p; funcþiile LEFT ( ), RIGHT ( ) -> primesc doar un argument numeric, argument care indicã numãrul de caractere de extras din ºir.
Funcþia LEFT ( ) extrage un subºir din partea stângã a sirului de bazã (începând cu primul caracter).
Functia RIGHT ( ) extrage un subºir din partea dreaptã a sirului de bazã (începând cu ultimul caracter).
Ex. ? LEFT (,'O noapte furtunoasã' , 8)
O noapte
? RIGHT (,'O zi ploioasã' , 8)
ploioasã
· &nbs 19419u207t p; funcþiile REPLICATE ( ) ºi SPACE ( )
Funcþia REPLICATE ( ) -> returneazã un ºir de caractere obþinut prin repetarea ºirului primit ca argument de un numãr de ori, numãr specificat ca al 2-lea argument.
Ex. ? REPLICATE (,'la ', 3)
la la la
Funcþia SPACE ( ) -> returneazã un ºir de blancuri cu lungime egalã cu numãrul transmis ca parametru.
Ex. ? " "==SPACE (6)
.T.
funcþia ALLTRIM ( ) -> eliminã blancurile de la începutul ºi sfârºitul ºirului de caractere .
funcþia LTRIM ( ) -> eliminã blancurile de la începutul ºirului de caractere .
funcþia TRIM ( ) ºi RTRIM ( ) -> eliminã blancurile de la sfârºitul ºirului de caractere .
Ex. ? ALLTRIM(,' Teza ,')== Teza
.T.
? ,'Mã numesc ' + RTRIM (,'Ionescu ,') + ,' Daniel ,'
Mã numesc Ionescu Daniel
· &nbs 19419u207t p; funcþiile PADR( ), PADL( ), PADC( )-> au efect de adãugare de blancuri sau alte caractere la dreapta, la stânga sau la ambele capete a ºirului specificat
Ex. ? PADC ('Centrata',20, ,'-')
------Centrata------
· &nbs 19419u207t p; funcþia LOWER ( ) -> transformã toate majusculele în litere mici, restul caracterelor rãmânând neschimbate.
· &nbs 19419u207t p; funcþia UPPER ( ) -> transformã toate caracterele mici în majusculele corespunzãtoare, restul caracterelor din ºir rãmânând neschimbate.
· &nbs 19419u207t p; funcþia PROPER ( ) -> transformã primul caracter dintr-un ºir în majusculã (dacã este literã) , iar urmãtoarele în litere mici.
Ex.? PROPER (,'iONescu dANiel')
Ionescu Daniel
· &nbs 19419u207t p; funcþia AT ( ) -> cautã poziþia unui subºir dintr-un ºir dat, începând cu primul caracter ºi continuând cu urmãtoarele (face diferenþã între majuscule ºi minuscule).
Ex. ? AT (,"Daniel","Cu Daniel")
4
· &nbs 19419u207t p; funcþia OCCURS ( ) -> aratã numãrul de apariþii ale subºirului în cadrul ºirului respectiv.
Ex. ? OCCURS ("el", "Azi am vorbit cu Daniel la telefon.")
2
APLICAÞII:
a.) &nbs 19419u207t p; Sã se creeze o tabelã cu numele Personal cu urmãtoarele câmpuri:Nume(C12), Prenume(C12), Pren_tata(C12), Nume_Pren(C25), Funcþia(C10), Funcþia(C10),Data_ang(D8). Sã se introducã 7 înregistrãri fãrã a se completa câmpul Nume_Pren. Sã se completeze, printr-o singurã comandã câmpul Nume_Pren pentru toþi angajaþii, astfel încât acesta sã conþinã numele angajatului, iniþiala tatãlui ºi prenumele angajatului, separate printr-un spaþiu. Numele ºi prenumele vor începe cu majusculã restul literelor fiind mici. Iniþiala tatãlui va fi scrisã cu majusculã. Ex. Florea T Ion.
b.) &nbs 19419u207t p; Sã se verifice efectul comenzilor:
? LEN (REPLICATE ("ALFA", 3)
? SUBSTR( "combinãrilor",4,5)
? LTRIM(PROPER(PADL("la mulþi ani",30,' ,'))+"!"
|