8.-Siruri-de-caractere.pdf
-
Upload
stoicescu-dumitru -
Category
Documents
-
view
6 -
download
2
Transcript of 8.-Siruri-de-caractere.pdf
-
Tipuri
structurate
de date
i r u r i d e c a r a c t e r e
-
Sumar
1. Competene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Prezentare general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. Declararea irurilor de caractere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4. Citirea i scrierea irurilor de caractere . . . . . . . . . . . . . . . . . . . . . . . 14
5. Prelucrarea irurilor de caractere . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6. Aplicaii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
7. Bibliografie i webografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
2
-
1. Competene Competene generale
identificarea datelor care intervin ntr-o problem i a relaiilor dintre acestea
elaborarea algoritmilor de rezolvare a problemelor
aplicarea algoritmilor fundamentali n prelucrarea datelor
identificarea conexiunilor dintre informatic i societate
Competene specifice
evidenierea necesitii structurrii datelor
prelucrarea datelor structurate
alegerea structurii de date adecvat rezolvrii unei probleme
elaborarea unui algoritm de rezolvare a unei probleme din aria currcicular a specialitii
alegerea unui algoritm eficient de rezolvare a unei probleme
identificarea aplicaiilor informaticii n viaa social
elaborarea i implementarea unor algoritmi de rezolvare a unor probleme cotidiene
3
-
4
Prezentare general
Un ir de caractere: - este un tablou unidimensional (vector) de caractere;
- reprezint o succesiune de caractere cuprins ntre ghilimele i terminat cu caracterul NULL notat \0;
- conine orice tip de caracter: liter mic, liter mare, cifr, caracter special, delimitator, fiecare caracter fiind reprezentat prin codul su ASCII.
2. Prezentare general
-
5
Prezentare general
Un ir de caractere este o structur de date care este format dintr-o mulime ordonat de caractere, n care fiecare caracter se identific prin poziia sa n cadrul mulimii.
Exemplu irul de caractere Limbajul C++ se poate reprezenta astfel:
L i m b a j u l C + + \0 0 1 2 3 4 5 6 7 8 9 10 11 12
-
6
Fiecare caracter din setul de caractere al limbajului C++ se caracterizeaz printr-un cod unic, numit codul ASCII al caracterului, un numr ntreg ntre 0 i 255.
n cadrul setului ASCII, codurile caracterelor sunt dup cum urmeaz: - literele mari ncepnd cu 65 (A - 65, B - 66, ..., Z - 90); - literele mici ncepnd cu 97 (a 97, b 98, ..., z - 122); - cifrele ncepnd cu 48 (0 48, 1 49, ..., 9 - 57).
Observaie: Diferena ntre codul ASCII al oricrei litere mici i codul ASCII al literei mari pereche este aceeai, 32.
Prezentare general
-
7
Exemplu char c1,c2;
int x;
c1='A';
x=c1+32; //conversie implicit
c2=x; //conversie implicit
cout
-
8
Declararea irurilor de caractere
- vectorul de caractere trebuie declarat cu un caracter mai mult (caracterul NULL) dect cel mai mare ir pe care l poate conine;
- un ir de caractere poate fi definit ca un vector de caractere, n dou moduri: char nume[dimensiune];
sau
char *nume;
unde nume este identificatorul variabilei de tip ir de caractere, iar dimensiune reprezint numrul maxim de caractere ce pot fi memorate n ir (inclusiv caracterul NULL);
3. Declararea irurilor de caractere
-
9
char nume[dimensiune];
// se declar un vector cu elemente de tip caracter; char *nume;
// se declar un pointer ctre tipul caracter;
Observaie: caracterele irului vor ocupa poziii consecutive n vector, ncepnd cu poziia 0
Declararea irurilor de caractere
-
10
Exemplu 1 char sir[20];
- se declar un ir de caractere n care vor putea fi memorate maxim 19
caractere;
- dac variabila sir reine irul informatica, reprezentarea n
memoria intern este urmtoarea:
unde: sir[0]=i
sir[1]=n
sir[2]=f
sir[10]=a
- caracterul NULL (\0) este adugat automat de ctre compilator;
- lungimea irului de caractere este dat de numrul de caractere (n exemplu este de 11);
Declararea irurilor de caractere
sir i n f o r m a t i c a \0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-
11
Exemplu 2 char s[5];
- se declar un ir de caractere n care vor putea fi memorate maxim 4
caractere;
- dac variabila s reine irul algoritm, reprezentarea n memoria
intern este urmtoarea:
Declararea irurilor de caractere
s a l g o \0
0 1 2 3 4
-
12
Exemplu 3 char a[15]=calculator;
- se declar un ir de caractere n care vor putea fi memorate maxim 14
caractere;
- irul de caractere a a fost iniializat la declararea lui, iar reprezentarea n
memoria intern este urmtoarea:
- dac se iniializeaz irul de caractere, nu mai este nevoie s se precizeze lungimea maxim a irului, aceasta fiind calculat de ctre compilator: char a[]=calculator;
Declararea irurilor de caractere
c a l c u l a t o r \0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
-
13
Exemplu 4 char s[]={'a','e','i','o','u'};
s[5]=NULL;
- se declar un ir de caractere care memoreaz vocalele litere mici; - irul de caractere a a fost iniializat la declararea lui, iar reprezentarea n
memoria intern este urmtoarea:
- utilizatorul trebuie s plaseze la sfritul irului indicatorul de sfrit de ir;
Declararea irurilor de caractere
a e i o u \0
0 1 2 3 4 5
-
14
Citirea i scrierea irurilor de caractere
Citirea irurilor de caractere Citirea se face folosind instruciunea cin n dou moduri:
- la nivel de caracter;
- la nivelul irului de caractere.
4. Citirea i scrierea irurilor de caractere
-
15
a. Citirea la nivel de caracter (caracter cu caracter)
coutn;
for(i=0;i>sir[i];
sir[n]=NULL;
- dac citirea irului de caractere se face caracter cu caracter trebuie adugat caracterul NULL la sfritul irului de caractere.
Citirea i scrierea irurilor de caractere
-
16
b. Citirea la nivelul irului de caractere cin>>sir;
- n acest caz caracterul NULL este adugat automat de ctre compilator;
- operaia de citire de la tastatur se termin atunci cnd a fost introdus un caracter alb (spaiu sau Enter);
- pentru a citi caracterul spaiu se folosete funcia get care are dou
forme.
Citirea i scrierea irurilor de caractere
-
17
Forma 1
cin.get(sir,nr,ch);
unde:
sir este o variabil de tip ir de caractere care se va citi; nr este o variabil de tip ntreg i reprezint numrul maxim de caractere care vor fi citite, inclusiv caracterul NULL;
ch este o variabil de tip caracter care reprezint caracterul care
ncheie citirea irului;
- dac al treilea parametru lipsete, se consider implicit caracterul \n generat de tasta Enter.
Citirea i scrierea irurilor de caractere
-
18
Forma 2
cin.get();
- folosit dup o fucie cin.get() cu parametri pentru a descrca din
fluxul de date ultimul caracter citit, care ar mpiedica efectuarea unei a doua operaii de citire de la tastatur.
Citirea i scrierea irurilor de caractere
-
19
Exemplu 1 char s1[10];
cin>>s1;
//dac introducem textul informatica i tastm Enter se memoreaz n variabila s1 irul informati;
Exemplu 2 char s2[10]; cin>>s2;
//dac introducem textul informat i tastm Enter se memoreaz n variabila s2 irul informat;
Exemplu 3 char s3[10];
cin>>s3;
//dac introducem textul info arena i tastm Enter se memoreaz n variabila s3 irul info;
Citirea i scrierea irurilor de caractere
-
20
Exemplu 4 char s4[10];
cin.get(s4,10);
//dac introducem textul informatica i tastm Enter se memoreaz n variabila s4 irul informati;
Exemplu 5 char s5[10]; cin.get(s5,5);
//dac introducem textul informatica i tastm Enter se memoreaz n variabila s5 irul info;
Exemplu 6 char s6[10];
cin.get(s6,10);
//dac introducem textul info arena i tastm Enter se memoreaz n variabila s6 irul info aren;
Citirea i scrierea irurilor de caractere
-
21
Exemplu 7 char s7[10];
cin.get(s7,10,'$');
//dac introducem textul informat$ i tastm Enter se memoreaz n variabila s7 irul informat;
Exemplu 8 char s8[10]; cin.get(s8,10);
//dac introducem textul info$arena i tastm Enter se memoreaz n variabila s8 irul info$aren;
Exemplu 9 char s9[10];
cin.get(s9,9,\n);
//dac introducem textul info arena$ i tastm Enter se memoreaz n variabila s9 irul info are;
Citirea i scrierea irurilor de caractere
-
22
Exemplu 10 char a[10], b[10];
cin.get(a,10);
cin.get(b,10);
//dac introducem textul info i tastm Enter se memoreaz n variabila a irul info i nu va putea fi citit al doilea ir;
Exemplu 11 char a[10], b[10];
cin.get(a,10);
cin.get();
cin.get(b,10);
//dac introducem textul info i tastm Enter i apoi introducem irul arena i tastm Enter se memoreaz n variabila a irul info i n variabila b irul arena;
Citirea i scrierea irurilor de caractere
-
23
Exemplu 12 char a[10], b[10];
cin.get(a,10);
cin.get(b,10);
//dac introducem textul info arena i tastm Enter se memoreaz n variabila a irul info aren i n variabila b irul a;
Citirea i scrierea irurilor de caractere
-
24
Scrierea irurilor de caractere Scrierea se face folosind instruciunea cout n dou moduri:
- la nivel de caracter;
- la nivelul irului de caractere.
Citirea i scrierea irurilor de caractere
-
25
a. Scrierea la nivel de caracter (caracter cu caracter)
cin>>sir;
i=0;
while(sir[i]!=NULL)
{
cout
-
26
b. Scrierea la nivelul irului de caractere cout
-
27
Exemplu 1 char s1[10];
cin>>s1;
couts2;
couts3;
cout
-
28
1. STRLEN
2. STRCPY
3. STRNCPY
4. STRCAT
5. STRNCAT
6. STRCMP
7. STRNCMP
8. STRICMP
9. STRSET
10.STRNSET
11.STRLWR
12.STRUPR
13.TOUPPER
14.TOLOWER
15.STRCHR
16.STRRCHR
17.STRSTR
18.STRREV
5. Prelucrarea irurilor de caractere
Prelucrarea irurilor de caractere Funcii care lucreaz cu iruri de caractere
-
29
1. Funcia STRLEN
Efect:
Returneaz lungimea irului de caractere.
Sintaxa: strlen(sir)
unde sir este o variabil de tip ir de caractere.
Prelucrarea irurilor de caractere
-
30
Exemplu char s[21];
int n;
cin>>s;
n=strlen(s);
cout
-
31
Prelucrarea irurilor de caractere
2. Funcia STRCPY
Efect:
Copie un ir de caractere n alt ir de caractere.
Sintaxa: strcpy(sir1,sir2)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere.
-
32
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a;
strcpy(b,a);
cout
-
33
Prelucrarea irurilor de caractere
3. Funcia STRNCPY
Efect:
Copie un numr de caractere specificat, dintr-un ir de caractere n alt ir de caractere.
Sintaxa: strncpy(sir1,sir2,nr)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere, iar nr este o variabil de tip ntreg.
Observaie: Dac strlen(sir2)
-
34
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a;
strncpy(b,a,4);
b[4]=NULL;
cout
-
35
Prelucrarea irurilor de caractere
4. Funcia STRCAT
Efect:
Concateneaz dou iruri de caractere.
Sintaxa: strcat(sir1,sir2)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere.
-
36
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a>>b;
strcat(a,b);
cout
-
37
Prelucrarea irurilor de caractere
5. Funcia STRNCAT
Efect:
Concateneaz la un ir de caractere un numr de caractere specificat din alt ir de caractere.
Sintaxa: strncat(sir1,sir2,nr)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere, iar nr este o variabil de tip ntreg.
-
38
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a>>b;
strncat(a,b,3);
cout
-
39
Prelucrarea irurilor de caractere
6. Funcia STRCMP
Efect:
Compar dou iruri de caractere.
Sintaxa: strcmp(sir1,sir2)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere. o valoare negativ, dac sir1sir2
-
40
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a>>b;
cout
-
41
Prelucrarea irurilor de caractere
7. Funcia STRNCMP
Efect:
Compar un numr de caractere specificat din dou iruri de caractere.
Sintaxa: strncmp(sir1,sir2,nr)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere, iar nr
este o variabil de tip ntreg.
-
42
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a>>b;
cout
-
43
Prelucrarea irurilor de caractere
8. Funcia STRICMP
Efect:
Compar dou iruri de caractere fr a face diferena ntre litere mici i litere mari.
Sintaxa: stricmp(sir1,sir2)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere.
-
44
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a>>b;
cout
-
45
Prelucrarea irurilor de caractere
9. Funcia STRSET
Efect:
Iniializeaz un ir de caractere cu acelai caracter.
Sintaxa: strset(sir,ch)
unde sir este o variabil de tip ir de caractere, iar ch este o variabil de tip caracter.
-
46
Prelucrarea irurilor de caractere
Exemplu char a[21],x;
cin>>a>>x;
strset(a,x);
cout
-
47
Prelucrarea irurilor de caractere
10. Funcia STRNSET
Efect: Iniializeaz ntr-un ir de caractere, primele nr caractere, cu caracterul ch.
Sintaxa: strnset(sir,ch,nr)
unde sir este o variabil de tip ir de caractere, ch este o variabil de tip caracter, iar nr este o variabil de tip ntreg.
-
48
Prelucrarea irurilor de caractere
Exemplu char a[21],x;
int n=2;
cin>>a>>x;
strnset(a,x,n);
cout
-
49
Prelucrarea irurilor de caractere
11. Funcia STRLWR
Efect:
Transform literele mari n litere mici.
Sintaxa: strlwr(sir)
unde sir este o variabil de tip ir de caractere.
-
50
Prelucrarea irurilor de caractere
Exemplu char a[21];
cin>>a;
strlwr(a);
cout
-
51
Prelucrarea irurilor de caractere
12. Funcia STRUPR
Efect:
Transform literele mici n litere mari.
Sintaxa: strupr(sir)
unde sir este o variabil de tip ir de caractere.
-
52
Prelucrarea irurilor de caractere
Exemplu char a[21];
cin>>a;
strupr(a);
cout
-
53
Prelucrarea irurilor de caractere
13. Funcia TOLOWER
Efect:
Transform o liter mare n liter mic.
Sintaxa: tolower(ch)
unde ch este o variabil de tip caracter.
-
54
Prelucrarea irurilor de caractere
Exemplu char c;
cin>>c;
c=tolower(c);
cout
-
55
Prelucrarea irurilor de caractere
14. Funcia TOUPPER
Efect:
Transform o liter mic n liter mare.
Sintaxa: toupper(ch)
unde ch este o variabil de tip caracter.
-
56
Prelucrarea irurilor de caractere
Exemplu char c;
cin>>c;
c=toupper(c);
cout
-
57
Prelucrarea irurilor de caractere
15. Funcia STRCHR
Efect:
Caut prima apariie a ununi caracter ntr-un ir de caractere.
Sintaxa: strchr(sir,ch)
unde sir este o variabil de tip sir de caractere, iar ch este o variabil de tip caracter.
-
58
Prelucrarea irurilor de caractere
Exemplu char a[21],c;
cin>>a>>c;
cout
-
59
Prelucrarea irurilor de caractere
16. Funcia STRRCHR
Efect:
Caut ultima apariie a ununi caracter ntr-un ir de caractere.
Sintaxa: strrchr(sir,ch)
unde sir este o variabil de tip sir de caractere, iar ch este o variabil de tip caracter.
-
60
Prelucrarea irurilor de caractere
Exemplu char a[21],c;
cin>>a>>c;
cout
-
61
Prelucrarea irurilor de caractere
17. Funcia STRSTR
Efect:
Caut un subir de caractere ntr-un ir de caractere.
Sintaxa: strstr(sir1,sir2)
unde sir1 i sir2 sunt dou variabile de tip ir de caractere.
-
62
Prelucrarea irurilor de caractere
Exemplu char a[21],b[21];
cin>>a>>b;
cout
-
63
Prelucrarea irurilor de caractere
18. Funcia STRREV
Efect:
Inverseaz ordinea caracterelor ntr-un ir de caractere.
Sintaxa: strrev(sir)
unde sir este o variabill de tip ir de caractere.
-
64
Prelucrarea irurilor de caractere
Exemplu char a[21];
cin>>a;
strrev(a);
cout
-
65
Fie de lucru ntrebri iruri de caractere Aplicaii iruri de caractere
6. Aplicaii
-
66
1. Miloescu M., Informatic. Manual pentru clasa a X-a, Editura Didactic i Pedagogic, Bucureti, 2005
2. Munteanu F., Programarea calculatoarelor. Manual pentru licee de
informatic clasele X-XII, Editura Didactic i Pedagogic, Bucureti, 1994
3. Logoftu D., Bazele programrii n C++, Editura Polirom, Iai, 2006 4. Popescu C., Culegere de probleme de informatic, Editura Donaris-
Info, Sibiu, 2002
5. Ministerul Educaiei, Cercetrii i Tineretului, Centrul Naional pentru Curriculum i Evaluare n nvmntul Preuniversitar, Proba scris la informatic. Examenul de bacalaureat Variante (1-100) , Bucureti 2008
6. http://www.tutorialeprogramare.ro/Tutorial%20C/Siruri%20de%20
caractere.html
7. http://ro.wikipedia.org/wiki/Strlen
8. http://en.wikipedia.org/wiki/C_string_handling
7. Bibliografie i webografie