Author(s): Harvey Deitel
Year: 0
Language: Portuguese
Pages: 1208
Tags: C c++ como programar deitel
1 Introdução aos computadores, à Internet e à World Wide Web......Page 44
1.1 Introdução......Page 45
1.3 Organização do computador......Page 46
1.6 A Internet e a World Wide Web......Page 47
1.7 Linguagens de máquina, linguagens assembly e linguagens de alto nível......Page 48
1.9 C++ Standard Library......Page 49
1.11 Fortran, COBOL, Ada e Pascal......Page 50
1.13 Tendência-chave do software: tecnologia de objeto......Page 51
1.14 Ambiente de desenvolvimento C++ típico......Page 52
1.16 Test-drive de um aplicativo C++......Page 54
1.17 Estudo de caso de engenharia de software: introdução à tecnologia de objetose à UML (obrigatório)......Page 59
1.19 Recursos na Web......Page 63
2 Introdução à programação em C++......Page 69
2.2 Primeiro programa C++: imprimindo uma linha de texto......Page 70
2.3 Modificando nosso primeiro programa C++......Page 73
2.4 Outro programa C++: adicionando inteiros......Page 74
2.5 Conceitos de memória......Page 77
2.6 Aritmética......Page 78
2.7 Tomada de decisão: operadores de igualdade e operadores relacionais......Page 80
2.8 Estudo de caso de engenharia de software: examinando o documento de requisitos de ATM (opcional)......Page 84
2.9 Síntese......Page 91
3 Introdução a classes e objetos......Page 98
3.2 Classes, objetos, funções-membro e membros de dados......Page 99
3.4 Definindo uma classe com uma função-membro......Page 100
3.5 Definindo uma função-membro com um parâmetro......Page 103
3.6 Membros de dados, funções set e funções get......Page 105
3.7 Inicializando objetos com construtores......Page 110
3.8 Colocando uma classe em um arquivo separado para reusabilidade......Page 113
3.9 Separando a interface da implementação......Page 116
3.10 Validando dados com funções set......Page 121
3.11 Estudo de caso de engenharia de software: identificando as classes no documentode requisitos do ATM (opcional)......Page 125
3.12 Síntese......Page 130
4 Instruções de controle: parte 1......Page 136
4.3 Pseudocódigo......Page 137
4.4 Estruturas de controle......Page 138
4.5 Instrução de seleção if......Page 141
4.6 A instrução de seleção dupla if...else......Page 142
4.7 A instrução de repetição while......Page 146
4.8 Formulando algoritmos: repetição controlada por contador......Page 147
4.9 Formulando algoritmos: repetição controlada por sentinela......Page 152
4.10 Formulando algoritmos: instruções de controle aninhadas......Page 159
4.11 Operadores de atribuição......Page 163
4.12 Operadores de incremento e decremento......Page 164
4.13 Estudo de caso de engenharia de software: identificando atributos de classe no sistema ATM (opcional)......Page 166
4.14 Síntese......Page 169
5 Instruções de controle: parte 2......Page 183
5.2 Princípios básicos de repetição controlada por contador......Page 184
5.3 A instrução de repetição for......Page 186
5.4 Exemplos com a estrutura for......Page 189
5.5 Instrução de repetição do...while......Page 193
5.6 A estrutura de seleção múltipla switch......Page 194
5.7 Instruções break e continue......Page 202
5.8 Operadores lógicos......Page 204
5.9 Confundindo operadores de igualdade (==) com operadores de atribuição (=)......Page 207
5.10 Resumo de programação estruturada......Page 208
5.11 Estudo de caso de engenharia de software: identificando estados e atividades dos objetos no sistema ATM (opcional)......Page 212
5.12 Síntese......Page 216
6 Funções e uma introdução à recursão......Page 224
6.1 Introdução......Page 225
6.2 Componentes de um programa em C++......Page 226
6.3 Funções da biblioteca de matemática......Page 227
6.4 Definições de funções com múltiplos parâmetros......Page 228
6.5 Protótipos de funções e coerção de argumentos......Page 232
6.7 Estudo de caso: geração de números aleatórios......Page 233
6.8 Estudo de caso: jogo de azar e introdução a enum......Page 239
6.9 Classes de armazenamento......Page 243
6.10 Regras de escopo......Page 245
6.11 Pilha de chamadas de função e registros de ativação......Page 247
6.12 Funções com listas de parâmetro vazias......Page 249
6.13 Funções inline......Page 251
6.14 Referências e parâmetros de referência......Page 252
6.15 Argumentos-padrão......Page 256
6.16 Operador de solução de escopo unário......Page 258
6.17 Sobrecarga de funções......Page 259
6.18 Templates de funções......Page 261
6.19 Recursão......Page 264
6.20 Exemplo que utiliza recursão: série de Fibonacci......Page 265
6.21 Recursão versus iteração......Page 269
6.22 Estudo de caso de engenharia de software: identificando operações de classe no sistema ATM (opcional)......Page 271
6.23 Síntese......Page 276
7 Arrays e vetores......Page 293
7.2 Arrays......Page 294
7.3 Declarando arrays......Page 295
7.4 Exemplos que utilizam arrays......Page 296
7.5 Passando arrays para funções......Page 310
7.6 Estudo de caso: classe GradeBook utilizando um array para armazenar notas......Page 314
7.8 Classificando arrays por inserção......Page 319
7.9 Arrays multidimensionais......Page 322
7.10 Estudo de caso: classe GradeBook utilizando um array bidimensional......Page 325
7.11 Introdução ao template vector da C++ Standard Library......Page 331
7.12 Estudo de caso de engenharia de software: colaboração entre objetos no sistema ATM(opcional)......Page 335
7.13 Síntese......Page 340
8 Ponteiros e strings baseadas em ponteiro......Page 354
8.2 Declarações de variável ponteiro e inicialização......Page 355
8.3 Operadores de ponteiro......Page 356
8.4 Passando argumentos para funções por referência com ponteiros......Page 358
8.5 Utilizando const com ponteiros......Page 362
8.6 Classificação por seleção utilizando passagem por referência......Page 367
8.7 Operadores sizeof......Page 370
8.8 Expressões e aritmética de ponteiro......Page 373
8.9 Relacionamento entre ponteiros e arrays......Page 375
8.10 Arrays de ponteiros......Page 378
8.11 Estudo de caso: simulação de embaralhamento e distribuição de cartas......Page 379
8.12 Ponteiros de função......Page 384
8.13 Introdução ao processamento de string baseada em ponteiro......Page 388
8.13.1 Fundamentos de caracteres e strings baseadas em ponteiro......Page 389
8.13.2 Funções de manipulação de string da biblioteca de tratamento de strings......Page 390
8.14 Síntese......Page 397
9 Classes: um exame mais profundo, parte 1......Page 418
9.2 Estudo de caso da classe Time......Page 419
9.4 Separando a interface da implementação......Page 425
9.5 Funções de acesso e funções utilitárias......Page 427
9.6 Estudo de caso da classe Time: construtores com argumentos-padrão......Page 429
9.7 Destrutores......Page 434
9.8 Quando construtores e destrutores são chamados......Page 435
9.9 Estudo de caso da classe Time: uma armadilha sutil — retornar uma referênciaa um membro de dados private......Page 438
9.10 Atribuição-padrão de membro a membro......Page 440
9.12 Estudo de caso de engenharia de software: começando a programar as classes do sistema ATM (opcional)......Page 442
9.13 Síntese......Page 448
10 Classes: um exame mais profundo, parte 2......Page 454
10.2 Objetos const (constante) e funções-membro const......Page 455
10.3 Composição: objetos como membros de classes......Page 464
10.4 Funções friend e classes friend......Page 469
10.5 Utilizando o ponteiro this......Page 472
10.6 Gerenciamento de memória dinâmico com os operadores new e delete......Page 473
10.7 Membros de classe static......Page 478
10.8 Abstração de dados e ocultamento de informações......Page 483
10.8.2 Exemplo: tipo de dados abstrato string......Page 484
10.10 Classes proxy......Page 485
10.11 Síntese......Page 488
11 Sobrecarga de operadores; objetos string e array......Page 493
11.2 Fundamentos de sobrecarga de operadores......Page 494
11.3 Restrições à sobrecarga de operadores......Page 495
11.4 Funções operadoras como membros de classe versus funções globais......Page 497
11.5 Sobrecarregando operadores de inserção e extração de fluxo......Page 498
11.6 Sobrecarregando operadores unários......Page 500
11.8 Estudo de caso: classe Array......Page 501
11.9 Convertendo entre tipos......Page 511
11.10 Estudo de caso: classe String......Page 512
11.11 Sobrecarregando ++ e --......Page 522
11.12 Estudo de caso: uma classe Date......Page 523
11.13 Classe string da biblioteca-padrão......Page 527
11.14 Construtores explicit......Page 530
11.15 Síntese......Page 533
12 Programação orientada a objetos: herança......Page 544
12.1 Introdução......Page 545
12.2 Classes básicas e derivadas......Page 546
12.4.1 Criando e utilizando uma classe CommissionEmployee......Page 548
12.4.2 Criando uma classe BasePlusCommissionEmployee sem utilizar herança......Page 553
12.4.3 Criando uma hierarquia de herançaCommissionEmployee–BasePlusCommissionEmployee......Page 558
12.4.4 Hierarquia de herança CommissionEmployee–BasePlusCommissionEmployeeutilizando dados protected......Page 562
12.4.5 Hierarquia de herança CommissionEmployee–BasePlusCommissionEmployeeutilizando dados private......Page 568
12.5 Construtores e destrutores em classes derivadas......Page 575
12.6 Herança public, protected e private......Page 582
12.7 Engenharia de software com herança......Page 583
12.8 Síntese......Page 584
13 Programação orientada a objetos: polimorfismo......Page 588
13.1 Introdução......Page 589
13.2 Exemplos de polimorfismo......Page 590
13.3.1 Invocando funções de classe básica a partir de objetos de classe derivada......Page 591
13.3.2 Apontando ponteiros de classe derivada para objetos da classe básica......Page 597
13.3.3 Chamadas de função-membro de classe derivada via ponteiros de classe básica......Page 598
13.3.4 Funções virtuais......Page 600
13.3.5 Resumo das atribuições permitidas entre objetos de classe básicae de classe derivada e ponteiros......Page 605
13.5 Classes abstratas e funções virtual puras......Page 606
13.6 Estudo de caso: sistema de folha de pagamento utilizando polimorfismo......Page 607
13.6.1 Criando a classe básica abstrata Employee......Page 608
13.6.2 Criando a classe derivada concreta SalariedEmployee......Page 609
13.6.4 Criando a classe derivada concreta CommissionEmployee......Page 613
13.6.6 Demonstrando o processamento polimórfico......Page 617
13.7 Polimorfismo, funções Virtual e vinculação dinâmica ‘sob o capô’ (opcional)......Page 622
13.8 Estudo de caso: sistema de folha de pagamento utilizando polimorfismo e informaçõesde tipo de tempo de execução com downcasting, dynamic_cast, typeid e type_info......Page 625
13.10 Estudo de caso de engenharia de software: incorporando herança ao sistema ATM (opcional)......Page 628
13.11 Síntese......Page 634
14 Templates......Page 638
14.2 Templates de funções......Page 639
14.4 Templates de classe......Page 642
14.5 Parâmetros sem tipo e tipos-padrão para templates de classes......Page 648
14.8 Notas sobre templates e membros static......Page 649
14.9 Síntese......Page 650
15 Entrada/saída de fluxo......Page 654
15.1 Introdução......Page 655
15.2.2 Arquivos de cabeçalho da biblioteca iostream......Page 656
15.2.3 Classes de entrada/saída de fluxo e objetos......Page 657
15.3 Saída de fluxo......Page 658
15.4 Entrada de fluxo......Page 659
15.4.1 Funções-membro get e getline......Page 660
15.4.3 E/S fortemente tipada (type-safe)......Page 662
15.6 Introdução aos manipuladores de fluxos......Page 663
15.6.2 Precisão de ponto flutuante (precision, setprecision)......Page 664
15.6.3 Largura de campo (width, setw)......Page 665
15.7 Estados de formato de fluxo e manipuladores de fluxo......Page 667
15.7.2 Alinhamento (left, right e internal)......Page 669
15.7.3 Preenchimento (fill, setfill)......Page 671
15.7.4 Base de fluxo integral (dec, oct, hex, showbase)......Page 673
15.7.6 Controle de letras maiúsculas/minúsculas (uppercase)......Page 674
15.7.7 Especificando o formato booleano (boolalpha)......Page 675
15.7.8 Configurando e redefinindo o estado de formato via a função-membro flags......Page 676
15.8 Estados de erro de fluxo......Page 677
15.10 Síntese......Page 679
16 Tratamento de exceções......Page 687
16.2 Visão geral do tratamento de exceções......Page 688
16.3 Exemplo: tratando uma tentativa de divisão por zero......Page 689
16.4 Quando utilizar o tratamento de exceções......Page 693
16.5 Relançando uma exceção......Page 694
16.7 Processando exceções inesperadas......Page 696
16.10 Exceções e herança......Page 697
16.11 Processando falhas new......Page 699
16.12 Classe auto_ptr e alocação de memória dinâmica......Page 702
16.13 Hierarquia de exceções da biblioteca-padrão......Page 704
16.14 Outras técnicas de tratamento de erro......Page 705
16.15 Síntese......Page 706
17 Processamento de arquivo......Page 711
17.2 Hierarquia de dados......Page 712
17.4 Criando um arquivo seqüencial......Page 714
17.5 Lendo dados de um arquivo seqüencial......Page 717
17.7 Arquivos de acesso aleatório......Page 723
17.8 Criando um arquivo de acesso aleatório......Page 724
17.9 Gravando dados aleatoriamente em um arquivo de acesso aleatório......Page 728
17.10 Lendo um arquivo de acesso aleatório seqüencialmente......Page 730
17.11 Estudo de caso: um programa de processamento de transação......Page 732
17.12 Entrada/saída de objetos......Page 738
17.13 Síntese......Page 739
18 Classe string e processamento de fluxo de string......Page 746
18.1 Introdução......Page 747
18.2 Atribuição e concatenação de strings......Page 748
18.3 Comparando strings......Page 750
18.5 Trocando strings......Page 752
18.6 Características de string......Page 753
18.7 Localizando strings e caracteres em uma string......Page 755
18.8 Substituindo caracteres em uma string......Page 757
18.9 Inserindo caracteres em uma string......Page 759
18.10 Conversão para strings char * baseadas em ponteiro no estilo C......Page 760
18.11 Iteradores......Page 761
18.12 Processamento de fluxo de string......Page 762
18.13 Síntese......Page 765
19 Programação Web......Page 770
19.2 Tipos de solicitação HTTP......Page 771
19.3 Arquitetura de múltiplas camadas......Page 772
19.4 Acessando servidores Web......Page 773
19.7 Introdução à CGI......Page 774
19.8 Transações HTTP simples......Page 775
19.9 Scripts CGI simples......Page 776
19.10 Enviando entrada para um script CGI......Page 780
19.11 Utilizando formulários XHTML para enviar entrada......Page 784
19.12 Outros cabeçalhos......Page 788
19.13 Estudo de caso: uma página Web interativa......Page 791
19.14 Cookies......Page 795
19.15 Arquivos do lado do servidor......Page 798
19.16 Estudo de caso: carrinho de compras......Page 804
19.17 Síntese......Page 816
19.18 Recursos na Internet e na Web......Page 818
20 Pesquisa e classificação......Page 823
20.1 Introdução......Page 824
20.2.1 Eficiência da pesquisa linear......Page 825
20.2.2 Pesquisa binária......Page 826
20.3.1 Eficiência da classificação por seleção......Page 830
20.3.3 Classificação por intercalação (uma implementação recursiva)......Page 831
20.4 Síntese......Page 836
21 Estruturas de dados......Page 841
21.2 Classes auto-referenciais......Page 842
21.4 Listas vinculadas......Page 843
21.5 Pilhas......Page 856
21.6 Filas......Page 860
21.7 Árvores......Page 863
21.8 Síntese......Page 871
22 Bits, caracteres, strings C e structs......Page 889
22.2 Definições de estrutura......Page 890
22.5 typedef......Page 892
22.6 Exemplo: simulação de embaralhamento e distribuição de cartas de alto desempenho......Page 893
22.7 Operadores de bits......Page 895
22.8 Campos de bit......Page 902
22.9 Biblioteca de tratamento de caractere......Page 906
22.10 Funções de conversão de string baseada em ponteiro......Page 911
22.11 Funções de pesquisa da biblioteca de tratamento de strings baseadas em ponteiro......Page 916
22.12 Funções de memória da biblioteca de tratamento de strings baseadas em ponteiro......Page 917
22.13 Síntese......Page 924
23 Standard Template Library (STL)......Page 933
23.1 Introdução à Standard Template Library (STL)......Page 934
23.1.1 Introdução aos contêineres......Page 936
23.1.2 Introdução aos iteradores......Page 939
23.1.3 Introdução aos algoritmos......Page 942
23.2 Contêineres de seqüência......Page 944
23.2.1 Contêiner de seqüência vector......Page 945
23.2.2 Contêiner de seqüência list......Page 951
23.2.3 Contêiner de seqüência deque......Page 954
23.3.1 Contêiner associativo multiset......Page 956
23.3.3 Contêiner associativo multimap......Page 958
23.3.4 Contêiner associativo map......Page 961
23.4.1 Adaptador stack......Page 962
23.4.2 Adaptador queue......Page 964
23.4.3 Adaptador priority_queue......Page 965
23.5.1 fill, fill_n, generate e generate_n......Page 967
23.5.2 equal, mismatch e lexicographical_compare......Page 969
23.5.3 remove, remove_if, remove_copy e remove_copy_if......Page 970
23.5.4 replace, replace_if, replace_copy e replace_copy_if......Page 973
23.5.5 Algoritmos matemáticos......Page 975
23.5.6 Algoritmos de pesquisa e classificação básica......Page 977
23.5.7 swap, iter_swap e swap_ranges......Page 980
23.5.8 copy_backward, merge, unique e reverse......Page 981
23.5.10 Operações set......Page 983
23.5.11 lower_bound, upper_bound e equal_range......Page 986
23.5.12 Heapsort......Page 988
23.5.14 Algoritmos de STL não discutidos neste capítulo......Page 991
23.6 Classe bitset......Page 993
23.7 Objetos de função......Page 996
23.9 Recursos sobre C++ na Internet e na Web......Page 998
24 Outros tópicos......Page 1006
24.2 Operador const_cast......Page 1007
24.3 namespaces......Page 1008
24.4 Palavras-chave de operador......Page 1011
24.5 Membros de classe mutable......Page 1013
24.6 Ponteiros para membros de classe (.* e ->*)......Page 1015
24.7 Herança múltipla......Page 1016
24.8 Herança múltipla e classes básicas virtual......Page 1019
24.9 Síntese......Page 1024
24.10 Observações finais......Page 1025
A Tabela de precedência e associatividade de operadores......Page 1029
B Conjunto de caracteres ASCII......Page 1031
C Tipos fundamentais......Page 1032
D Sistemas de numeração......Page 1034
D.1 Introdução......Page 1035
D.2 Abreviando números binários como números octais e números hexadecimais......Page 1036
D.4 Convertendo de octal, binário ou hexadecimal para decimal......Page 1038
D.5 Convertendo de decimal para octal, binário ou hexadecimal......Page 1039
D.6 Números binários negativos: notação de complemento de dois......Page 1040
E Tópicos sobre o código C legado......Page 1044
E.2 Redirecionando entrada/saída em sistemas UNIX/Linux/Mac OS X e Windows......Page 1045
E.3 Listas de argumentos de comprimento variável......Page 1046
E.5 Notas sobre a compilação de programas de arquivo de múltiplas fontes......Page 1048
E.6 Terminação de programa com exit e atexit......Page 1050
E.9 Tratamento de sinal......Page 1052
E.10 Alocação dinâmica de memória com calloc e realloc......Page 1054
E.12 Uniões......Page 1055
E.14 Síntese......Page 1059
F Pré-processador......Page 1064
F.3 Diretiva de pré-processador #define: constantes simbólicas......Page 1065
F.4 Diretiva de pré-processador #define: macros......Page 1066
F.5 Compilação condicional......Page 1067
F.7 Os operadores # e ##......Page 1068
F.10 Síntese......Page 1069
G.1 Implementação do estudo de caso ATM......Page 1073
G.2 Classe ATM......Page 1074
G.4 Classe Keypad......Page 1080
G.5 Classe CashDispenser......Page 1081
G.6 Classe DepositSlot......Page 1082
G.7 Classe Account......Page 1083
G.8 Classe BankDatabase......Page 1085
G.9 Classe Transaction......Page 1088
G.10 Classe BalanceInquiry......Page 1089
G.11 Classe Withdrawal......Page 1091
G.12 Classe Deposit......Page 1093
G.13 Programa de teste ATMCaseStudy.cpp......Page 1098
G.14 Síntese......Page 1099
H.2 Tipos de diagramas adicionais......Page 1100
I.1 Recursos......Page 1102
I.2 Tutoriais......Page 1103
I.6 Compiladores e ferramentas de desenvolvimento......Page 1104
I.7 Standard Template Library......Page 1105
J Introdução à XHTML......Page 1106
J.3 Primeiro exemplo de XHTML......Page 1107
J.4 Cabeçalhos......Page 1109
J.5 Vinculando......Page 1111
J.6 Imagens......Page 1113
J.7 Caracteres especiais e mais quebras de linha......Page 1117
J.8 Listas não ordenadas......Page 1118
J.10 Tabelas de XHTML básicas......Page 1120
J.11 Tabelas e formatação de XHTML intermediárias......Page 1124
J.12 Formulários XHTML básicos......Page 1126
J.13 Formulários XHTML mais complexos......Page 1129
J.14 Recursos na Internet e na Web......Page 1135
K Caracteres especiais de XHTML......Page 1139
L Utilizando o depurador do Visual Studio NET......Page 1140
L.2 Pontos de interrupção e o comando Continue......Page 1141
L.3 As janelas Locals e Watch......Page 1146
L.4 Controlando a execução utilizando os comandos Step Into, Step Over, Step Out e Continue......Page 1148
L.5 A janela Autos......Page 1151
L.6 Síntese......Page 1152
M Utilizando o depurador do GNU C++......Page 1154
M.2 Pontos de interrupção e os comandos run, stop, continue e print......Page 1155
M.3 Os comandos print e set......Page 1161
M.4 Controlando a execução utilizando os comandos step, finish e next......Page 1162
M.5 O comando watch......Page 1164
M.6 Síntese......Page 1167
Bibliografia......Page 1070
Índice remissivo......Page 1174