Sei sulla pagina 1di 11

Sumário

Apresentação xix
Prefácio xxi
Antes de começar xxxi

1 Introdução a computadores, internet e Java 1


1.1 Introdução 2
1.2 Hardware e software 3
1.2.1 Lei de Moore 4
1.2.2 Organização do computador 4
1.3 Hierarquia de dados 5
1.4 Linguagens de máquina, assembly e de alto nível 7
1.5 Introdução à tecnologia de objetos 8
1.5.1 O automóvel como um objeto 8
1.5.2 Métodos e classes 9
1.5.3 Instanciação 9
1.5.4 Reutilização 9
1.5.5 Mensagens e chamadas de método 9
1.5.6 Atributos e variáveis de instância 9
1.5.7 Encapsulamento e ocultamento de informações 9
1.5.8 Herança 9
1.5.9 Interfaces 10
1.5.10 Análise e projeto orientados a objetos (OOAD) 10
1.5.11 A UML (unified modeling language) 10
1.6 Sistemas operacionais 10
1.6.1 Windows — um sistema operacional proprietário 10
1.6.2 Linux — um sistema operacional de código-fonte aberto 11
1.6.3 Android 11
1.7 Linguagens de programação 11
1.8 Java 13
1.9 Um ambiente de desenvolvimento Java típico 13
1.10 Testando um aplicativo Java 16
1.11 Internet e World Wide Web 20
1.11.1 A internet: uma rede de redes 20
1.11.2 A World Wide Web: tornando a internet amigável ao usuário 21
1.11.3 Serviços web e mashups 21
1.11.4 Ajax 22
1.11.5 A internet das coisas 22
1.12 Tecnologias de software 22
1.13 Mantendo-se atualizado com as tecnologias da informação 23
viii Java: como programar

2 Introdução a aplicativos Java – entrada/saída e operadores 27


2.1 Introdução 28
2.2 Nosso primeiro programa Java: imprimindo uma linha de texto 28
2.3 Modificando nosso primeiro programa Java 33
2.4 Exibindo texto com 35
2.5 Outra aplicação: adicionando inteiros 36
2.5.1 Declarações 37
2.5.2 Declarando a classe 37
2.5.3 Declarando e criando um para obter entrada do usuário a partir do teclado 37
2.5.4 Declarando variáveis para armazenar números inteiros 38
2.5.5 Solicitando entrada ao usuário 38
2.5.6 Obtendo um como entrada do usuário 39
2.5.7 Solicitando e inserindo um segundo 39
2.5.8 Usando variáveis em um cálculo 39
2.5.9 Exibindo o resultado do cálculo 39
2.5.10 Documentação da Java API 40
2.6 Conceitos de memória 40
2.7 Aritmética 41
2.8 Tomada de decisão: operadores de igualdade e operadores relacionais 43
2.9 Conclusão 47

3 Introdução a classes, objetos, métodos e strings 55


3.1 Introdução 56
3.2 Variáveis de instância, métodos set e métodos get 56
3.2.1 Classe com uma variável de instância, um método set e um método get 56
3.2.2 Classe que cria e usa um objeto da classe 59
3.2.3 Compilação e execução de um aplicativo com múltiplas classes 61
3.2.4 Diagrama de classe UML de com uma variável de instância e os métodos set e get 61
3.2.5 Notas adicionais sobre a classe 62
3.2.6 Engenharia de software com variáveis de instância e métodos set e get 63
3.3 Tipos primitivos versus tipos por referência 64
3.4 Classe inicialização de objetos com construtores 64
3.4.1 Declaração de um construtor para inicialização de objeto personalizado 64
3.4.2 Classe inicialização de objetos quando eles são criados 65
3.5 A classe com um saldo; números de ponto flutuante 66
3.5.1 A classe com uma variável de instância do tipo 67
3.5.2 A classe para utilizar a classe 68
3.6 (Opcional) Estudo de caso de GUIs e imagens gráficas: utilizando caixas de diálogo 70
3.7 Conclusão 73

4 Instruções de controle: parte 1; operadores de atribuição ++ e -- 79


4.1 Introdução 80
4.2 Algoritmos 80
4.3 Pseudocódigo 80
4.4 Estruturas de controle 81
4.5 A instrução de seleção única 82
4.6 Instrução de seleção dupla 83
4.7 Classe instruções … aninhadas 87
4.8 Instrução de repetição 89
4.9 Formulando algoritmos: repetição controlada por contador 90
4.10 Formulando algoritmos: repetição controlada por sentinela 93
4.11 Formulando algoritmos: instruções de controle aninhadas 98
4.12 Operadores de atribuição compostos 102
Sumário ix

