Documente Academic
Documente Profesional
Documente Cultură
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.
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)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
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’.
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');