[GOLDMAN, Alfredo; at al] Introdução a ciencia da computação com Java e orientação a objetos

[GOLDMAN, Alfredo; at al] Introdução a ciencia da computação com Java e...

(Parte 1 de 11)

Departamento de Ciência da Computação

Introdução à Ciência da Computação com Java e Orientação a Objetos

Alfredo Goldman

Fabio Kon Paulo J. S. Silva

Editado e Revisado por: Raphael Y. de Camargo

Ficha Catalográfica Elaborada pela Biblioteca do IME-USP

QA724K82i

Kon, Fabio; Goldman, Alfredo; Silva P. J. S.

Introdução à ciência da computação com Java e orientação a objetos, editado e revisado por Raphael Y. de Camargo. 1. ed. São Paulo : IME-USP, 2006. 190p.

ISBN: 85-88697-10-6

1. Linguagem de Programação 2. Programação orientada a objeto 3. Java I. Goldman, Alfredo I. Silva, Paulo J. S. II. Camargo, Raphael Y. de, ed. e rev. IV. Universidade de São Paulo, Instituto de Matemática e Estatística. Departamento de Ciência da Computação.

CDD 600

C O M M O N S D E E D Atribuição-Uso Não-Comercial-Compartilhamento pela mesma licença 2.5

Você pode: • copiar, distribuir, exibir e executar a obra

• criar obras derivadas Sob as seguintes condições:

Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.

Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais.

Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.

• Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor.

Qualquer direito de uso legítimo (ou "fair use") concedido por lei, ou qualquer outro direito protegido pela legislação local, não são em hipótese alguma afetados pelo disposto acima.

Este é um sumário para leigos da Licença Jurídica (que pode ser obtida na íntegra em http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode).

Termo de exoneração de responsabilidade

Esta Licença Simplificada não é uma licença propriamente dita. Ela é apenas uma referência útil para entender a Licença Jurídica (a licença integral) - ela é uma expressão dos seus termos-chave que pode ser compreendida por qualquer pessoa. A Licença Simplifica em si não tem valor legal e seu conteúdo não aparece na licença integral.

O Creative Commons não é um escritório de advocacia e não presta serviços jurídicos. A distribuição, exibição ou inclusão de links para esta Licença Simplificada não estabelece qualquer relação advocatícia.

i i

A nossas esposas e filhos, fonte de força e alegria em nossas vidas.

iv iv

Agradecimentos

Este livro não seria possível sem a colaboração de inúmeros alunos e professores do IME/USP.

Leo Kazuhiro Ueda e Nelson Posse Lago atuaram como assistentes de ensino na primeira vez em que esta disciplina foi ministrada e foram responsáveis por inúmeras contribuições. O apêndice sobre o Dr. Java foi preparado pelo Leo. Fabiano Mitsuo Sato, George Henrique Silva e Igor Ribeiro Sucupira foram monitores da disciplina também em 2003 e colaboraram com alguns exercícios.

Raphael Y. de Camargo realizou um excelente trabalho na edição e revisão do livro além de colaborar com alguns exercícios. O Prof. João Eduardo Ferreira, nosso colega no ensino da disciplina de introdução, o Prof. Valdemar Setzer, nosso experiente e sábio colega de departamento, e o Prof. Marcos Chaim, da USPLeste, nos deram inúmeras sugestões úteis que, sempre que possível, foram incorporadas ao texto final.

Agradecemos ao Prof. Walter Savitch da Universidade da California em San Diego por ter autorizado o uso de sua classe para entrada de dados. Agradecemos também a Giuliano Mega pela diagramação da capa e a Stefano Mega pelos objetos nadando na xícara de Java.

Finalmente, agradecemos aos alunos e professores que não foram citados mas que deram sugestões e nos incentivaram a escrever este livro.

vi vi

Sumário

Prefácio xiii

1.1 Disputa de pênaltis1

1 Teatro de Objetos 1

2.1 História da Computação e Arquitetura do Computador7
2.2 Evolução das Linguagens de Programação12

2 História da Computação 7

3.1 Analogia entre dramatização da disputa de pênaltis e Programação Orientada a Objetos15
3.2 Um exemplo real em Java: um conversor de Celsius para Fahrenheit16

3 Conversor de Temperaturas 15 4 Testes Automatizados 19

5.1 Atributos26
5.2 A importância da escolha de bons nomes29

5 Métodos com Vários Parâmetros 25 6 if else Encaixados 3 7 Programas com Vários Objetos 39

8.1 Laços em linguagens de programação45
8.2 O laço while46
8.3 Números primos48
9.1 Condições como expressões53
9.2 Precedência de operadores56
9.3 Exemplos57

9 Expressões e Variáveis Lógicas 53 vii viii SUMÁRIO

10.1 Um pouco mais sobre primos63
10.2 Uma biblioteca de funções matemáticas65
10.3 do...while6

10 Mergulhando no while 63

1.1 Um tipo para representar caracteres69
1.2 Cadeias de caracteres (Strings)71

1 Caracteres e Cadeias de Caracteres 69

12.1 A Memória do Computador75
12.2 O que são as Variáveis?76

12 A Memória e as Variáveis 75

13.1 Sistemas de numeração79
13.2 Conversão entre sistemas de numeração80

13 Manipulando Números Utilizando Diferentes Bases 79

14.1 Criação de programas Java85

14 Arrays (vetores) 83

15.1 O comando for89
15.2 Leitura do teclado90
15.3 Conversão de String para números92

15 for, leitura do teclado e conversão de Strings 89

16.1 Laços encaixados95
16.2 Matrizes (arrays multidimensionais)96
16.3 Exemplo: LIFE, o jogo da vida97

16 Laços Encaixados e Matrizes 95

17.1 Busca103
17.2 Pondo ordem na casa104
18.1 Busca binária107
18.2 Complexidade Computacional108
18.3 Fusão109

18 Busca Binária e Fusão 107

19.1 Construtores1

SUMÁRIO ix

(Parte 1 de 11)

Comentários