1.2. TIPURI DE DATE ȘIR DE CARACTERE

Printre tipurile standard Pascal se numără si tipul CHAR.Valorile de tip char reprezintă caractere(litere mari si mici,cifre,semne de punctuaţie etc.).O constantă de tip char se reprezintă de obicei prin caracterul corespunzător încadrat între caractere apostrof..De exemplu,’a’,’A’,’7’,’+’reprezintă constante de tip char.

O variabila de tip char se declară astfel:

II.Concatenarea şirurilor

Pentru a concatena 2 şiruri de caractere se foloseşte operatorul ‘+’ .Operatorul ‘+’ este binar şi poate acţiona asupra datelor de tip string.Ce înţeleg prin concatenare ?

Concatenarea este operaţia prin care din 2 şiruri de caractere se obţine un al treilea format astfel:primul şir(cel aflat în stânga operatorului) urmat de al doilea şir (cel din dreapta).

 

Program st6;

Var t,z:string;

Begin

t:=’acest’;

z:=’exemplu’;

t:=t+z;

writeln(t);

end.

 

În programul st6 se concatenează două şiruri de caractere (t:=t+z);

 

 

III Compararea şirurilor

Şirurile de caractere pot fi comparate.Notînd 2 şiruri cu a şi b avem:a=b(sînt egale);a>b sau a<b.

Compararea şirurilor de caractere este extrem de utilă în sortarea alfabetică a cuvintelor(ca în dicţionar).

În programul următor se sortează alfabetic mai multe şiruri de caractere.Pentru aceasta ,se declară un vector în care fiecare componentă este de tip string.

 

Program alfabetic;

Type cuvinte  =array[1..10] of string;

Var   v:cuvinte;

Man:string;

n,i:byte;

inv:boolean;

begin

write(‘n=’);readlnNu;

for i:=1 to n do readln(v[i]);

repeat

inv:=false;

for i:=1 to n-1 do

if v[i]>v[i+1] then

begin

man:=v[i];v[i]:=v[i+1];  v[i+1]:=man;

inv:=true;

end

until not inv;

for i:=1 to n do writeln(v[i]);

end.

 

IV.Lungimea şirurilor de caractere

Prin lungimea unui  şir de caractere înţelegem  numãrul de caractere pe care acesta le conţine.

Pentru aflarea lungimii unui şir avem douã posibilitãţi.

 

1.Prin utilizarea funcţiei length . Aceasta are formula generalã:

function’length(s:string):integer;

EXEMPLE:

a). var  a:string; c:integer;

. ………..  ……………

a:=’un test’;

c:=length(a);

 

În urma atribuirii, variabila c reţine 7.

2).În programul urmãtor se afişeazã lungimea unui şir citit.

Program t;

Var a:string;

Begin

Write(‘a=’);readln(a);

Writeln(‘lungimea şirului a este’,length(a));

Writeln(‘lungimea şirului a este’,ord(a[0]));

End.

 

Mai existã şi şirul vid,adicã fãrã caractere.Exemplu: a:=’  ‘.

V.Subşiruri:

 

Fiind dat un şir de caractere ,prin subşir al sãu se înţelege un şir de  caractere consecutive care se regãsesc în şirul iniţial.

EXEMPLU:

Şirul ‘harnic’ are ca subşir al sãu ‘rni’ .Acesta începe în poziţia a 3 din şirul iniţial (3caractere).

Existã mai multe proceduri şi funcţii care acţionează asupra şirurilor de caractere .Aceste sunt prezentate mai jos.

 

  • Funcţia copy are rolul de a extrage un subşir din cadrul unui şir dat.

Function copy(s:string;început,lungime:integer):string;

*- variabila s ,de tip string ,conţine şirul din care se face extragerea;

*- început –reţine poziţia de început a subşirului care se extrage;

*- lungime- reţine numãrul de caractere care se extrag.

PROGRAM s1;

Var  a,b:string;

i, j:byte;

Begin

Write(‘a=’);readln(a);

Write(‘i:=’);readln(i);

Write(‘j=’);readln(j);

B:=copy(a ,I , j);

Writeln(b);

End.

 

  • Funcţia pos are rolul de a verifica dacã un şir este subşir pentru altul.

 

Function pos(subşir,şir:string) :byte;

 

