RSS

Tipul caracter

11 Oct

Tipul caracter

Tipul caracter este definit ca fiind un tip intreg, pe 8 biti (adica 1 byte), cu valori de la -128 la 127 (256 de valori distincte).

Cele 256 de caractere existente au fost puse in relatie cu acest tip, fiecarui caracter asociindu-se in mod unic un numar din cele de mai sus. Aceasta asociere se numeste codul ASCII (American Standard Code for Information Interchange ). Caracterele cu coduri intre 0 si 127 formeaza setul de baza iar cele cu coduri de la -128 la -1 (practic de la 128 la 255) formeaza setul extins. Aceasta suprapunere intre multimile 128..255 si -128..-1 se datoreaza faptului ca orice tip de data este circular. Practic, 127+1= -128 si 128-1=127!!! etc.

Caracterele se pot compara intre ele pe baza codului lor asociat.

Declarare

char ch;

Putem lucra cu caracterul atat din punct de vedere al codului ASCII cat si al constantelor tip caracter ( ‘7’, ‘A’, ‘g’ , ‘+’, … ).

ch=65; ch='A';

Citirea

cin>>ch; //se citeste un caracter de la tastatura dar se memoreaza codul sau.

Afisarea

cout<<ch; //se preia din memorie valoarea numerica si se afiseaza caracterul cu codul respectiv

Ce cod are un caracter dat?

Pentru a raspunde la intrebare este nevoie sa facem o conversie de tip

int cod; char ch; cin>>ch; cod= (int) ch; cout<<cod;

Ce caracter ii corespunde unui cod dat?

int cod; char ch; cin>>cod; ch=cod; cout<<ch;

Sa afisam intregul cod ASCII.

int i;for(i=0;i<=255;i++) cout <<"caracterul "<<(char) i<< " are codul " <<i<< endl;

Dupa executarea acestei secvente se pot observa urmatoarele:

  • caracterele cifre au pastreaza ordinea naturala si au codurile : ‘0’=48, ‘1’=49, ‘2’=50,…,’9’=57.
  • caracterele LITERE MARI pastreaza ordinea din alfabet si au codurile: ‘A’=65, ‘B’=66, ‘C’=67, …,’Z’=90
  • caracterele litere mici pastreaza ordinea din alfabet si au codurile: ‘a’=97, ‘b’=98, ‘c’=99, …,’z’=122
Consecintele acestor observatii sunt:
  • daca am un caracter cifra, cum obtin valoarea cifrei? Ma folosesc de faptul ca ordina cifrelor se pastreaza.
  • char cif; int cifra; cin<<cif; cifra=cif-‘0’; cout<<cifra;
  • daca am o cifra, cum o transform in caracterul cifra corespunzator?
  • ch=cifra+’0′;
  • din punct de vedere al codului ASCII (dupa codul lor), LITERELE MARI sunt mai mici decat literele mici
  • intre oricare litera mica si LITERA MARE corespunzatoare este aceeasi diferenta: ‘a’-‘A’=’b’-‘B’=…=’z’-‘Z’=32
  • daca am o litera mica, cum obtin LITERA MARE corespunzatoare?
  • char lm, LM; LM=lm – (‘a’-‘A’);
  • daca am o LITERA MARE, cum obtin  litera mica corespunzatoare?
  • char lm, LM; lm=LM +(‘a’-‘A’);
 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: