• Nenhum resultado encontrado

Tradução e Revisão Técnica L K K J , P .D.

N/A
N/A
Protected

Academic year: 2022

Share "Tradução e Revisão Técnica L K K J , P .D."

Copied!
1030
0
0

Texto

(1)

http://blocofontes.blogspot.com.br/

Convertido para PDF por: Daniel dos Santos

(2)

Kr is Ja m s a, Ph.D.

La r s Kl a n d e r

Tradução e Revisão Técnica

Jeremias René D. Pereira dos Santos Analista de Software

M AKRO N Books do Brasil Editora Ltda.

Rua Tabapuã, 1.348, Itaim-Bibi CEP 04533-004 — São Paulo — SP (011) 829-8604 e (011) 820-6622 makron@book.com.br

São Paulo • Rio de Janeiro • Ribeirão Preto • Belém • Belo H orizonte • Brasília • Campo Grande • Cuiabá • Curitiba • Florianópolis • Fortaleza

Goiânia • M anaus • N atal • Porto Alegre • Recife • Salvador

Barcelona • Bogotá • Buenos Aires • Caracas • Ciudad dei México • Frankfurt • Guadalajara • Lisboa • Londres • Madrid • Montevideo

• New York • Paris • Porto • Santiago

Daniel dos Santos Pinheiro

http://blocofontes.blogspot.com.br/

Tamanho: 34,21MB Tipo: PDF

(3)

Do Original Jamsa’s C/C++ Programmer's Bible Copyright © 1998 by Jamsa Press

Copyright © 1999 MAKRON Books do Brasil Editora Ltda.

Todos os direitos para a língua portuguesa reservados pela MAKRON Books do Brasil Editora Ltda. Nenhuma parte desta publicação poderá ser reproduzida, guardada pelo sistema “retrieval” ou transmitida de qualquer modo ou por

qualquer outro meio, seja este eletrônico, mecânico, de fotocópia, de gravação, ou outros, sem prévia autorização, por escrito, da Editora.

EDITOR: MILTON MIRA DE ASSUMPÇÀO FILHO

Gerente de Produção Silas Camargo

Editora Assistente Eugênia Pessotti

Produtora Editorial Salete Del Guerra

Design de Capa Marianne Helm James Rehrauer

Editoração Eletrônica: ER J Informática Ltda.

Dados de Catalogação na Publicação

Programando em C/C+ + — A Bíblia; Kris Jamsa e Lars Klander traduçáo: e revisão técnica: Jeremias René D. Pereira dos Santos

São Paulo: MAKRON Books, 1999.

Título original: Jamsa’s C/C+ + Programmer’s Bible ISBN: 85.346.1025-8

(4)

S

u m á r io

In t r o d u ç ã o à Li n g u a g e m C

U m a Introdução à P ro g ram açã o ... 1

Criando um A rquivo-Fonte em A S C I I ...2

Com pilando Seu P ro g ra m a ... 3

Com preendendo os Erros de Sintaxe ...4

Estrutura de um Típico Programa em C ... 5

Acrescentando Com andos aos Seus P ro g ram as...6

Exibindo Saída em um a N ova L i n h a ...7

Considera as Letras Maiúsculas e Minúsculas D ife re n te s ...8

Com preendendo os Erros Lógicos ... 9

Com preendendo o Processo de Desenvolvimento de um P rogram a...10

Com preendendo os Tipos de Arquivo ... 11

Com preendendo M elhor o L in k e d ito r ... 12

Com preendendo os Arquivos de C a b e ç a lh o ... 13

Ajudando o Com pilador a Localizar os Arquivos de Cabeçalho . . . 14

Agilizando as C o m p ila ç õ e s...15

C om entando Seus P ro g ra m a s... 16

M elhorando a Legibilidade do Seu P ro g ram a...17

Prestando Atenção às Mensagens de Advertência do Com pilador . 18 Controlando as Advertências do C o m p ila d o r...19

Usando Com entários para Excluir Com andos do Programa ... 20

Com preendendo a Im portância dos N o m e s ... 21

Com preendendo o P o n to -e -V írg u la ...22

A presentando as V ariáveis... 23

A tribuindo um Valor a um a V ariáv el...24

Com preendendo os Tipos de V ariáveis... 25

Declarando Múltiplas Variáveis do Mesmo T i p o ... 26

Com entando Suas Variáveis na Declaração ... 27

A tribuindo Valores às Variáveis na D eclaração ... 28

Inicializando M últiplas Variáveis durante a Declaração ... 29

Usando N om es Representativos para as V ariáveis...30

Com preendendo as Palavras-chave de C ... 31

Com preendendo as Variáveis do T ipo int ... 32

Com preendendo as Variáveis do T ipo c h a r ... 33

Com preendendo as Variáveis do T ipo f l o a t ... 34

Com preendendo as Variáveis do T ipo double ... 35

A tribuindo Valores aos Valores em Ponto F l u t u a n t e ... 36

Com preendendo os Modificadores de T i p o ... 37

Com preendendo o M odificador de T ipo unsigned ... 38

Com preendendo o M odificador de T ip o l o n g ... 39

C om binando os Modificadores de T ip o unsigned e lo n g ... 40

T rabalhando com os Valores Grandes ... 41

Com preendendo o M odificador de T ipo re g iste r... . ... 42

Com preendendo o M odificador de T ipo s h o r t... 43

O m itindo in t das Declarações Modificadas ... 44

Com preendendo o M odificador de T ipo sig n e d ... 45

M últiplas Operações de A trib u iç ã o ... 46

A tribuindo o Valor de um T ipo de Variável a um T ipo D ife re n te ...47

Criando Seus Próprios T i p o s ... 48

Atribuindo um Valor Hexadecimal ou O c t a l ...49

Com preendendo o Extravasam ento... 50

Com preendendo a P recisão... 51

Atribuindo Apóstrofos e O utros Caracteres ... 52

Introdução ao C om ando p r in tf ... 53

Exibindo Valores do T ipo int Usando p r i n t f ...54

Im prim indo um Valor Inteiro O ctal ou H ex ad e cim a l...55

Exibindo Valores do T ipo unsigned int Usando p r i n t f ... 56

Exibindo Valores do T ipo long int Usando p r i n t f ... 57

Exibindo Valores do T ip o float Usando p r i n tf ... 58

Exibindo Valores do T ipo char Usando p r i n t f ...59

Exibindo Valores de Ponto Flutuante em um Formato E x p o n en cial...60

Exibindo Valores em Ponto F lu tu a n te ... 61

Exibindo uma String de Caracteres Usando p r i n t f ... 62

Exibindo um Endereço de Ponteiro Usando p rin tf ... 63

Precedendo um Valor com um Sinal de Adição ou de S u b tra ç ã o ... 64

Form atando um Valor Inteiro Usando p r i n t f ... 65

Saída de Inteiros Preenchida com Zeros ...66

Exibindo um Prefixo Antes dos Valores Octais ou H exadecim ais... 67

Form atando um Valor em Ponto Flutuante Usando p r in tf ... 68

Form atando a Saída E x p o n en cial... 69

Justificando à Esquerda a Saída de p r i n t f ... 70

C om binando os Especificadores de Form ato de p r i n t f ... 71

