You are on page 1of 25

Recapitularea materiei studiate

1. Declarați un vector cu 7 componente de tip întreg


2. Declarați un vector cu 5 componente de tip caracter
3. Declarați un vector cu 8 componente de tip logic

Răspunsuri
1. Var p: array[1..7] of integer;
2. Var p: array[1..5] of char;
3. Var p: array[1..8] of boolean;
Sarcini pentru recapitularea
• Fie este dat următorul vector
Var p: array[1..6] of integer;
1 2 3 4 5 6
-5 10 4 0 -15 2

• Scrieți o instrucțiune ce va atribui componentei a 2-a suma


componentelor a 3-a și a 6-a; p[2] := p[3] + p[6];
• Scrieți o instrucțiune ce va atribui componentei a 4-a diferența
componentelor a 2-a și a 3-a; p[4] := p[2] - p[3];
Sarcini pentru recapitularea
• Fie este dat următorul vector
Var p: array[1..6] of integer;
1 2 3 4 5 6
-5 10 4 0 -15 2

• Ce rezultat vom avea în urma executării instrucțiunilor:


1. p[1] := p[1] + 5; În componenta întâia se va înscrie valoarea 0 (-5 + 5)
2. p[4] := p[2] - 2; În componenta a 4-a se va înscrie valoarea 8 (10 - 2)
3. p[5] := p[5] + p[2]; În componenta a 5-a se va înscrie valoarea -5 (-15+10)
Sarcini pentru recapitularea
• Fie date următoarele declarații
Var a: array[1..6] of integer;
b, c: array[1..10] of char;
d: array[1..10] of real;
Care dintre atribuirile de mai jos sunt corecte?
1. a[1]:=2; Corect
2. b[2]:=2; Greșit
3. b[2]:=c[5]; Corect
4. b := c; Corect
5. a:= b; Greșit
6. a[4]:=d[5]; Greșit
7. d[5]:=a[6]; Corect
Tipul de date
şir de caractere
Obiectivele lecției
Pe Să-şi însuşească noţiunile de tip şir de caractere
parcursul
activităţii Să-şi formeze deprinderile de abstractizare necesare
elevii vor definirii, descrierii şi folosirii datelor de tip string;
fi
capabili: Să se familiarizeze cu prelucrarea datelor de tip string la
nivel de componentă şi la nivel de structură;

Să-şi formeze capacitatea de a de a modela probleme


practice şi să adapteze algoritmi cunoscuţi la situaţii noi;
Descriere
Limbajul Pascal oferă facilități pentru prelucrarea unor cuvinte sau
chiar a unor propoziții.
Acestea vor fi memorate ca şiruri de caractere.

Un șir de caractere este o succesiune de caractere incluse între


două apostrofuri şi poate să conțină orice caracter: litere mari și
mici, caractere speciale şi delimitatori (virgula, punct, etc.)

Exemplu: ‘Colegiul Pedagogic Ion Creanga din Balti’


Definiție
• Tipul string este un tip special de tablou cu elemente de tip char.
• El memorează în afara caracterelor din șir și numărul acestora
(în poziția 0 a șirului).
• Numărul de caractere al unei date de tip string poate varia în
timpul execuției programului între 0 ( șirul vid: ‘’) și o valoare
maximă specificată în declarația șirului respectiv.

0 1 2 3 4 5 6

chr(6) c u v î n t
Declarare
var <nume var> : string[lungimea];

var s: string;
nume: string[20];
prenume: string[15];

Diagrama de sintaxă:
Constanta
Nume_variabila : string [ de tip ] ;
byte
Observație: Specificarea valorii constantei de tip byte poate lipsi, caz în
care se consideră că variabila va avea dimensiunea maximă - 255
Adresarea unui character dintr-un șir
de caractere
Fiecare caracter dintr-un șir poate fi accesat după indice.
De exemplu, în șirul S=’Limbajul PASCAL.’
s[1]=’L’ Asupra oricărui caracter dintr-un șir putem aplica
funcțiile ord(a), pred(a), succ(a)
s[7]=’u’
s[16]=’.’ Exemple: ord(s[13]) = 67 | pred(s[13]) = ‘B’ |
succ(s[13]) = ‘D’ | s[16] := chr(63) (63 – ‘?’)

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Chr(16) L i m b a j u l P A S C A L .
Atribuirea valorilor pentru variabilele
de tip STRING se poate face:

Prin citirea de la tastatură:


•ex: writeln (’dati sirul’); read(s);

Prin atribuirea directă:


•ex: s:=’CALCULATOR’;
Afişarea valorilor pentru variabile de
tip STRING se face

în totalitate
•writeln(s);