4.13 Operadores de incremento e decremento 102


4.14 Tipos primitivos 105
4.15 (Opcional) Estudo de caso de GUIs e imagens gráficas: criando desenhos simples 105
4.16 Conclusão 108

5 Instruções de controle: parte 2; operadores lógicos 119


5.1 Introdução 120
5.2 Princípios básicos de repetição controlada por contador 120
5.3 Instrução de repetição 121
5.4 Exemplos com a estrutura 125
5.5 Instrução de repetição 128
5.6 A estrutura de seleção múltipla 130
5.7 Estudo de caso da classe : em instruções 134
5.8 Instruções e 137
5.9 Operadores lógicos 138
5.10 Resumo de programação estruturada 143
5.11 (Opcional) Estudo de caso de GUIs e imagens gráficas:
desenhando retângulos e ovais 147
5.12 Conclusão 149

6 Métodos: um exame mais profundo 157


6.1 Introdução 158
6.2 Módulos de programa em Java 158
6.3 Métodos , campos e classe 160
6.4 Declarando métodos com múltiplos parâmetros 161
6.5 Notas sobre a declaração e utilização de métodos 164
6.6 Pilhas de chamadas de método e quadros de pilha 165
6.7 Promoção e coerção de argumentos 165
6.8 Pacotes de Java API 166
6.9 Estudo de caso: geração segura de números aleatórios 167
6.10 Estudo de caso: um jogo de azar; apresentando tipos 171
6.11 Escopo das declarações 175
6.12 Sobrecarga de método 176
6.13 (Opcional) Estudo de caso de GUIs e imagens gráficas: cores e formas preenchidas 178
6.14 Conclusão 181

7 Arrays e ArrayLists 191


7.1 Introdução 192
7.2 Arrays 192
7.3 Declarando e criando arrays 194
7.4 Exemplos que utilizam arrays 195
7.4.1 Criando e inicializando um array 195
7.4.2 Utilizando um inicializador de array 195
7.4.3 Calculando os valores para armazenar em um array 196
7.4.4 Somando os elementos de um array 197
7.4.5 Utilizando gráficos de barras para exibir dados de array graficamente 198
7.4.6 Utilizando os elementos de um array como contadores 199
7.4.7 Utilizando os arrays para analisar resultados de pesquisas 200
7.5 Tratamento de exceções: processando a resposta incorreta 201
7.5.1 A instrução 202
7.5.2 Executando o bloco 202
7.5.3 O método do parâmetro de exceção 202
7.6 Estudo de caso: simulação de embaralhamento e distribuição de cartas 202
x Java: como programar

7.7 A instrução aprimorada 206


7.8 Passando arrays para métodos 207
7.9 Passagem por valor versus passagem por referência 209
7.10 Estudo de caso: classe utilizando um array para armazenar notas 209
7.11 Arrays multidimensionais 213
7.12 Estudo de caso: classe utilizando um array bidimensional 216
7.13 Listas de argumentos de comprimento variável 220
7.14 Utilizando argumentos de linha de comando 221
7.15 Classe 223
7.16 Introdução a coleções e classe 225
7.17 (Opcional) Estudo de caso de GUIs e imagens gráficas: desenhando arcos 227
7.18 Conclusão 230

8 Classes e objetos: um exame mais profundo 247


8.1 Introdução 248
8.2 Estudo de caso da classe 248
8.3 Controlando o acesso a membros 252
8.4 Referenciando membros do objeto atual com a referência 252
8.5 Estudo de caso da classe : construtores sobrecarregados 254
8.6 Construtores padrão e sem argumentos 259
8.7 Notas sobre os métodos Set e Get 259
8.8 Composição 260
8.9 Tipos 262
8.10 Coleta de lixo 264
8.11 Membros da classe 265
8.12 Importação 268
8.13 Variáveis de instância 269
8.14 Acesso de pacote 270
8.15 Usando para cálculos monetários precisos 271
8.16 (Opcional) Estudo de caso de GUIs e imagens gráficas: utilizando objetos com imagens gráficas 273
8.17 Conclusão 275

