Referat Tipul String

Mai jos puteti citi fragmente din Referat Tipul String si de asemenea puteti face Download Referat Tipul String

Citeste fragmente din Referat Tipul String

TIPUL STRING NOTIUNI INTRODUCTIVE Poate ati observat ca, pana in acest moment , nu am memorat cuvinte . Acestea au fost numai afisate . In Turbo Pascal se poate lucra cu usurinta cu ele , datorita faptului ca limbajul este inzestrat cu un tip de date special , numit string . O succesiune de caractere cuprinse intre doua caractere se numeste sir de caractere . Exemple : ’ Un sir ’ ’ toamna se numara bobocii ’ . In Turbo Pascal pentru a putea lucra cu sirurile de caractere se folosesc variabilele de tip string . Tipul string este predefinit , adica este cunoscut , nu avem nevoie sa-l declaram cu type . Exemplu : program st1; var t : string; begin t := ’ iepuras ’; writeln (t); end. Programul de mai sus are declarata o variabila t , de tip string . Ea este initializata cu sirul ’iepuras’, apoi este afisata . In exemplul dat sirul ’iepuras’ este alcatuit din 7 caractere . Octetii de la 1 la 7 memoreaza caracterele din care este alcatuit sirul . Restul octetilor , de la 8 la 255 au un continut neprecizat . De altfel , nici nu ne intereseaza continutul lor . Observati faptul ca afisarea s-a realizat , in ansamblu , prin precizarea numelui . Intrucat o variabila de tip string memoreaza cuvintele sub forma de vector de caractere , exista posibilitatea sa accesam direct continutul unui octet , asa cum suntem obisnuiti . Astfel , t[1] retine codul caracterului I , t[2] retine codul caracterului e s.a.m.d. Programul care urmeaza afiseaza acelasi cuvant , pe litere . program st2; var t : string; i : integer; begin t := ’ iepuras ’; for i :=1to n do write (t[i]); end . Mai mult , putem modifica continutul unui singur octet , asa cum rezulta din programul urmator program st3; var t : string ; begin t := ’ iepuras ’; t[6] := ’ i’; write(t); end . In loc de ’a’ t [6] retine ’i’. Prin urmare , programul afisaza ’iepuras’ In cazul variabilelor de tip string exista posibilitatea ca atribuirea sa se faca direct , nu pe litere , asa cum rezulta din programul st4 . program st4; var t ‚ z : string; begin t := ’ iepuras ’; z := t; write(z); end . In urma atribuirii , variabila z retine cuvantul ’’ iepuras ’’ si acesta este afisat . Am vazut ca pentru o variabila de tip string se retin automat 256 de octeti , din care primul retine lungimea . In multe cazuri , acest numar este prea mare – se consuma memorie inutil . Din acest motiv exista posibilitatea ca o varianta de tip string sa fie declarata in asa fel incat sa ocupe un numar mai mic de octeti Exemplu : Var t : string [4] ; Variabila t ocupa 5 octeti . Primul , cel de indice 0 , are rolul de a retine lungimea cuvantului memorat . In acest caz variabila poate retine cuvinte ce au cel mult 4 de caractere . Programl st5 afiseaza ’ mama ’ programul st5 ; var t : string [4] ; begin t := ’ mama ’; write (t); end . In concluzie , prin utilizarea variabilelor de tip string avem avantajul ca putem adresa sirul de caractere atat in ansamblu , prin utilizarea numelui variabilei , cat si pe caractere prin utilizarea parantezelor drepte . Operatorii folositi la compararea sirurilor de caractere sunt : Operatorul ,,=’’ testeaza daca doua siruri de caractere sunt egale din punct de vedere al ordinii alfabetice . Exemplu : S1 = ’ abc ’ => S1=S2 S2 = ’ abc ’ Operatorul ,,+’’ are rolul de concatenare (lipire) a doua siruri de caractere. Concatenarea este operatia prin care din doua siruri de caractere se obtine un al treilea sir de caractere . Exemplu : S1 = ’ MIRA ’ S2 = ’ BELA ’ S1+S2 = ’ MIRABELA ’ Observatie ! Concatenarea sirurilor nu este comutativa , adica S1+S2 nu este tot una cu S2+S1 . Exemplu : S1 = ’ MIRA ’ S2 = ’ BELA ’ S1+S2 = ’ MIRABELA ’ (corect) S2+S1 = ’ BELAMIRA ’ (incorect) Operatorii „<” , „>” , „<=” , „>=” . Comparatia se realizeaza din punct de vedere lexicografic (ordinea alfabetica) . Exemplu : S1 = ’ MINI ’ S2 = ’ MARTIE ’ M=M => MINI > MARTIE I>A S1 = ’ IUNIE ’ S2 = ’ MARTIE ’ I , , ) ; Copiaza din sirul dat incepand cu pozitia data de variabila pozitie un sir format dintr-un numar de caractere dat de variabila numarului . Exemplu 1 : S := ’ MIRABELA ’ S1 := copy ( S , 5 , 4 ) ; Writeln (S1) ; => afisaza BELA Exemplu : 2 S : =’ CALCULATOR ` S1 : = COPY (S , 1 ,4) Writeln (S1) => afiseaza CALC Functia Pos Sintexa functiei Pos Pos( , ) ; Testeaza daca sirul nu este sub sir al sirului 2 returnand pozitia de inceput a variabilei sir1 in cadrul sirului2 . Observatie :Daca sirul 1 nu este sub sir al sirului 2 o sa returneze valoarea 0.(zero) Exemplu : S : = ’ MIRABELA ` S1 : = ’ BELA` S2 : = ’ BIANCA ` P1 : = POS ( S1 , S) ; P2 : = POS ( S2 , S ) ; Writeln ( p1 , p2 ) ; P1 : = 5 P2 : = 0 Functia Length Sintaxa functiei Length Length ( S ) ;S – variabila de tip string . Returneaza dimensiunea unui sir de caractere . { Exemplu : pe calculator scrii intreg => Exemplu } Exemplu : 1 S : = ’ MIRABELA ` N := length ( S ) ; Writeln ( N ) => N = 8 Exemplu : 2 S : = ’LILIAC ` N : = length ( S ) ; Writeln ( N ) => N = 6 Observatie : Folosind functia length putem afisa un sir de caractere pe litere . Exemplu : S := ’ MIRABELA ` For i : = 1 to length ( S ) do Writeln ( S [ i ] ) ;afisaza S [ 1 ] = M , S [ 2 ] = I , S [ 3 ] = R _ _ S [ 8 ] = A Procedura delete . Sintexa proceduri Delete : Delete ( < sir > , < poz > , < nr > ) ; Sterge din variabila sir incepand cu pozitia data de variabila pozitie un sir format dintr-un numar de caractere dat de variabile numere . Observatie :Sirul rezultat in urma stergeri va fi memorat in variabila sir . Exemplu : S` = ’ PROGRAMARE ` Delete ( S , 8 , 2 ) Writeln ( S ) => afiseaza program Procedura Insert . Sintaxa procedurii Insert : Insert ( < subsir > , < sir > , < poz >) ; Adauga in variabile sir un subsir dat de variabila subsir incepand cu pozitia data de variabila poz . Exemplu : S := ` PROGRAME ` Insert ( ` AR ` , s , 8 ) ; Writeln ( s ) => afiseaza programe . Procedura Str folosita pentru a transforma un numar in sir de caractere. Sintaxa procedurii Str : str ( , ) ; Transforma numarul dat de variabila numerelor intr-un sir de caractere retinut in variabila sir . Exemplu : n := 125 (n de tip intreg ) str (n,s) ; writeln (s) ;=> afiseaza s = ’ 125 ’ Procedura Val folosita pentru a transforma un sir de caractere in numar. Sintaxa procedurii Val : val ( , , ) ; Transforma sirul dat de variabila sir in numar retinut in variabila numar . Observatie : Daca transformarea reuseste , variabila eroare ia valoarea 0 (zero) , iar daca transformarea nu reuseste variabila eroare ia valoarea pozitiei caracterului din cauza careia nu a reusit transformarea , variabila eroare este de tip intreg . Exemplu : s1 := ’ - 125 . 36 ’ ; s2 := ’ - 125 . A36 ; val (s1 , n1 , e1) ; val (s2 , n2 , e2) ; writeln (e1 , e2 , n1 , n2) ; => afiseaza e1 := 0 e2 := 6 n1 := - 125 . 36 n2 nu afiseaza nimic Observatie : Pentru a transforma o litera mica in litera mare se poate folosi : functia UPCASE :s[i] = UPCASE (s[i]) ; S[i] = chr (ord (s[i]) - 32) Pentru a transforma o litera mare in litera mica se foloseste : S[i] := chr (ord (s[i]) +32) . PROBLEME : 1 . Se da un numar format din 7 cifre . Sa se elimine cifra din mijloc. program eliminare ; var n : longint ; s : string ; e : integer ; begin writeln (’Dati pe n’) ; readln (n) ; str (n , s) ; delete (s , n , e) ; val (’ Nr rezultat este =’, n : s) ; readln ; end . 2 . Se da un cuvant scris in litere mici . Sa se transforme in litere mari . program litere ; var i : integer ; s : string ; begin writeln (’S=’) ; readln(s) ; for i : = 1 to length (s ) do begin s[i] : upcase ( S[i]) ; writeln ( s [i] ) ; writeln (s[i]) ; end ; readln ; end. 3 . Se da un nr de tip intreg . Sa se memoreze cifrele lui intr-un vector folosind siruri de caractere . program vector ; var i , n : integer ; s : string ; e : integer ; v : array [1..10] of integer ; begin writeln (’ n=’ ) ; readln (n) ; str (n,s) ; for i := 1 to n length (s) do begin val (s[i] , v [i] , e) ; writeln (v[i] : s) end; readln ; end . 4 . Se da un cuvant sa se elimine caracterele care apar de mai multe ori . Sa se afiseze sirul de caractere format din litere distincte . programul lit_distinctii ; var c : string ; i , j : integer ; begin writeln (’ dati pe c ’ ); readln (c) ; for i : 1 to length (c) -1 do for j := i+1 to length (c) do if C[i]=c[j] then delete (c , j , i) ; writeln (c) ; readln ; end . 5 . Sa se afiseze unul sub altul toate sufixele unui cuvant citit de la tastatura . program sufixe ; var s : string ; i : integer ; begin writeln (’ Dati pe s ) ; readln (s) ; for i : = 1 to length (s) do begin delete (s , i, 1 ); writeln ; readln ; end . 6 . Scrieti un program care afisaza cate cifre impare si cate cifre pare contine un nr natural foarte mare . progam cifre ; var s : string ; v : array [1…10] of integer ; i , x , y , e : integer ; n : longint ; begin writeln (`Dati numarul`) ; readln (n) ; str (n , s) ; x : = 0 ; y : = 0 ; for i : = 1 to length (s) do begin val (s[i] , u [i] , e) if v[i] mod 2= 0 then x : = x + 1 else y : = y + 1 ; writeln ( `Nr. De cifre pare este ` , x) ; writeln (`Nr. de cifre impare este ` , y) ; readln ; end . 7 . Sa se afiseze dimensiunea maxima a sirului : program sir ; var s : string ; begin writeln (`Dati cuvantul`) ; readln (s) ; writeln ( length (s) ) ; readen ; end. 8.Deduceti ce va afisa in urma executiei programului pentru S: = PURPURIU C = `p` . program executie ; var s : string ; c : char ; t,p :byte ; begin writeln (’Dati pe s si c =’) ; readln ( s , c) ; t := pos (c,d) ; while t<>0 do begin P:=p+t writeln (p) s := copy (s,t+ 1,255) ; t :=pos (c,d); end; end. citeste (s,c) t : pos (c,s) = 1 t<>0(A) P:=1 afiseaza 1 s :=’ URPURIU ’ t=3 t<>0 p=4 afiseaza 4 s:=uriu t=0 t<>0 (f) PAGE PAGE 10 쥁@