Sunteți pe pagina 1din 5

Siruri de caractere-string

D Un sir de caractere reprezinta o succesiune de caractere cuprinsa intre apostrofuri. Aceasta succesiune poate fi alcatuita din:
-litere mici;
-litere mari;
-cifre;
-delimitatori(., ;);
-caractere speciale(# @);
Un sir de caractere poate fi memorat intr-o variabila de tipSTRING.
Declararea unei astfel de variabile se poate realize fie prin specificarea dimensiunii maxime a sirului , fie nu.

1. var nume:string[25]; 2. var nume: string;

nume:string[nr]; 1<=nr<=255;

Daca la declararea unei variabile este specificata dimensiunea maxima a sirului de caractere , atunci compilatorul va aloca un
numar nr de caractere pentru aceasta variabila .
Daca dimensiunea nu este specificata atunci compilatorul va aloca dimensiunea maxima , adica 255 de caractere.
Unui sir i se poate asocial o valoare prin doua modalitati:
a)prin atribuirea directa a unei valori folosind operatorul de atribuire(:=);
b)prin procedura (read, readln);

!!!Observatie!!!
Daca valoarea ce i se atribuie unui sir de caractere depaseste lungimea maxima a sirului , atunci sirul de caractere va primi o
valoare trunchiata din valoarea initiala egala cu lungimea maxima a sa.

Exemple:
a) s:string[3]; s:=’abcde’=>s=’abc’;
b) s:string; s:=’abcde’=>s=’abcde’;
c) s=’‘-stringul de lungime 0;
d) s=’ ‘-sir de caractere de lungime 1.
Operatii pe siruri de caractere

1)Concatenarea a doua sau mai multe siruri de caractere.


Se realizeaza folosind operatorul ”+”.
s:string;
s:=’ab’+’ ‘+’cde’;
ð s=’ab cde’
2)Compararea a doua caractere precum si compararea a doua siruri de caractere se realizeaza folosind operatorii relationali: =, <,
<=, >, >=, <>.
Compararea a doua caractere se realizeaza comparand codurile Asci ale celor doua caractere.
Compararea a doua siruri de caractere se realizeaza prin compararea lexicografica , reducandu-se la compararea a doua caractere.
3)Parcurgerea unui sir de caractere
length(sir)-returneaza lungimea sirului specificat.
sir:string;
Valoarea returnata de aceasta functie este o valoare de tip byte.
length(‘’)=0-sirul vid.
s:string ;
s[i]-caracterul de pe pozitia i;
for i:= 1 to length(s) do
<prelucreaza s[i]>;
!!!Observatii!!!
1)Relatia de legatura intre caracterele mari si caracterele mici este urmatoarea:
CA(mare)+32=CA(mic); CA-codul Asci;
2)ord , chr –doua functii predefinite specifice caracterelor;
ORD(un character)=codul Asci al caracterului;
CHR(un numar)=caracterul corespunzator codului Asci.
Functii predefinite pe stringuri

1)POS(sir1,sir2);
2)COPY(sir,poz,nr);
3)LENGTH(sir);
4)CONCAT(c1,c2,…,cn);

1) Functia POS verifica daca sirul 1 se situeaza in sirul 2 si returneaza pozitia de inceput in sirul 2 daca exista sau 0 daca sirul 1
nu se afla in sirul 2.
2) Functia COPY extrage un subsir al sirului specificat, incepand din pozitia poz cu un numar nr de caractere.
3) Functia LENGTH returneaza lungimea unui sir de caractere.
4) Functia CONCAT lipeste mai multe siruri c1,c2,…,cn.

!!!Observatii!!!
1) Daca poz este mai mare decat length(sir) atunci sirul rezultat va fi sirul vid.
2) Daca nr este mai mare decat length(sir)-poz+1 atunci subsirul obtinut va contine numai length(sir)-poz+1 caractere.

|----------|---------------------|
1 poz length(sir)
|---------------------|
Length(sir)-poz+1

Proceduri predefinite in stringuri

1)DELETE(sir,poz,nr)
Sterge din sir un sir incepand cu pozitia poz un numar nr de caractere.
!!!Observatie!!!
1) Daca poz>length(sir) atunci nu se sterge nimic.
2) Daca nr>length(sir)-poz+1 , atunci se vor sterge length(sir)-poz+1 caractere.
Exemple
S=’casa’;
1)delete(S,2,2)->S=’ca’;
2)delete(S,7,3)->S=’casa’;
3)delete(S,3,7)->S=’ca’.

2)INSERT(subsir, sir, poz)


Insereaza subsirul dat in sirul sir incepand din pozitia poz.
!!!Observatii!!!
1) Daca pozitia este mai mare decat length(sir) , atunci subsirul se insereaza la sfarsitul sirului .
subsir=’rr’; sir=’casa’;
insert(subsir,sir,30)->sir=’casarr’;
insert(subsir,sir,2)->sir=crrasa’.
2) Daca lungimea sirului + lungimea subsirului depaseste lungimea de definitie a sirului “sir”, atunci lungimea sirului se pastreaza
la lungimea de definitie (trunk(int)) character de dupa lungime.
sir=’casa’; subsir=’rr’; sir:string[4];
insert(subsir,sir,2)->sir=’crra’.
3)STR(numar,sir)
Transforma variabila “numar” intr-un sir de caractere.
12->’12’.
4)VAL(sir, numar, eroare)
Incearca sa transforme sirul de caractere “sir” intr-un numar real. Daca reuseste atunci parametrul eroare va avea valoarea 0, daca
nu reuseste valoarea parametrului “numar”=0, “eroare” va avea pozitia de unde incepe nereusita.
Val(‘12.3’, numar, eroare)-> eroare=0
->numar=12.3
Val(’12,3’,numar,eroare)->eroare=3
->numar=0.