Q uebrando um a String de Caracteres em Duas L in h a s...72

Exibindo Strings do T ipo near e far ...73

Trabalhando com os Caracteres Escape de p r i n t f ...74

Determ inando o N úm ero de Caracteres Q ue p rin tf Exibiu ...75

Usando o Valor de Retorno de p r i n t f ... 76

Usando o C ontrolador de Dispositivo A N S I ... 77

Usando o C ontrolador ANSI para Limpar Sua T e l a ... 78

Usando o C ontrolador ANSI para Exibir as Cores da T e la ... 79

Usando o C ontrolador ANSI para Posicionar o Cursor ...80

Executando Operações Matemáticas Básicas em C ... 81

Com preendendo a Aritmética do M ó d u lo ...82

Com preendendo a Precedência e a Associatividade dos O p erad o res... 83

Forçando a O rdem de Avaliação dos O peradores ...84

Com preendendo o O perador de Incremento de C ...85

Com preendendo o O perador de Decremento de C ... 86

Com preendendo um a Operação O U Bit a B i t ... 87

Com preendendo um a O peração E Bit a B i t ... 88

Com preendendo um a Operação O U Exclusivo Bit a B i t ... 89

Com preendendo a O peração Inverso Bit a B i t ... 90

Aplicando um a Operação ao Valor de um a V ariáv el...91

Com preendendo o O perador Condicional de C ... 92

Com preendendo o O perador sizeof de C ... 93

Efetuando um Deslocamento Bit a Bit ... 94

Efetuando um a Rotação Bit a B i t ... 95

Com preendendo os Operadores C o n d icio n ais...96

Com preendendo o Processamento Iterativ o ... 97

Com preendendo C om o C Representa Verdadeiro e Falso ...98

T estando um a Condição com i f ... 99

Com preendendo os Com andos Simples e C o m p o sto s... 100

Testando a Ig u ald ad e... 101

Efetuando Testes R elacionais... 102

Executando um a Operação Lógica E para Testar Duas Condições ...103

Executando um a Operação Lógica O U para Testar Duas Condições ... 104

Executando um a Operação Lógica N Ã O ( N O T ) ... 105

A tribuindo o Resultado de um a Condição ... 106

D eclarando Variáveis D entro de Com andos C o m p o sto s...107

Usando Recuos para M elhorar a L e g ib ilid a d e ...108

Usando a Verificação Estendida de Ctrl+Break ... 109

T estando Valores de Ponto F lu tu a n te ... 110

Laço de Repetição Infinito ...111

T estando um a A trib u iç ão ... 112

Cuidado com os Comandos if-if-else... 113

Executando Com andos um Núm ero Específico de V e z e s ... 114

Partes do C om ando for São O p c io n a is ... 115

Decrem entando os Valores em um C om ando f o r ...116

Controlando o Incremento do Laço f o r ... ... 117

Usando Laços for com Valores char e f l o a t ... 118

V

(5)

VI Program and o e m C/C++ — A Bíb l ia

Com preendendo u m Laço N ull ... 119

C om preendendo o Laço Infinito ...120

U sando o O perador Vírgula de C D entro de um Laço f o r ... 121

Evite M odificar o Valor de um a Variável de Controle em um Laço f o r ... ' ...122

Repetindo um ou Mais Com andos Usando um Laço w h ile ... 123

Com preendendo as Partes de um Laço w h ile ... 124

Repetindo um ou Mais Com andos Usando do ...125

Com preendendo o Com ando continue de C ... 126

Finalizando um Laço U sando o C om ando break de C ... 127

Desvios com o C om ando g o t o ...128

Testando M últiplas C o n d iç õ e s ...129

Com preendendo break D entro de s w itc h ... 130

Usando o Case default do Com ando sw itc h ...131

Definindo Constantes no Seu P ro g ram a... 132

Com preendendo a Expansão de Macros e de C o n sta n te s...133

N om eando as Constantes e as M a c r o s ... 134

Usando a Constante de Pré-processador _ F I L E _ ...135

Usando a C onstante de Pré-processador__LIN E.... ...136

Alterando a Contagem de Linha do P ré -p ro cessad o r...137

G erando um Erro Incondicional do P ré-p ro cessad o r...138

O utras Constantes do P ré-processador...139

Registrando a D ata e a H ora do Pré-processador...140

Testando a Adesão ao Padrão A N S I ... 141

Testando C++ versus C ... 142

Anulando a Definição de um a M acro ou C o n s t a n t e ...143

Com parando Macros e F u n ç õ e s ... 144

Com preendendo Pragmas do C o m p ila d o r ... 145

A prendendo sobre os Valores e Macros P re d efin id o s...146

Criando Seus Próprios Arquivos de C ab eçalh o ... 147

Usando #include <nomearq.h> ou #include "n o m e a rq .h " ... 148

Testando Se um Símbolo Está D e fin id o ... 149

Efetuando o Processamento if-else ...150

Efetuando um Teste de Condição de Pré-processador Mais P o d e ro so ... 151

Realizando Processamento if-else e e ls e -if... 152

Definindo Macros e Constantes Q ue Requerem M últiplas L in h a s ... 153

Criando Suas Próprias M a c r o s ...154

N ão Coloque Ponto-e-Vírgula nas Definições de M acros ... 155

C riando Macros M in e M a x ... 156

C riando Macros Q U A D R A D O e C U B O ... 157

C uidado com os Espaços nas Definições das M a c ro s ...158

Com preendendo Com o Usar os Parênteses ...159

As Macros N ão Têm T i p o ... 160

Co m p r e e n d e n d oa s St r i n g s Visualizando um a String de C ...161

C om o o Com pilador Representa um a String de C a ra c te re s... 162

C om o C Armazena as Strings de C aracteres...163

A prendendo Com o ‘A’ Difere de “A” ... 164

Representando um Apóstrofo D entro de um a Constante de S t r i n g ... 165

D eterm inando o Tam anho de um a S t r i n g ... 166

Usando a Função strlen ... 167

Copiando os Caracteres de um a String em O utra S tr in g ...168

Anexando o C onteúdo de um a String em O u t r a ...169

Anexando n Caracteres em um a S trin g ...170

Transform ando um a String em O u t r a ... 171

N ão Ultrapasse o Tam anho de um a String ...172

D eterm inando Se Duas Strings São ou N ão Iguais ...173

Ignorando a Caixa ao D eterm inar Se as Strings São I g u a i s ... 174

Convertendo um a String de Caracteres para Maiúsculas ou Minúsculas ... 175

O btendo a Primeira O corrência de u m Caractere em um a String ...176

R etornando um índice à Primeira Ocorrência de um a String . . . 177

E ncontrando a U ltim a O corrência de um Caractere em um a String ... 178

Retornando um índice à Ú ltim a O corrência de um a S trin g ... 179

Trabalhando com Strings do T ipo f a r ...180

Escrevendo Funções String para as Strings f a r ... 181

Contando o N úm ero de Ocorrências de um Caractere em uma S trin g ... 182

Invertendo o C onteúdo de um a S t r i n g ... 183

A tribuindo um Caractere Específico a um a String I n te ira ...184

Com parando Duas Strings de Caracteres ...185

Com parando os Primeiros n Caracteres de Duas Strings ...186

Com parando Strings sem Considerar a C a ix a ... 187

Convertendo a Representação em String de Caracteres de um N ú m e r o ...188

Duplicando o C onteúdo de uma String ...189

Encontrando um Caractere da Primeira Ocorrência de um D eterm inado C o n ju n to ... 190

Localizando um a Substring D entro de um a S t r i n g ...191

C ontando o N úm ero de Ocorrências da S u b strin g ...192

O btendo um índice para um a S u b strin g ...193

O btendo a Ocorrência Mais à Direita de uma S u b s tr in g ... 194

Exibindo um a String sem o Específicador de Form ato % s ...195

Removendo um a Substring de D entro de um a String ... 196

Substituindo um a Substring por O u t r a ... 197

Convertendo um a Representação Num érica A S C II...198

D eterm inando Se um Caractere É Alfanumérico ... 199

D eterm inando Se um Caractere É um a L e t r a ... 200

D eterm inando Se um Caractere C ontém um Valor A S C II... 201

D eterm inando Se um Caractere É um Caractere de Controle . . . 202

D eterm inando Se um Caractere É um D íg ito ... 203

D eterm inando Se um Caractere É u m Caractere G r á fic o ... 204

D eterm inando Se um Caractere É Maiúsculo ou M inúsculo . . . . 205

D eterm inando Se um Caractere É Imprimível ... 206

D eterm inando Se um Caractere É um Sinal de P o n tu ação ...207

D eterm inando Se um Caractere C ontém Espaço em Branco . . . . 208

D eterm inando Se um Caractere É um Valor H exadecim al...209

Convertendo um Caractere para M aiú scu la... 210

Convertendo um Caractere para Minúsculo ... 211

Trabalhando com Caracteres ASCII ...212

Escrevendo Saída Formatada em um a Variável S trin g ... 213

Lendo a Entrada de um a String de Caracteres ... 214

"Tokenizando" as Strings para Poupar Espaço ... 215

Inicializando um a S t r i n g ... 216

Fu n ç õ e s Com preendendo as Funções ... 217

Usando Variáveis D entro das Funções ... 218

Com preendendo main C om o um a F u n ç ã o ... 219

Introdução aos P arâm etro s... 220

Usando Parâmetros M ú ltip lo s ...221

Com preendendo as Declarações de Parâmetros em Programas C Mais A n tig o s ...222

Retornando um Valor de um a Função ... 223

Com preendendo o C om ando r e t u r n ...224

Com preendendo os Protótipos de F u n ç ã o ...225

Com preendendo a Biblioteca de Execução ... 226

Com preendendo os Parâmetros Formais e R e a is ... 227

Solucionando os Conflitos nos N o m e s ... 228

Funções Q ue N ão Retornam i n t ... 229

Com preendendo as Variáveis Locais ...230

Com o as Funções Usam a Pilha ...231

Com preendendo a Sobrecarga da F u n ç ã o ...232

Com preendendo O nde C Coloca as Variáveis L o c a is ... 233

D eclarando Variáveis Globais ... 234

Evite Usar Variáveis G lo b a is ...235

Solucionando os Conflitos de Nomes de Variáveis Locais e G lo b a is... 236

D efinindo M elhor o Escopo de um a Variável G lo b a l ...237

Com preendendo a C ham ada por V a lo r ... 238

Evitando a Alteração no Valor do Parâmetro com a Chamada por V a l o r ...239

Com preendendo a Chamada por R eferên cia... 240

(6)

Sumário VII

O btendo um E n d e re ç o ... 241

Usando um Endereço de M e m ó ria ...242

Alterando o Valor de um P arâm etro ... 243

Alterando Somente Parâmetros Específicos...244

A Chamada por Referência Ainda Usa a P ilh a ... 245

Introduzindo as Variáveis de Funções que L e m b ra m ...246

Com preendendo Com o C Inicializa Variáveis E státicas... 247

Usando a Seqüência de C ham ada Pascal ... 248

Com preendendo o Efeito da Palavra-Chave P a sc a l... 249

Escrevendo um Exemplo de Linguagem M is ta ... 250

Com preendendo a Palavra-Chave cdecl ...251

Com preendendo a R e c u rsã o ... 252

Com preendendo a Função Recursiva F ato ria l... 253

Programando O u tro Exemplo Recursivo ... 254

Exibindo Valores para Com preender M elhor a R e cu rsão ...255

Com preendendo a Recursão D ireta e I n d i r e t a ... 256

D ecidindo Usar ou N ão a R e c u rsã o ...' . . 257

Com preendendo Por Q ue as Funções Recursivas São Lentas . . . . 258

Com preendendo Com o Remover a R e cu rsão ... 259

Passando Strings para as F u n ç õ e s ... 260

Passando Elementos Específicos da M a t r i z ... 261

Com preendendo const em Parâmetros F o rm a is ...262

Usar const N ão Impede a Modificação do Parâmetro ... 263

Com preendendo as Declarações de Strings Não-Lim itadas ... 264

Usando Ponteiros versus Declarações de S trin g ... 265

C om o C Usa a Pilha para os Parâmetros S trin g ...266

Com preendendo as Variáveis E x te rn a s ...267

Colocando extern em Uso ... 268

Com preendendo a Variável Estática Externa ... 269

Com preendendo a Palavra-chave volatile ... 270

Com preendendo a Estrutura de C ham ada e o Ponteiro de B a se ...271

C ham ando um a Função em Linguagem A ssem bly... 272

Retornando um Valor a partir de um a Função em Linguagem A ssem bly... 273

Introduzindo Funções Q ue N ão Retornam V a lo re s... 274

Com preendendo as Funções Q ue N ão Usam Parâmetros ...275

Com preendendo a Palavra-chave auto ... 276

Com preendendo o E s c o p o ... 277

Com preendendo as Categorias de Escopo de C ...278

Com preendendo o Espaço do Nom e e os Identificadores ... 279

Com preendendo a Visibilidade do Identificador ... 280

Com preendendo a Duração ... 281

Funções Q ue Suportam um N úm ero Variável de Parâmetros . . . 282

Suportando um N úm ero Variável de P a râ m e tro s... 283

C om o va_start, va_arg e va_end Funcionam ... 284

Criando Funções Q ue Suportam M uitos Parâmetros e Tipos . . . 285

Op e r a ç õ e s d e Te c l a d o Lendo um Caractere do Teclado ... 286

Exibindo um Caractere de S a íd a ... 287

Com preendendo a Entrada Bufferizada ... 288

A tribuindo E ntrada do Teclado a um a String ... 289

C om binando getchar e putchar ... 290

Lembre-se, getchar e putchar São M a cro s... 291

Lendo um Caractere Usando E/S D ireta ... 292

Entrada D ireta no Teclado sem a Exibição do C a ra c te re ...293

Sabendo Q uando Usar ‘\r* e ‘\n ’ ...294

Executando Saída D ir e ta ...295

Colando um a Tecla Digitada de Volta no Buffer do Teclado . . . 296

Saída Formatada Rápida Usando c p r i n t f ... 297

Entrada Rápida Formatada a partir do T e c la d o ...298

Escrevendo um a String de C a racteres...299

Escrita Mais Rápida de String Usando E/S D ir e ta ... 300

Lendo um a String de Caracteres do T e c l a d o ... 301

Executando Entrada de String Mais Rápida peJo T e c la d o ... .. 302

Exibindo Saída em C o r e s ... 303

Limpando a Tela do V íd e o ... 304

Apagando até o Final da Linha A tu a l... 305

Apagando a Linha Atual da Tela ... 306

Posicionando o Cursor para Saída na Tela ... 307

Determ inando a Posição de Linha e de Coluna ... 308

Inserindo um a Linha em Branco na T e l a ...309

Copiando Texto da Tela para um Buffer ...310

Escrevendo um Buffer de Texto em um a Posição Específica da T e l a ... 311

D eterm inando as Definições do M odo T e x t o ...312

C ontrolando as Cores da T e l a ...313

Atribuindo Cores de F u n d o ... 314

Definindo a C or de Frente Usando T e x tC o lo r...315

Definindo a C or de Fundo Usando textbackground... 316

C ontrolando a Intensidade do T e x to ...317

Determ inando o M odo Atual do Texto ... 318

M ovendo Texto da Tela de um Local para O utro ...319

D efinindo um a Janela de T e x to ... 320

Usando o Valor Absoluto de um a Expressão I n te ir a ... 321

Usando o Arco C o -se n o ... 322

Usando o Arco Seno ... 323

Usando o Arco T a n g e n te ...324

O btendo o Valor Absoluto de um N úm ero C o m p le x o ...325

Arredondando para Cim a um Valor em Ponto F lu tu a n te ... 326

Usando o Co-seno de um  n g u lo ... 327

Usando o Co-seno Hiperbólico de um  n g u lo ... 328

Usando o Seno de um Ângulo ... 329

Usando o Seno Hiperbólico de um Ângulo ... 330

Usando a Tangente de um  n g u l o ... 331

Usando a Tangente Hiperbólica de um Ângulo ... 332

Realizando a Divisão Inteira ... 333

Trabalhando com Exponencial ... 334

Usando o Valor Absoluto de um a Expressão em Ponto F lu tu a n te ... 335

Usando o Resto em Ponto F lu tu an te... 336

Usando a Mantissa e o Expoente de um Valor em Ponto F lu tu a n te ... 337

Calculando o Resultado de x * 2 e ...338

Calculando o Logaritmo N a tu r a l... 339

Calculando o Resultado de log lO x ...340

Determ inando os Valores Máximo e M ín im o ...341

Quebrando um Double em Seus C om ponentes Inteiro e Real . . . 342

Calculando o Resultado de xn ...343

Calculando o Resultado de 10 * ... 344

Gerando um N úm ero A leatório...345

Mapeando Valores Aleatórios para um Intervalo Específico ... 346

Inicializando o Gerador de N úm eros Aleatórios ...347

Calculando a Raiz Q uadrada de um Valor ...348

Criando um a Rotina de Tratam ento de Erro M atemático ...349

Arquivos, Diretóriose Discos D eterm inando a Unidade de Disco A t u a l ...350

Selecionando a Unidade A tu a l... 351

D eterm inando o Espaço Disponível no D isc o ...352

Cuidado com o d b ls p a c e ...353

Lendo as Informações de um a Tabela de Alocação de A rquivos...354

Com preendendo a Identificação do D is c o ... 355

Efetuando um a Leitura ou Gravação Absoluta de Setor ...356

Efetuando E/S no Disco Baseada no B I O S ...357

Testando a Prontidão de um a Unidade de D isquete...358

Abrindo um Arquivo Usando fopen ... 359

Com preendendo a Estrutura F IL E ...360

Fechando um Arquivo A b e r to ... 361

Lendo e Gravando Informações no Arquivo um Caractere de Cada V e z ... 362

Com preendendo o Ponteiro de Posição do Ponteiro de Arquivo ... 363

Determ inando a Posição Atual no A rq u iv o ... 364

Com preendendo os Canais de Arquivos ... 365

Com preendendo as Traduções de A rquivos... 366

Com preendendo a Linha FILES=valor no C onfig.Sys... 367

Usando E/S em Arquivos de Baixo Nível e de Alto Nível ...368

(7)

VIII Program and oem C/C++ — A Bíb l ia

Com preendendo os Indicativos de A rquivos...369

Com preendendo a Tabela de Arquivos do P ro c esso... 370

Visualizando as Entradas da Tabela de Arquivos do Processo . . . 371

C om preendendo a Tabela de Arquivos do Sistema ... 372

Exibindo a Tabela do Sistema de Arquivos ...373

Derivando Indicativos de Arquivos a partir de Ponteiros Stream (de Canais) ... 374

Executando Saída Form atada em Arquivo ... 375

Renomeando um A rq u iv o ...376

Excluindo um A r q u iv o ... 377

Determ inando Com o um Programa Pode Acessar um A rq u iv o ...378

Definindo o M odo de Acesso de um A r q u iv o ... 379

G anhando M elhor C ontrole dos Atributos do A r q u iv o ... 380

Testando o Erro no Canal de um A rq u iv o ...381

D eterm inando o T am anho de um A r q u iv o ...382

Esvaziando um Canal de E/S ...383

Fechando Todos os Arquivos Abertos de um a Só V e z ... 384

O btendo o Indicativo de Arquivo de um Canal de Arquivo . . . . 385

Criando um N om e de Arquivo Tem porário Usando P _tm pdir . . 386

Criando um N om e de Arquivo Tem porário U sando T M P ou T E M P ... 387

Criando um Arquivo Verdadeiramente T e m p o rá rio ... 388

Removendo Arquivos T em p o rário s...389

Pesquisando o Cam inho de Com andos para um Arquivo ... 390

Pesquisando um Arquivo na Lista de Subdiretório de um Item do A m b ie n te ... 391

Abrindo Arquivos no Diretório T E M P ...392

M inim izando as Operações de E/S em A rq u iv o ...393

Escrevendo Código Q ue Usa Barras Invertidas nos Nom es de D ire tó rio ... 394

Modificando o D iretório A tu a l...395

Criando um D iretó rio ... 396

Removendo um D ire tó rio ...397

Removendo um a Árvore de D iretório ...398

Construindo o N om e de Cam inho C o m p le to ... 399

Subdividindo um Cam inho de D ir e tó r io ... 400

Construindo um N om e de C a m in h o ... 401

Abrindo e Fechando um Arquivo Usando Funções de Baixo N ív e l... 402

Criando um Arquivo ...403

Efetuando Operações de Leitura e Gravação de Baixo Nível . . . . 404

Testando o Final de um A r q u iv o ...405

Colocando as Rotinas de Arquivo de Baixo Nível para T rab alh ar... 406

Especificando o M odo para um a Tradução Arquivo-Indicativo . . 407

Posicionando o Ponteiro de Arquivo Usando lseek ...408

A brindo Mais de 20 Arquivos ... ... .... 409

Usando serviços de arquivo baseados no D O S ... 410

O btendo a Data e a H o ra de Criação de um A rq u iv o ... 411

O btendo a D ata e a H ora de um Arquivo Usando Campos de B i t ... 412

D efinindo a D ata e a H ora de um A rq u iv o ... 413