9 Programação orientada a objetos: herança 283


9.1 Introdução 284
9.2 Superclasses e subclasses 284
9.3 Membros 286
9.4 Relacionamento entre superclasses e subclasses 287
9.4.1 Criando e utilizando uma classe 287
9.4.2 Criando e utilizando uma classe 291
9.4.3 Criando uma hierarquia de herança 295
9.4.4 Hierarquia de herança utilizando
variáveis de instância 297
9.4.5 Hierarquia de herança utilizando
variáveis de instância 300
9.5 Construtores em subclasses 303
9.6 Classe 304
9.7 (Opcional) Estudo de caso de GUI e imagens gráficas: exibindo texto e imagens utilizando rótulos 304
9.8 Conclusão 306

10 Programação orientada a objetos: polimorfismo e interfaces 311


10.1 Introdução 312
10.2 Exemplos de polimorfismo 313
10.3 Demonstrando um comportamento polimórfico 314
Sumário xi

10.4 Classes e métodos abstratos 316


10.5 Estudo de caso: sistema de folha de pagamento utilizando polimorfismo 318
10.5.1 Superclasse abstrata 319
10.5.2 Subclasse concreta 320
10.5.3 Subclasse concreta 322
10.5.4 Subclasse concreta 323
10.5.5 Subclasse concreta indireta 325
10.5.6 Processamento polimórfico, operador e downcasting 326
10.6 Atribuições permitidas entre variáveis de superclasse e subclasse 330
10.7 Métodos e classes 330
10.8 Uma explicação mais profunda das questões com chamada de métodos a partir de construtores 331
10.9 Criando e utilizando interfaces 331
10.9.1 Desenvolvendo uma hierarquia 332
10.9.2 Interface 333
10.9.3 Classe 333
10.9.4 Modificando a classe para implementar a interface 335
10.9.5 Modificando a classe para uso na hierarquia 336
10.9.6 Utilizando a interface para processar e polimorficamente 338
10.9.7 Algumas interfaces comuns da Java API 339
10.10 Melhorias na interface Java SE 8 340
10.10.1 Métodos de interface 340
10.10.2 Métodos de interface 340
10.10.3 Interfaces funcionais 341
10.11 (Opcional) Estudo de caso de GUIs e imagens gráficas: desenhando com polimorfismo 341
10.12 Conclusão 342

11 Tratamento de exceção: um exame mais profundo 347


11.1 Introdução 348
11.2 Exemplo: divisão por zero sem tratamento de exceção 349
11.3 Exemplo: tratando e 351
11.4 Quando utilizar o tratamento de exceção 354
11.5 Hierarquia de exceção Java 355
11.6 Bloco 357
11.7 Liberando a pilha e obtendo informações de um objeto de exceção 361
11.8 Exceções encadeadas 363
11.9 Declarando novos tipos de exceção 364
11.10 Pré-condições e pós-condições 365
11.11 Assertivas 366
11.12 com recursos: desalocação automática de recursos 367
11.13 Conclusão 367

12 Componentes GUI: parte 1 373


12.1 Introdução 374
12.2 A nova aparência e comportamento do Java Nimbus 375
12.3 Entrada/saída baseada em GUI simples com 376
12.4 Visão geral de componentes Swing 378
12.5 Exibição de texto e imagens em uma janela 379
12.6 Campos de texto e uma introdução ao tratamento de eventos com classes aninhadas 383
12.7 Tipos comuns de eventos GUI e interfaces ouvintes 388
12.8 Como o tratamento de evento funciona 389
12.9 390
12.10 Botões que mantêm o estado 393
12.10.1 393
12.10.2 395
xii Java: como programar

12.11 e uso de uma classe interna anônima para tratamento de eventos 398
12.12 401
12.13 Listas de seleção múltipla 403
12.14 Tratamento de evento de mouse 405
12.15 Classes de adaptadores 408
12.16 Subclasse para desenhar com o mouse 411
12.17 Tratamento de eventos de teclado 414
12.18 Introdução a gerenciadores de layout 416
12.18.1 417
12.18.2 420
12.18.3 422
12.19 Utilizando painéis para gerenciar layouts mais complexos 424
12.20 425
12.21 Conclusão 428

13 Imagens gráficas e Java 2D 439


