Apostila Java - Introdução à Ciência da Computação com Java e Orientação a Objetos
João Carlos Campos Strasburg | comentários
10.1 Um pouco mais sobre primos 63
10.2 Uma biblioteca de funções matemáticas 65
10.3 do...while 6
10 Mergulhando no while 63
1.1 Um tipo para representar caracteres 69
1.2 Cadeias de caracteres (Strings) 71
1 Caracteres e Cadeias de Caracteres 69
12.1 A Memória do Computador 75
12.2 O que são as Variáveis? 76
12 A Memória e as Variáveis 75
13.1 Sistemas de numeração 79
13.2 Conversão entre sistemas de numeração 80
13 Manipulando Números Utilizando Diferentes Bases 79
14.1 Criação de programas Java 85
14 Arrays (vetores) 83
15.1 O comando for 89
15.2 Leitura do teclado 90
15.3 Conversão de String para números 92
15 for, leitura do teclado e conversão de Strings 89
16.1 Laços encaixados 95
16.2 Matrizes (arrays multidimensionais) 96
16.3 Exemplo: LIFE, o jogo da vida 97
16 Laços Encaixados e Matrizes 95
17.1 Busca 103
17.2 Pondo ordem na casa 104
18.1 Busca binária 107
18.2 Complexidade Computacional 108
18.3 Fusão 109
18 Busca Binária e Fusão 107
19.1 Construtores 1
20.1 O conceito de interfaces 117
20.2 Um primeiro exemplo 117
20.3 Implementando mais de uma interface por vez 121
20.4 Um exemplo mais sofisticado 123
20.5 A importância de interfaces 127
21.1 O Conceito de herança 131
21.2 Terminologia de herança 132
21.3 Implementação de herança na linguagem Java 132
21.4 Hierarquia de classes 134
21.5 Relacionamento "é um" 135
21.6 Resumo 135
23.1 O C que há em Java 143
23.2 Detalhes de entrada e saída 145
23.3 Declaração de variáveis 146
23.4 Parâmetros de funções 146
23.5 Um último exemplo 146
23 O C Que Há em Java 143
A.1 Conversor de Temperatura simples 151
A.2 Tratando erros 154
A Utilizando o Dr. Java 151
B.1 O Exemplo 159
B Desenvolvimento Dirigido por Testes 159 Bibliografia 175 x SUMÁRIO x SUMÁRIO
2.1 Arquitetura do ENIAC 10
2.2 Arquitetura de Von Neumann 1
21.1 Diagrama de herança 132
21.2 Hierarquia de classes representando os seres vivos 134
21.3 Hierarquia errada 135
2.1 Documentação gerada pelo Javadoc 141
Lista de Figuras xi xii LISTA DE FIGURAS xii LISTA DE FIGURAS
Caros leitores, sejam bem-vindos ao maravilhoso mundo da Ciência da Computação. Com este livro, vocês terão a oportunidade de aprender os elementos básicos da programação de computadores e terão contato com alguns dos conceitos fundamentais da Ciência da Computação.
Este livro é resultado da experiência dos autores na disciplina de Introdução à Ciência da Computação ministrada no IME/USP utilizando orientação a objetos e a linguagem Java de 2003 a 2006. Desde 2005, esta abordagem também é aplicada na USPLeste com os 180 alunos do curso de Sistemas de Informação. Influenciada pelo método proposto pela ACM (Association for Computing Machinery) e pelo IEEE (Institute of Electrical and Electronics Engineers) em seu currículo Objects-first, nossa abordagem evita o problema de se ensinar a programar sem o uso de objetos para depois exigir do estudante uma mudança de paradigma com a introdução de objetos. Elimina-se assim a necessidade de dizer "esqueça a forma que programamos até agora; agora vamos aprender o jeito correto".
São Paulo, março de 2006. Alfredo Goldman, Fabio Kon e Paulo J. S. Silva xiii xiv PREFÁCIO xiv PREFÁCIO
Capítulo 1 Teatro de Objetos
Vamos iniciar a nossa jornada ao fascinante mundo da orientação a objetos de forma dramática: com um
Teatro de Objetos. Se você está usando este livro em um curso, reserve juntamente com seu professor uma parte da primeira aula para realizar a encenação descrita neste capítulo. Se você trabalha em uma empresa, reúna-se com colegas de trabalho ou com amigos interessados em programação para exercitar suas qualidades dramáticas. Liberte o artista que existe dentro de você!'
O objetivo do Teatro de Objetos é fazer com que os alunos vivenciem um jogo interativo do qual participam vários "objetos" realizando diferentes formas de ações e comunicações. Os conceitos de orientação a objetos empregados no teatro não são explicitamente explicados já no primeiro capítulo mas serão abordados ao longo do livro. Em um curso de Introdução á Ciência da Computação, normalmente a primeira metade da primeira aula é dedicada a uma conversa informal com os alunos explicando quais são os objetivos da disciplina (e do curso inteiro, se for o caso). É sempre interessante também conversar sobre contatos prévios que os alunos tiveram com informática e com programação. É bom deixar claro que este livro pode ser acompanhado por uma pessoa que nunca viu um computador na frente em sua vida, mas que aprender a programar não é uma tarefa fácil, é preciso se empenhar. Na segunda metade da aula, exercitamos as habilidades dramáticas: para ilustrar o funcionamento de um programa de computador complexo, vamos fazer de conta que somos partes de um programa de computador trabalhando em conjunto para atingir um certo objetivo. Se você estiver organizando a encenação com seus colegas, você pode fazer um certo suspense sobre qual é o objetivo (simular uma disputa de pênaltis) e sobre como ele será alcançado.
1.1 Disputa de pênaltis
A "peça" que encenaremos representará uma disputa de pênaltis entre dois times e contará com a participação de cerca de 26 atores desempenhando 8 papéis. Se você não tiver 26 atores disponíveis, você pode elaborar a sua própria adaptação da peça. Os papéis são:
• Técnico (2 atores) • Juiz (1 ator)
• Bandeirinha (2 atores)
• Gandula (1 ator)
2 CAPÍTULO 1. TEATRO DE OBJETOS
• Jogador. Os jogadores são divididos em dois tipos:
– Goleiro (2 atores desempenham este papel) – Batedor de pênalti (10 atores)
• Torcedor. Os torcedores são divididos em dois tipos:
– Torcedor educado (4 atores) – Torcedor mal-educado (4 atores)
O professor (ou o diretor da peça, que pode ser você) será responsável por escolher as pessoas que desempenharão cada papel. Se houver limitação de espaço, é conveniente que os 8 torcedores fiquem concentrados em uma área separada (por exemplo, em uma suas próprias carteiras, se o local for uma sala de aula) para não tumultuar muito o ambiente. Obviamente, o diretor pode também aumentar ou diminuir o número de torcedores e de batedores de pênalti. Para desempenhar o papel de torcedores, uma boa dica é o diretor escolher pessoas que pareçam bem barulhentas e faladoras (por exemplo, a turma do fundão numa sala de aula :-). Ao escolher os atores, o diretor deverá entregar um cartão preso com um barbante que ficará pendurado no pescoço do ator e conterá informações sobre o papel desempenhado pelo ator. As informações são:
1. Nome do papel 2. Mensagens que o personagem é capaz de entender 3. Atributos do personagem
Os três tipos de informação acima já devem vir pré-escritos à caneta no cartão mas os valores dos atributos do personagem devem ser escritos na hora a lápis pelo diretor. Alguns papéis, como o de juiz, não possuem nenhum atributo. Outros papéis podem possuir um ou mais atributos, o jogador, por exemplo, pode possuir como atributos o nome do time ao qual pertence e o número da sua camisa. No caso de o jogador ser um goleiro, o atributo "número da camisa" pode vir escrito a caneta como valendo 1.
Além do cartão que fica pendurado no pescoço do ator, cada ator recebe um script descrevendo o seu comportamento: para cada mensagem recebida pelo ator, o script descreve quais ações devem ser tomadas pelo ator.
O diretor não deve esquecer de trazer uma bola para esta atividade e deve tomar cuidado para que nenhuma janela seja quebrada durante a realização da atividade. O tempo total estimado para a realização da atividade é de 50 minutos. A maior parte do tempo é gasto explicando-se os procedimentos. A encenação em si, demora entre 5 e 10 minutos dependendo da qualidade dos batedores de pênalti e dos goleiros.
Eis a descrição detalhada dos dados que deverão aparecer nos cartões descritivos e no script (comportamento) de cada um dos 26 atores participantes da encenação. Para obter versões PDF dos cartões prontas para impressão, visite o sítio deste livro: w.ime.usp.br/~kon/livros/Java
1.1. DISPUTA DE PÊNALTIS 3
– Nome do Papel: Goleiro – Mensagens que entende: SuaVez, Cobrança Autorizada, VenceuOTimeX
– Atributos: Time: , Camisa número: 1
– mensagem: SuaVez ⇒ ação: posiciona-se na frente do gol e fica esperando pela cobrança do pênalti.
– mensagem: CobrançaAutorizada ⇒ ação: concentra-se na bola que será chutada pelo adversário e faz de tudo para não deixar que a bola entre no gol. O goleiro não pode se adiantar antes do chute do adversário. Após a cobrança sair do gol para dar lugar ao goleiro adversário.
– mensagem: VenceuOTimeX ⇒ ação: se TimeX é igual ao atributo Time no seu cartão de identificação, comemore; caso contrário, xingue o juiz (polidamente! :-).
2. Batedor de Pênalti
– Nome do Papel: Batedor de Pênalti – Mensagens que entende: SuaVez, CobrançaAutorizada, VenceuOTimeX
– Atributos: Time: , Camisa número:
– mensagem: SuaVez ⇒ ação: posiciona-se na frente da bola e fica esperando pela autorização do juiz.
– mensagem: CobrançaAutorizada ⇒ ação: chuta a bola tentando marcar um gol. Após a cobrança voltar para junto do seu técnico para dar lugar à próxima cobrança.
3. Torcedor Educado
– Nome do Papel: Torcedor Educado – Mensagens que entende: Ação, VenceuOTimeX
– Atributos: Time: , Camisa número: 12
– mensagem: Ação ⇒ ação: assista ao jogo emitindo opiniões inteligentes sobre o andamento da peleja e manifestando o seu apreço e desapreço pelo desenrolar da disputa.
– mensagem: VenceuOTimeX ⇒ ação: se TimeX é igual ao atributo Time no seu cartão de identificação, comemore e faça um comentário elogioso sobre o seu time; caso contrário, elogie o adversário e parabenize o seu time pelo empenho.
4 CAPÍTULO 1. TEATRO DE OBJETOS
4. Torcedor Mal-Educado
– Nome do Papel: Torcedor Mal-Educado – Mensagens que entende: Ação, VenceuOTimeX
– mensagem: Ação ⇒ ação: assista ao jogo emitindo opiniões duvidosas sobre o andamento da peleja e manifestando a sua raiva ou alegria pelo desenrolar do jogo.
– mensagem: VenceuOTimeX ⇒ ação: se TimeX é igual ao atributo Time no seu cartão de identificação, xingue o adversário. Caso contrário, xingue o adversário desesperadamente (mas, por favor, não se esqueça que estamos em uma universidade).
– Nome do Papel: Juiz – Mensagens que entende: Ação, Irregularidade
– mensagem: Ação ⇒ ação: coordene o andamento da disputa de pênaltis enviando mensagens
SuaVez para o técnico do time batedor e para o goleiro defensor a cada nova batida. Quando os personagens estiverem a postos, emita a mensagem CobrançaAutorizada. Faça a contagem de gols e quando houver um vencedor, emita a mensagem VenceuOTimeX onde TimeX é o nome do time vencedor. A disputa de pênaltis é feita alternadamente, 5 cobranças para cada time. Se não houver um ganhador após as 5 cobranças, são feitas novas cobranças alternadamente até que haja um vencedor.
– mensagem: Irregularidade ⇒ ação: se a mensagem foi enviada por um Bandeirinha, ignore a cobrança recém-efetuada e ordene que ela seja realizada novamente enviando a mensagem RepitaCobrança ao técnico apropriado.
6. Gandula
– Nome do Papel: Gandula – Mensagens que entende: CobrançaAutorizada
– mensagem: CobrançaAutorizada ⇒ ação: preste atenção à cobrança do pênalti. Após a conclusão da cobrança, pegue a bola e leve-a de volta à marca de pênalti.