D efinindo a D ata e a H ora de um Arquivo com a Data e a H ora A tu a is... 414

Lendo e G ravando Dados um a Palavra de Cada V e z ... 415

Alterando o T am anho de um A r q u iv o ... 416

Controlando as Operações de Leitura e Gravação em Arquivos A b ertos... 417

A tribuindo um Buffer de Arquivo ... 418

Alocando um Buffer de A rq u iv o ...419

Criando um N om e de Arquivo Exclusivo Usando m k te m p ... 420

Lendo e Gravando E stru tu ra s ...421

Lendo Dados de um a Estrutura a partir de um Canal de A rq u iv o ...422

D uplicando o Indicativo de um A r q u iv o ... 423

Forçando a Definição de um Indicativo de Arquivo ...424

Associando o Indicativo de um Arquivo com um Canal ... 425

C om preendendo o Com partilham ento de Arquivo ... 426

Abrindo um Arquivo para o Acesso C o m p artilh ad o ... 427

Bloqueando o C onteúdo de um Arquivo ...428

G anhando C ontrole Mais Refinado do Bloqueio de Arquivo . . . . 429

Trabalhando com Diretórios do D O S ...430

Abrindo um D ir e tó rio ...431

Lendo um a E ntrada do D iretório ...432

Usando Serviços de Diretório para Ler C:\W indow s ... 433

V oltando para o Início de um D ir e tó rio ... 434

Lendo Recursivamente os Arquivos de um Disco ...435

D eterm inando a Posição Atual no A rq u iv o ...436

A brindo um Canal de Arquivo C om p artilh ad o ...437

Criando um Arquivo Exclusivo em um Diretório Específico . . . . 438

Criando um Novo A rq u iv o ...439

U sando os Serviços do D O S para Acessar um Arquivo ...440

Forçando a Abertura de um Arquivo no M odo Binário ou T e x t o ...441

Lendo Linhas de T e x t o ...442

Gravando Linhas de Texto ...443

Colocando fgets e fputs em Uso ...444

Forçando a Tradução de Arquivo B in á rio ...445

Com preendendo Por Q ue o Programa copiatxt N ão Pode Copiar Arquivos B in ário s... 446

Testando o Final do Arquivo ... 447

Devolvendo um C a ra c te re ...448

Lendo Dados Formatados de A rq u iv o ...449

Posicionamento do Ponteiro de Arquivo com Base em Sua Posição Atual ... 450

O btendo Informações do Indicativo de A rq u iv o ... 451

Reabrindo um Canal de A rq u iv o ...452

Ma t r i z e s, Po n t e i r o se Es t r u t u r a s Com preendendo as M a triz e s ...453

Declarando um a M a triz ...454

Visualizando um a M a triz ... 455

Com preendendo os Requisitos de Armazenamento de uma Matriz ... 456

Inicializando um a M a triz ... 457

Acessando Elementos da M atriz ... 458

Percorrendo em um Laço os Elementos da M a t r i z ... 459

Usando Constantes para Definir as M a triz e s...460

Passando uma M atriz a um a F u n ç ã o ... 461

Revisitando as Matrizes Com o Funções ...462

Com preendendo C om o as Matrizes de String D ifere m ...463

Passando Matrizes para a Pilha ...464

D eterm inando Q uantos Elementos um a Matriz Pode A rm a z e n a r... 465

Usando o Modelo de M em ória Huge para as Matrizes G r a n d e s ...466

A Barganha entre Matrizes e Memória D in â m ic a ...467

Com preendendo as Matrizes M ultidim ensionais...468

Com preendendo as Linhas e C o lu n a s ... 469

Acessando Elementos em um a Matriz B id im en sio n al...470

Inicializando Elementos em um a Matriz B id im en sio n al... 471

D eterm inando o C onsum o de M em ória de um a Matriz M ultidim ensional... 472

Percorrendo em um Laço um a M atriz B idim ensional...473

Percorrendo um a Matriz T ridim ensional... 474

Inicializando Matrizes M u ltid im e n sio n a is... 475

Passando uma Matriz Bidimensional para um a Função ... 476

Tratando as Matrizes M ultidim ensionais Com o um a Dimensão . 477 Com preendendo Com o C Armazena Matrizes M u ltid im en sio n a is... 478

Com preendendo a O rdem Linha por Linha versus Coluna por C o l u n a ... 479

Matrizes de Estruturas de Matrizes ... 480

Com preendendo as Uniões ... 481

Economizando M em ória com as U n iõ e s ... 482

Usando REGS - U m a União C lá ssic a ...483

Colocando a União REGS em U s o ... 484

Com preendendo as Estruturas de Campos de B i t ... 485

Visualizando um a Estrutura de Campos de B i t ... 486

(8)

Sum ário IX

Com preendendo o Intervalo de Valores de um a Estrutura

Bit a Bit ... 487

Procurando um Valor Específico em um a M atriz ... 488

C om preendendo um a Pesquisa B in ária... 489

Usando um a Pesquisa B in ária...490

Classificando um a M a t r i z ...491

Com preendendo o M étodo da B o lh a ... 492

Colocando o Algoritmo da Bolha em U s o ...493

Com preendendo o Algoritmo da S e le ç ã o ... 494

Colocando em Uso o M étodo da S eleção... 495

Com preendendo o Algoritmo Shell ... 496

Colocando em Uso o Algoritmo Shell ... 497

Com preendendo o Q uick S o r t ...498

Colocando o Q uick Sort em U s o ... 499

Problemas com as Soluções de Classificação A n te rio re s ... 500

Classificando um a Matriz de Strings de Caracteres ... 501

Pesquisando um a Matriz com lfind ... 502

Procurando Valores com lse a rc h ... 503

Pesquisando uma Matriz Classificada com bsearch... 504

Classificando Matrizes com q s o r t ... 505

D eterm inando o N úm ero de Elementos na M atriz ...506

Com preendendo Ponteiros como Endereços ... 507

D eterm inando o Endereço de um a V ariáv el...508

Com preendendo como C T rata Matrizes como P o n te iro s...509

Aplicando o O perador de Endereço (&) a um a M a t r i z ... 510

Declarando Variáveis Ponteiro ...511

Desreferenciando um P o n te ir o ...512

Usando Valores de P o n te ir o ... 513

Usando Ponteiros com Parâmetros de F u n ç ã o ... 514

Com preendendo a Aritmética de Ponteiros ...515

Increm entando e D ecrem entando um P o n te ir o ...516

C om binando um a Referência e Increm ento de P o n te ir o ...517

Percorrendo um a String Usando um P o n te ir o ... 518

Usando Funções Q ue Retornam P o n teiro s... 519

Criando um a Função Q ue Retorna um P o n te iro ...520

Com preendendo um a Matriz de P o n te iro s...521

Visualizando um a M atriz de Strings de C aracteres... 522

Percorrendo em um Laço um a M atriz de Strings de C a ra c te re s... 523

T ratando um a M atriz de String de Caracteres C om o um Ponteiro ... 524

Usando um Ponteiro para um Ponteiro para Strings de C a ra c te re s... 525

Declarando um a Constante String Usando um P o n te ir o ...526

Com preendendo o Ponteiro do T ipo v o i d ...527

Criando Ponteiros para as F u n ç õ e s...528

