Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Ciência da Computação com Java e Orientação a Objetos - Apostilas - Informática Part1, Notas de estudo de Informática

Apostilas de Informática sobre o estudo da Ciência da Computação com Java e Orientação a Objetos, História da Computação, Conversor de Temperaturas, Métodos com Vários Parâmetros.

Tipologia: Notas de estudo

2013

Compartilhado em 26/06/2013

Ipanema27
Ipanema27 🇧🇷

4.5

(170)

1 / 65

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
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
1aedição
Alfredo Goldman
Fabio Kon
Paulo J. S. Silva
Editado e Revisado por:
Raphael Y. de Camargo
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41

Pré-visualização parcial do texto

Baixe Ciência da Computação com Java e Orientação a Objetos - Apostilas - Informática Part1 e outras Notas de estudo em PDF para Informática, somente na Docsity!

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

1 a^ 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

QA 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-

  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

ii

iii

A nossas esposas e filhos,

fonte de força e alegria em nossas vidas.

v

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.

vi

  • 1 Teatro de Objetos Prefácio xiii
    • 1.1 Disputa de pênaltis
  • 2 História da Computação
    • 2.1 História da Computação e Arquitetura do Computador
    • 2.2 Evolução das Linguagens de Programação
  • 3 Conversor de Temperaturas
    • 3.1 Analogia entre dramatização da disputa de pênaltis e Programação Orientada a Objetos
    • 3.2 Um exemplo real em Java: um conversor de Celsius para Fahrenheit
  • 4 Testes Automatizados
  • 5 Métodos com Vários Parâmetros
    • 5.1 Atributos
    • 5.2 A importância da escolha de bons nomes
  • 6 if else Encaixados
  • 7 Programas com Vários Objetos
  • 8 Laços e Repetições
    • 8.1 Laços em linguagens de programação
    • 8.2 O laço while
    • 8.3 Números primos
  • 9 Expressões e Variáveis Lógicas
    • 9.1 Condições como expressões
    • 9.2 Precedência de operadores
    • 9.3 Exemplos
  • 10 Mergulhando no while viii SUMÁRIO
    • 10.1 Um pouco mais sobre primos
    • 10.2 Uma biblioteca de funções matemáticas.
    • 10.3 do...while
  • 11 Caracteres e Cadeias de Caracteres
    • 11.1 Um tipo para representar caracteres
    • 11.2 Cadeias de caracteres (Strings)
  • 12 A Memória e as Variáveis
    • 12.1 A Memória do Computador
    • 12.2 O que são as Variáveis?
  • 13 Manipulando Números Utilizando Diferentes Bases
    • 13.1 Sistemas de numeração
    • 13.2 Conversão entre sistemas de numeração
  • 14 Arrays (vetores)
    • 14.1 Criação de programas Java
  • 15 for , leitura do teclado e conversão de String s
    • 15.1 O comando for
    • 15.2 Leitura do teclado
    • 15.3 Conversão de String para números
  • 16 Laços Encaixados e Matrizes
    • 16.1 Laços encaixados
    • 16.2 Matrizes (arrays multidimensionais)
    • 16.3 Exemplo: LIFE, o jogo da vida
  • 17 Busca e Ordenação
    • 17.1 Busca
    • 17.2 Pondo ordem na casa
  • 18 Busca Binária e Fusão
    • 18.1 Busca binária
    • 18.2 Complexidade Computacional
    • 18.3 Fusão
  • 19 Construtores e Especificadores de Acesso
    • 19.1 Construtores
    • 19.2 Especificadores de acesso
  • 20 Interfaces SUMÁRIO ix
    • 20.1 O conceito de interfaces
    • 20.2 Um primeiro exemplo
    • 20.3 Implementando mais de uma interface por vez
    • 20.4 Um exemplo mais sofisticado
    • 20.5 A importância de interfaces
  • 21 Herança
    • 21.1 O Conceito de herança
    • 21.2 Terminologia de herança
    • 21.3 Implementação de herança na linguagem Java
    • 21.4 Hierarquia de classes
    • 21.5 Relacionamento “é um”
    • 21.6 Resumo
  • 22 Javadoc
  • 23 O C Que Há em Java
    • 23.1 O C que há em Java
    • 23.2 Detalhes de entrada e saída
    • 23.3 Declaração de variáveis
    • 23.4 Parâmetros de funções
    • 23.5 Um último exemplo
  • A Utilizando o Dr. Java
    • A.1 Conversor de Temperatura simples
    • A.2 Tratando erros
  • B Desenvolvimento Dirigido por Testes
    • B.1 O Exemplo
  • Bibliografia

Lista de Figuras

2.1 Arquitetura do ENIAC...................................... 10 2.2 Arquitetura de Von Neumann................................... 11

21.1 Diagrama de herança....................................... 132 21.2 Hierarquia de classes representando os seres vivos........................ 134 21.3 Hierarquia errada......................................... 135

22.1 Documentação gerada pelo Javadoc............................... 141

xi

xii LISTA DE FIGURAS

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)

1

1.1. DISPUTA DE PÊNALTIS 3

  1. Goleiro
    • Cartão de Identificação
      • Nome do Papel: Goleiro
      • Mensagens que entende: SuaVez, Cobrança Autorizada, VenceuOTimeX
      • Atributos: Time: , Camisa número: 1
    • Comportamento (Script)
      • 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 ad- versá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 iden- tificação, comemore; caso contrário, xingue o juiz (polidamente! :-).
  2. Batedor de Pênalti
    • Cartão de Identificação
      • Nome do Papel: Batedor de Pênalti
      • Mensagens que entende: SuaVez, CobrançaAutorizada, VenceuOTimeX
      • Atributos: Time: , Camisa número:
    • Comportamento
      • 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.
      • mensagem: VenceuOTimeX ⇒ ação: se TimeX é igual ao atributo Time no seu cartão de iden- tificação, comemore; caso contrário, xingue o juiz (polidamente! :-).
  3. Torcedor Educado
    • Cartão de Identificação
      • Nome do Papel: Torcedor Educado
      • Mensagens que entende: Ação, VenceuOTimeX
      • Atributos: Time: , Camisa número: 12
    • Comportamento
      • 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

  1. Torcedor Mal-Educado
    • Cartão de Identificação
      • Nome do Papel: Torcedor Mal-Educado
      • Mensagens que entende: Ação, VenceuOTimeX
      • Atributos: Time: , Camisa número: 12
    • Comportamento
      • 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 identi- ficaçã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).
  2. Juiz
    • Cartão de Identificação
      • Nome do Papel: Juiz
      • Mensagens que entende: Ação, Irregularidade
    • Comportamento
      • 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.
  3. Gandula
    • Cartão de Identificação
      • Nome do Papel: Gandula
      • Mensagens que entende: CobrançaAutorizada
    • Comportamento
      • 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.