13.1 Introdução 440
13.2 Contextos gráficos e objetos gráficos 442
13.3 Controle de cor 442
13.4 Manipulando fontes 448
13.5 Desenhando linhas, retângulos e ovais 452
13.6 Desenhando arcos 455
13.7 Desenhando polígonos e polilinhas 457
13.8 Java 2D API 459
13.9 Conclusão 464

14 Strings, caracteres e expressões regulares 471


14.1 Introdução 472
14.2 Fundamentos de caracteres e strings 472
14.3 Classe 473
14.3.1 Construtores 473
14.3.2 Métodos , e 474
14.3.3 Comparando Strings 474
14.3.4 Localizando caracteres e substrings em strings 478
14.3.5 Extraindo substrings de strings 479
14.3.6 Concatenando strings 480
14.3.7 Métodos de diversos 480
14.3.8 Método 481
14.4 Classe 482
14.4.1 Construtores 483
14.4.2 Métodos , , e 483
14.4.3 Métodos , , e 484
14.4.4 Métodos append 485
14.4.5 Métodos de inserção e exclusão de 487
14.5 Classe 488
14.6 Tokenização de 491
14.7 Expressões regulares, classe e classe 492
14.8 Conclusão 498

15 Arquivos, fluxos e serialização de objetos 507


15.1 Introdução 508
15.2 Arquivos e fluxos 508
15.3 Usando classes e interfaces NIO para obter informações de arquivo e diretório 509
Sumário xiii

15.4 Arquivos de texto de acesso sequencial 512


15.4.1 Criando um arquivo de texto de acesso sequencial 512
15.4.2 Lendo dados a partir de um arquivo de texto de acesso sequencial 515
15.4.3 Estudo de caso: um programa de consulta de crédito 517
15.4.4 Atualizando arquivos de acesso sequencial 520
15.5 Serialização de objeto 520
15.5.1 Criando um arquivo de acesso sequencial com a serialização de objeto 521
15.5.2 Lendo e desserializando dados a partir de um arquivo de acesso sequencial 525
15.6 Abrindo arquivos com 526
15.7 (Opcional) Classes adicionais 529
15.7.1 Interfaces e classes para entrada e saída baseadas em bytes 529
15.7.2 Interfaces e classes para entrada e saída baseadas em caracteres 531
15.8 Conclusão 531

16 Coleções genéricas 537


16.1 Introdução 538
16.2 Visão geral das coleções 538
16.3 Classes empacotadoras de tipo 539
16.4 Autoboxing e auto-unboxing 539
16.5 Interface e classe 540
16.6 Listas 540
16.6.1 e 541
16.6.2 543
16.7 Métodos de coleções 546
16.7.1 Método 547
16.7.2 Método 549
16.7.3 Métodos , , , e 551
16.7.4 Método 553
16.7.5 Métodos , e 554
16.8 Classe do pacote 555
16.9 Classe e interface 557
16.10 Conjuntos 558
16.11 Mapas 560
16.12 Classe 563
16.13 Coleções sincronizadas 565
16.14 Coleções não modificáveis 566
16.15 Implementações abstratas 566
16.16 Conclusão 566

17 Lambdas e fluxos Java SE 8 571


17.1 Introdução 572
17.2 Visão geral das tecnologias de programação funcional 573
17.2.1 Interfaces funcionais 574
17.2.2 Expressões lambda 574
17.2.3 Fluxos 575
17.3 Operações 576
17.3.1 Criando um e exibindo seus valores com a operação terminal 578
17.3.2 Operações terminais , , , e 579
17.3.3 Operação terminal 579
17.3.4 Operações intermediárias: filtrando e classificando valores 580
17.3.5 Operação intermediária: mapeamento 581
17.3.6 Criando fluxos de s com os métodos e 581
17.4 Manipulações 582
17.4.1 Criando um 583
xiv Java: como programar

17.4.2 Classificando um e coletando os resultados 583


