152 52 15MB
Romanian Pages 502
Cuprins
Despre autor ..................................................... VI Prefaţă
......................................................... VII
1
Fundamentele limbajului C# ...................................... 1
2
Prezentarea tipurilor de date
3
Instructiuni de control ...................................... 80
4
Prezentarea claselor, obiectelor
5
Mai multe despre tipurile de date
6
O privire mai
7
Supraîncărcarea
8
Moştenirea
9
Interfeţe,
şi
'
detaliată
operatorilor ......................... 39
şi
metodelor ...................... 115 şi
operatori ..................... 150
asupra metodelor
operatorilor,
şi
claselor .....•........... 190
indexări şi proprietăţi
.................. 235
....._.............................. -........... 271
structuri
şi enumerări
............................... 317
10
Tratarea
excepţiilor ...................................•....
11
Operaţii
de
12
Delegări,
A
intrare-ieşire
evenimente,
Răspunsurile
343
........................................ 372
spaţii
de nwne
testelor de verificare a
şi
subiecte avansate ............... 410
cunoştinţelor ....................
458
Index ...................................................... 484
Index
Simboluri
/* */, 19 1/,19
&
operator cu pointeri, 448 ŞI logic, 62-63, 66-67 ŞI pe bip, 177-179 && (ŞI scurtcircuitat) 75, 64-65 66-67
*
,
operator cu pointeri, 448-449 operator de inmultire 60-61 @- cuvinte-cheie c~liflcate, 37 @pentru literali "copie la indigo" 54 1
,
SAU logic, 62-63, 66-67 SAU pe biti, 177-180 1 1 (SAU scur~circuitat) 64, 66-67, 75 [ ] , 19-20, 32-33, 48, 125-127
" SAU exclusiv logic, 62-63 SAU exclusiv pe biti , ' 177-178 ' 180-181 { }, 19-20, 32-33, 48, 125-127 =, 24, 68 (operator relafional), 29, 62-63, 248-249, 312 asupra stringurilor, 173 !, 62-63 !=, 29, 62-63, 248-249 asupra stringurilor, 173 /, 60-61
==
< operator de redirectare a intrării 390-391 , operator rela~ional, 29, 62-63, 248 >, 178, 182-183 >=, 29, 62-63, 248 ; (punct şi wirg-ulă), 21, 33 NON pe bi)i, 177-178,181 utilizat de către destructori, 144
·---·-·-·~--------·-·--·---·------·-In_~_e_:.-~-~~~ BinaryWriter, clasa, 377, 394 A metode de scriere, tabel, 394 Abs( ), 215 abstract, modificatorul, 300, 307, 309, 311 Acces aleator, fişiere, operatii de intrare-ieşire, 397-400 acces, specificatori, 19, 116, 190-191, 452-453 Acces ori in indexări, 250-251, 254 în proprietăp, 258-259 apelarea dinamică a metodelor, 300 ApplicationException, 344-345, 360 ArgumentException, 381 ArgumentNullException, 381 ArrayTypeMismatchException, 360 as, operatorul, 452-453 ASCII, setul de caractere, 45, 178-179 Ascunderea numelor în blocurile de cod, 60 şi moştenirea, 285-287, 334 Atribuire, operatori 24,68 aritmetici şi logici (op=), 68-69 la nivel de bip, 184 şi supraîncă.rcarea operatorilor, 249-250 Atribuiri conversii de tip la atrib~e, 69-70 şi variabile referinţă, 122-123
=.
B base, cuvântul cheie pentru accesul la membrii ascunşi din clasa de bază, 279, 286-287 pentru apelul constructorului clasei de bază, 279-284 Bibliotecă, clasele arhitecturii .NET, 7, 19, 37, 422 BinaryReader, clasa, 377, 394-395 metode de citire, tabel, 395
Blocuri de cod, 32-33, 56 bool, tipul valoric, 40, 46-47 şi operatorii relaponali, 63 break, instructiunea, 80, 86, 88, 104-106 Bucle criterii de selecpe, 100 do-while, 80, 100-102 for. Vezi for, bucla foreach, 80, 169-171 imbricate, 112-113 infinite, 96, 1OS while, 80, 98-100 BufferedStream, clasa, 375 byte, tipul valoric, 40-43, 51 Bytecode, 4-5, 7
c C# ca limbaj orientat pe componente, 5-6 ca limbaj puternic tipizat, 40, 295 compilarea programelor, 7-8 cuvintele cheie, 36-37 istoricul, 1-2, 5 şi arhitecnua .NET, 6, 9 şi Java, 1-2, 5-6
C++ când se poate utiliza în locul C#, 447 istoric, 3 şi arhitectura .NET, 9 C, istoricul limbajului, 2-3 C, specificatorul de format, 48 CanRead, proprietatea, 375 CanSeek, proprietatea, 375 CanWrite, proprietatea, 375 Caractere, 45-46 codificarea, 390 constante (literali), 45, 51 introducerea de la tastatură, 80-81 secvenţe escape, 52-53
case, instructiunea, 86, 88-89 Casr, 70-72, 74 şi operatorii de conversie explicită, 433-438 utilizarea ca operator, 452-453 catch, instructiunile, 345-348 cu parametru, 358-360 pentru interceptarea tumror excepfiilor, 352 şi interceptarea excepfiilor derivate, 362-364 şi relansarea excepţiilor, 355-356 utilizarea catch-urilor multiple, 351-352 char, tipul valoric, 40-41, 45 checked, instrucriunea, 367-370 Clase, 115-120 abstracte, 307-310, 317-318 bine proiectate, 117-118, 133-134 constructori. Vezi Constructoei de bază, definiţie, 271-272 definiţie, 7, 11 derivate, definipe, 271-272 din biblioteca .NET, 7, 19, 37, 422 forma generală, 116-117, 273 membri. Vezi Membri, ai claselor nume şi numele fişierului program, 18 sealed, 311 şi interfe1e, 317-323 class, cuvântul cheie, 19, 116 Close(),374, 376,382,384,394 Cod blocuri, 32-33, 56 inaccesibil, 129 nesigur, 446-450 seqiuni critice, 454 rratat.. şi netratat, 8, 446-447 cod de dispersie, 312 Colectarea spapului neutilizat, 143-144, 211 şi cuvântul cheie fixed, 450-451 şi tablourile, 150 Colecp.i; 169 Comentarii, 18-21
CompareTo( ), 173, 404 Compilare conditionată, 438 Compilator C# în linie de comandă, 14
JIT, 7-13 Complement fafă de unu (NON unar), operatorul(-), 177-178, 181 Complementul Cafă de doi, 41 Componente şi limbajul C#, 5-6 Conditiona!, atribut predefinit, 444-445 Console, clasa, 20-21, 377, 380-381 Console.Error, 373, 377, 379-380 Console.In, 373, 378 Console.Out, 373, 377, 379-380 const, modificatorul, 456 Constante, 51 întregi cu nume, 317-318,339 Constante caracter cu backslash, 52-53 Constructorl, 138-142 ordinea apelului în ierarhiile de clase, 272-300 supraîncărcarea, 217-225 şi moştenirea, 279-285, 297-299 utilizarea lui base la apelul constructorului clasei de bază, 279-284 continue, instrucriunea, 80, 107 Control, instrucpuni. Vezi Instrucriuni de control Controlul accesului, 191-197 Conversie, operatori, 433-437 implici~ sau explicip, 437 Copy( ), 173 Cozi, 165 .cs, extensia, 18 csc.exe, compilatorul în linia de comandă,14
Cuvinte cheie în C#, 36-37
D Date, tipuri de, 24 cast. Vezi Cast conversia automată, 69-70, 213-214
~
Index conversia automată, 69-70, 213-214 promovarea tipurilor, 73-75 referinţă, 40, 122 tipuri clasă, 118-119, 122 valorice (simple). Vezt· Valorice, tipuri Vezi ti Tip decimal, tipul valoric, 40, 43-44 literali, 51 Decrementare, operatorul (- -), 31, 61-62, 239-240, 242 default, instrucfiunea, 86, 88 #define, directiva, 438-439 delegate, cuvântul cheie, 430 Delegări, 430-436 declararea, 430-431 instanţierea, 413 multicasting, 414-417 Deplasare, operatorii la nivel de biti, ' 178, 182-183 Destructori, 144 DirectoryNotFoundException, 381 Dispose( ), 456 DivideByZeroException, 344, 360 do-while, bucla, 80, 100-102 Domenii de valabilitate, 57-60 double, tipul valoric, 25-26, 43
E #elif, directiva, 441-442 #else, directiva, 440-441 #endif, directiva, 439-440 #endregion, directiva, 443 #error, directiva, 443 else, 81-85 Enumerări, 317-318, 339-341 Equals( ), 249, 312-313, 404 Erori de sintnxă, 22
la
execuţie,
344 108 Evenimente, 417-421 multicasting, 419-422 Etichetă,
event, cuvintul cheie, 417 Exception, clasa, 344, 358-360 Exceptii standard predefinite, 344, 360-361 explicit, cuvântul cheie, 434 Expresii, 73-75 Extinderea metodelor, 300-306 şi apelul dinamic, 300
F false, 46, 249 FileAccess, enumerarea, 382 FileMode, enumerarea, 380-381 FileNotFoundException, 381 FileStream, clasa, 375, 380-381, 386 Finalize( ), 312 finally, blocul, 344-345, 357-358 Fire de execufie multiple, 454 Fi~;iere
indicatorul de intrări-ieşiri.
poziţie,
397-398
V ezi Intrări-ieşiri,
fişiere
fixed, cuvântul cheie, 450-451 float, tipul valoric, 24-26, 43 literali, 51 Flush(),374, 376,384,394 for, bucla, 30-32, 80, 92-98, 100 , variante, 94-99 foreach, bucla, 80, 169-171 FormatException, 401 Frank, Ed, 3-4 Funcfie, 11
G get, accesorul la indexări, 250-251, 254 la proprietăp, 258-259, 261-262 GetHashCode( ), 249, 312-313 GetType( ), 312 Gosling, James, 3-5 goto, 80, 107-108 Grup, 190-191, 454
487
488
1
C#
H heap, zona din memorie, 455-456 Hejlsberg, Anders, 5-6 hexazecimal, literali, 52 Hoare, C.A.R, 231
Identificarea tipurilor la execu~ie, 451-452 ldentificatori, 36-37 ierarhic, clasificare, 12 moştenire, 271-272 #if, directiva, 439-442 if, instructiunea, 28-29, 81-85 imbricat, 83-84 if-else-if, scara, 84-85 şi instrucpunea switch, 89-90 implicit, cuvântul cheie, 434 Incrementare, operatorul(++), 31, 61-62, 239-240, 242 Indentare, stilul, 34 Indexări, 250-257 accesibile numai la citire sau numai la scriere, 254 în interfeţe, 331-333 multidimensionale, 255-257 supraîncărcarea, 258 unidimensionale, 250-255 virtuale, 302 lndexOf( ), 173 IndexOutOfRangeException, 345, 360 Initializarea obiectelor ' cu alt obiect, 218-219 de către constructori, 138-142 Instanfă, a unei clase, 115-116 Vezi ri Obiecte Instanfă, variabile accesul la, 118-119,126 ascunderea, 148 declararea, 118
definipa, 11, 115-116 this, utiliz:~rca pentru itcccsulla variabilele ascunse, 148 unice pe instanţă, 118-121 Instructiuni, 20-21, 33-34 vide, 97 lnstrucpuni de control, 28 de iterape, 80,92-105, 169-171 de salt, 80, 104-112, 126, 127 de selecpe, 81-93 int, tipul valoric, 24-25, 40-42 interface, cuvântul cheie, 317-318 Interfete, 317-341 forma generală, 319 implementarea, 319-323 implementarea explicită, 334-337 indexări, 331-333 proprietăp, 329-330 şi moştenirea, 333-334 variabile referinţă, 322-324 internal, specificatorul de acces, 190-191, 454 Internet, 1-4 şi portabilitatea, 4-5 interoperabilitatea limbajelor diferite, 5 Intrare-ie~;ire, 372-409 la consolă, 378-380 redirectarea, 390-393 stream-uri. Vezi Stream-uri lntrare-ie§ire, fi§iere, 380-399 accesul aleator, 397-400 orientate pe caracter, 386-388 orientate pe octet, 380-385 şi date binare, 394-397 introducerea datelor de la consolă, 80-81 InvalidCastException, 360 IOException, 375 is, operatorul, 451-452
Index
Î Încapsulare, 10-11, 19, 57, 133-134, 190-191 Întregi, 26, 40-42 literali, 51 promovarea la, 73
J Java facilităp lipsă, 5 istoricul limbajului, 4 şi C#, 1-2, 5-6 Java, maşina virtuală (MVJ), 4-5 JIT, compilator, 7, 14
L LastlndexOf( ), 173 Length, proprietatea la stringuri, 173 la tablouri, 163-165,259-261 obiectelor Stream, 375 Limbajul intermediar Microsoft (MSIL), 7-8, 14 #line, directiva, 443 Literali, 51-54 lock, 454 Logici, operatori, 62-67 long, tipul valoric, 41-42 literali, 51
M Main( ), 19-20, 22, 118, 123-124, 223-225, 228 şi parametrii în linia de comandă, 223-225 Math, clasa, 43, 43 MemberwiseCloneO, 312 · Membri, ai claselor, 11, 115-116 accesul şi moştenirea, 274-275, 277-278 controlul accesului la, 116, 191-197 utilizarea operatorului punct pentru acces, 118-119
489
Memorie, alocarea utilizarea lui new, 121-122, 142, 151 utilizarea lui stackalloc, 455-456 MemoryStream, clasa, 375, 409 Message, proprietatea clasei Exception, 359-360 Metadate, 8 Metode, 11, 123-132 abstracte, 307-31 O apelarea dinamică, 300 apelul, 126 condiponale, 444 domeniul de valabilitate definit, 57 extinderea. Vezi Extinderea, metodelor forma generală, 123-124 întoarcerea mai multor valori, 200-201, 203-204 întoarcerea obiectelor din, 209-210 întoarcerea valorilor din, 126-129 operator, 236, 243-248 parametri, 123-124, 130-133 recursive, 226-228 signamra, 216 statice, 229-231 supraîncărcarea, 211-215 şi delegările, 430-436 şi interfetele, 317-319 hansmit~rea obiectelor, 197-200 utilizarea lui base pentru accesul la metodele ascunse, 286-288 virtuale, 300-306 Modulo, operatorul(%), 60-61 Moştenire, 10, 12, 271-315 ascunderea numelor, 285-287 multinivel, 291-298 nopuni de bază, 271-276 sealed, utilizarea pentru împiedicarea moştenirii, 311 şi constructorii, 279-285, 294-295, 297-299 şi interfeţele, 333-334 Motorul comun de programare (MCP), 7-8, 14, 446-447
preceden~ă,
Multicasting şi delegările,
414-417 şi evenimentele, 419-422 Multiprogramare, 454
N namespace, cuvântul cheie, 422 N aughton, Patrick, 3-4 Negative, numere, reprezentarea, 182 .NET, arhitectura, 1-2, 6 biblioteca de clase, 7, 19, 37, 422 şi limbajul C++, 9 Netratat, codul, 8, 446-447 new, 121-122, 142-143, 151, 154 pentru ascunderea membrilor clasei de bază, 285, 287-288, 334 NON, operatorul unar la nivel de bip (-), 177-178, 181 unar logic (!), 62-63 NotSupportedException, 375
o Oak, 3-4 Obiecte, 11, 115-116, 119 crearea, 118-119,121-122 întoarcerea, 209-21 O transmiterea către metode, 197-200 abject, dasa, 312-315 metodele definite, 312 referin1e către tipurile valorice, 313-315 - .. Obsolete, atributul predefinit, 445-446 Octal, 53 operator, cuvântul cheie, 236 Operatori aritmetici, 24-25, 60-63 de arribuir~. 24, 68-69, 249 de conversie. Vezi Conversie, operatori la nivel de bip, 177-187 logici, 62-67
tabela de, 72 29, 62-64, 247-248 şi parantezele, 75-76 ternar, 186-188 Operatori aritmetici, 24-25, 60-63 Operatori la nivel de bi~i, 177-187 Orientată pe obiecte, programarea (POO), 3, 9-13 out, modificator de parametri, 200-201, 203-208, 236, 255, 261-262 OutOfMemoryException, 360 · OverflowException, 360 şi checked/unchecked, 367-370 override, cuvântul cheie, 300, 303 rela~ionali,
p Parametri, 20-21, 123-124, 130-133 în linia de comandă, 223-225 modificatori, 200-208 şi constructorii supraîncărcap, 218 şi metodele supraîncărcate, 211, 213-214 transmiterea, 198-200 utilizarea unui număr variabil de parametri, 206-208 params, modificator de parametri, 206-208 Parse( ), metodele, 401-404 Peek(),376 Pointeri, 447-450 Polimorfism, 11-12 şi interfeţele, 317-318 şi metodele extinse, la execupe, 300, 303 şi metodele supraîncărcate, 211, 215 Portabilitate, 4-7, 41 Position, proprietatea, 375 Pow( ), 76 Preprocesor, directivele, 438-444 private, specificatorul de acces, 19, 191-197 şi moştenirea, 274-275
Index
491
--------------------·---------------------------------·-·---4~Programarea în limbaj mixt, 4-5 orientată pe obiecte. Vezi Orientată pe obiecte, programarea (POO) strucmrată, 3, 10 Proprietăfi, 258-261 accesibile numai la citire sau numai la scriere, crearea, 259 restricfii asupra, 261-262 şi interfe1ele, 329-330 virtuale, 302 protected, specificatorul de acces, 190-191, 275, 277-278 public, specificatorul de acces, 19, 191-197 Punct, operatorul(.), 118-119, 228-229
R Read( ), 80-81, 375-376, 378, 382, 395 ReadBlock( ), 376 ReadByte( ), 375, 382, 395 ReadUne(), 376, 378-379 readonly, câmpurile, 455 ReadToEnd( ), 376 Recursivitate, 226-228 ref, modificator de parametri, 200-203, , 236, 255, 261-262 ReferenceEquals( ), 312 Referinfă, variabilele ' atribuirea referin~elor de tipul claselor derivate instan~elor clasei de bază, 296-309 declararea, 121 modiftcarea de către ref şi out, 205 şi atribuirea, 122-123 #region, directiva, 443 Relaţionali, operatorii, 29, 62-64, 24"7-248 Replace( ), 412 return, instructiunea, 80, 126, 127 Ritchie, Dennis, 2
s
SAU exclusiv (XOR), operatorul ("•') la nivel de bi~i, 177-178, 180-181 logic, 62-63 SAU, operator scurtcircuitat ( 1 1), 62-67 SAU, operatorul ( 1) la nivel de bi1i, 177-180 logic, 62-63, 66-67 sbyte, tipul valoric, 40-43, 51 sealed, cuvântul cheie, 311 Securitate, 8 SecurityException, 381 Seek(), 375,397-398,409 SeekOrigin, enumerarea, 398 Selecfie, instructiunile, 81-93 semn, bitul de, 41 set, accesorul la indexări, 250-251, 254 la proprietăţi, 258-259 SetError( ), 391 Setln( ), 391 SetOut( ), 391 Sheridan, Mike, 3-4 short, tipul valoric, 41, 43, 51 Signatura unei metode, 216 Sintaxă, erori de, 22-23 sizeof, operatorul, 455 Sortare rapidă, algoritmul, 228, 231-234 sortarea prin metoda bulelor, 155-157 Spafii de nume, 19, 22-23, 422-435 caracteristica aditivă, 428-429 declararea, 423-425 imbricate, 429-430 implicit, 430 Specificarea comună a limbajelor, 8 Sqrt( ), 43, 229 stackalloc, 455-456 StackOverflowException, 360 StackTrace, proprietatea clasei Exception, 359-360
492
1
C#
static, 20-21, 228-230 definiiie, 11, 164 Stream, clasa, 374-375 metode, tabelul, 374-375 proprietăp, tabelul, 375 Stream-uri binare, 377 clase care împachetează stream-urile caracter, 375-377 clase de stream-uri octet, 375 definitie, 3 72 ' octet, '380-381 predefinite, 375 redirectarea stream-urilor standard, 390-393 stocate în memorie, 409 StreamReader, clasa, 377; 386, 388-389 şi codificarea caracterelor, 390 StreamWriter, clasa, 377, 386-388 şi codificarea caracterelor, 390 string, clasa, 172-177 metodele, 172-17 5 StringBuilder, clasa, 177 StringReader, clasa, 377, 409 Stringuri ca obiecte, 172 construcpa, 172 imuabilitatea, 175-176 indexarea, 173 Length, proprietatea, 173 literali, 53-55, 172 numerice, conversia, 400-404 tablouri de, 17 5 StringWriter, clasa, 377, 409 Stroustrup, Bjarne, 3-4, 4-5 struct, cuvintul cheie, 337 Structuri, 317-318, 337-339 numerice .NET, 400 Subclasă, 277 Substring( ), 175-176 Sun Microsystems, 3-4 Superclasă, 277
Supraîncărcare a
Stivă,
constructorilor, 217-225 index!irilor, 258 metodelor, 211-215 operatorilor. Vezi Operator, supraîncărcarea
Supraîncărcarea
operatorilor, 235-250 binari, 236-238 relaponali, 247-248 restricpi, 249-250 şi supraîncărcarea metodelor operator, 243-248 unari, 236, 239-243 switch, instrucpunea, 80, 85-92 regula interzicerii execupei în secvenţă, 88-90 System, spapul de nume, 19, 22-23, 422 System.Diagnostics; spatiul de nume, 444
System.Exception, clasa. Vezi . Exception, clasa System.IDisposable, interfaia, 456 System.IO, spafiul de nume, 373, 380-381, 422 SystemException, 344, 360
s• ŞI,
Operatorul logic (&), 62-63, 66-67 pe bip (&), 177-179 scurtcircuitat (&&), 62-67
T Tablouri, 150-170 cu stringuri, 175 de parametri params, 206-208 impiementate in C# prin obiecte, 150-151 inipalizarea, 153-154, 158-160 în scară, 160-162 margini, 154
---------------------------·-·------
multidimensionale, 157-160 proprietatea Length a tablourilor, 163-165 sortarea, 155-157 tablouri cu elemente de tip referintă '' 162-163 unidimensionale, 151-158 TargetSite, proprietatea clasei Exception, 359-360 Ternar, operatorul (?), 186-188 TextReader, clasa, 375-379, 386 metode ~eftnite, tabelul, 376 TextWriter, clasa, 375-377, 386 this, 146-148, 219, 229 throw, 344-345, 354-356 Tip cast. Vezi Casnui conversia automată, 69-70, 213-214 extensibilitatea, 236 identificarea la execu~e, 451-452 promovarea, 73-75 Tipuri, de date. Vezi Date, tipuri de verificarea, 40, 295 ToString( ), 312-313, 359-360 Transfer prin referintă • fortarea cu ajutorul lui ref, 200-203 sau transfer prin valoare, 198-200 Tratarea exceptiilor, 343-370 , bloc, forma generală, 344-345 şi crearea tipurilor exceppe derivate, 1 361-362, 370 şi excepţiile netratate, 348-349 Vezi fi catch, instructiuni Vezi fi try, blocurile ' Tratat, cod, 16, 446-447 true, 47, 249 True şi false in C#, 47 imbricate, 353-354 typeof, operatorul, 452-453
Index
493
u uint, tipul valoric, 41-43 literali, 51 ulong, tipul valoric, 41 literali, 51 unchecked, instructiunea, 367-370 , #undef, directiva, 442 Unicode, 45-46, 178-179, 386 unsafe, cuvântul cheie, utilizarea, 447, 449 ushort, tipul valoric, 41, 43, 51 . using directiva, 19, 22-23, 425-426 instrucpunea, 456 Utilizarea literelor mici şi majusculelor în C#, 22
V Valorice, tipuri, 40, 122 împachetarea şi despachetarea, 313-315 structurile numerice .NET, 400, 404 Variabile declararea, 24-25, 55, 58 definipa, 23 domeniul şi durata de viată 57-60 iniţializarea, 56-59 ' ' inipalizarea dinamică, 56 instantă. Vezi Instantă variabile locale: 55 ' ' nume, reguli de, 36-37 referinţă. Vezi Referinţă, variabile statice, 228-230 volatile, 456 vidă, instructiunea, 97 Virgulă mobilă, 24=26, 43 literali, 51 virtual, cuvântul cheie, 300, 303, 307 Virtuale, metode, 300-306 proprietăţi, 302
Visual C++, mediul integrat de dezvoltare \'Oid,,20-21, 123-124 metode, 126-127 volatile, modificatorul, 456
w #warning, directiva, 443 Warth, Chris, 3-4 while, bucla, 80, 98-100
"Windows, mediul, 5-6 Write( ), 24-25, 375-376, 380-381, 383, 394 WriteByte( ), 375 WriteLine( ), 20-21, 24-26, 313, 359, 376, 380-381 versiunea pentru afişarea formata tă, 48-49
X XML, comentapi, 20-21