SET DE PROBLME
1) Sa se afiseze toate prefixele unui cuvant.
2)Sa se afiseze toate sufixele unui cuvant.
3)Sa se elimine toate spatiile dintr-un text.
4)Verificati daca un cuvant este palindrome.5)Afisati cate vocale contine un text.
6)Se da un text in care cuvintele sunt separate prin spatii . Sa se afiseze pe cate un rand cuvintele textului.

Program problema_1;

Var cuv:string;
n,i:integer;
Begin
write(‘Cuvantul este:’);
readln(cuv);
n:=length(cuv);
for i:= 1 to n do
writeln(copy(cuv,1,i);
readln;
END.

Program problema_2;

Var cuv:string;
n,i:integer;
Begin
write(‘Cuvantul este:’);
readln(cuv);
n:=length(cuv);
for i:= n downto 1 do
writeln(copy(cuv,i,n);
readln;
END.

Program problema_3;

Var cuv:string
i,n:integer;
Begin
write(‘Cuvantul este:’);
readln(cuv);
n:=length(cuv);
for i:= 1 to n do
if cuv[i]=’ ‘then begin
delete(cuv,i,1);
n:=n-1;
end;
for i:= 1 to n do
write(cuv[i]);
readln;
END.

Program problema_4;
Var cuv:string;
i,n:integer;
OK:Boolean;
Begin
write(‘Cuvantul este:’);
readln(cuv);
n:=length(cuv);
OK:= true;
for i:= 1 to n div 2 do
if cuv[i]<>cuv[n-i+1] then OK:=false;
if OK then writeln(‘Cuvantul este palindrom’)
else writeln(‘Cuvantul nu este palindrom’);
readln;
END>

Program problema_5;
Var text:string;
i,n,nr:integer;
Begin
write(‘Textul este:’);
readln(text);
n:=length(text);
nr:=0;
for i:= 1 to n do
if (text[i] in [‘A’,’E’,’I’,’O’,’U’]) or (text[i] in[‘a’,’e’,’i’,’o’,’u’]) then inc(nr);
writeln(‘sunt’,nr,’vocale’);
readln;
END.

Program problema_6;

Var t:string;
n,i:integer;
cuv:string;
Begin
Write(‘Dati textul:’);
Readln(t);
N:=length(t);
I:=1;
While i<= n do
Begin
While (t[i] in[‘ ‘,’,’,’.’,’?’,’!’,’:’,’;’]) and (i<=n) do
Inc(i);
Cuv:=’ ‘;
While not(t[i] in[‘ ‘,’,’,’.’,’?’,’!’,’:’,’;’]) and (i<=n) do
Begin
Cuv:=cuv+t[i];
Inc(i);
End;
Writeln(cuv);
End;
Readln;
End.

Fişiere
Un fişier este o structură de date cu componente numite înregistrari ce pot avea dimensiuni fixe sau variabile, in cel de-al
doilea trebuind sa existe nişte marcatori care să le delimiteze.
Fisierele se pot clasifica dupa mai multe criterii:
- dupa accesul la componente:
· fişiere cu acces secvenţial – in care prelucrarea datelor se face în ordinea în care acestea au fost citite;
· fişiere cu acces direct – in care accesul la componente se face în mod direct,fara a se ţine cont de ordinea introducerii
lor;
- după conţinutul fişierelor:
· fişiere text,datele fiind considerate caractere scrise secvenţial,unele după altele,pe linii,asemănător modului natural de
scriere;
· fişiere binare,ce pot conţine date de tipuri diferite,în acest cazfiecare componentă este considerată 1 octet;
Operaţii cu fişiere text
Un fişier text este un fişier ale cărui componente sunt caractere scrise secvenţial pe linii.Pentru a putea lucra cu fişiere text
trebuie ca într-un program Pascal să avem definită o variabilă care să facă legătura cu un fişier text memorat pe un suport
extern(HDD).O astfel de variabilă se declară:
nume_variabilă:text;
Exemplu: f:text;
Legătura dintre o variabilă şi fişierul extern se face cu ajutorul procedurii assign :
assign(variabilă_fişier,'nume_fişier_extern');
Exemplu: assign(f,'fişier.txt');

Alte proceduri de lucru cu fişiere text sunt:


· rewrite – este o procedură ce permite creearea unui fişier text şi deschiderea acestuia pentru scrierea în el.Ea se poate
utiliza astfel: rewrite(f); ,unde f este variabila de tip fişier text asociată cu un fişier text extern;
· reset – procedură ce permite deschiderea unui fişier pentru citirea din acesta;
· append – procedură ce permite scrierea la sfârşitul fişierului text,adică adăugarea unei noi informaţii la cea existentă;
· close – procedură cu ajutorul căreia se închide un fişier text

S-ar putea să vă placă și