17.4.3 Filtrando um e armazenando os resultados para uso posterior 583
17.4.4 Filtrando e classificando um e coletando os resultados 583
17.4.5 Classificando resultados coletados anteriormente 583
17.5 Manipulações 584
17.5.1 Mapeando Strings para maiúsculas usando uma referência de método 584
17.5.2 Filtrando e classificando-as em ordem crescente sem distinção entre maiúsculas e minúsculas 585
17.5.3 Filtrando e classificando-as em ordem decrescente sem distinção entre maiúsculas e minúsculas 585
17.6 Manipulações 585
17.6.1 Criando e exibindo uma 587
17.6.2 Filtrando com salários em um intervalo especificado 588
17.6.3 Classificando por múltiplos campos 589
17.6.4 Mapeando para de sobrenome únicas 589
17.6.5 Agrupando por departamento 590
17.6.6 Contando o número de em cada departamento 591
17.6.7 Somando e calculando a média de salários de 591
17.7 Criando um de um arquivo 592
17.8 Gerando fluxos de valores aleatórios 594
17.9 Rotinas de tratamento de eventos Lambda 596
17.10 Notas adicionais sobre interfaces Java SE 8 596
17.11 Java SE 8 e recursos de programação funcional 597
17.12 Conclusão 597

18 Recursão 607
18.1 Introdução 608
18.2 Conceitos de recursão 609
18.3 Exemplo que utiliza recursão: fatoriais 609
18.4 Reimplementando a classe usando a classe 611
18.5 Exemplo que utiliza recursão: série de Fibonacci 612
18.6 Recursão e a pilha de chamadas de método 614
18.7 Recursão versus iteração 616
18.8 Torres de Hanói 617
18.9 Fractais 619
18.9.1 Fractal da Curva de Koch 619
18.9.2 (Opcional) Estudo de caso: fractal de Lo Feather 620
18.10 Retorno recursivo 626
18.11 Conclusão 627

19 Pesquisa, classificação e Big O 633


19.1 Introdução 634
19.2 Pesquisa linear 635
19.3 Notação Big O 636
19.3.1 Algoritmos O(1) 636
19.3.2 Algoritmos O(n) 637
19.3.3 Algoritmos O(n2) 637
19.3.4 Big O da pesquisa linear 637
19.4 Pesquisa binária 637
19.4.1 Implementação de pesquisa binária 638
19.4.2 Eficiência da pesquisa binária 640
19.5 Algoritmos de classificação 641
19.6 Classificação por seleção 641
19.6.1 Implementação da classificação por seleção 641
19.6.2 Eficiência da classificação por seleção 643
19.7 Classificação por inserção 643
Sumário xv

19.7.1 Implementação da classificação por inserção 644


19.7.2 Eficiência da classificação por inserção 646
19.8 Classificação por intercalação 646
19.8.1 Implementação da classificação por intercalação 646
19.8.2 Eficiência da classificação por intercalação 650
19.9 Resumo de Big O para os algoritmos de pesquisa e classificação deste capítulo 650
19.10 Conclusão 651

20 Classes e métodos genéricos 655


20.1 Introdução 656
20.2 Motivação para métodos genéricos 656
20.3 Métodos genéricos: implementação e tradução em tempo de compilação 658
20.4 Questões adicionais da tradução em tempo de compilação: métodos que utilizam um parâmetro de tipo
como o tipo de retorno 660
20.5 Sobrecarregando métodos genéricos 662
20.6 Classes genéricas 663
20.7 Tipos brutos 669
20.8 Curingas em métodos que aceitam parâmetros de tipo 672
20.9 Conclusão 675

21 Estruturas de dados genéricas personalizadas 679


21.1 Introdução 680
21.2 Classes autorreferenciais 680
21.3 Alocação dinâmica de memória 681
21.4 Listas encadeadas 681
21.4.1 Listas encadeadas individualmente 682
21.4.2 Implementando uma classe genérica 682
21.4.3 Classes genéricas e 686
21.4.4 Classe 686
21.4.5 Método 687
21.4.6 Método 687
21.4.7 Método 688
21.4.8 Método 689
21.4.9 Método 689
21.4.10 Criando seus próprios pacotes 689
21.5 Pilhas 693
21.6 Filas 696
21.7 Árvores 698
21.8 Conclusão 703

22 Componentes GUI: parte 2 711


22.1 Introdução 712
22.2 712
22.3 Entendendo o Windows no Java 715
22.4 Utilizando menus com frames 716
22.5 722
22.6 Aparência e comportamento plugáveis 724
22.7 e 728
22.8 731
22.9 Gerenciador de layout 733
22.10 Gerenciador de layout 736
22.11 Conclusão 743
xvi Java: como programar

