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

 

SUS        VREAU SA CUMPAR ACUM ACEASTA CARTE