Programul urmãtor citeşte 2 şiruri a şi b şi verificã dacã b este  subşir al lui a.

În ambele cazuri se dau mesaje.

 

Program s2;

Var a, b :string;

N:integer;

Begin

Write(‘a=’);readln(a);

Write(‘b=’);readln(b);

n:=pos(b,a);

if n=0

then writeln(‘b nu este subşir al lui a’)

else writeln(‘b este subşir al lui a şi începe în poziţia’,n);

end.

 

  • Procedura insert are rolul de a insera un şir de caractere începînd cu o anumitã poziţie,înalt şir.

Procedure insert (sir_de_ins: string; var şir_unde_ins:string; poz: integer);

-          şir_de_ins –şirulcare urmeazã a fi inserat;

-          şir_unde_ins – şirul în care se face inserarea;

-          poz – poziţia din care se face inserarea.

 

Program s3;

Var a, b :string;

Begin

Write(‘a=’);readln(a);

Write(‘b=’);readln(b);

Insert(b, a, 3);

Writeln(a);

End.

 

  • Procedura delete are rolul de a şterge un subşir  din cadrul unui şir dat.

 

Procedure delete(var şir:string; indice ,nr_car: integer);

Programul urmãtor citeşte un şir de caractere într-o variabilã de tip string ,numitã a.

Program s4;

Var a:string;

Begin

Write(‘a=’);readln(a);

Delete(a, 3, 2);

End.

 

Var : char;

 

Valoarea unei variabile de tip char este reprezentată de un singur caracter.Această valoare este   asociată variabilei prin citire sau atribuire.Programul de mai jos citeşte un caracter pe care îl afisează de mai multe ori.

 

PROGRAM exemplu(Caracter);

Var c:char; {-caracterul citit-}

k:integer;  {-control caractere afisate-}

Begin

Write(‘Introduceti un caracter:’);readln(c);

For k:=1 to 25 do

Write(c);

Writeln

End.

Tipul char e un tip ordinal.Aceasta inseamna ca valorile lui sunt ordonate.

Exemplu:

‘0’<’1’<…<’9’

‘A’<’B’<…<’Z’

 

Deoarece valorile de tip char sunt ordonate,pentru a afla predecesorul sau succesorul unui caracter pot fi apelate funcţiile standard pred şi succ.De exemplu,apelând pred(‘j’) avem ‘i’,iar succ(‘j’) avem’k’.

Functia ord ,apelată cu parametru de tip char,furnizează ca rezultat numărul de ordine al caracterului.La Turbo Pascal acest număr,cuprins între 0 si 255,coincide cu codul ASCII al caracterului respectiv.Pentru a afla codul unui caracter poate fi utilizat următorul program:

 

Program CodulunuiCaracter;

Var caracter:char;

Begin

Write(‘Introduceti un caracter:’);readln(caracter);

Writeln(‘caracterul’,caracter,’arecodul’,ord(caracter));

Readln

End.

 

Functia ord poate fi utilizată si pentru a determina poziţia unei litere din alfabetul latin,astfel:

 

Ord(litera)-ord(‘A’)+1 sau

Ord(litera)-ord(‘a’)+1

 

Variabilele de acest tip pot fi utilizate ca variabilele de control ale ciclurilor cu contor(for).De exemplu,programul de mai jos afisează codurile ASCII ale cifrelor,utilizînd în acest scop un ciclu For

cu  variabila de control de tip char:

 

Program CoduriCifre;

Var c:char;

Begin

Write(‘Codurile ASCII ale cifrelor sunt:’);

For c:=’0’ to ‘9’ do

Write(‘  ‘,ord(c));

Writeln

End.

 

Una dintre utilizările “clasice”ale caracterelor este cea de codificare a opţiunilor.Cazul cel mai simplu este cel al întrebărilor la care se răspunde cu Da sau Nu , prin apăsarea tastei D sau N.

 

Program exemplu;

Var Raspuns:char;

Begin

Write(‘acum ploua?[Da/Nu] :’);readln(Raspuns);

If (Raspuns = ‘d’) or (Raspuns = ‘D’)then

Writeln(‘Ce bine ca nu ne trebuie umbrela :’)

End.

Ultima modificare: luni, 6 iunie 2011, 19:20