A maior rede de estudos do Brasil

Grátis
192 pág.
Introdução à Ciência da Computação com Java e Orientação a Objetos

Pré-visualização | Página 1 de 38

UNIVERSIDADE DE SÃO PAULO
INSTITUTO DE MATEMÁTICA E ESTATÍSTICA
Departamento de Ciência da Computação
Introdução à Ciência da Computação
com Java e Orientação a Objetos
1a edição
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
QA724
K82i
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 II. Silva, Paulo J. S. III.
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
i
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.
ii
iii
Sugestões e Correções
Se você encontrar erros ou tiver sugestões para melhorias neste
livro, favor enviar para o email kon@ime.usp.br.
iv
v
A nossas esposas e filhos,
fonte de força e alegria em nossas vidas.
vi
vii
Agradecimentos
Este livro não seria possível sem a colaboração de inúmeros alunos e profes-
sores 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. Agrade-
cemos 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.
viii
Sumário
Prefácio xv
1 Teatro de Objetos 1
1.1 Disputa de pênaltis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 História da Computação 7
2.1 História da Computação e Arquitetura do Computador . . . . . . . . . . . . . . . . . . . . . 7
2.2 Evolução das Linguagens de Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Conversor de Temperaturas 15
3.1 Analogia entre dramatização da disputa de pênaltis e Programação Orientada a Objetos . . . . 15
3.2 Um exemplo real em Java: um conversor de Celsius para Fahrenheit . . . . . . . . . . . . . . 16
4 Testes Automatizados 19
5 Métodos com Vários Parâmetros 25
5.1 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2 A importância da escolha de bons nomes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6 if else Encaixados 33
7 Programas com Vários Objetos 39
8 Laços e Repetições 45
8.1 Laços em linguagens de programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.2 O laço while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.3 Números primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
9 Expressões e Variáveis Lógicas 53
9.1 Condições como expressões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.2 Precedência de operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9.3 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
ix
x SUMÁRIO
10 Mergulhando no while 61
10.1 Um pouco mais sobre primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
10.2 Uma biblioteca de funções matemáticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.3 do...while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
11 Caracteres e Cadeias de Caracteres 67
11.1 Um tipo para representar caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
11.2 Cadeias de caracteres (Strings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
12 A Memória e as Variáveis 73
12.1 A Memória do Computador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
12.2 O que são as Variáveis? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
13 Manipulando Números Utilizando Diferentes Bases 77
13.1 Sistemas de numeração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
13.2 Conversão entre sistemas de numeração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
14 Arrays (vetores) 81
14.1 Criação de programas Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
15 for, leitura do teclado e conversão de Strings 87
15.1 O comando for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
15.2 Leitura do teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
15.3 Conversão de String para números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
16 Laços Encaixados e Matrizes 93
16.1 Laços encaixados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
16.2 Matrizes (arrays multidimensionais) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
16.3 Exemplo: LIFE, o jogo da vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
17 Busca e Ordenação 101
17.1 Busca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Crie agora seu perfil grátis para visualizar sem restrições.