Usando um Ponteiro para um a F u n ç ã o ... 529

Usando um Ponteiro para um Ponteiro para um Ponteiro ... 530

Com preendendo as Estruturas ...531

U m a Estrutura É um Gabarito para a Declaração de Variáveis . . 532

O Descritor de um a Estrutura È o N om e da E s tr u tu r a ... 533

Declarando um a Variável Estrutura de M odos D ife re n te s... 534

Com preendendo os M em bros da Estrutura ...535

Visualizando um a Estrutura ... 536

Pondo um a Estrutura em Uso ... 537

Passando um a Estrutura a um a Função ...538

Alterando um a Estrutura D entro de um a Função ... 539

Com preendendo a Indireção (* p o n te iro ).m e m b ro ... 540

Usando o Form ato ponteiro->m em bro ... 541

Usando um a Estrutura sem N o m e ...542

C om preendendo o Escopo de Definição de um a E s tr u tu r a ... 543

Inicializando uma Estrutura ...544

Efetuando E/S em E s tr u tu r a s ...545

Usando um a Estrutura D entro de O u t r a ...546

Estruturas Q ue C ontêm M a triz e s ... 547

Criando um a M atriz de E stru tu ra s ...548

Se r v i ç o s D O S e B IO S Com preendendo os Serviços do Sistema do D O S ... 549

Com preendendo os Serviços da BIOS ... 550

Com preendendo os Registradores ...551

Com preendendo o Registrador de Flags ...552

Com preendendo as Interrupções de S o ftw a re ...553

Usando a BIOS para Acessar a Impressora ... 554

Informação de C trl+ B re a k ...555

Com preendendo Possíveis Efeitos Colaterais do D O S ... 556

Suspendendo um Programa T e m p o ra ria m e n te ... 557

Divertindo-se com S o m ... 558

O btendo Informações Específicas do P a í s ...559

Com preendendo o Endereço de Transferência do Disco ... 560

Acessando e Controlando a Área de Transferência do Disco . . . . 561

Usando os Serviços de Teclado da B I O S ... 562

O btendo a Lista de Equipamentos da B I O S ...563

C ontrolando a E/S da Porta S erial...564

Acessando os Serviços do D O S Usando b d o s ... 565

O btendo Informações Estendidas de Erro do D O S ... 566

D eterm inando a Q uantidade de M em ória Convencional da B I O S ... 567

Construindo um Ponteiro far ...568

Dividindo um Endereço far em um Segmento e Deslocamento . . 569

D eterm inando a M emória do Núcleo Livre ... 570

Lendo as Configurações do Registrador de S e g m e n to ... 571

Ge r e n c i a m e n t o d e Me m ó r i a Com preendendo os Tipos de M e m ó ria ... 572

Com preendendo a M em ória C o n v e n cio n al... 573

Com preendendo o Layout da M emória C o n v e n c io n a l...574

Acessando a Memória C o n v e n cio n al... 575

Com preendendo Por Q ue o PC e o D O S Estão Restritos a 1 M b ... 576

Produzindo um Endereço a partir de Segmentos e D eslocam entos...577

Com preendendo a M emória Expandida ... 578

Usando a Memória Expandida ... 579

Com preendendo a Memória E ste n d id a ...580

Com preendendo os Modos Real e P rotegido...581

Acessando a Memória E s te n d id a ...582

Com preendendo a Área de M emória A l t a ... 583

Com preendendo a Pilha ... 584

Com preendendo Diferentes Configurações da P i l h a ... 585

Determ inando o Tam anho da Pilha Atual do Seu Programa . . . . 586

Controlando o Espaço na Pilha com _ stk le n ...587

Atribuindo um Valor a um Intervalo de Memória ... 588

Copiando um Intervalo de M emória para O u tro ...589

Copiando um Intervalo de M emória até um Byte Específico . . . . 590

Com parando Duas Matrizes de unsigned char ... 591

Perm utando Bytes de Strings de Caracteres A djacentes... 592

Alocando M em ória D in â m ic a ...593

Revisitando a Conversão ...594

Liberando a M em ória Q uando Ela N ão É Mais N ec e ssá ria ...595

Alocando M em ória Usando a Função c a llo c ... 596

Com preendendo o H e a p ... 597

Contornando o Limite de 64Kb para o H e a p ... 598

Alocando M em ória a partir da P i l h a ... 599

Alocando Dados H u g e ...600

Alterando o T am anho de um Bloco Alocado ... 601

Com preendendo b r k ... 602

Validando o H e a p ... 603

Efetuando um a Verificação Rápida do H e a p ... 604

Preenchendo o Espaço Livre do H e a p ...605

Verificando um a Entrada Específica no H e a p ... 606

Percorrendo as Entradas do H e a p ... 607

Examinando o C onteúdo de uma Posição de Memória E specífica...608

Colocando Valores na M emória ...609

Com preendendo as Portas do P C ... 610

Acessando os Valores das Portas ... 611

Com preendendo a C M O S ... 612

Com preendendo os Modelos de M e m ó ria ...613

Com preendendo o M odelo de M em ória T iny ... 614

(9)

X Pro g ram a n d oe m C/C++ — A Bíb l ia

C om preendendo o M odelo de M emória Small ...615

C om preendendo o Modelo de M emória M e d iu m ... 616

Com preendendo o Modelo de Memória C o m p a c t... 617

Com preendendo o Modelo de M emória L arge... 618

Com preendendo o Modelo de M emória H uge ...619

Determ inando o Modelo de Memória Atual ... 620

Da t ae h o r a Obtendo a Data e a Hora Atuais Como Segundos desde 1/1/1970 . . 621

Convertendo um a D ata e um a H ora de Segundos para ASCII ...622

Ajuste do H orário de Verão ...623

Retardando durante um D eterm inado N úm ero de M ilisseg u n d o s... 624

D eterm inando o T em po de Processamento do Seu Programa . . . 625

Com parando Dois H o r á rio s ... 626

O btendo um a String de D a t a ...627

O btendo um a String com o H o r á r i o ... 628

Lendo o Tem porizador da BIOS ... 629

Trabalhando com o H orário L o c a l...630

Trabalhando com o H orário de G re e n w ic h ...631

O btendo o H orário do Sistema D O S ... 632

O btendo a D ata do Sistema do D O S ... 633

Definindo o H orário do Sistema D O S ...634

Definindo a D ata do Sistema do D O S ... 635

Convertendo um a D ata do D O S para o Formato do U N IX . . . . 636

Usando timezone para Calcular a Diferença entre a Zona H o r á r i a ...637

D eterm inando a Z ona H orária A t u a l ... 638

Definindo Campos de Z ona H orária com t z s e t ...639

Usando a Variável de Ambiente T Z ... . 640

Definindo a Entrada de Ambiente T Z a partir de D entro de Seu P ro g r a m a ... 641

O btendo as Informações de Z ona H o r á ria ...642

Definindo a H ora do Sistema em Segundos desde a Meia-noite de 1/1/1970 ... 643

Convertendo um a D ata para Segundos desde a M eia-noite de 1/1/1970 ... 644

D eterm inando a D ata Juliana de um a D a t a ...645

Criando um a String Formatada de D ata e H o r a ...646

Com preendendo os Tipos de Relógio do P C ... 647

Re d i r e c i o n a n d o a E / S e Pr o c e s s a n d o Un h a sd e Co m a n d o Aguardando a Digitação de um a T e c la ...648

Pedindo um a Senha ao U s u á r io ... 649

Escrevendo Sua Própria Função de Senha ...650

Com preendendo o Redirecionamento da Saída ...651

Com preendendo o Redirecionamento da E n t r a d a ... 652

Com binando o Redirecionamento da E ntrada e da Saída ... 653

Usando stdout e s t d i n ... 654

Com preendendo o O perador de C analização... 655

Com preendendo getchar e p u tc h a r ...656

N um erando a Entrada R edirecionada... 657

G arantindo Q ue uma Mensagem Apareça na T e la ... 658

Escrevendo Seu Próprio Com ando more ... 659

Exibindo um C ontador de Linhas R ed irecio n ad as... 660

Exibindo um C ontador de Caracteres R e d irecio n ad o s... 661

Criando um C om ando M ore com Controle de T e m p o ... 662

Im pedindo o Redirecionamento da E / S ... 663

Usando o Indicativo de Arquivo s t d p r n ... 664

Desviando a Saída Redirecionada para um A rq u iv o ... 665

Usando o Indicativo de Arquivo s td a u x ... 666

Encontrando Ocorrências de Substring D entro da Entrada R e d irecio n ad a... 667

Exibindo as Primeiras n Linhas da E ntrada Redirecionada ... 668

Com preendendo os Argumentos da Linha de C o m a n d o ...669

Exibindo um C ontador de Argumentos da Linha de Com andos . 670 Exibindo a Linha de C om ando ... 671

T rabalhando com Argumentos da Linha de Com ando entre A s p a s ... 672

Exibindo o C onteúdo de um Arquivo a partir da Linha de C o m a n d o ... 673

Tratando argv Com o um Ponteiro ... 674

Com preendendo Com o C Sabe sobre a Linha de Com ando . . . . 675

Com preendendo o A m b ien te... 676

Tratando env C om o um Ponteiro ... 677

Use void para os Parâmetros de m a i n ...678

Trabalhando com N úm eros da Linha de C o m a n d o ...679

Com preendendo os Valores de Status da S a íd a ...680

Usando return para o Processamento do Status da S a í d a ... 681

D eterm inando Se m ain Deve ou N ão Ser Declarada Como void ...682

Pesquisando o Item Específico no A m b ie n te... 683

Com o o D O S T rata o Am biente ... 684

Usando a Variável Global e n v iro n ... 685

Acrescentando um Item ao Ambiente Atual ... 686

Acrescentando Elementos no Ambiente D O S ...687

A bortando o Programa A tu a l...688

Definindo Funções Q ue Executam ao Térm ino do Programa . . . 689

Com preendendo as Bibliotecas ... 690

Reutilizando o Código-O bjeto ... 691

Problemas com a Compilação de Arquivos C e OBJ ...692

Criando um Arquivo de B ib lio te c a ... 693

Com preendendo as Operações da Biblioteca C o m u m ... 694

Listando as Rotinas em um Arquivo de B ib lio te c a ... 695

Use Bibliotecas para Reduzir Seu T em po de C om p ilação... 696

Aprendendo Mais sobre as Capacidades da Sua B ib lio te c a ...697

Com preendendo o L in k e d ito r ... 698

Vendo as Capacidades do Linkeditor ...699

Usando um M apa do L in k e d ito r...700

Usando Arquivos de Resposta do L inkeditor...701

Simplificando a Criação de Aplicativos com o M A K E ...702

Criando um Arquivo Simples do MAKE ... 703

Usando M últiplos Arquivos de Dependência com o MAKE . . . . 704

C om entando Seus Arquivos do M A K E ...705

Linhas de C om ando e M A K E ... 706

Colocando Múltiplas Dependências em um Arquivo do M A K E ... 707

Regras Implícitas e Explícitas do M A K E ... 708

Usando Macros do MAKE ... 709

Macros Predefinidas do M A K E ... 710

Executando Processamento Condicional com o MAKE ...711

Testando um N om e de Macro ... 712

Incluindo um Segundo Arquivo do MAKE ... 713

Usando os Modificadores de M acro do MAKE ... 714

Finalizando, um Arquivo do MAKE com um E r r o ... 715

Desabilitando a Exibição do N om e do C o m a n d o ... 716

Usando o Arquivo BU ILTIN S.M A K ...717

Executando Processamento de Status de Saída no MAKE ... 718

C ham ando e A lterando um a M acro ao Mesmo T e m p o ... 719

Executando um C om ando MAKE para M últiplos Arquivos Dependentes ... 720

C Av a n ç a d o D eterm inando Se o Co-Processador Matemático Está Presente . . 721 Com preendendo as Macros ctype.h e i s t y p e ... 722

Controlando o Vídeo D i r e t o ...723

D etectando Erros Matemáticos e do Sistema ... 724

Exibindo Mensagens de Erro Predefinidas... 725

D eterm inando o N úm ero de Versão do Sistema Operacional . . . 726

Com preendendo a P o rta b ilid a d e ... 727

Efetuando um G oto Não-local ... 728

O btendo a Identificação do Processo... 729

Cham ando um Com ando Interno do D O S ...730

Usando a Variável Global _ p s p ...731

Usando o Modificador const nas Declarações de V ariáveis...732

Usando Tipos E n u m e ra d o s... 733

Colocando um T ipo Enumerado em U s o ... 734

(10)

Sumário XI

Com preendendo um Valor E n u m e ra d o ...735

Atribuindo um Valor Específico a um T ip o E n u m e ra d o ...736

Salvando e Restaurando os R e g istra d o re s... 737

Introdução às Listas Dinâm icas ... 738

Declarando uma Estrutura de Lista L ig ad a...739

Criando uma Lista L igada...740

Exemplo de um a Lista Ligada S im p le s...741

Com preendendo como Percorrer um a Lista L ig a d a ... 742

Criando um a Lista Mais Ú t i l ...743

Anexando um Elemento na L i s t a ... 744

Inserindo um Elemento na L ista... 745

Exibindo um D iretório C lassificado...746

Excluindo um Elemento de um a L is t a ...747

Usando um a Lista Duplam ente L igada... 748

Criando um a Lista D uplam ente Ligada Simples ...749

Com preendendo nod o -> an terio r-> p ró x im o ...750

Removendo um Elemento de um a Lista D uplam ente Ligada . . . 751

Inserindo um Elemento em um a Lista Duplam ente L ig a d a ... 752

C om preendendo os P ro cesso s-F ilh o ...753

Gerando um P ro c esso -F ilh o ... 754

Usando O utras Funções spawnlxx ...755

Usando as Funções sp a w n v x x ...756

Executando um P rocesso-F ilho... ...757

Usando O utras Funções ex eclx x ... 758

Usando as Funções execvxx ... 759

Com preendendo os Overlays ...760

Com preendendo as Interrupções... 761

As Interrupções do P C ... 762

Usando a Palavra-Chave interrupt ...763

D eterm inando o Vetor de um a In te rru p ç ã o ...764

Definindo um Vetor de In terru p ção ...765

