Referat Tipul String
Mai jos puteti citi fragmente din
Referat Tipul String si de asemenea puteti face
Download Referat Tipul StringCiteste 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
ì¥Â@