În Turbo Pascal pentru a putea lucra cu şirurile de caractere se folosesc variabilele de tip string.
Tipul string este predefinit, adică este cunoscut, nu avem nevoie sa-l declaram cu type.
Programul de mai sus are declarată o variabilă t, de tip string. Ea este iniţializată cu şirul ’iepuras’, apoi este afişată. În exemplul dat sirul ’iepuras’ este alcatuit din 7 caractere. Octeţii de la 1 la 7 memorează caracterele din care este alcătuit şirul. Restul octeţilor, de la 8 la 255 au un conţinut neprecizat. De altfel, nici nu ne interesează conţinutul lor. Observăm faptul că afişarea s-a realizat, în ansamblu, prin precizarea numelui.
OPERATORII UTILIZAȚI LA COMPARAREA ȘIRURILOR DE CARACTERE:
Asupra şirurilor de carcatere sunt admise operaţiile relaţionale <, <=, =, >=, >, <>. Şirurile se compară componentă cu componentă de la stânga la dreapta în conformitate cu ordonarea caracterelor în tipul de date char.
Operatorul ,,=’’ testează dacă două şiruri de caractere sunt egale din punct de vedere al ordinii alfabetice.
Operatorul ,,+’’ are rolul de concatenare (juxtapunere) a doua şiruri de caractere.
Concatenarea este operaţia prin care din două şiruri de caractere se obţine un al treilea şir de caractere.
Observatie! Concatenarea şirurilor nu este comutativă, adică S1+S2 nu este la fel ca şi S2+S1.
Operatorii „<”, „>”, „<=”, „>=”.
Comparaţia se realizează din punct de vedere lexicografic (ordinea alfabetică).
FUNCȚIILE ȘI PROCEDURILE UTILIZATE DE TIPUL STRING:
- Functia Copy
Sintaxa functiei Copy: Copy (șir , poz, nr) – extrage un subșir al primului șir, începând de la poziția poz și având un număr nr de carcatere.
Exemplu 1 : S := ‘ MIRABELA ‘;
S1 := copy ( S , 5 , 4 ) ;
Writeln (S1) ; => afisează BELA ;
Exemplu 2 : S : =’ CALCULATOR ‘;
S1 : = COPY (S , 1 ,4);
Writeln (S1) => afiseaza CALC. - Functia Pos
Sintaxa functiei Pos: Pos( , ) – testează dacă șirul nu este subșir al sirului 2 returnând poziția de început a variabilei șir1 în cadrul șirului2 .
Observație :Dacă șirul 1 nu este subșir al șirului 2 o să 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 funcției Length : Length ( S ) . S – variabila de tip string .
Returnează dimensiunea unui șir de caractere .
{ Exemplu : pe calculator scrii întreg => Exemplu }
Exemplu : 1
S : = ‘ MIRABELA ‘;
N := length ( S ) ;
Writeln ( N ) => N = 8;
Exemplu : 2
S : = ‘LILIAC ‘;
N : = length ( S ) ;
Writeln ( N ) => N = 6;
Observație : Folosind funcția length putem afișa un șir 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 > ) ;
Șterge din variabila șir începand cu poziția dată de variabila poziție un șir format dintr-un număr de caractere dat de variabile numere .
Observație : Șirul rezultat în urma ștergerii va fi memorat în variabila șir .
Exemplu : S := ‘ PROGRAMARE ‘,
Delete ( S , 8 , 3 );
Writeln ( S ) => afisează program. - Procedura Insert .
Sintaxa procedurii Insert : Insert ( < subsir > , < sir > , < poz >) ;
Adaugă în variabile șir un subșir dat de variabila subșir începand cu poziția dată de variabila poz .
Exemplu :
S := ‘ PROGRAME ‘;
Insert ( ‘ AR ‘ , s , 8 ) ;
Writeln ( s ) => afisează PROGRAMEAR . - Procedura Str utilizată pentru a transforma un număr în șir de caractere.
Sintaxa procedurii Str : str (nr , șir) ;
Transformă numărul dat de variabilă numerelor într-un șir de caractere reținut în variabila șir .
Exemplu : n := 125 (n de tip intreg ) ;
str (n,s) ;
writeln (s) ;=> afiseaza s = ’ 125 ’; - Procedura Val utilizată pentru a transforma un șir de caractere în număr.
Sintaxa procedurii Val : val (șir ,nr , eroare) ;
Transformă șirul dat de variabila șir în număr reținut în variabila număr .
Observație : Dacă transformarea reușeste , variabila eroare ia valoarea 0 (zero) , iar dacă transformarea nu reusește variabila eroare ia valoarea poziției caracterului din cauza careia nu a reuțit 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 mică în litera mare se poate folosi : funcția UPCASE :s[i] = UPCASE (s[i]) ;
S[i] = chr (ord (s[i]) – 32)
Pentru a transforma o litera mare în literă mică se folosesște :
S[i] := chr (ord (s[i]) +32) .