8.-Siruri-de-caractere.pdf

66
Tipuri structurate de date Ş i r u r i d e c a r a c t e r e

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