23 Concorrência 747
23.1 Introdução 748
23.2 Ciclo de vida e estados de thread 749
23.2.1 Estados novo e executável 750
23.2.2 Estado de espera 750
23.2.3 Estado de espera sincronizada 750
23.2.4 Estado bloqueado 750
23.2.5 Estado terminado 750
23.2.6 Visão do sistema operacional do estado executável 751
23.2.7 Prioridades de thread e agendamento de thread 751
23.2.8 Bloqueio e adiamento indefinidos 752
23.3 Criando e executando threads com o framework 752
23.4 Sincronização de thread 755
23.4.1 Dados imutáveis 755
23.4.2 Monitores 756
23.4.3 Compartilhamento de dados mutáveis não sincronizados 756
23.4.4 Compartilhamento de dados mutáveis sincronizados — tornando operações atômicas 760
23.5 Relacionamento entre produtor e consumidor sem sincronização 762
23.6 Relacionamento produtor/consumidor: 767
23.7   (Avançado) Relacionamento entre produtor e consumidor com , , e 770
23.8 (Avançado) Relacionamento produtor/consumidor: buffers limitados 775
23.9   (Avançado) Relacionamento produtor/consumidor: interfaces e 781
23.10 Coleções concorrentes 786
23.11 Multithreading com GUI: 787
23.11.1 Realizando cálculos em uma thread Worker: números de Fibonacci 788
23.11.2 Processando resultados intermediários: crivo de Eratóstenes 792
23.12 Tempos de / com a API Date/Time do Java SE 8 798
23.13 Java SE 8: fluxos paralelos versus sequenciais 799
23.14 (Avançado) Interfaces e 801
23.15 (Avançado) Estrutura de fork/join 805
23.16 Conclusão 805

24 Acesso a bancos de dados


com JDBC 813
24.1 Introdução 814
24.2 Bancos de dados relacionais 815
24.3 Um banco de dados 815
24.4 SQL 818
24.4.1 Consulta básica 819
24.4.2 Cláusula 820
24.4.3 Cláusula 821
24.4.4 Mesclando dados a partir de múltiplas tabelas: 823
24.4.5 Instrução 824
24.4.6 Instrução 825
24.4.7 Instrução 825
24.5 Configurando um banco de dados Java DB 826
24.5.1 Criando bancos de dados do capítulo no Windows 827
24.5.2 Criando bancos de dados do capítulo no Mac OS X 827
24.5.3 Criando bancos de dados do capítulo no Linux 828
24.6 Manipulando bancos de dados com o JDBC 828
24.6.1 Consultando e conectando-se a um banco de dados 828
24.6.2 Consultando o banco de dados 831
24.7 Interface 841
24.8 843
Sumário xvii

24.9 Procedures armazenadas 856


24.10 Processamento de transações 856
24.11 Conclusão 856

25 GUI do JavaFX: parte 1 863


25.1 Introdução 864
25.2 JavaFX Scene Builder e o IDE NetBeans 865
25.3 Estrutura de janelas do aplicativo JavaFX 865
25.4 Aplicativo Welcome — exibindo texto e uma imagem 866
25.4.1 Criando o projeto do aplicativo 866
25.4.2 Janela Projects do NetBeans — visualizando o conteúdo do projeto 868
25.4.3 Adicionando uma imagem ao projeto 869
25.4.4 Abrindo o JavaFX Scene Builder a partir do NetBeans 869
25.4.5 Mudando para um contêiner de layout 870
25.4.6 Configurando o contêiner de layout 870
25.4.7 Adicionando e configurando um 870
25.4.8 Adicionando e configurando um 870
25.4.9 Executando o aplicativo 871
25.5 Aplicativo Tip Calculator — Introdução à manipulação de eventos 871
25.5.1 Testando o aplicativo Tip Calculator 872
25.5.2 Visão geral das Technologies 873
25.5.3 Construindo a GUI do aplicativo 874
25.5.4 Classe 878
25.5.5 Classe 879
25.6 Recursos abordados nos capítulos da Sala Virtual sobre JavaFX 883
25.7 Conclusão 884

Apêndices
A Tabela de precedência de operador 889
B Conjunto de caracteres ASCII 891
C Palavras-chave e palavras reservadas 892
D Tipos primitivos 893
E Utilizando o depurador 894
E.1 Introdução 895
E.2 Pontos de interrupção e os comandos , , e 895
E.3 Os comandos e 898
E.4 Controlando a execução utilizando os comandos , e 900
E.5 O comando 901
E.6 O comando 903
E.7 Conclusão 905

Índice 906

Potrebbero piacerti anche