H abilitando e Desabilitando as Interrupções ... 766

Criando um a Rotina Simples de T ratam ento de Interrupção . . . . 767

Encadeando um a Segunda In te rru p ç ã o ...768

Gerando um a In terru p ção ...769

Interceptando o Tem porizador do P C ...770

Com preendendo os Erros Críticos ...771

T ratam ento de Erro Crítico em C ...772

U m a R otina de Tratam ento de Erro C rítico C o m p le ta ... 773

Restaurando as Interrupções A lte ra d a s ...774

Criando um a Rotina de Tratam ento de C trl+ B reak ... 775

Usando os Serviços do D O S na Sua Rotina de Tratam ento de Erro C r í t i c o ... 776

A um entando o D esem penho com o Uso da Seleção do C onjunto de In stru çõ es... 777

Funções Intrínsecas I n - l i n e ... 778

Habilitando e Desabilitando as Funções In trín secas... 779

Com preendendo as Chamadas Rápidas de F u n ç õ e s ... ...780

Regras para a Passagem de Parâmetros _ f a s tc a ll...781

Com preendendo o Código Invariante ...782

Com preendendo a Supressão de Carga R e d u n d a n te ...783

Com preendendo a Compactação do Código ... 784

Com preendendo a Compactação do Laço ... 785

Com preendendo a Indução do Laço e a Redução da F o r ç a ... 786

Com preendendo a Eliminação de Subexpressão C o m u m ...787

Com preendendo as Conversões C om uns de C P a d rã o ... 788

Com preendendo os Q uatro Tipos Básicos de C ...789

Com preendendo os T ipos Fundam entais versus os Derivados . . . 790

Com preendendo os Inicializadores...791

Com preendendo o Sistema de Ligação (L in k ag e)...792

Com preendendo as Declarações Experimentais ...793

Contrastando Declarações e Definições ...794

Com preendendo lvalues ...795

Com preendendo rv a lu e s ...796

Usando Palavras-chave de Registradores de Segmento ...797

Use os Ponteiros far com C u id a d o ...798

Com preendendo os Ponteiros Normalizados ...799

Com andos do Co-Processador Matemático ... 800

Com preendendo cdecl e pascal nas V ariáv eis... 801

Im pedindo as Inclusões C irc u la re s ... 802

In t r o d u ç ã oà C + + Introduzindo C++ ... 803

C om o os Arquivos-Fonte de C++ São D if e re n te s ... 804

Iniciando com um Programa Simples em C + + ...805

Com preendendo o Canal de Enrrada/Sa/da c o u r ... 806

Escrevendo Valores e Variáveis com cout ... 807

C om binando Diferentes Tipos de Valores com c o u t ...808

Exibindo Valores Hexadecimais e O c ta is... 809

Redirecionando cout ...810

Se Você G osta de printf, Use p r i n t f ... 811

Escrevendo Saída em cerr ... 812

Recebendo Entrada com cin ... 813

cin N ão Usa P o n te iro s... 814

Com preendendo C om o cin Seleciona os Campos de D a d o s...815

Com preendendo C om o os Canais de E/S Conhecem os Tipos dos V alores...816

Efetuando Saída Usando clog ...817

cin, cout, cerr e clog São Ocorrências de C la s s e ... 818

Descarregando a Saída com flush ...819

Com preendendo o Q ue iostream.h C o n t é m ...820

C++ Requer Protótipos de F u n ç õ e s...821

C++ Acrescenta Novas Palavras-Chave ...822

C++ Suporta as Uniões A n ô n in ia s...823

Resolvendo o Escopo G lo b a l... 824

Fornecendo Valores Padrão de Parâmetros ... 825

Controlando a Largura da Saída de c o u t ...826

Usando setw para Definir a Largura para c o u t ... 827

Especificando um Caractere de Preenchimento em c o u t ...828

Justificando à D ireita e à Esquerda a Saída de cout ... 829

Controlando o N úm ero de Dígitos em Ponto Flutuante Exibidos por c o u t ...830

Exibindo Valores nos Formatos Fixo ou C ie n tífic o ...831

Restaurando cout para o Padrão ... 832

D efinindo a Base da E / S ...833

Declarando Variáveis O nde Você Precisa Delas ...834

Colocando Valores de Parâmetro Padrão em Protótipos de F u n ç ã o ...835

Usando Operadores Bit a Bit e c o u t ... 836

Com preendendo a Avaliação Preguiçosa (ou C urto- Circuito) . . . 837

Usando a Palavra-Chave const em C + + ...838

Usando a Palavra-Chave enum em C++ ... 839

Com preendendo o Espaço Livre ... 840

Alocando Memória com n e w ...841

Alocando M últiplas M a triz e s... 842

Testando a Falta de Espaço Livre ... 843

Considerações sobre o Espaço no H e a p ...844

Usando Ponteiros far e o O perador n e w ...845

Liberando Memória de Volta ao Espaço Livre ... 846

Com preendendo as Referências de C + + ...847

Passando um a Referência a um a F u n ç ã o ...848

A tentando para os O bjetos O c u lto s ...849

Usando Três M odos de Passar Parâmetros ... 850

Regras para Trabalhar com R eferências... 851

As Funções Podem Retornar Referências... 852

Usando a Palavra-Chave inline de C + + ... 853

Usando a Palavra-chave asm de C + + ... 854

Lèndo um Caractere Usando c i n ... 855

Escrevendo um Caractere com c o u t ... 856

Escrevendo um Programa Simples de Filtro ...857

Escrevendo um C om ando Tee S im p le s...858

Escrevendo um C om ando First Simples ... 859

Escrevendo um C om ando First M e lh o r...860

Testando o Final do A rq u iv o ... 861

Gerando um a Nova Linha com e n d l ... 862

Com preendendo as Especificações de L ig a ção ... 863

Com preendendo a S o b re c a rg a ...864

Sobrecarregando as F u n çõ es... 865

Sobrecarregando Funções: um Segundo E x e m p lo ... 866

Evitando a Ambigüidade da Sobrecarga... 867

Lendo um a Linha de Cada Vez com cin ...868

Referências

Documentos relacionados

Grundfos GO rakenduse Apple iOS seadmele saab tasuta alla laadida või seda saab tasuta uuendada Apple'i App Store'i kaudu. Minge Apple'i

Além disso, dentre as diferentes cultivares, a banana ‘maça’ é a que apresenta maior problemas de manutenção da qualidade pós-colheita devido a deterioração fisiológica

Para alguns, nem o cerco a Sarajevo existiu, nem o genocídio de Srebrenica aconteceu, como foram os muçulmanos que iniciaram o confl ito ao votarem pela secessão num referendo

Em todas as comunidades, os comentários são de que o ú- nico meio de sobrevivência dos indT.Genap daquela região,é o traba - lho com a coca, vez que estão em completo

Para a questão 3, entretanto, os alunos deverão ser capazes de fazer uma análise mais profunda, estabelecendo relações entre o texto de Mário de Andrade e o conteúdo principal a

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

[r]

Sul - 2291 Número Complemento Bairro Alojados Cidade Recife Data Abertura 13/12/2016 - 09:00:00 Site www.cprm.gov.br Objeto.. Contratação de Escritório de