HOME VREAU SA CUMPAR ACUM ACEASTA CARTE
![]() |
Totul despre C si C++ -
Manualul fundamental de programare in C si C++ Contine: 1328 pagini + CD-ROM Autor: Dr. Kris Jamsa Lars Klander |
Cuprins
Primele noţiuni de C
introducere în programare 1
Crearea unui fişier sursă ASCII 2
Compilarea programului în C 3
Erorile de sintaxă 4
Structura unui program tipic în C 5
Completarea instrucţiunilor programului 6
Afişarea ieşirii pe o linie nouă 7
C face diferenţa între minuscule şi majuscule 8
Erorile logice (bugs) 9
Dezvoltarea programului 10
Tipurile de fişiere 11
Editorul de legături 12
Fişierele antet 13
Localizarea fişierelor antet 14
Mărimea vitezei de compilare 15
Comentarea programelor 16
Îmbunătăţirea lizibilităţii programului 17
Mesajele de avertizare 18
Controlul avertismentelor compilatorului 19
Folosirea comentariilor pentru a exclude instrucţiunile din program 20
Importanţa paginilor 21
Caracterul punct şi virgulă 22
Prezentarea variabilelor 23
Atribuirea de valori variabilelor 24
Tipurile variabilelor 25
Declararea mai multor variabile de acelaşi tip 26
Comentarea variabilelor la declarare 27
Atribuirea de valori la declararea variabilelor 28
Iniţializarea mai multor variabile în cursul declaraţiei 29
Alegerea unor nume semnificative de variabile 30
Cuvintele cheie ale limbajului C 31
Variabilele de tip int 32
Variabilele de tip char 33
Variabilele de tip float 34
Variabilele de tip double 35
Atribuirea de valori variabilelor în virgulă mobilă 36
Modificatorii de tip 37
Modificatorul de tip unsigned 38
Modificatorul de tip long 39
Utilizarea combinată a modificatorilor de tip unsigned şi long 40
Utilizarea unor valori mari 41
Modificatorul de tip register 42
Modificatorul de tip short 43
Omisiunea lui int din declaraţiile modificate 44
Modificatorul de tip signed 45
Operaţii de atribuire multiplă 46
Atribuirea valorii unei variabile de un anumit tip unei variabile de alt tip 47
Crearea unor tipuri proprii 48
Atribuirea de valori hexazecimale sau octale 49
Situaţiile de depăşire 50
Precizia 51
Atribuirea ghilimelelor şi a altor caractere 52
Prezentarea funcţiei printf 53
Afişarea valorilor de tip int folosind funcţia printf 54
Tipărirea unei valori întregi octale sau hexazecimale 55
Afişarea valorilor de tip unsigned int folosind funcţia printf 56
Afişarea valorilor de tip long int folosind funcţia printf 57
Afişarea valorilor de tip float folosind funcţia printf 58
Afişarea valorilor de tip char folosind funcţia printf 59
Afişarea valorilor în virgulă mobilă în format exponenţial 60
Afişarea valorilor în virgulă mobilă 61
Afişarea unui şir de caractere folosind funcţia printf 62
Afişarea pointerilor folosind funcţia printf 63
Utilizarea semnului plus sau minus înaintea unei valori 64
Formatarea unei valori întregi folosind funcţia printf 65
Afişarea numerelor întregi precedate de zero 66
Afişarea unui prefix înaintea valorilor octale şi hexazecimale 67
Formatarea valorilor în virgulă mobilă 68
Formatarea unei ieşiri exponenţiale 69
Alinierea la stânga a ieşirii 70
Utilizarea combinată a specificatorilor de format 71
Trecerea unui şir de caractere pe linia următoare 72
Afişarea şirurilor near şi far 73
Caracterele escape ale funcţiei printf 74
Determinarea numărului de caractere afişate de printf 75
Utilizarea valorii returnate 76
Utilizarea driverului de dispozitiv ANSI 77
Utilizarea driverului ANSI pentru a elibera ecranul 78
Utilizarea driverului ANSI pentru a afişa culori pe ecran 79
Utilizarea driverului ANSI pentru poziţionarea cursorului 80
Realizarea operaţiilor matematice de bază în C 81
Oeratorul modulo 82
Precedenţa şi asociativitatea operatorilor 83
Forţarea ordinii operaţiilor 84
Operatorul de incrementare 85
Oeratorul de decrementare 86
Operaţia SAU pe biţi 87
Operaţia ŞI pe biţi 88
Operaţia SAU exclusiv pe biţi 89
Operaţia de complementare pe biţi 90
Aplicarea unor operaţii valorilor de variabile 91
Operatorul condiţional al limbajului C 92
Operatorul sizeof al limbajului C 93
Executarea deplasării pe biţi 94
Executarea unei rotaţii pe biţi 95
Operatorii condiţionali 96
Procesarea iterativă 97
Reprezentarea valorilor adevărat şi fals 98
Testarea unei condiţii cu if 99
Instrucţiunile simple şi cele compuse 100
Testarea unei egalităţi 101
Executarea testelor relaţionale 102
Utilizarea operatorului ŞI logic pentru testarea a două condiţii 103
Utilizarea operatorului SAU logic pentru testarea a două condiţii 104
Executarea operaţiei NU logic 105
Atribuirea rezultatului evaluării unei condiţii 106
Declararea variabilelor în cadrul instrucţiunilor compuse 107
Folosirea indentării pentru îmbunătăţirea lizibilităţii 108
Utilizarea testării extinse a combinaţiei CTRL+BREAK 109
Testarea valorilor în virgulă mobilă 110
Buclarea infinită 111
Testarea unei atribuiri 112
Utilizarea instrucţiunilor if-if-else 113
Efectuarea unor instrucţiuni de un anumit număr de ori 114
Părţile opţionale ale instrucţiunii for 115
Decrementarea valorilor în cadrul unei instrucţiuni for 116
Controlul incrementării într-o buclă for 117
Utilizarea buclelor for cu valori de tip char şi float 118
Bucla vidă 119
Bucla infinită 120
Utilizarea virgulei într-o buclă for 121
Modificarea valorii variabilei de control într-o buclă for 122
Repetarea uneia sau mai multor instrucţiuni folosind bucla while 123
Părţile unei bucle while 124
Repetarea uneia sau mai multor instrucţiuni utilizând do 125
Instrucţiunea continue 126
Încheierea buclei folosind instrucţiunea break 127
Ramificarea cu ajutorul instrucţiunii goto 128
Testarea condiţiilor multiple 129
Instrucţiunea break din switch 130
Utilizarea cazului default al instrucţiunii switch 131
Macroinstrucţiuni şi constante
Definirea constantelor 132
Extinderea macroinstrucţiunilor şi a constantelor 133
Atribuirea de nume constantelor şi macronstrucţiunilor 134
Utilizarea constantei predefinite __FILE__ 135
Utilizarea constantei predefinite __LINE__ 136
Modificarea numărului curent al liniei 137
Generarea unei erori necondiţionate 138
Alte constante de preprocesor 139
Înregistrarea datei şi orei preprocesorului 140
Testarea compatibilităţii cu ANSI C 141
Testarea modului de lucru al compilatorului (C++ sau C) 142
Eliminarea definiţiei unei macroinstrucţiuni sau a unei constante 143
Comparaţie între macroinstrucţiuni şi funcţii 144
Directivele pragma 145
Valorile predefinite şi macroinstrucţiunile 146
Crearea propriilor fişiere antet 147
Utilizarea directivelor #include <numefis.h> sau #include "numefis.h" 148
Testarea definirii unui simbol 149
Preprocesarea instrucţiunilor if-else 150
Testarea unor condiţii de preprocesor mai puternice 151
Preprocesarea instrucţiunilor if-else şi else-if 152
Definirea macroinstrucţiunilor şi a constantelor pe mai multe linii 153
Crearea propriilor macroinstrucţiuni 154
Utilizarea caracterului punct şi virgulă în macroinstrucţiuni 155
Crearea macroinstrucţiunilor min şi max 156
Crearea macroinstrucţiunilor patrat şi cub 157
Spaţiile din definiţiile macroinstrucţiunilor 158
Utilizarea parantezelor 159
Macroinstrucţiunile nu au tip 160
Şiruri
Vizualizarea unui şir 161
Reprezentarea unui şir de caractere 162
Stocarea unui şir de caractere în limbajul C 163
Diferenţa între 'A' şi "A" 164
Reprezentarea unei ghilimele într-o constantă de tip şir de caractere 165
Determinarea lungimii unui şir de caractere 166
Utilizarea funcţiei strlen 167
Copierea unui şir de caractere în altul 168
Adăugarea conţinutului unui şir la alt şir 169
Adăugarea a n caractere la un şir 170
Transformarea unui şir de caractere în alt şir 171
Limitele unui şir de caractere 172
Testarea identităţii a două şiruri de caractere 173
Ignorarea diferenţei dintre majuscule şi minuscule când se compară două şiruri 174
Convertirea caracterelor unui şir în majuscule sau minuscule 175
Obţinerea primei apariţii a unui caracter în şir 176
Returnarea indexului primei apariţii dintr-un şir 177
Găsirea ultimei apariţii a unui caracter într-un şir 178
Returnarea indexului ultimei apariţii dintr-un şir 179
Şirurile far 180
Scrierea funcţiilor pentru şiruri far 181
Numărarea apariţiilor unui caracter într-un şir 182
Inversarea conţinutului unui şir 183
Atribuirea unui caracter specificat unui şir întreg de caractere 184
Compararea a două şiruri de caractere 185
Compararea primelor n caractere din două şiruri 186
Compararea şirurilor fără a face diferenţa între literele mari şi mici 187
Convertirea unei reprezentări de tip şir într-un număr 188
Duplicarea conţinutului unui şir de caractere 189
Găsirea primei apariţii a unui caracter 190
Localizarea unui subşir într-un şir de caractere 191
Numărul de apariţii ale unui subşir 192
Obţinerea indexului unui subşir 193
Obţinerea ultimei apariţii a unui subşir 194
Afişarea unui şir fără specificatorul de format %s 195
Ştergerea unui subşir dintr-un şir de caractere 196
Înlocuirea unui subşir cu altul 197
Convertirea unei reprezentări ASCII numerice 198
Testarea unui caracter pentru a stabili dacă este alfanumeric 199
Testarea unui caracter pentru a stabili dacă este literă 200
Testarea unui caracter pentru a stabili dacă este o valoare ASCII 201
Testarea unui caracter pentru a stabili dacă este caracter de control 202
Testarea unui caracter pentru a stabili dacă este o cifră 203
Testarea unui caracter pentru a stabili dacă este caracter grafic 204
Testarea unui caracter pentru a stabili dacă este majusculă sau minusculă 205
Testarea unui caracter pentru a stabili dacă poate fi tipărit 206
Testarea unui caracter pentru a stabili dacă este semn de punctuaţie 207
Testarea unui caracter pentru a stabili dacă este spaţiu alb 208
Testarea unui caracter pentru a stabili dacă este o valoare hexazecimală 209
Convertirea unui caracter în majusculă 210
Convertirea unui caracter în minusculă 211
Lucrul cu caractere ASCII 212
Scrierea ieşirii formatate într-o variabilă de tip şir de caractere 213
Citirea intrării dintr-un şir de caractere 214
Simbolizarea şirurilor de caractere pentru a economisi spaţiu 215
Iniţializarea unui şir de caractere 216
Funcţii
Prezentarea funcţiilor 217
Utilizarea variabilelor în cadrul funcţiilor 218
Funcţia main 219
Prezentarea parametrilor 220
Utilizarea parametrilor multipli 221
Declaraţiile parametrilor în programele în C mai vechi 222
Returnarea unei valori de la o funcţie 223
Instrucţiunea return 224
Prototipurile de funcţii 225
Biblioteca run-time 226
Parametrii formali şi reali 227
Rezolvarea conflictelor de nume 228
Funcţiile care nu returnează int 229
Variabilele locale 230
Utilizarea stivei de către funcţii 231
Suprasarcina funcţiei 232
Amplasarea variabilelor locale 233
Declararea variabilelor globale 234
Evitarea utilizării variabilelor globale 235
Rezolvarea conflictelor dintre numele variabilelor globale şi cele locale 236
Definirea îmbunătăţită a domeniului de valabilitate a variabilelor globale 237
Apelul prin valoare 238
Prevenirea modificării valorii parametrilor cu apelul prin valoare 239
Apelul prin referinţă 240
Oţinerea unei adrese 241
Utilizarea adresei variabilei 242
Modificarea valorii parametrilor 243
Modificarea valorii unor anumiţi parametri 244
Utilizarea stivei la apelul prin referinţă 245
Prezentarea variabilelor statice 246
Iniţializarea variabilelor statice 247
Utilizarea secvenţei de apelare Pascal 248
Efectul cuvântului cheie Pascal 249
Scrierea unui exemplu de limbaj mixt 250
Cuvântul cheie cdecl 251
Recursivitatea 252
Funcţia recursivă factorial 253
Scrierea unui alt exemplu de recursivitate 254
Afişarea valorilor pentru a înţelege mai bine recursivitatea 255
Recursivitatea directă şi indirectă 256
Decizia de utilizare a recursivităţii 257
De ce sunt lente funcţiile recursive 258
Eliminarea recursivităţii 259
Transmiterea şirurilor către funcţii 260
Transmiterea anumitor elemente dintr-o matrice 261
Cuvântul cheie const 262
Prevenirea modificării parametrilor 263
Declararea şirurilor nelimitate 264
Utilizarea pointerilor faţă de declararea şirurilor de caractere 265
Folosirea stivei pentru parametrii de tip şir 266
Variabilele externe 267
Utilizarea variabilelor externe 268
Variabilele statice externe 269
Cuvântul cheie volatile 270
Cadrul de apelare şi indicatorul de bază 271
Apelarea unei funcţii în limbaj de asamblare 272
Returnarea unei valori dintr-o funcţie în limbaj de asamblare 273
Funcţii care nu returnează valori 274
Funcţiile care nu utilizează parametri 275
Cuvântul cheie auto 276
Domeniul de valabilitate 277
Categoriile de domenii în C 278
Spaţiul de nume şi identificatorii 279
Vizibilitatea unui identificator 280
Durata 281
Funcţii care acceptă un număr variabil de parametri 282
Acceptarea unui număr variabil de parametri 283
Funcţionarea macroinstrucţiunilor va_start, va_arg şi va_end 284
Crearea funcţiilor care acceptă parametri şi tipuri multiple 285
Operaţii de la tastatură
Citirea unui caracter de la tastatură 286
Afişarea unui caracter de ieşire 287
Utilizarea unui buffer de intrare 288
Atribuirea intrării de la tastatură unui şir de caractere 289
Combinarea macroinstrucţiunilor getchar şi putchar 290
Macroinstrucţiunile getchar şi putchar 291
Citirea unui caracter utilizând o intrare/ieşire directă 292
Intrarea directă de la tastatură fără afişarea caracterelor 293
Utilizarea secvenţelor escape '\r' şi '\n' 294
Executarea ieşirii directe 295
Reintroducerea în buffer a caracterelor 296
Formatarea rapidă a ieşirilor cu cprintf 297
Formatarea rapidă a intrărilor de la tastatură 298
Scrierea unui şir de caractere 299
Ieşirea mai rapidă a unui şir de caractere folosind o intrare/ieşire directă 300
Citirea şirurilor de caractere de la tastatură 301
Introducerea rapidă a unui şir de caractere de la tastatură 302
Afişarea ieşirii în culori 303
Ştergerea ecranului 304
Ştergerea până la sfârşitul liniei curente 305
Ştergerea liniei curente 306
Poziţionarea cursorului pentru ieşirea pe ecran 307
Determinarea poziţiei rândului şi a coloanei 308
Inserarea unei linii goale pe ecran 309
Copierea textului de pe ecran într-un buffer 310
Scrierea unui text din buffer într-o anumită poziţie de pe ecran 311
Determinarea parametrilor modului de text 312
Controlul culorilor ecranului 313
Atribuirea culorii de fundal 314
Stabilirea culorii de prim plan utilizând textcolor 315
Stabilirea culorii de fundal utilizând textbackground 316
Controlul intensităţii textului 317
Determinarea modului de text curent 318
Deplasarea textului de pe ecran de la o locaţie la alta 319
Definirea unei ferestre de text 320
Funcţii matematice
Folosirea valorii absolute a unei expresii de tip întreg 321
Arccosinus 322
Arcsinus 323
Arctangenta 324
Obţinerea valorii absolute a unui număr complex 325
Rotunjirea unei valori reale în virgulă mobilă 326
Cosinusul unui unghi 327
Cosinusul hiperbolic al unui unghi 328
Sinusul unui unghi 329
Sinusul hiperbolic al unui unghi 330
Tangenta unui unghi 331
Tangenta hiperbolică a unui unghi 332
Împărţirea numerelor întregi 333
Lucrul cu funcţia exponenţială 334
Valoarea absolută a expresiilor în virgulă mobilă 335
Restul în virgulă mobilă 336
Mantisa şi exponentul unei valori în virgulă mobilă 337
Calculul rezultatului operaţiei x * 2e 338
Calculul logaritmului natural 339
Calculul rezultatului lui log10x 340
Determinarea valorilor maxime şi minime 341
Separarea unei valori double în componentele întreg şi real 342
Calculul rezultatului operaţiei xn 343
Calculul rezultatului operaţiei 10x 344
Generarea unui număr aleator 345
Plasarea valorilor aleatoare într-un anumit interval 346
Lansarea generatorului de numere aleatoare 347
Calculul rădăcinii pătrate a unei valori 348
Tratarea personalizată a erorilor matematice 349
Fişiere, directoare şi discuri
Determinarea unităţii curente de disc 350
Selectarea unităţii curente 351
Determinarea spaţiului disponibil pe disc 352
Testarea comprimării cu dblspace 353
Citirea informaţiilor din FAT 354
Identificatorul discului 355
Executarea unei citiri/scrieri absolute de sector 356
Executarea operaţiilor I/O cu discul prin BIOS 357
Testarea accesibilităţii unităţii de dischete 358
Deschiderea unui fişier cu fopen 359
Structura file 360
Închiderea unui fişier deschis 361
Citirea şi scrierea informaţiilor în fişier caracter cu caracter 362
Pointerul de poziţie al unui fişier 363
Determinarea poziţiei curente a fişierului 364
Fluxurile 365
Conversia fişierelor 366
Intrarea files= din config.sys 367
Utilizarea operaţiilor I/O cu fişiere la nivel jos şi la nivel înalt 368
Indicatorii de fişier 369
Tabela cu fişierele de proces 370
Vizualizarea intrărilor în tabela cu fişierele de proces 371
Tabela fişierelor din sistem 372
Afişarea tabelei cu fişierele din sistem 373
Obţinerea indicatorilor de fişier din pointerii de flux 374
Scrierea unei ieşiri formatate în fişier 375
Redenumirea fişierelor 376
Ştergerea unui fişier 377
Determinarea modului în care un program poate accesa un fişier 378
Stabilirea modului de acces al unui fişier 379
Obţinerea unui control mai bun asupra atributelor de fişier 380
Testarea erorilor de flux 381
Determinarea dimensiunii unui fişier 382
Golirea unui flux I/O 383
Închiderea tuturor fişierelor deschise într-un singur pas 384
Obţinerea indicatorului de fişier al unui flux 385
Crearea unui nume de fişier temporar utilizând p_tmpdir 386
Crearea unui nume de fişier temporar utilizând TMP sau TEMP 387
Crearea unui fişier temporar adevărat 388
Eliminarea fişierelor temporare 389
Căutarea unui fişier în comanda path 390
Căutarea unui fişier în lista cu subdirectoarele intrării de mediu 391
Deschiderea fişierelor în directorul TEMP 392
Minimizarea operaţiilor I/O cu fişiere 393
Scrierea unui cod care utilizează caracterul backslash în numele directoarelor 394
Schimbarea directorului curent 395
Crearea unui director 396
Ştergerea unui director 397
Ştergerea unui arbore de directoare 398
Construirea unui nume de cale întreg 399
Analizarea căii unui director 400
Construirea unui nume de cale 401
Deschiderea şi închiderea unui fişier utilizând funcţii de nivel jos 402
Crearea unui fişier 403
Executarea operaţiilor de citire şi de scriere de nivel jos 404
Testarea sfârşitului de fişier 405
Utilizarea rutinelor de nivel jos pentru operaţii I/O cu fişiere 406
Specificarea modului de conversie a unui indicator de fişier 407
Poziţionarea pointerului de fişier utilizând lseek 408
Deschiderea a mai mult de 20 de fişiere 409
Folosirea serviciilor DOS de fişier 410
Obţinerea mărcii orei şi datei fişierului 411
Obţinerea datei şi orei unui fişier, utilizând câmpuri de biţi 412
Stabilirea mărcii datei şi orei unui fişier 413
Stabilirea mărcii datei şi orei unui fişier la data şi ora curente 414
Citirea şi scrierea datelor cuvânt cu cuvânt 415
Modificarea dimensiunilor unui fişier 416
Controlul operaţiilor de citire şi scriere cu fişiere deschise 417
Atribuirea unui buffer de fişier 418
Alocarea unui buffer de fişier 419
Crearea unui nume de fişier unic utilizând mktemp 420
Citirea şi scrierea structurilor 421
Citirea datelor structurii dintr-un flux 422
Duplicarea unui indicator de fişier 423
Forţarea valorii unui indicator de fişier 424
Asocierea unui indicator de fişier cu un flux 425
Partajarea fişierului 426
Deschiderea unui fişier pentru acces partajat 427
Blocarea conţinutului unui fişier 428
Un control mai bun al blocării fişierelor 429
Lucrul cu directoarele DOS 430
Deschiderea unui director 431
Citirea unei intrări din director 432
Utilizarea serviciilor pentru directoare la citirea C:\WINDOWS 433
Redesfăşurarea unui director 434
Citirea recursivă a fişierelor discului 435
Determinarea poziţiei curente în fişier 436
Deschiderea unui flux partajat de fişier 437
Crearea unui fişier unic într-un anumit director 438
Crearea unui fişier nou 439
Utilizarea serviciilor DOS pentru accesarea fişierelor 440
Forţarea deschiderii unui fişier în mod binar sau text 441
Citirea liniilor de text 442
Scrierea liniilor de text 443
Utilizarea funcţiilor fgets şi fputs 444
Forţarea conversiei fişierului binar 445
Să înţelegem de ce TEXTCOP nu poate copia fişiere binare 446
Testarea sfârşitului de fişier 447
Utilizarea funcţiei ungetc 448
Citirea datelor formatate din fişier 449
Poziţionarea pointerului de fişier pe baza locaţiei sale curente 450
Obţinerea informaţiilor despre indicatorul de fişier 451
Redeschiderea unui flux de fişier 452
Matrice, pointeri şi structuri
Matricele 453
Declararea unei matrice 454
Vizualizarea unei matrice 455
Cerinţele de stocare ale unei matrice 456
Iniţializarea unei matrice 457
Accesarea elementelor unei matrice 458
Ciclarea prin elementele unei matrice 459
Utilizarea constantelor pentru definirea unei matrice 460
Transmiterea unei matrice unei funcţii 461
Din nou despre transmiterea unei matrice către o funcţie 462
Diferenţa între matricele şiruri şi matrice 463
Transmiterea matricelor în stivă 464
Determinarea numărului de elemente care pot fi păstrate de o matrice 465
Utilizarea modelului de memorie huge pentru matrice mari 466
Alegerea între matrice şi memoria dinamică 467
Matricele multidimensionale 468
Rândurile şi coloanele 469
Accesarea elementelor unei matrice bidimensionale 470
Iniţializarea elementelor într-o matrice bidimensională 471
Determinarea consumului de memorie al unei matrice multidimensionale 472
Ciclarea printr-o matrice bidimensională 473
Traversarea printr-o matrice tridimensională 474
Iniţializarea unei matrice multidimensionale 475
Transmiterea unei matrice bidimensionale unei funcţii 476
Tratarea matricelor multidimensionale ca matrice unidimensionale 477
Să înţelegem cum stochează compilatorul de C o matrice multidimensională 478
Ordonarea pe rânduri şi ordonarea pe coloane 479
Tablouri de structuri de matrice 480
Uniunea (union) 481
Economisirea memoriei cu ajutorul uniunilor 482
Utilizarea REGS – o uniune binecunoscută 483
Utilizarea uniunii REGS 484
Structurile câmp de biţi 485
Vizualizarea unei structuri câmp de biţi 486
Intervalul de valori al structurilor pe biţi 487
Căutarea unei valori specificate într-o matrice 488
Căutarea binară 489
Utilizarea căutării binare 490
Sortarea unei matrice 491
Sortarea prin metoda bulelor 492
Utilizarea sortării prin metoda bulelor 493
Sortarea selectivă 494
Utilizarea sortării selective 495
Sortarea shell 496
Utilizarea sortării shell 497
Sortarea rapidă 498
Utilizarea sortării rapide 499
Probleme cu soluţiile de sortare anterioare 500
Sortarea unei matrice de şiruri de caractere 501
Căutarea într-un şir de caractere cu funcţia lfind 502
Căutarea unei valori cu funcţia lsearch 503
Căutarea într-o matrice sortată cu funcţia bsearch 504
Sortarea unei matrice cu funcţia qsort 505
Determinarea numărului de elemente ale matricei 506
Să înţelegem pointerii ca adrese 507
Determinarea adresei unei variabile 508
Să înţelegem cum tratează compilatorul de C matricele ca pointeri 509
Aplicarea operatorului adresă (&) unei matrice 510
Declararea variabilelor pointeri 511
Dereferenţierea unui pointer 512
Utilizarea valorilor pointer 513
Utilizarea pointerilor cu parametrii funcţiilor 514
Aritmetica pointerilor 515
Incrementarea şi decrementarea unui pointer 516
Combinarea unei referinţe la un pointer cu incrementarea 517
Ciclarea printr-un şir de caractere utilizând un pointer 518
Utilizarea funcţiilor care returnează pointeri 519
Crearea unei funcţii care returnează un pointer 520
O matrice de pointeri 521
Vizualizarea unei matrice de şiruri de caractere 522
Ciclarea printr-o matrice de şiruri de caractere 523
Tratarea unei matrice şir de caractere ca un pointer 524
Utilizarea unui pointer la un pointer la un şir de caractere 525
Declararea unei constante şir de caractere utilizând un pointer 526
Pointerul de tipul void 527
Crearea de pointeri la funcţii 528
Utilizarea unui pointer către o funcţie 529
Utilizarea unui pointer la un pointer la un pointer 530
Structurile 531
O structură este un şablon pentru declarările de variabile 532
Numele generic al unei structuri este numele structurii 533
Declararea unei variabile structură în alt mod 534
Să înţelegem membrii structurii 535
Vizualizarea unei structuri 536
Utilizarea structurii 537
Transmiterea unei structuri către o funcţie 538
Modificarea unei structuri în cadrul unei funcţii 539
Redirectarea (*pointer).membru 540
Formatul pointer->membru 541
Utilizarea unei structuri fără nume generic 542
Domeniul definirii unei structuri 543
Iniţializarea unei structuri 544
Efectuarea de operaţii I/O cu structuri 545
Utilizarea unei structuri imbricate 546
Structuri care conţin matrice 547
Crearea unei matrice de structuri 548
Servicii DOS şi BIOS
Serviciile sistemului DOS 549
Serviciile BIOS 550
Registrele 551
Registrul indicator 552
Întreruperile software 553
Utilizarea serviciilor BIOS pentru accesul la imprimantă 554
Informaţia CTRL+BREAK 555
Posibilele efecte secundare din DOS 556
Suspendarea temporară a unui program 557
Să ne amuzăm cu sunetele 558
Obţinerea informaţiilor specifice de ţară 559
Adresa de transfer pe disc 560
Accesul şi controlul ariei de transfer pe disc 561
Utilizarea serviciilor de tastatură din BIOS 562
Obţinerea listei cu echipamente din BIOS 563
Controlul intrărilor şi ieşirilor pentru portul serial 564
Accesul la serviciile DOS cu ajutorul funcţiei bdos 565
Obţinerea de informaţii extinse despre erori în DOS 566
Determinarea volumului de memorie convenţională BIOS 567
Construirea pointerilor far 568
Împărţirea unei adrese far în segment şi deplasament 569
Determinarea memoriei libere 570
Citirea valorilor registrului segment 571
Gestionarea memoriei
Tipurile de memorie 572
Memoria convenţională 573
Macheta memoriei convenţionale 574
Accesul la memoria convenţională 575
Să înţelegem de ce PC-ul şi sistemul DOS sunt limitate la 1mb 576
Producerea unei adrese din segmente şi deplasamente 577
Memoria expandată 578
Utilizarea memoriei expandate 579
Memoria extinsă 580
Modul real şi modul protejat 581
Accesul la memoria extinsă 582
Zona de memorie înaltă 583
Stiva 584
Diferite configuraţii ale stivei 585
Determinarea dimensiunii curente a stivei 586
Controlul spaţiului stivei cu variabila globală _stklen 587
Atribuirea unei valori la un interval de memorie 588
Copierea unui interval de memorie în altul 589
Copierea unui interval de memorie până la un anumit octet 590
Compararea a două matrice de tip unsigned char 591
Interschimbarea octeţilor adiacenţi din şiruri de caractere 592
Alocarea memoriei dinamice 593
Din nou despre conversie 594
Eliberarea memoriei când nu mai este necesară 595
Alocarea memoriei utilizând funcţia calloc 596
Zona heap 597
Ocolirea limitei de 64kb a zonei heap 598
Alocarea memoriei din stivă 599
Alocarea datelor de mari dimensiuni 600
Modificarea dimensiunilor unui bloc de memorie alocat 601
Funcţia brk 602
Validarea zonei heap 603
Executarea unei verificări rapide a zonei heap 604
Completarea spaţiului liber al zonei heap 605
Verificarea unei intrări specificate a zonei heap 606
Parcurgerea intrărilor zonei heap 607
Privind într-o anumită locaţie de memorie 608
Introducerea de valori în memorie 609
Porturile PC-ului 610
Accesul la valorile de port 611
CMOS 612
Modelele de memorie 613
Modelul de memorie tiny 614
Modelul de memorie small 615
Modelul de memorie medium 616
Modelul de memorie compact 617
Modelul de memorie large 618
Modelul de memorie huge 619
Determinarea modelului curent de memorie 620
Data şi ora
Data şi ora curente ca secunde de la 1/1/1970 621
Conversia datei şi orei din secunde în ASCII 622
Trecerea automată la orarul de vară 623
Întârzierea cu un anumit număr de milisecunde 624
Determinarea timpului de procesare al programului 625
Compararea între două valori de timp 626
Obţinerea datei sub forma unui şir de caractere 627
Obţinerea orei sub forma unui şir de caractere 628
Citirea cronometrului BIOS 629
Lucrul cu ora locală 630
Lucrul cu ora meridianului Greenwich 631
Obţinerea timpului sistemului DOS 632
Obţinerea datei sistemului DOS 633
Fixarea orei sistemului DOS 634
Fixarea datei sistemului DOS 635
Conversia datei DOS în format UNIX 636
Utilizarea fuselor orare pentru a calcula diferenţele de oră 637
Determinarea fusului orar curent 638
Fixarea fuselor orare cu funcţia tzset 639
Utilizarea intrării de mediu TZ 640
Fixarea intrării de mediu TZ din cadrul unui program 641
Obţinerea informaţiilor despre fusul orar 642
Fixarea orei sistemului în secunde de la miezul nopţii 1.01.1970 643
Conversia datei în secunde de la miezul nopţii 1.01.1970 644
Determinarea datei în calendar iulian 645
Crearea unui şir de caractere formatat pentru dată şi oră 646
Tipurile de ceasuri ale calculatorului 647
Redirectarea intrărilor şi ieşirilor şi procesarea liniei de comandă
Aşteptarea apăsării unei taste 648
Solicitarea parolei de la utilizator 649
Scrierea propriei funcţii pentru parolă 650
Redirectarea ieşirii 651
Redirectarea intrării 652
Combinarea redirectării intrării şi ieşirii 653
Utilizarea constantelor stdout şi stdin 654
Operatorul pipe 655
Funcţiile getchar şi putchar 656
Numărarea intrării redirectate 657
Să ne asigurăm că un mesaj va apărea pe ecran 658
Scrierea propriei dumneavoastre comenzi more 659
Afişarea sumei liniilor redirectate 660
Afişarea sumei caracterelor redirectate 661
Crearea unei comenzi more periodice 662
Prevenirea redirectării I/O 663
Utilizarea indicatorului de fişier stdprn 664
Divizarea ieşirii redirectate la un fişier 665
Utilizarea indicatorului de fişier stdaux 666
Găsirea apariţiilor unui subşir în cadrul unei intrări redirectate 667
Afişarea primelor n linii ale unei intrări redirectate 668
Argumentele liniei de comandă 669
Afişarea numărului de argumente ale liniei de comandă 670
Afişarea liniei de comandă 671
Lucrul cu argumente ale liniei de comandă plasate între ghilimele 672
Afişarea conţinutului unui fişier din linia de comandă 673
Tratarea lui argv ca un pointer 674
Cum cunoaşte compilatorul de C linia de comandă 675
Mediul 676
Tratarea matricei env ca pointer 677
Utilizarea cuvântului cheie void ca parametru la funcţia main 678
Lucrul cu numere în linia de comandă 679
Valorile de stare de ieşire 680
Utilizarea instrucţiunii return pentru procesarea stării de ieşire 681
Când declarăm funcţia main ca void 682
Căutarea unei anumite intrări în mediu 683
Cum este tratat mediul în sistemul DOS 684
Utilizarea variabilei globale environ 685
Adăugarea unei intrări la mediul curent 686
Adăugarea elementelor la mediul DOS 687
Oprirea programului curent 688
Definirea funcţiilor care se execută la încheierea programului 689
Instrumente de programare
Bibliotecile 690
Reutilizarea unui cod obiect 691
Probleme cu compilarea fişierelor C şi OBJ 692
Crearea unui fişier bibliotecă 693
Operaţiile obişnuite de bibliotecă 694
Listarea rutinelor dintr-un fişier bibliotecă 695
Utilizarea bibliotecilor pentru a reduce timpul de compilare 696
Să învăţăm mai multe despre capacităţile programului de bibliotecă 697
Editorul de legături 698
Vizualizarea capacităţilor editorului de legături 699
Utilizarea hărţii de legături 700
Utilizarea fişierelor de răspuns pentru editorul de legături 701
Simplificarea construirii aplicaţiilor cu MAKE 702
Crearea unui fişier simplu MAKE 703
Utilizarea fişierelor cu dependenţe multiple cu MAKE 704
Comentarea fişierelor MAKE 705
Liniile de comandă şi MAKE 706
Plasarea dependenţelor multiple într-un fişier MAKE 707
Reguli explicite şi implicite ale comenzii MAKE 708
Utilizarea macrocomenzilor MAKE 709
Macrocomenzi MAKE predefinite 710
Procesarea condiţionată cu MAKE 711
Testarea unei macrocomenzi MAKE 712
Includerea unui al doilea fişier MAKE 713
Utilizarea modificatorilor de macrocomenzi 714
Încheierea cu o eroare a unui fişier MAKE 715
Dezactivarea afişării unei comenzi 716
Utilizarea fişierului BUILTINS.MAK 717
Efectuarea prelucrării stării de ieşire în MAKE 718
Apelarea şi modificarea simultană a unei macrocomenzi 719
Executarea comenzii make pentru mai multe fişiere dependente 720
Limbajul C avansat
Determinarea prezenţei coprocesorului matematic 721
Fişierul ctype.h şi macrocomenzile istype 722
Controlul video direct 723
Detectarea erorilor de sistem şi matematice 724
Afişarea mesajelor de eroare predefinite 725
Determinarea numărului versiunii sistemului de operare 726
Portabilitatea 727
Executarea instrucţiunii goto nelocală 728
Obţinerea identificatorului de proces (PID) 729
Invocarea unei comenzi interne DOS 730
Utilizarea variabilei globale _psp 731
Utilizarea modificatorului const în declararea variabilelor 732
Utilizarea tipurilor enumerate 733
Modul de utilizare a tipului enumerare 734
O valoare enumerare 735
Atribuirea unei anumite valori pentru un tip enumerare 736
Salvarea şi refacerea registrelor 737
Prezentarea listelor dinamice 738
Declararea unei structuri listă înlănţuită 739
Construirea unei liste înlănţuite 740
Un exemplu simplu de listă înlănţuită 741
Trecerea printr-o listă înlănţuită 742
Construirea unei liste mai utile 743
Adăugarea unei intrări în listă 744
Inserarea unei intrări în listă 745
Afişarea unui director sortat 746
Ştergerea unui element dintr-o listă 747
Utilizarea listei dublu înlănţuite 748
Construirea unei liste dublu înlănţuite simple 749
Nod->precedent->urmator 750
Eliminarea unui element dintr-o listă dublu înlănţuită 751
Inserarea unui element într-o listă dublu înlănţuită 752
Procesele copil 753
Utilizarea funcţiilor de tip spawn pentru un proces copil 754
Utilizarea altor funcţii spawnlxx 755
Utilizarea funcţiilor de tip spawnvxx 756
Utilizarea funcţiilor de tip exec pentru un proces copil 757
Utilizarea altor funcţii execlxx 758
Utilizarea funcţiilor execvxx 759
Extinderile de program 760
Întreruperile 761
Întreruperile în PC 762
Utilizarea cuvântului cheie interrupt 763
Determinarea unui vector de întrerupere 764
Stabilirea unui vector de întrerupere 765
Activarea şi dezactivarea întreruperilor 766
Crearea unui program simplu a întreruperii 767
Înlănţuirea întreruperilor 768
Generarea unei întreruperi 769
Detectarea cronometrului intern al PC-ului 770
Erorile critice 771
Tratarea erorilor critice în C 772
Un program mai complet de tratare a erorii critice 773
Restabilirea întreruperilor deteriorate 774
Tratarea pentru CTRL+BREAK 775
Utilizarea serviciilor DOS în tratarea erorilor critice 776
Creşterea performanţei prin utilizarea selecţiei setului de instrucţiuni 777
Funcţii intrinseci inline 778
Activarea şi dezactivarea funcţiilor intrinseci 779
Apelările rapide de funcţii 780
Reguli pentru transmiterea parametrilor _fastcall 781
Codul invariant 782
Eliminarea încărcării redundante 783
Compactarea codului 784
Compactarea buclei 785
Inducţia buclei şi reducţia puterii 786
Eliminarea subexpresiilor comune 787
Conversiile standard C 788
Cele patru tipuri de bază ale limbajului C 789
Tipurile fundamentale faţă de tipurile derivate 790
Iniţializatorii 791
Editorul de legături 792
Declaraţii de probă 793
Deosebirea dintre declaraţii şi definiţii 794
Valorile l (lvalue) 795
Valorile r (rvalue) 796
Utilizarea cuvintelor cheie pentru registrele segment 797
Utilizaţi cu grijă pointerii far 798
Pointerii normalizaţi 799
Instrucţiunile coprocesorului matematic 800
Declaraţiile de variabile cu cdecl şi pascal 801
Prevenirea directivelor include circulare 802
Introducere în C++
Introducere în C++ 803
Cum diferă fişierele sursă din C++ 804
Un exemplu simplu de program în C++ 805
Fluxul de intrări/ieşiri cout 806
Scrierea valorilor şi variabilelor cu cout 807
Combinarea diferitelor tipuri de valori cu cout 808
Afişarea valorilor hexazecimale şi octale 809
Redirectarea ieşirii 810
Dacă preferaţi printf, utilizaţi-l 811
Scrierea ieşirii la cerr 812
Intrările prin cin 813
Fluxul cin nu utilizează pointeri 814
Cum selectează cin câmpurile de date 815
Modul în care fluxurile I/O recunosc tipurile valorilor 816
Efectuarea ieşirilor cu clog 817
Fluxurile cin, cout, cerr şi clog sunt instanţe de clasă 818
Derularea ieşirii cu flush 819
Conţinutul lui iostream.h 820
C++ cere prototipuri de funcţii 821
C++ adaugă noi cuvinte cheie 822
C++ acceptă uniuni anonime 823
Rezolvarea domeniului global de valabilitate 824
Furnizarea valorilor implicite ale parametrilor 825
Controlul dimensiunii ieşirii la cout 826
Utilizarea lui setw pentru fixarea dimensiunii lui cout 827
Specificarea unui caracter de umplere pentru cout 828
Alinierea la dreapta şi la stânga a afişării cout 829
Controlul numărului de cifre în virgulă mobilă afişate de cout 830
Afişarea valorilor în format fix sau ştiinţific 831
Restabilirea modului implicit al lui cout 832
Stabilirea bazei pentru I/O 833
Declararea variabilelor acolo unde sunt necesare 834
Plasarea valorilor implicite ale parametrilor în prototipul funcţiilor 835
Utilizarea operaţiilor pe biţi şi cout 836
Evaluarea redusă 837
Utilizarea cuvântului cheie const în C++ 838
Utilizarea cuvântului cheie enum în C++ 839
Spaţiul liber 840
Alocarea memoriei cu new 841
Alocarea mai multor matrice 842
Testarea existenţei spaţiului liber 843
Consideraţii despre spaţiul din memoria heap 844
Utilizarea pointerilor far şi a operatorului new 845
Eliberarea memoriei pentru spaţiul liber 846
Referinţele în C++ 847
Transmiterea unei referinţe către o funcţie 848
Atenţie la obiectele ascunse 849
Utilizarea a trei modalităţi de transmitere a parametrilor 850
Reguli pentru lucrul cu referinţele 851
Funcţiile pot returna referinţe 852
Utilizarea cuvântului cheie inline 853
Utilizarea cuvântului cheie asm 854
Citirea unui caracter utilizând cin 855
Scrierea unui caracter cu cout 856
Scrierea unui program filtru simplu 857
Scrierea unei comenzi simple tee 858
Scrierea unei comenzi simple first 859
Scrierea unei comenzi first perfecţionate 860
Testarea sfârşitului de fişier 861
Generarea unei linii noi cu endl 862
Specificările pentru editarea legăturilor 863
Supraîncărcarea 864
Supraîncărcarea funcţiilor 865
Supraîncărcarea funcţiilor: un al doilea exemplu 866
Evitarea ambiguităţii la supraîncărcare 867
Citirea linie cu linie utilizând cin 868
Utilizarea lui cin.getline într-o buclă 869
Modificarea controlului implicit al operatorului new 870
Stabilirea unei funcţii handler pentru new cu set_new_handler 871
Determinarea unei compilări în C++ 872
Structurile în C++ 873
Introducerea funcţiilor ca membri ai structurii 874
Definirea unei funcţii membru în cadrul structurii 875
Definirea unei funcţii membru în afara structurii 876
Transmiterea parametrilor către o funcţie membru 877
Mai multe variabile ale aceleiaşi structuri 878
Structuri diferite cu aceleaşi nume de funcţii membre 879
Funcţii diferite cu acelaşi nume de membru 880
Obiecte
Obiectele 881
Programarea orientată pe obiecte 882
De ce trebuie să utilizăm obiecte 883
Divizarea programelor în obiecte 884
Obiectele şi clasele 885
Clasele C++ 886
Încapsularea 887
Polimorfismul 888
Moştenirea 889
Decizia între clase şi structuri 890
Crearea unui model simplu de clasă 891
Implementarea unui program simplu pentru crearea unei clase 892
Definirea componentelor unei clase 893
Operatorul de rezoluţie a domeniului de valabilitate 894
Utilizarea sau omiterea numelui clasei în declaraţii 895
Eticheta public: 896
Ascunderea informaţiilor 897
Eticheta private: 898
Utilizarea etichetei protected: 899
Utilizarea datelor publice şi private 900
Ce ascundem şi ce facem public 901
Metodele publice sunt deseori funcţii de interfaţă 902
Definirea funcţiilor clasei în afara clasei 903
Definirea metodelor în interiorul şi în exteriorul claselor 904
Instanţele obiect 905
Instanţele obiect trebuie să partajeze codul 906
Accesul la membrii clasei 907
Din nou despre operatorul de rezoluţie globală 908
Iniţializarea valorilor clasei 909
Utilizarea altei metode de iniţializare a valorilor clasei 910
Membrii statici ai claselor 911
Utilizarea datelor membre statice 912
Utilizarea funcţiilor membre statice 913
Declaraţiile funcţiilor membre 914
Utilizarea declaraţiilor de funcţii inline 915
Când se folosesc funcţiile inline sau exterioare 916
Clasele şi uniunile 917
Prezentarea uniunilor anonime 918
Prezentarea funcţiilor friend 919
Prezentarea claselor friend 920
Funcţii de clasă uzuale
Funcţiile constructor 921
Utilizarea funcţiilor constructor cu parametri 922
Utilizarea funcţiei constructor 923
Când execută programul o funcţie constructor 924
Utilizarea funcţiilor constructor cu parametri 925
Rezolvarea conflictelor de nume în funcţiile constructor 926
Utilizarea unei funcţii constructor pentru alocarea memoriei 927
Controlul corect al alocării memoriei 928
Valorile implicite ale parametrilor pentru constructori 929
Supraîncărcarea funcţiilor constructor 930
Aflarea adresei unei funcţii supraîncărcate 931
Utilizarea funcţiilor constructor cu un singur parametru 932
Funcţiile destructor 933
Utilizarea unei funcţii destructor 934
Necesitatea funcţiilor destructor 935
Când invocă un program o funcţie destructor 936
Utilizarea unei copii a constructorului 937
Utilizarea constructorilor de tip explicit 938
Domeniul de valabilitate al unei clase 939
Clasele imbricate 940
Clasele locale 941
Rezolvarea conflictelor de nume ale membrilor şi parametrilor 942
Crearea unei matrice de variabile clasă 943
Constructori şi matrice de clase 944
Supraîncărcarea unui operator 945
Crearea unei funcţii operator membră 946
Supraîncărcarea operatorului plus 947
Supraîncărcarea operatorului semn minus 948
Supraîncărcarea operatorilor de incrementare prefix şi postfix 949
Supraîncărcarea operatorilor de decrementare prefix şi postfix 950
Să recapitulăm restricţiile la supraîncărcarea unui operator 951
Utilizarea funcţiilor friend pentru supraîncărcarea operatorilor 952
Restricţii la supraîncărcarea operatorilor cu funcţii friend 953
Utilizarea unei funcţii friend pentru supraîncărcarea operatorilor ++ şi – – 954
Motive pentru supraîncărcarea operatorilor cu funcţii friend 955
Supraîncărcarea operatorului new 956
Supraîncărcarea operatorului delete 957
Supraîncărcarea operatorilor new şi delete pentru matrice 958
Supraîncărcarea operatorului de matrice [ ] 959
Supraîncărcarea operatorului apel de funcţie () 960
Supraîncărcarea operatorului pointer -> 961
Supraîncărcarea operatorului virgulă , 962
Abstractizarea 963
Alocarea unui pointer la o clasă 964
Eliminarea unui pointer la o clasă 965
Eliminarea spaţiului alb care precede o intrare 966
Bibliotecile de clase 967
Plasaţi definiţiile claselor dumneavoastră în fişiere antet 968
Utilizarea cuvântului cheie inline cu funcţiile membre ale clasei 969
Iniţializarea unei matrice de clase 970
Distrugerea unei matrice de clase 971
Crearea unor matrice de clase iniţializate 972
Iniţializarea unei matrice cu un constructor cu mai multe argumente 973
Crearea unei matrice iniţializate sau crearea unei matrice neiniţializate 974
Lucrul cu matricele de clase 975
Cum manevrează memoria matricele de clase 976
Codul din interiorul unei clase poate fi modificat 977
Stocarea de tip static 978
I/O în C++
Sincronizarea operaţiilor de I/O utilizând stdio 979
Fluxurile de I/O din C++ 980
Fluxurile de ieşire din C++ 981
fluxurile de intrare din C++ 982
Utilizarea membrilor clasei ios pentru formatarea ieşirilor şi intrărilor 983
Indicatoare de formatare 984
Ştergerea indicatoarelor de format 985
Utilizarea funcţiei setf supraîncărcate 986
Examinarea indicatorelor de format curente 987
Poziţionarea tuturor indicatoarelor 988
Utilizarea funcţiei precision 989
Utilizarea funcţiei fill 990
Manipulatorii 991
Utilizarea manipulatorilor pentru a formata intrările şi ieşirile 992
O comparaţie între manipulatori şi funcţiile membre 993
Crearea propriilor funcţii de inserare 994
Supraîncărcarea operatorului de extragere 995
Altă modalitate de a supraîncărca operatorul de inserare pentru cout 996
Crearea propriilor funcţii de extragere 997
Un exemplu de extractor 998
Crearea propriilor funcţii manipulator 999
Crearea manipulatorilor fără parametri 1000
Utilizarea parametrilor cu manipulatorii 1001
Vechea bibliotecă de clase de fluxuri 1002
Deschiderea unui fişier flux 1003
Închiderea unui fişier flux 1004
Citirea şi scrierea datelor în fluxurile fişiere 1005
Testarea stării unei operaţii cu fişiere 1006
Utilizarea mai multor operaţii cu fişierele flux 1007
Efectuarea unei operaţii de copiere binară 1008
Clasa streambuf 1009
Un exemplu simplu de streambuf 1010
Citirea datelor binare utilizând funcţia read 1011
Scrierea datelor binare utilizând funcţia write 1012
Utilizarea funcţiei membru gcount 1013
Utilizarea funcţiilor get supraîncărcate 1014
Utilizarea metodei getline 1015
Detectarea sfârşitului de fişier 1016
Utilizarea funcţiei ignore 1017
Utilizarea funcţiei peek 1018
Utilizarea funcţiei putback 1019
Determinarea poziţiei curente dintr-un flux 1020
Controlul indicatorului de fişier flux 1021
Utilizarea funcţiilor seekg şi seekp pentru acces aleator 1022
Manevrarea poziţiei indicatorului de fişier 1023
Determinarea stării curente a unui flux de intrare/ieşire 1024
Clasele de matrice de intrare-ieşire 1025
Fluxurile de tip şir de caractere 1026
Utilizarea clasei istrstream pentru scrierea unui şir de caractere 1027
Clasa ostrstream 1028
Utilizarea formelor supraîncărcate pentru istrstream 1029
Utilizarea funcţiei pcount cu matrice de ieşire 1030
Manevrarea fluxurilor matrice cu funcţiile membre din ios 1031
Utilizarea clasei strstream 1032
Efectuarea accesului aleator cu o matrice flux 1033
Utilizarea manipulatorilor cu fluxurile matrice 1034
Utilizarea unui operator de inserare personalizat cu fluxurile matrice 1035
Utilizarea operatorilor de extragere personalizaţi cu fluxurile matrice 1036
Utilizarea matricelor dinamice cu fluxurile de I/O 1037
Utilitatea pentru formatarea fluxurilor matrice 1038
Manipulatorul ends 1039
Invocarea unui obiect de către altul 1040
Informarea compilatorului despre o clasă 1041
Să recapitulăm funcţiile friend 1042
Declararea clasei cititor ca friend 1043
Alt exemplu de clasă friend 1044
Eliminarea necesităţii instrucţiunii class nume_clasa 1045
Restricţionarea accesului unei clase friend 1046
Conflictele de nume şi clasele friend 1047
Moştenire şi polimorfism
Moştenirea în C++ 1048
Clasele de bază şi cele derivate 1049
Derivarea unei clase 1050
Constructorii de bază şi cei derivaţi 1051
Utilizarea membrilor de tipul protected 1052
Când utilizăm membrii de tip protected 1053
Recapitularea moştenirii publice şi private 1054
Moştenirea protejată a clasei de bază 1055
Moştenirea multiplă 1056
O moştenire multiplă simplă 1057
Ordinea constructorilor şi clasele de bază 1058
Declararea unei clase de bază ca privată 1059
Funcţiile destructor şi moştenirea multiplă 1060
Conflictele de nume între clasele derivate şi cele de bază 1061
Rezolvarea conflictelor de nume dintre clasele de bază şi cele derivate 1062
Când execută clasele moştenitori constructorii 1063
Un exemplu de constructor al unei clase moştenite 1064
Cum se transmit parametrii constructorilor clasei de bază 1065
Declaraţiile de acces şi clasele derivate 1066
Utilizarea declaraţiilor de acces cu clasele derivate 1067
Evitarea ambiguităţilor în clasele de bază 1068
Clasele de bază virtuale 1069
Clasele friend mutuale 1070
Cum poate o clasă derivată să devină o clasă de bază 1071
Utilizarea membrilor de tipul protected în clasele derivate 1072
Definirea datelor statice ale unei clase 1073
Iniţializarea unei date membre de tip static 1074
Accesul direct la o dată membră de tip static 1075
Datele membre de tip static private 1076
Funcţiile membre de tip static 1077
Accesul direct la o funcţie publică statică 1078
Utilizarea tipurilor speciale ca membri de clasă 1079
Imbricarea unei clase 1080
Subclasele şi superclasele 1081
Instrucţiuni inline în limbaj de asamblare incluse într-o metodă 1082
Membrii unei clase pot fi recursivi 1083
Pointerul this 1084
Cum diferă pointerul this de alţi pointeri 1085
Legare la compilare şi legare la execuţie 1086
Pointeri la clase 1087
Folosirea aceluiaşi pointer cu clase diferite 1088
Conflictele de nume între clasa de bază şi cele derivate 1089
Funcţiile virtuale 1090
Moştenirea atributului virtual 1091
Funcţiile virtuale sunt ierarhice 1092
Implementarea polimorfismului 1093
Funcţiile virtuale pure 1094
Clasele abstracte 1095
Utilizarea funcţiilor virtuale 1096
Mai multe despre legarea la compilare şi legarea la execuţie 1097
Cum alegem între legarea la compilare şi legarea la execuţie 1098
Un exemplu de program cu legare la execuţie 1099
Definirea unui manipulator al unui flux de ieşire 1100
Este timpul să aruncăm o privire către iostream.h 1101
Utilizarea operatorului sizeof cu o clasă 1102
Atributele private, public şi protected se pot aplica şi structurilor 1103
Conversiile claselor 1104
Convertirea datelor într-un constructor 1105
Atribuirea unei clase altei clase 1106
Utilizarea funcţiilor friend pentru conversii 1107
Cum determinăm dacă operatorii măresc sau scad lizibilitatea 1108
Funcţii generice şi şabloane
Şabloanele 1109
Utilizarea unui şablon simplu 1110
Funcţiile generice 1111
Şabloane care acceptă mai multe tipuri 1112
Mai multe despre şabloanele care acceptă mai multe tipuri generice 1113
Supraîncărcarea explicită a unei funcţii generice 1114
Restricţiile asupra funcţiilor generice 1115
Utilizarea unei funcţii generice 1116
Utilizarea unei funcţii generice de sortare prin metoda bulelor 1117
Utilizarea funcţiilor generice pentru compactarea unei matrice 1118
Unde plasăm şabloanele 1119
Şabloanele elimină şi clasele duplicate 1120
Clasele generice 1121
Utilizarea claselor generice 1122
Crearea unei clase generice cu două tipuri generice 1123
Crearea unui manipulator parametrizat 1124
Crearea unei clase matrice generică 1125
Tratarea excepţiilor şi portabilitatea tipurilor
Tratarea excepţiilor 1126
Forma de bază a tratării excepţiilor 1127
Scrierea unui manipulator de excepţii simplu 1128
Instrucţiunea throw 1129
Excepţiile sunt specifice tipurilor 1130
Lansarea excepţiilor cu o funcţie din cadrul blocului try 1131
Plasarea unui bloc try într-o funcţie 1132
Când se execută instrucţiunea catch 1133
Utilizarea mai multor instrucţiuni catch cu un singur bloc try 1134
Utilizarea operatorului puncte de suspensie (…) cu excepţii 1135
Captarea tuturor excepţiilor dintr-un singur bloc try 1136
Captarea excepţiilor explicite şi a excepţiilor generice într-un singur bloc try 1137
Restricţionarea excepţiilor 1138
Relansarea unei excepţii 1139
Aplicaţii ale tratării excepţiilor 1140
Utilizarea argumentelor implicite ale funcţiilor 1141
Evitarea erorilor cu argumentele implicite ale funcţiilor 1142
Argumentele implicite şi supraîncărcarea funcţiilor 1143
Crearea funcţiilor de conversie 1144
Utilizarea funcţiilor conversie pentru a perfecţiona portabilitatea tipurilor 1145
Funcţiile de conversie şi operatorii supraîncărcaţi 1146
Noii operatori C++ de modelare 1147
Utilizarea operatorului const_cast 1148
Utilizarea operatorului dynamic_cast 1149
Utilizarea operatorului reinterpret_cast 1150
Utilizarea operatorului static_cast 1151
Namespace 1152
Utilizarea cuvântului cheie namespace 1153
Utilizarea instrucţiunii using cu namespace 1154
Identificarea tipului în timpul rulării 1155
Utilizarea operatorului typeid pentru identificarea tipului în timpul rulării 1156
Clasa typeinfo 1157
Cuvântul cheie mutable 1158
Utilizarea cuvântului cheie mutable într-o clasă 1159
Observaţii în legătură cu cuvântul cheie mutable 1160
Prezentarea tipului bool de date 1161
Utilizarea tipului de date bool 1162
Crearea unui exemplu de clasă reutilizabilă
Crearea unui tip de sir 1163
Definirea caracteristicilor tipului şir de caractere 1164
Crearea clasei siruri 1165
Scrierea constructorilor pentru clasa siruri 1166
Intrări/ieşiri cu clasa siruri 1167
Scrierea funcţiilor de atribuire pentru clasa şiruri 1168
Supraîncărcarea operatorului + pentru a concatena obiecte şiruri 1169
Eliminarea unui şir de caractere din cadrul unui obiect siruri 1170
Supraîncărcarea operatorilor relaţionali 1171
Determinarea dimensiunii unui obiect siruri 1172
Conversia unui obiect siruri într-o matrice de caractere 1173
Utilizarea obiectului siruri ca matrice de caractere 1174
Demonstrarea obiectului siruri 1175
Crearea unui antet pentru clasa siruri 1176
Alt exemplu de clasă de tip siruri 1177
Utilizarea unei clase C++ pentru a crea o listă dublu înlănţuită 1178
Membrii clasei cu liste dublu înlănţuite 1179
Funcţiile redaurmator şi redaprecedent 1180
Funcţiile de supraîncărcare a operatorilor 1181
Moştenirea clasei obiect_lista 1182
Clasa listelor înlănţuite 1183
Funcţia de memorare a clasei listelor înlănţuite 1184
Funcţia de ştergere a clasei listelor înlănţuite 1185
Funcţiile redastart şi redafinal 1186
Afişarea listei înlănţuite în ordine ascendentă 1187
Afişarea listei înlănţuite în ordine inversă 1188
Căutarea în listă 1189
Implementarea unui program simplu care foloseşte clasa listelor înlănţuite 1190
Crearea unei clase generice listă dublu înlănţuită 1191
Membrii clasei generice obiect_lista 1192
Clasa generică lista_inl 1193
Utilizarea claselor generice cu o listă de caractere 1194
Utilizarea claselor generice cu o listă double 1195
Utilizarea claselor generice cu o structură 1196
Supraîncărcarea operatorului de comparare == 1197
Alte perfecţionări aduse listei generice 1198
Utilizarea obiectelor cu funcţia de memorare 1199
Scrierea unei funcţii pentru a determina lungimea listei 1200
Biblioteca standard de şabloane
Prezentarea bibliotecii de şabloane standard 1201
Fişierele antet ale bibliotecii de şabloane standard 1202
Containerele 1203
Utilizarea unui exemplu de container 1204
Prezentarea containerelor bibliotecii standard de şabloane 1205
Containerele de avansare şi containerele reversibile 1206
Containerele secvenţiale ale bibliotecii standard de şabloane 1027
De ce am utilizat instrucţiunea using namespace std 1208
Containerele asociative ale bibliotecii standard de şabloane 1209
Iteratorii 1210
Un exemplu de iterator 1211
Să înţelegem mai bine tipurile de iteratori de intrare şi de ieşire ai bibliotecii
standard de şabloane 1212
Alte tipuri de iteratori ai bibliotecii standard de şabloane 1213
Conceptele 1214
Modelele 1215
Algoritmii 1216
Utilizarea altui exemplu de algoritm al bibliotecii standard de şabloane 1217
Descrierea algoritmilor cuprinşi în biblioteca standard de şabloane 1218
Studierea algoritmului for_each 1219
Studierea algoritmului generate_n 1220
Algoritmul random_shuffle 1221
Utilizarea algoritmului partial_sort_copy 1222
Algoritmul merge 1223
Algoritmul inner_product 1224
Vectorii 1225
Utilizarea unui alt exemplu simplu de program cu vectori 1226
O comparaţie între vectori şi matricele din C 1227
Containerul secvenţial bit_vector 1228
Utilizarea unui exemplu simplu cu bit_vector 1229
Tipul list 1230
Componentele generice ale containerului list 1231
Construirea unui obiect de tipul list 1232
Inserarea obiectelor în listă 1233
Utilizarea funcţiei membre assign 1234
Utilizarea funcţiilor membre remove şi empty 1235
Traversarea obiectului list 1236
Tipul slist 1237
Inserările într-un container secvenţial slist 1238
Containerul deque 1239
Utilizarea containerului deque 1240
Utilizarea funcţiilor membre erase şi clear 1241
Utilizarea operatorului de matrice [ ] cu o coadă 1242
Utilizarea iteratorilor inverşi cu o coadă 1243
Manevrarea dimensiunii unei cozi 1244
Obiectul map 1245
Un exemplu simplu de map 1246
Utilizarea funcţiilor membre pentru manevrarea obiectelor map 1247
Controlarea dimensiunii şi conţinutului unui obiect map 1248
Tipul set 1249
Un exemplu simplu de set 1250
Introducere în programarea în Windows
Introducere în programarea WIN32 1251
Alte diferenţe între programele DOS şi Windows 1252
Prezentarea firelor de execuţie (threads) 1253
Mesajele 1254
Componentele Windows 1255
Prezentarea ferestrelor părinte şi ferestrelor copil 1256
Crearea unui program generic în Windows 1257
Fişierele resursă 1258
Identificatori Windows 1259
Definirea tipurilor de identificatori Windows 1260
Fişierul antet generic.h 1261
Funcţiile callback 1262
Prezentarea interfeţei pentru programarea aplicaţiilor sistemului Windows 1263
Detalii despre programul generic.cpp 1264
Funcţia winmain 1265
Crearea ferestrelor 1266
Funcţia createwindow 1267
Funcţia showwindow 1268
Funcţia registerclass 1269
Mai multe despre mesaje 1270
Utilizarea funcţiei translatemessage pentru prelucrarea mesajelor 1271
Utilizarea funcţiei dispatchmessage pentru prelucrarea mesajelor 1272
Componentele unui program Windows simplu 1273
Tipul LPCTSTR 1274
Tipul DWORD 1275
Clasele predefinite din Windows 1276
Utilizarea claselor predefinite pentru a crea o fereastră simplă 1277
Windows trimite un mesaj WM_CREATE când creează o fereastră 1278
Stilurile ferestrelor şi controalelor 1279
Crearea ferestrelor cu stiluri extinse 1280
Eliminarea ferestrelor 1281
Funcţia API registerclassex 1282
Ataşarea informaţiilor în fereastră cu setprop 1283
Utilizarea funcţiei enumprops pentru listarea proprietăţilor ferestrelor 1284
Funcţiile callback 1285
Funcţia messagebox 1286
Funcţia messagebeep 1287
Mesaje şi meniuri
Din nou despre mesaje 1288
Fluxul mesajelor 1289
Componentele structurii MSG 1290
Funcţia peekmessage 1291
Funcţia postmessge 1292
Funcţia sendmessage 1293
Utilizarea funcţiei replymessage 1294
Mesaje de interceptare 1295
Utilizarea funcţiei setwindowshookex 1296
Funcţia exitwindowex 1297
Tipurile de meniu 1298
Structura meniurilor 1299
Crearea unui meniu în fişierul resursă 1300
Decriptorii popup şi menuitem 1301
Adăugarea unui meniu în fereastra aplicaţiei 1302
Schimbarea meniurilor în aplicaţie 1303
Mesajele generate de meniu 1304
Funcţia loadmenu 1305
Utilizarea funcţiei modifymenu 1306
Utilizarea funcţiei enablemenuitem pentru a controla meniurile 1307
Utilizarea funcţiei appendmenu pentru extinderea unui meniu 1308
Utilizarea funcţiei deletemenu pentru a şterge selecţii din meniu 1309
Utilizarea articolelor de meniu cu tastele de accelerare 1310
Crearea unei tabele de accelerare simplă 1311
Structura fişierului de resurse 1312
Prezentarea tabelelor cu şiruri 1313
Resursele personalizate 1314
Încărcarea în program a tabelelor de şiruri cu funcţia loadstring 1315
Listarea conţinutului unui fişier resursă 1316
Utilizarea funcţiei enumresourcetypes cu fişierele de resurse 1317
Încărcarea resurselor în program cu findresource 1318
Casete de dialog
Casetele de dialog 1319
Definirea tipurilor de casete de dialog 1320
Utilizarea tastaturii cu casetele de dialog 1321
Componentele şablonului de casetă de dialog 1322
Crearea unui şablon pentru casete de dialog 1323
Componentele definiţiei casetei de dialog 1324
Definirea controalelor din casetele de dialog 1325
Utilizarea macrocomenzii dialogbox pentru a afişa o casetă de dialog 1326
Bucla de mesaje a casetei de dialog 1327
Mai multe despre manipularea controalelor 1328
Macrocomanda createdialog 1329
Funcţia createdialogparam 1330
Prelucrarea implicită a mesajelor în caseta de dialog 1331
Utilizarea funcţiei dlgdirlist pentru a crea o casetă de dialog tip listă 1332
Răspunsurile la selecţiile utilizatorului în caseta listă 1333
Închiderea casetei de dialog 1334
Intrările de la utilizator 1335
Răspunsul la evenimentele generate de mouse 1336
Utilizarea mesajului wm_mousemove 1337
Citirea butoanelor mouse-ului 1338
Răspunsul la evenimentele de la tastatură 1339
Tastele virtuale 1340
Utilizarea tastelor virtuale 1341
Utilizarea mesajului wm_keydown 1342
Fixarea şi restabilirea timpului de dublu clic al mouse-ului 1343
Inversarea butoanelor mouse-ului 1344
Determinarea acţionării unei taste de către utilizator 1345
Barele de derulare 1346
Diferitele tipuri de bare de derulare 1347
Utilizarea funcţiei showscrollbar 1348
Poziţia şi intervalul unei bare de derulare 1349
Mesajele barei de derulare 1350
Obţinerea configuraţiei curente a barei de derulare 1351
Derularea conţinutului ferestrei 1352
Mesajul WM_SIZE 1353
Mesajul WM_PAINT 1354
Alte mesaje pentru bara de derulare captate de program 1355
Activarea şi dezactivarea barelor de derulare 1356
Utilizarea funcţiei scrolldc 1357
Gestionarea memoriei în Windows
Modelul de memorie WIN32 1358
Memoria globală şi locală 1359
Memoria virtuală 1360
Din nou despre memoria heap 1361
Alocarea unui bloc de memorie din memoria heap globală 1362
Utilizarea funcţiei globalrealloc pentru a schimba dinamic dimensiunea memoriei heap 1363
Descărcarea unui bloc de memorie alocată 1364
Utilizarea funcţiei globalfree 1365
Utilizarea funcţiilor globallock şi globalhandle 1366
Testarea memoriei calculatorului 1367
Crearea unui heap într-un proces 1368
Utilizarea funcţiilor heap pentru gestionarea proceselor specifice de memorie 1369
Testarea dimensiunii memorie alocate din heap 1370
Alocarea unui bloc de memorie virtuală 1371
Paginile de gardă 1372
Blocurile de memorie virtuală 1373
Eliberarea memoriei virtuale 1374
Gestionarea paginilor de memorie virtuală 1375
Procese şi fire de execuţie
Procesele 1376
Crearea unui proces 1377
Terminarea proceselor 1378
Extinderea prin procese copil 1379
Alte operaţii cu procese copil 1380
Rularea proceselor copil detaşate 1381
Firele de execuţie 1382
Evaluarea necesităţii firelor 1383
Când nu trebuie creat un fir 1384
Crearea unui fir simplu 1385
Vizualizarea lansării firului 1386
Paşii efectuaţi de sistemul de operare la crearea firului 1387
Cum determinăm dimensiunea stivei de fir 1388
Obţinerea unui identificator pentru firul sau procesul curent 1389
Gestionarea timpului de prelucrare a firului 1390
Gestionarea timpului de prelucrare al firelor multiple 1391
Funcţia getqueuestatus 1392
Gestionarea excepţiilor netratate 1393
Terminarea firelor 1394
Determinarea identificatorului ID al unui fir sau proces 1395
Modul cum sistemul de operare programează firele 1396
Nivelurile de prioritate 1397
Clasele de prioritate Windows 1398
Modificarea clasei de prioritate a unui proces 1399
Stabilirea unei priorităţi relative pentru un fir 1400
Obţinerea nivelului de prioritate firului curent 1401
Obţinerea contextului unui fir 1402
Întreruperea şi reluarea executării firelor 1403
Sincronizarea firelor 1404
Definirea celor cinci obiecte majore de sincronizare 1405
Crearea unei secţiuni critice 1406
Utilizarea unei secţiuni critice simple 1407
Utilizarea funcţiei waitforsingleobject pentru sincronizarea a două fire 1408
Utilizarea funcţiei waitformultipleobjects pentru sincronizarea firelor multiple 1409
Crearea unei excluderi reciproce 1410
Un exemplu de utilizare a unei excluderi reciproce 1411
Utilizarea semafoarelor 1412
Utilizarea unui procesor de eveniment simplu 1413
Interfaţa cu dispozitivele grafice
Ce este interfaţa cu dispozitivele grafice (gdi)? 1414
Motivele utilizării interfeţei cu dispozitivele grafice 1415
Contextele de dispozitiv 1416
Utilizarea contextelor de dispozitiv private 1417
Origini şi extinderi 1418
Obţinerea unui context de dispozitiv pentru o fereastră 1419
Crearea unui context de dispozitiv pentru o imprimantă 1420
Utilizarea lui createcompatibledc pentru crearea unui context de dispozitiv de memorie 1421
Pericolele funcţiei createdc 1422
Utilizarea funcţiei createfont 1423
Utilizarea funcţiei enumfontfamilies 1424
Afişarea de fonturi multiple cu createfunctionindirect 1425
Regăsirea caracteristicilor unui dispozitiv 1426
Utilizarea funcţiei getsystemmetrics pentru a analiza o fereastră 1427
Utilizarea funcţiei getsystemmetrics 1428
Obţinerea contextului de dispozitiv al unei ferestre întregi 1429
Eliberarea contextelor de dispozitiv 1430
Blocuri de bitmap, metafişiere şi pictograme
Obţinerea unui identificator de fereastră din contextul de dispozitiv 1431
Ce este un bitmap dependent de dispozitiv 1432
Bitmap independent de dispozitiv 1433
Crearea blocurilor bitmap 1434
Afişarea blocurilor bitmap 1435
Producerea blocurilor bitmap DIB 1436
Umplerea cu un model a unui dreptunghi 1437
Utilizarea funcţiei setdibits 1438
Setdibitstodevice utilizată pentru afişarea unui bitmap pe un dispozitiv dat 1439
Metafişierele 1440
Crearea şi afişarea unui metafişier 1441
Enumerarea metafişierelor extinse 1442
Utilizarea funcţiei getwinmetafilebits 1443
Pictogramele 1444
Crearea pictogramelor 1445
Crearea unei pictograme dintr-o resursă 1446
Utilizarea funcţiei createiconindirect 1447
Utilizarea funcţiei loadicon 1448
Utilizarea funcţiei loadimage pentru încărcarea mai multor tipuri grafice 1449
Intrări/ieşiri în Windows
Operaţiile de intrare/ieşire (I/O) cu fişiere în Windows 1450
Canalele de transfer, resursele, dispozitivele şi fişierele 1451
Utilizarea funcţiei createfile pentru deschiderea fişierelor 1452
Utilizarea funcţiei createfile cu diferite dispozitive 1453
Utilizarea identificatorilor de fişier 1454
Din nou despre pointerii de fişier 1455
Utilizarea funcţiei writefile pentru scrierea în fişier 1456
Utilizarea funcţiei readfile pentru citirea din fişier 1457
Închiderea fişierului 1458
Partajarea datelor prin maparea fişierelor 1459
Maparea unui fişier în memoria virtuală 1460
Maparea unei vizualizări de fişier în cadrul procesului curent 1461
Deschiderea unui obiect de mapare fişier denumit 1462
Atributele de fişier 1463
Obţinerea şi schimbarea atributelor de fişier 1464
Obţinerea dimensiunii unui fişier 1465
Obţinerea marcajului de timp al unui fişier 1466
Crearea directoarelor 1467
Obţinerea şi stabilirea directorului curent 1468
Obţinerea directoarelor windows şi de sistem 1469
Ştergerea directoarelor 1470
Copierea fişierelor 1471
Mutarea şi redenumirea fişierelor 1472
Ştergerea fişierelor 1473
Utilizarea funcţiei findfirstfile pentru localizarea fişierelor 1474
Utilizarea funcţiei findnextfile 1475
Închiderea identificatorului de căutare cu findclose 1476
Căutarea atributelor cu funcţiile findfile 1477
Utilizarea funcţiei searchpath în locul funcţiei find pentru căutări 1478
Obţinerea unei căi de acces temporare 1479
Crearea fişierelor temporare 1480
Prezentarea funcţiei createnamedpipe 1481
Conectarea unui canal de transfer 1482
Apelarea unui canal de transfer nominal 1483
Deconectarea unui canal de transfer nominal 1484
Procesarea asincronă 1485
Utilizarea intrărilor şi ieşirilor asincrone 1486
Structura overlapped 1487
Operaţiile de I/O asincrone cu un obiect kernel de dispozitiv 1488
Cotele 1489
Stabilirea unor cote mai joase sau mai ridicate 1490
Funcţia getlasterror 1491
Formatarea mesajelor de eroare cu formatmessage 1492
Operaţii de I/O asincrone cu un obiect kernel de eveniment 1493
Utilizarea funcţiei waitformultipleobjects cu operaţii de I/O asincrone 1494
Prezentarea porturilor de intrare/ieşire de completare 1495
Utilizarea operaţiilor de I/O cu alertă pentru procesări asincrone 1496
Operaţiile de I/O cu alertă funcţionează numai în Windows NT 1497
Utilizarea funcţiilor readfileex şi writefileex 1498
Utilizarea unei rutine callback de încheiere 1499
Utilizarea unui program cu intrări/ieşiri cu alertă 1500