CATEGORII DOCUMENTE |
Tipul de date STRING (sir de caractere)
Programele lucreaza foarte des cu denumiri de obiecte, de exeplu numele unei persoane sau denumirea unui produs. Pentru astfel de situatii s-a introdus tipul de date string sau sir de caractere.
O secventa de caractere se numeste "sir de caractere" si reprezinta una dintre principalele structuri de date ale limbajului Pascal. Se utilizeaza destul de frecvent deoarece in mai multe programe apar date care se reprezinta prin siruri de caractere, ca de exemplu: nume, adrese, etc. Exemplu de sir de caractere:
E |
C |
U |
A |
T |
I |
A |
N |
U |
A |
R |
E |
S |
O |
L |
U |
T |
I |
I |
|||
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
Pozitia unui caracter intr-un sir este numerotata de la 1 pana la lungimea sirului (numarul maxim de caractere din sir). In cazul exemplului pozitia caracterului 'N' este 9. Dupa cum se poate observa reprezentarea unui sir de caractere este similara cu reprezentarea unui tablou de caractere.
array [1.. lungime_sir] of char;
Declararea unui sir de caractere se poate face in felul urmator
type nume = string [lungime] (a)
sau:
type nume = string; (b)
In cazul (a) variabilele de acest tip pot contine un numar de caractere de la 0 pana la lungime. In cazul (b) variabilele de acest tip pot contine pana la 255 de caractere.
Exemple:
type sir1 = string [20];
sir2 = string;
var nume : sir1;
x: sir2;
Variabila "nume" poate avea pana la 20 de caractere, iar variabila "x" poate avea pana la 255 caractere. Spre exemplu, se pot face urmatoarele atribuiri:
nume: = 'POPESCU.IOAN';
x : = 'ARHITECTURA.CALCULATOARELOR';
Variabila "nume" are lungimea 12, iar variabila "x" are lungimea 27.
Referirea la un element al unui sir de caractere se poate face utilizand o expresie cu indice, ca la tipul ARRAY; de forma:
Nume_variabila [pozitie caracter]
indice
Exemplu:
nume[4] = 'E'
x[4] = 'i'
In memoria interna, o variabila de tip sir de caractere va fi reprezentata pe n+1 octeti, unde n este lungimea sirului. Octetul nume [0] va contine lungimea reala a sirului la un moment dat, iar in ceilalti octeti se vor memora caracterele care compun sirul.
Pentru variabila x din exemplul precedent x[0] = 23.
Citirea si scrierea (afisarea) variabilelor de tip sir de caractere
La citirea unei variabile de tip sir de caractere se memoreaza caracterele tastate in variabila citita pana la apasarea tastei ENTER sau pana la lungimea declarata. In primul caz lungimea sirului este egala cu numarul caracterelor tastate, fara a lua in calcul si caracterele ce compun tasta ENTER.
Exemplu: Presupunem ca avem urmatoarea declaratie de variabila.
var s: string [11],
si urmatoarea instructiune:
readln(s);
1) Se tasteaza sirul:
POPESCU ION Enter
In acest caz s va avea lungimea 11, adica lungimea din declaratia de tip.
2) Se tasteaza sirul:
POPESCU Enter
In acest caz s va avea lungimea 7.
3) Se tasteaza:
POPESCU NICOLAE Enter
In acest caz s va avea lungimea 11 (din declaratia de tip) si va contine caracterele: 'POPESCU NIC'.
La scrierea unei variabile de tip sir de caractere se vor utiliza procedurile standard write sau writeln si se vor afisa pe ecran toate caracterele memorate in variabila respectiva.
Operatii cu siruri de caractere
Singura operatie elementara care poate fi efectuata avand operanti de tip STRING este concatenarea, al carei operator se noteaza cu "+". Daca sirul obtinut prin concatenare depaseste 255 caractere, el este trunchiat la aceasta lungime.
Exemplu: 'abc' + 'xyz' = 'abcxyz'
Alte operatii se pot efectua asupra sirurilor de caractere numai prin intermediul unor functii sau proceduri.
Functia LENGTH(x) - are ca rezultat lungimea sirului de caractere x.
Functia COPY - se utilizeaza pentru a selecta un subsir dintr-un sir.
Are urmatoarea sintaxa:
copy (sir, pozitie, lungime)
Functia returneaza un subsir al sirului dat sir care incepe dintr-o anumita pozitie si are o anumita lungime.
copy ('PROGRAMAREA CALCULATOARELOR',13,12) ='CALCULATOARE'
Functia CONCAT - are ca scop concatenarea a 2 sau mai multe siruri de caractere.
Sintaxa functiei:
concat (s1, s2,.)
Functia returneaza un sir de caractere obtinut prin concatenarea sirurilor s1,s2,. Functia are acelasi efect ca si operatorul +.
concat (s1,s2,.) = s1 + s2 +.
Functia POS - are ca efect localizarea unui subsir intr-un sir dat.
Sintaxa functiei:
pos (subsir,sir)
Functia are ca rezultat pozitia in care se gaseste subsirul cautat in sirul dat.
Exemple:
pos ('POPA', 'POPESCU') = 0
Procedura DELETE are ca rol stergerea unui subsir dintr-un sir. Sintaxa procedurii este:
delete (sir, pozitie, lungime)
Procedura are ca efect stergerea din sirul dat sir, de pe o anumita pozitie, un anumit numar precizat de caractere, lungime.
Exemple:
var s: string;
s: 'LIMBAJE DE PROGRAMARE'
delete (s,9,13);
T s = 'LIMBAJE'
6) Procedura INSERT are ca rol inserarea unui subsir intr-un sir dat. Sintaxa procedurii este:
insert (sir, subsir, pozitie);
Procedura are ca efect inserarea intr-un sir dat, pe o anumita pozitie, a unui subsir.
Exemple:
var s: string;
s:= 'CE FACI'
insert (s, 'MAI ', 4)
T s = 'CE MAI FACI'
7) Procedura VAL are rolul de a converti un sir de caractere intr-un numar. Sintaxa procedurii este:
val (sir,x,COD)
Procedura are ca efect transformarea sirului de caractere sir in numarul "x". In urma apelului procedurii se mai furnizeaza si un cod de eroare, prin variabila "COD". Aceasta poate fi 0, atunci cand transformarea se realizeaza corect, sau COD poate fi un numar >0 atunci cand COD indica pozitia erorii.
Exemple:
val('14.35',x,COD);
In urma apelului acestei proceduri se va obtine:
x = 14.35
COD = 0
deoarece transformarea s-a realizat corect. La apelul:
val ('14,35',y,COD);
se va obtine:
y = 0
COD = 3,
reprezentand pozitia caracterului ',', care conduce la o eroare.
Procedura STR - are rolul de a transforma un numar intr-un sir de caractere. Sintaxa procedurii este:
str (numar, sir)
Procedura are ca efect transformarea numarului dat in sirul "sir".
Exemplu:
str (123.345,s);
In urma apelului acestei proceduri se va obtine s='123.345'
Compararea sirurilor de caractere
Pentru a compara intre ele 2 siruri de caractere se pot utiliza operatorii relationali cunoscuti <, <=,>,>=, <>.
Expresia sir1 = sir2, are valoarea TRUE daca cele 2 siruri au aceeasi lungime si caracterele aflate in pozitii corespunzatoare sunt identice.
Expresia sir1<sir2 are valoarea TRUE daca prin compararea caracterelor de la stanga la dreapta, in prima pozitie in care cele 2 siruri difera, caracterul din sir1 este mai mic decat caracterul din sir2.
Exemple:
'POPESCU' > 'POPA'
'POP' < 'POPA'
'POPESCU'>'POP'
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 6565
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved