Search Header Logo
Siruri de caractere - notiuni generale

Siruri de caractere - notiuni generale

Assessment

Presentation

Computers

10th - 11th Grade

Practice Problem

Medium

Created by

Carmen Nicoleta Avramescu

Used 20+ times

FREE Resource

11 Slides • 9 Questions

1

Siruri de caractere - notiuni generale

By Carmen Nicoleta Avramescu

2

Implementarea șirurilor de caractere în limbajul de programare C++ se face sub forma unui tablou unidimensional (vector) ale cărui elemente sunt de tip caracter, fiecare caracter fiind reprezentat prin codul său ASCII.

Un sir de caractere este o succesiune de caractere terminata cu caracterul NULL si cuprinse intre ghilimele.

3

Observatii

ASCII este o formă de reprezentare în calculator a caracterelor folosită în toate limbajele de programare studiate în liceu

Câteva exemple de coduri ASCII ->

Caracter

Cod ASCII

NULL

0

0

48

1

49

9

57

A

65

Z

90

a

97

z

122

4

  1. Şirul de caractere poate să conţină orice caracter: literă mare, literă mică, cifra, caracter special (‘#’, ’&’, etc) sau delimitator (virgula, punctul, etc.)

  2. Deosebirea dintre un sir de caractere si alte tipuri de vectori este că folosește un marcaj pentru sfârșitul logic al vectorului şi anume caracterul NULL (specificat prin constanta caracter  ‘\0’).​

  3. Pentru recunoaşterea funcţiilor predefinite pentru şirurile de caractere trebuie să se deschidă biblioteca string.h sau cstring

5

Declararea unui şir de caractere

char nume[dimensiune maxima+1];

Caracterele şirului vor ocupa poziţii consecutive în vector, începând cu poziţia 0.

Exemplu:

char sir[61];

Iniţializarea unui şir de caractere

Putem iniţializa o variabilă şir de caractere chiar de la declarare, cu o constantă şir. În acest caz lungimea şirului poate lipsi, fiind determinată automat.

Exemplu

char v1[]=”Matematica informatica”;

char  v2[50]=”Informatica”;

6

·     v1 are lungimea determinată automat : 23 octeţi (un octet pentru fiecare caracter din şir +1 octet pentru marcajul de sfârşit de şir).

·    v2 are lungimea specificată (50 de octeţi). Dacă dimensiunea maximă a variabilei este mai mare decât lungimea efectivă a şirului plus unu, poziţiile rămase libere la sfârşitul vectorului de caractere aferent variabilei vor fi completate automat cu caracterul NULL.

ATENTIE o constantă caracter (exemplu ‘a’)  NU este echivalentă cu o constantă şir de caractere (exemplu ”a”). Deoarece constanta ’a’ este stocată pe un singur octet care conţine codul ASCII al caracterului 'a', iar constanta ”a” este stocată pe doi octeţi (primul conţine codul ASCII al caracterului, iar al doilea, marcajul de sfârşit de şir - NULL).

7

Multiple Choice

Question image
1

a

2

b

3

c

4

d

8

Multiple Choice

Question image
1

a

2

b

3

c

4

d

9

Multiple Choice

Question image
1

a

2

b

3

c

4

d

10

Multiple Choice

Question image
1

a

2

b

3

c

4

d

11

Multiple Choice

Question image
1

a

2

b

3

c

4

d

12

Multiple Choice

Question image
1

a

2

b

3

c

4

d

13

ATENTIE NU este corect

char v[60];

v=”Algoritm”;

Citirea şi afişarea şirurilor de caractere

cin>>s;

Atenţie!!  În acest caz se vor citi în șirul s toate caracterele până la primul caracter alb (spațiu, tab, enter). De exemplu, dacă fluxul de intrare conține caracterele “Buna ziua”, după citire, sirul s va fi Buna.

14

​O alta modalitate de citire care elimina inconvenientul de mai sus il reprezinta folosirea functiilor urmatoare:

cin.get(nume_sir_de_caractere, nr+1 ,‘caracter’)

cin.get(nume_sir_de_caractere, nr+1)

​respectiv

cin.getline(nume_sir_de_caractere, nr+1, ’caracter’ )

cin.getline(nume_sir_de_caractere, nr+1)

Funcţia citeşte un şir de caractere până când este îndeplinită una dintre condiţiile de mai jos:

-       au fost citite nr caractere;

-    a fost întâlnit caracterul transmis ca ultim parametru (implicit ’\n’).

 ​

 

15

Observaţii:

1.     sunt citite şi caractere albe;

2.     este inserat caracterul nul;

3.     caracterul transmis ca ultim parametru nu este inserat în şir.

Al treilea parametru este trecut în mod facultativ. Dacă nu este trecut, se presupune că este ’\n’.

Diferența între ele este că getline() extrage din fluxul de intrare caracterul delimitator, în timp ce get() nu îl extrage. Dacă totuși doriți să folosiți numai funcția get, atunci după citirea fiecărui șir trebuie să scrieți funcția cin.get() fără parametri.

16

Observaţie

Dacă după prima citire nu am fi folosit funcţia cin.get() fără parametri a doua citire nu ar mai fi efectuată. Sfârşitul primului şir introdus a fost marcat prin tastarea Enter. Aceasta a făcut ca în memoria (buffer) să fie păstrat caracterul ’\n’. La a doua citire, noul şir va începe cu acesta. Prin logica funcţiei cu trei parametri, citirea se face până la întâlnirea lui. În concluzie, se citeşte şirul vid. Utilizatorul nu mai apucă să îşi tasteze textul. Prin utilizarea funcţiei fără parametri, acest caracter se citeşte şi noua citire se poate efectua fără probleme. 

Exemplu:

cin.get(s1,10); cin.get(s2,10); nu va permite citirea celui de al doilea sir!

​Corectat: cin.get(s1,10); cin.get();cin.get(s2,10);

sau cin.getline(s1,10); cin.getline(s2,10);

17

Afişarea unui şir de caractere

Afișarea unui șir de caractere se face cu ajutorul operatorului de scriere<<.

cout<<s;

se vor scrie caracterele până la întâlnirea primului marcaj de sfârşit de şir NULL.

 

Pentru a afla lungimea efectivă a unui şir de caractere folosim funcţia predefinită strlen(sir).

Exemplu:

char [10]=”Algoritm”;

cout<<strlen(a);

se afisează 8.

18

Multiple Choice

Question image
1

a

2

b

3

c

4

d

19

Multiple Choice

Question image
1

a

2

b

3

c

4

d

20

Multiple Choice

Question image
1

a

2

b

3

c

4

d

Siruri de caractere - notiuni generale

By Carmen Nicoleta Avramescu

Show answer

Auto Play

Slide 1 / 20

SLIDE