C Como Programar

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): Paul Deitel & Harvey Deitel
Edition: 6
Publisher: Pearson Education do Brasil
Year: 2011

Language: Portuguese
Pages: 848
City: São Paulo

1 introdução aos computadores, à internet e à Web......Page 30
1.1 Introdução......Page 31
1.3 Organização dos computadores......Page 32
1.5 A Internet e a World Wide Web......Page 33
1.6 Linguagens de máquina, simbólicas e de alto nível......Page 34
1.8 A biblioteca-padrão de C......Page 35
1.10 Java......Page 36
1.13 Tendência-chave em software: tecnologia de objetos......Page 37
1.14 Ambiente de desenvolvimento de programa típico em C......Page 38
1.15 Tendências de hardware......Page 40
1.17 Recursos na Web......Page 41
2 introdução à programação em C......Page 48
2.2 Um programa em C simples: imprimindo uma linha de texto......Page 49
2.3 Outro programa em C simples: somando dois inteiros......Page 52
2.5 Aritmética em C......Page 57
2.6 Tomada de decisões: operadores relacionais e de igualdade......Page 60
3 Desenvolvimento estruturado de programas em C......Page 73
3.3 Pseudocódigo......Page 74
3.4 Estruturas de controle......Page 75
3.5 A estrutura de seleção if......Page 76
3.6 A estrutura de seleção if…else......Page 77
3.7 A estrutura de repetição while......Page 81
3.8 Formulando algoritmos: estudo de caso 1 (repetição controlada por contador)......Page 82
3.9 Formulando algoritmos com refinamentos sucessivos top-down: estudo de caso 2 (repetição controlada por sentinela)......Page 84
3.10 Formulando algoritmos com refinamentos sucessivos top-down: estudo de caso 3 (estruturas de controle aninhadas)......Page 89
3.11 Operadores de atribuição......Page 93
3.12 Operadores de incremento e decremento......Page 94
4 Controle de programa em C......Page 108
4.3 Repetição controlada por contador......Page 109
4.4 A estrutura de repetição for......Page 111
4.5 Estrutura for: notas e observações......Page 113
4.6 Exemplos do uso da estrutura for......Page 114
4.7 A estrutura de seleção múltipla switch......Page 117
4.8 A estrutura de repetição do…while......Page 122
4.9 Os comandos break e continue......Page 123
4.10 Operadores lógicos......Page 124
4.11 Confundindo os operadores de igualdade (==) com os de atribuição (=)......Page 126
4.12 Resumo da programação estruturada......Page 128
5 Funções em C......Page 142
5.2 Módulos de programa em C......Page 143
5.3 Funções da biblioteca matemática......Page 144
5.4 Funções......Page 145
5.5 Definições de funções......Page 146
5.6 Protótipos de funções......Page 150
5.7 Pilha de chamada de funções e registros de ativação......Page 152
5.9 Chamando funções por valor e por referência......Page 153
5.10 Geração de números aleatórios......Page 154
5.11 Exemplo: um jogo de azar......Page 158
5.12 Classes de armazenamento......Page 161
5.13 Regras de escopo......Page 164
5.14 Recursão......Page 166
5.15 Exemplo de uso da recursão: a série de Fibonacci......Page 169
5.16 Recursão versus iteração......Page 173
6 Arrays em C......Page 189
6.2 Arrays......Page 190
6.3 Declarando arrays......Page 191
6.4 Exemplos de arrays......Page 192
6.5 Passando arrays para funções......Page 204
6.6 Ordenando arrays......Page 207
6.7 Estudo de caso: calculando média, mediana e moda usando arrays......Page 209
6.8 Pesquisando arrays......Page 213
6.9 Arrays multidimensionais......Page 217
7 Ponteiros em C......Page 237
7.2 Declarações e inicialização de variáveis-ponteiro......Page 238
7.3 Operadores de ponteiros......Page 239
7.4 Passando argumentos para funções por referência......Page 241
7.5 Usando o qualificador const com ponteiros......Page 244
7.6 Bubble sort usando chamada por referência......Page 250
7.7 Operador sizeof......Page 252
7.8 Expressões com ponteiros e aritmética de ponteiros......Page 255
7.9 A relação entre ponteiros e arrays......Page 257
7.11 Estudo de caso: uma simulação de embaralhamento e distribuição de cartas......Page 261
7.12 Ponteiros para funções......Page 266
8 Caracteres e strings em C......Page 285
8.2 Fundamentos de strings e caracteres......Page 286
8.3 Biblioteca de tratamento de caracteres......Page 288
8.4 Funções de conversão de strings......Page 293
8.5 Funções da biblioteca-padrão de entrada/saída......Page 297
8.6 Funções de manipulação de strings da biblioteca de tratamento de strings......Page 300
8.7 Funções de comparação da biblioteca de tratamento de strings......Page 302
8.8 Funções de pesquisa da biblioteca de tratamento de strings......Page 304
8.9 Funções de memória da biblioteca de tratamento de strings......Page 309
9 Entrada/saída formatada em C......Page 325
9.3 Formatação da saída com printf......Page 326
9.4 Impressão de inteiros......Page 327
9.5 Impressão de números em ponto flutuante......Page 328
9.6 Impressão de strings e caracteres......Page 330
9.7 Outros especificadores de conversão......Page 331
9.8 Impressão com larguras de campo e precisão......Page 332
9.9 Uso de flags na string de controle de formato de printf......Page 334
9.10 Impressão de literais e de sequências de escape......Page 336
9.11 Leitura da entrada formatada com scanf......Page 337
10 Estruturas, uniões, manipulações de bits e enumerações em C......Page 348
10.2 Declarações de estruturas......Page 349
10.4 Acesso aos membros da estrutura......Page 351
10.6 typedef......Page 353
10.7 Exemplo: uma simulação de alto desempenho de embaralhamento e distribuição de cartas......Page 354
10.8 Uniões......Page 356
10.9 Operadores sobre bits......Page 359
10.10 Campos de bit......Page 366
10.11 Constantes de enumeração......Page 369
11 Processamento de arquivos em C......Page 378
11.2 Hierarquia de dados......Page 379
11.3 Arquivos e streams......Page 380
11.4 Criação de um arquivo de acesso sequencial......Page 381
11.5 Leitura de dados de um arquivo de acesso sequencial......Page 386
11.6 Arquivos de acesso aleatório......Page 389
11.7 Criação de um arquivo de acesso aleatório......Page 390
11.8 Escrita aleatória de dados em um arquivo de acesso aleatório......Page 391
11.9 Leitura de dados de um arquivo de acesso aleatório......Page 394
11.10 Estudo de caso: programa de processamento de transações......Page 395
12 Estruturas de dados em C......Page 408
12.2 Estruturas autorreferenciadas......Page 409
12.3 Alocação dinâmica de memória......Page 410
12.4 Listas encadeadas......Page 411
12.5 Pilhas......Page 419
12.6 Filas......Page 424
12.7 Árvores......Page 429
13 O pré-processador em C......Page 443
13.3 A diretiva #define do pré-processador: constantes simbólicas......Page 444
13.4 A diretiva #define do pré-processador: macros......Page 445
13.5 Compilação condicional......Page 446
13.6 As diretivas #error e #pragma do pré-processador......Page 447
13.9 Constantes simbólicas predefinidas......Page 448
13.10 Asserções......Page 449
14 Outros tópicos sobre C......Page 453
14.2 Redirecionamento de entrada/saída......Page 454
14.3 Listas de argumentos de tamanhos variáveis......Page 455
14.4 Uso de argumentos na linha de comando......Page 457
14.5 Notas sobre a compilação de programas de múltiplos arquivos-fonte......Page 458
14.6 Término de programas com exit e atexit......Page 459
14.7 O qualificador de tipo volatile......Page 460
14.9 Mais sobre arquivos......Page 461
14.10 Tratamento de sinais......Page 463
14.12 Desvio incondicional com goto......Page 465
15 C++: um C melhor – introdução à tecnologia de objeto......Page 471
15.3 Um programa simples: somando dois inteiros......Page 472
15.4 Biblioteca-padrão de C++......Page 474
15.5 Arquivos de cabeçalho......Page 475
15.6 Funções inline......Page 477
15.7 Referências e parâmetros de referência......Page 479
15.8 Listas de parâmetros vazios......Page 483
15.9 Argumentos default......Page 484
15.10 Operador unário de resolução de escopo......Page 486
15.11 Sobrecarga de função......Page 487
15.12 Templates de função......Page 490
15.13 Introdução à tecnologia de objetos e a UML......Page 492
15.14 Conclusão......Page 494
16 Introdução a classes e objetos......Page 499
16.2 Classes, objetos, funções-membro e dados-membro......Page 500
16.3 Definição de uma classe com uma função-membro......Page 501
16.4 Definição de uma função-membro com um parâmetro......Page 503
16.5 Dados-membro, funções set e funções get......Page 506
16.6 Inicialização de objetos com construtores......Page 512
16.7 Introdução de uma classe em um arquivo separado para reutilização......Page 515
16.8 Separação da interface de implementação......Page 518
16.9 Validação de dados com funções set......Page 523
16.10 Conclusão......Page 527
17 Classes: uma visão mais detalhada, parte 1......Page 533
17.2 Estudo de caso da classe time......Page 534
17.3 Escopo de classe e acesso a membros de classes......Page 540
17.5 Funções de acesso e funções utilitárias......Page 542
17.6 Estudo de caso da classe time: construtores com argumentos default......Page 545
17.8 Quando construtores e destrutores são chamados......Page 550
17.9 Estudo de caso da classe time: uma armadilha sutil — retorno de uma referência a um dado-membro private......Page 553
17.10 Atribuição usando cópia membro a membro default......Page 555
17.11 Conclusão......Page 557
18 Classes: uma visão mais detalhada, parte 2......Page 563
18.2 Objetos const (constantes) e funções-membro const......Page 564
18.3 Composição: objetos como membros de classes......Page 572
18.4 Funções friend e classes friend......Page 578
18.5 Uso do ponteiro this......Page 580
18.6 Membros de classe static......Page 585
18.7 Abstração de dados e ocultação de informações......Page 589
18.8 Conclusão......Page 591
19 Sobrecarga de operadores......Page 596
19.2 Fundamentos da sobrecarga de operadores......Page 597
19.3 Restrições na sobrecarga de operadores......Page 598
19.4 Funções operador como membros de classe versus funções operador como funções globais......Page 600
19.5 Sobrecarga dos operadores de inserção em stream e de extração de stream......Page 601
19.7 Sobrecarga de operadores binários......Page 604
19.8 Gerenciamento dinâmico de memória......Page 605
19.9 Estudo de caso: classe Array......Page 606
19.10 Conversão de tipos......Page 616
19.11 Criação de uma classe String......Page 617
19.12 Sobrecarga de ++ e --......Page 618
19.13 Estudo de caso: uma classe Date......Page 619
19.14 Classe string da biblioteca-padrão......Page 624
19.15 Construtores explicit......Page 626
19.16 Classes proxy......Page 629
19.17 Conclusão......Page 632
20 Programação orientada a objetos: herança......Page 643
20.1 Introdução......Page 644
20.2 Classes-base e classes derivadas......Page 645
20.4 Relação entre classe-base e classe derivada......Page 647
20.4.1 Criação e uso de uma classe FuncionarioComissao......Page 648
20.4.2 Criação e uso de uma classe FuncionarioBaseMaisComissao sem o uso de herança......Page 652
20.4.3 Criação de uma hierarquia de herança FuncionarioComissao — FuncionarioBaseMaisComissao......Page 657
20.4.4 Hierarquia de herança FuncionarioComissao — FuncionarioBaseMaisComissao usando dados protected......Page 660
20.4.5 Hierarquia de herança FuncionarioComissao — FuncionarioBaseMaisComissao usando dados private......Page 667
20.5 Construtores e destrutores em classes derivadas......Page 673
20.6 Heranças public, protected e private......Page 680
20.7 Engenharia de software com herança......Page 681
20.8 Conclusão......Page 682
21 Programação orientada a objeto: polimorfismo......Page 687
21.1 Introdução......Page 688
21.2 Exemplos de polimorfismo......Page 689
21.3.1 Chamada de funções de classe-base por objetos de classe derivada......Page 690
21.3.2 Visando ponteiros de classe derivada em objetos de classe-base......Page 696
21.3.3 Chamadas de função-membro de classe derivada com ponteiros de classe-base......Page 697
21.3.4 Funções virtuais......Page 699
21.3.5 Resumo das atribuições permitidas entre objetos e ponteiros de classe-base e derivada......Page 704
21.5 Classes abstratas e funções virtuais puras......Page 705
21.6 Estudo de caso: um sistema de folha de pagamento usando polimorfismo......Page 707
21.6.1 Criação da classe-base abstrata Funcionario......Page 708
21.6.2 Criação da classe derivada concreta FuncionarioSalario......Page 711
21.6.3 Criação da classe derivada concreta FuncionarioHora......Page 713
21.6.4 Criação da classe derivada concreta FuncionarioComissao......Page 715
21.6.5 Criação da classe derivada concreta indireta FuncionarioBaseMaisComissao......Page 717
21.6.6 Demonstração do processamento polimórfico......Page 718
21.7 Polimorfismo, funções virtuais e vinculação dinâmica ‘vistos por dentro’......Page 722
21.8 Estudo de caso: sistema de folha de pagamento usando polimorfismo e informação de tipo em tempo de execução com downcasting, dynamic_cast, typeid e type_info......Page 725
21.10 Conclusão......Page 728
22 Templates......Page 733
22.2 Templates de função......Page 734
22.4 Templates de classe......Page 737
22.5 Parâmetros não tipo e tipos default para templates de classe......Page 743
22.7 Notas sobre templates e friends......Page 744
22.9 Conclusão......Page 745
23 Entrada e saída de streams......Page 749
23.1 Introdução......Page 750
23.2.1 Streams clássicos versus streams-padrão......Page 751
23.2.3 Classes e objetos de entrada/saída de streams......Page 752
23.3.2 Saída de caracteres usando a função-membro put......Page 754
23.4.1 Funções-membro get e getline......Page 755
23.5 E/S não formatada com read, write e gcount......Page 757
23.6.1 Base do stream de inteiros: dec, oct, hex e setbase......Page 758
23.6.2 Precisão em ponto flutuante (precision, setprecision)......Page 759
23.6.3 Largura de campo (width, setw)......Page 760
23.6.4 Manipuladores de stream de saída definidos pelo usuário......Page 762
23.7.1 Zeros à direita e pontos decimais (showpoint)......Page 763
23.7.2 Alinhamento (left, right e internal)......Page 764
23.7.3 Preenchimento (fill, setfill)......Page 765
23.7.4 Base do stream de inteiros (dec, oct, hex, showbase)......Page 766
23.7.5 Números em ponto flutuante; notações científica e fixa (scientific, fixed)......Page 767
23.7.7 Especificação do formato booleano (boolalpha)......Page 768
23.7.8 Inicialização e reinicialização do estado original com função-membro flags......Page 769
23.8 Estados de erro do stream......Page 770
23.10 Conclusão......Page 772
24 Tratamento de exceções......Page 781
24.2 Visão geral do tratamento de exceção......Page 782
24.3 Exemplo: tratando uma tentativa de divisão por zero......Page 783
24.4 Quando o tratamento de exceção deve ser usado......Page 788
24.5 Indicação de uma exceção......Page 789
24.7 Processamento de exceções inesperadas......Page 791
24.8 Desempilhamento......Page 792
24.9 Construtores, destrutores e tratamento de exceções......Page 793
24.11 Processamento de falhas de new......Page 794
24.12 Classe auto_ptr e alocação dinâmica de memória......Page 797
24.13 Hierarquia de exceções da biblioteca-padrão......Page 799
24.14 Outras técnicas de tratamento de erros......Page 800
24.15 Conclusão......Page 801
A Tabelas de precedência dos operadores......Page 806
B Conjunto de caracteres ASCII......Page 809
C Sistemas numéricos......Page 810
C.1 Introdução......Page 811
C.2 Abreviação de números binários como números octais e hexadecimais......Page 813
C.3 Conversão de números octais e hexadecimais em números binários......Page 814
C.5 Conversão de decimal em binário, octal ou hexadecimal......Page 815
C.6 Números binários negativos: notação de complemento de dois......Page 817
D.1 Introdução......Page 821
D.3 Estratégias de solução......Page 822
D.5 Criação de novos quebra-cabeças de Sudoku......Page 826
D.6 Conclusão......Page 828
Índice remissivo......Page 829