n limbajul standard tipul de date ir de caractere reprezint un caz special al tipului array i se definete printr-o construcie de forma <Nume tip>::= packed array [1..n] of char; Mulimea de valori a tipului este format din toate irurile ce conin exact n caractere. Exemplu: Program P80; { iruri de caractere de lungime constant } type Nume=packed array[1..8] of char; Prenume=packed array[1..5] of char; var N : Nume; P : Prenume; begin N:='Munteanu'; P:='Mihai'; writeln(N); writeln(P); readln; end. Rezultatul efiat la ecran: Munteanu Mihai ntru-ct irurile de lungime diferit aparin unor tipuri distincte de date, n cadrul programului P80 nu snt admise atribuiri de genul N:= 'Olaru'; P:= 'Ion'. n astfel de cazuri, programatorul va completa datele respective cu spaiul pn la numrul stabilit de caractere n, de exemplu: N:= 'Olaru '; P:= 'Ion '; Valorile unei variabile v de tip packed array [1..n] of char pot fi introduse de la tastatur numai prin citirea separat a componentelor respective: read(v[1]); read(v[2]); ...; read(v[n]). n schimb, o astfel de valoare poate fi afiat n totalitatea ei printr-un singur apel write(v) sau writeln(v). Subliniem faptul, c irurile de caractere de tip packed array [1..n] of char conin exact n caractere, adic snt iruri de lungime constant. Evident, lungimea lor nu poate fi modificat pe parcursul derulrii programului respectiv. Acest fapt complic elaborarea programelor destinate prelucrrii unor iruri arbitrare de caractere. Pentru a nltura acest neajuns, versiunile actuale ale limbajului permit utilizarea irurilor de caractere de lungime variabil. n Turbo PASCAL un tip de date ir de caractere de lungime variabil se declar printr-o construcie de forma: <Nume tip>= string; sau <Nume tip>= string[nmax]; unde nmax este lungimea maxim pe care o pot avea irurile respective. n lipsa parametrului nmax lungimea maximal se stabilete implicit, obinuit 255 de caractere. Asupra irurilor de tip string se poate efectua operaia de concatenare (juxtapunere), notat prin "+". Lungimea curent a unei valori v de tip string poate fi aflat cu ajutorul functiei predefinite length(v) care returneaz o valoare de tip integer. Indiferent de lungime, toate irurile de caractere de tip string snt compatibile. Exemplu: Program P81; { iruri de caractere de lungime variabil } type Nume=string[8]; Prenume=string[5]; NumePrenume=string; var N : Nume; P : Prenume; NP : NumePrenume; L : integer; begin N:='Munteanu'; L:=length(N); writeln(N, L:4); P:='Mihai'; L:=length(P); writeln(P, L:4); NP:=N+' '+P; L:=length(NP); writeln(NP, L:4); N:='Olaru'; L:=length(N); writeln(N, L:4); P:='Ion'; L:=length(P); writeln(P, L:4); NP:=N+' '+P; L:=length(NP); writeln(NP, L:4); readln; end. Rezultatele afiate la ecran: Munteanu 8 Mihai 5 Munteanu Mihai 14 Olaru 5 Ion 3 Olaru 9 Se observ, c pe parcursul derulrii programului n studiu lungimea irurilor de caractere N, P i NP se schimb. Asupra irurilor de caractere snt admise operaiile relaionale <, <=, =, >=, >, <>. irurile se compar component cu component de la stnga la dreapta n conformitate cu ordonarea caracterelor n tipul de date char (vezi paragraful 2.5). Ambii operanzi trebuie s fie de tip packed array[1..n] of char cu acelai numr de componente sau de tip string. Evident, operanzii de tip string pot avea lungimi arbitrare. De exemplu, rezultatul operaiei 'AC'<'BA' este true, iar rezultatul operaiei 'AAAAC'<'AAAAB' este false. O variabil de tip ir de caractere poate fi folosit fie n totalitatea ei, fie parial, prin referirea unui caracter din ir. De exemplu, pentru P='Mihai' avem P[1]='M', P[2]='i', P[3]='h' .a.m.d. Dup executarea secvenei de instruciuni P[1]:='P'; P[2]:='e'; P[3]:='t'; P[4]:='r'; P[5]:='u' variabila P va avea valoarea 'Petru'. Programul ce urmeaz citete de la tastatur iruri arbitrare de caractere i afieaz la ecran numrul de spaii n irul respectiv. Derularea programului se termin dup introducerea irului 'frit'. Program P82; { Numrul de spaii ntr-un ir de caractere } var S : string; i, j : integer; begin writeln('Dai iruri de caractere:'); repeat readln(S); i:=0; for j:=1 to length(S) do if S[j]=' ' then i:=i+1; writeln('Numrul de spaii=', i); until S='Sfrit'; end. ntrebri i exerciii 1. Cum se definete un tip de date ir de caractere? 2. Ce operaii pot fi efectuate asupra irurilor de caractere? 3. Comentai urmtorul program: Program P83 4. Elaborai un program care: a) determin numrul de apariii a caracterului 'A' ntr-un ir; b) substituie caracterul 'A' prin caracterul '*'; c) radiaz din ir caracterul 'B'; d) determin numrul de apariii a silabei 'MA' ntr-un ir; e) substituie silabele 'MA' prin silaba 'TA'; f) radiaz din ir silaba 'TO'; 5. Precizai rezultatul operaiilor relaionale: a) 'B' < 'A'; b) 'BB' > 'AA'; c) 'BAAAA' < 'AAAAA'; d) 'CCCCD' > 'CCCCA'; e) 'A A' = 'AA'; f) 'BB ' < 'B B'; g) 'A' = 'a'; h) 'Aa' > 'aA'; i) '123' = '321'; j) '12345' > '12345'; 6. Se consider siruri de caratere formate din literele mari ale alfabetului latin i spaii. Elaborai un program care afieaz irurile n studiu dup urmtoarele reguli: - fiecare liter de la 'A' pn la 'Y' se nlocuiete prin urmtoarea liter din alfabet; - fiecare liter 'Z' se nlocuiete prin litera 'A'; - fiecare spaiu se nlocuiete prin '-'. 7. Elaborai un program care descifreaz irurile cifrate conform regulilor din exerciiul 6. 8. Se consider m, m<=100, iruri de caractere formate din literele mici ale alfabetului latin. Elaborai un program care afieaz la ecran irurile n studiu n ordine alfabetic. 9. irul S este compus din cteva propoziii, fiecare terminndu-se cu punct, semn de exclamare sau semnul ntrebrii. Elaborai un program care afieaz la ecran numrul de proroziii din irul n studiu.
Legea nr.62-XVI Din 21.03.2008 Privind Reglementarea Valutară, În Vigoare Din 18.01.2009, Monitorul Oficial Al Republicii Moldova, nr.127-130 Din 18.07.2008, Art.496