caracter cu caracter
•var s:string[10];
•For i:=1 to 10 do write(s[i]);
Tabelul ASCII standard
Operatori asupra șirurilor de caractere
„+” se utilizează pentru concatenarea (lipirea)
cîtorva şiruri de caractere

Exemplu:

‘Ana-’+’Maria’ va returna şirul ‘Ana-Maria’


Operatori asupra șirurilor de caractere
„=, >,<, >=, <=, <> ” se utilizează pentru compararea
şirurilor.
Ordinea de comparație este cea lexicografică.
Сравнение происходит слева направо до первого несовпадающего
символа, и та строка считается больше, в которой первый
несовпадающий символ имеет больший номер в таблице символов
(кодировки).

Exemple: ‘Andrei’<’Vlad’, deoarece ord(‘A’) < ord(‘V’);


‘Lung’<’lat’, deoarece ord(‘L’)<ord(‘l’);
‘stop’<’stup’, deoarece ord(‘o’)<ord(‘u’);
‘Egal’<’Egal ’, deoarece al doilea şir are lungimea
mai mare (este un spațiu după caracterul ”l”).
Funcţii asupra şirurilor de caractere:
Denumirea
Destinaţia ei. Exemple
funcţiei

n:=Length(‘Informatica’); {n=11}

s1:=Copy(‘Informatica’,3,5);{s1=’forma’}
s1:=Copy(‘Tractor’,3,5); );{s1=’actor’}

n:=Pos(’forma’, ‘Informatica’); {n=3}


n:=Pos(’Forma’, ‘Informatica’); {n=0}
Proceduri asupra şirurilor de caractere:
Denumirea
Destinaţia ei. Exemple
procedurii
şterge n simboluri din şirul s începînd cu s:=‘Informatica’;
Delete(s,p,n)
poziţia p Delete(s,3,8); {s←’Ina’}
inserează subşirul sub în şirul s începînd cu s:=’bine’;
Insert(sub, s, p)
poziţia p Insert(’ul’, s,2); {s←’buline’}

transformă numărul x(de tip integer sau real) X:=28;


Str(x,s)
în şir, atribuindu-l lui s. Str(x,s); {s←’28’}

Var s:string; x:integer;


transformă şirul s în număr, atribuindu-l lui x
(de tip întreg sau real). Valoarea lui cod
s:=’341’; x:=5;
devine 0, dacă transformarea a fost reuşită,
Val(s,x,cod) Val(s, x, cod); {x←341, cod←0}
altfel cod conţine poziţia unde a fost întîlnit
un simbol nepermis. Şirul s poate conţine
s:=’3.14’; x:=10;
spaţii de debut.
Val(s, x, cod); {x←10, cod←2}
Exemple:
Rezultatul funcţiei sau valoarea finală a
Valoarea lui s (sau a lui x) Expresia
parametrilor(în cazul procedurii)
‘Informatica’ n:=Length(s); n=11
’A sosit iarna’ n:=Length(s); n=14
’Informatica’ s1:=Copy(s,3,5); s1=’forma’
’Tractor’ s1:=Copy(s,3,5); s1=’actor’
’Tractor’ S1:=Concat(s,’ist’); s1=‘Tractorist’
‘Informatica’ n:=Pos(’forma’,s); n=3
‘Informatica’ n:=Pos(’Forma’,s); n=0
’Tractor’ Delete(s,1,2); s←’actor’
‘Informatica’ Delete(s,3,8); s←’Ina’
’bine’ Insert(’ul’, s,2); s←’buline’
x←28 Str(x,s); s←’28’
x←341
s←’341’ Val(s, x, cod);
cod←0
s←’3,14’ x←10
Val(s, x, cod);
x←10 cod←2
Rezolvarea
problemelor
Problema 7 (а), p. 38
numărul de apariții a caracterului ’B’ în șirul S
Problema 7 (b), p. 38
sirul, obținut prin înlocuirea caracterului ’A’ cu
caracterul ’O’
Problema 7 (c), p. 38
sirul, obținut prin radierea din șirul S a tuturor
intrărilor caracterului ’A’
Problema 7 (d), p. 38
numărul de apariții a silabei TA în șirul S
Reflexie
• Cum se declară o variabilă de tip șir de caractere?
• Cum putem accesa orice litera din șir?
• Cum putem determina lungimea efectivă a șirului de caractere?
• Cum putem introduce un șir de caractere?
• Cum putem afișa un șir de caractere?
• Cum putem obține un subșir din șirul dat?
• Cum putem șterge un subșir din șirul dat?
• Cum putem compara două șiruri de caractere?
Tema pentru acasă
• Manual, p. 27-29, Şiruri de caractere de tipul string.
• Ex. 3, 6, 7 (a, b, c, d), p. 37-38

You might also like