Você está na página 1de 118

Programação

Orientada a
Objetos I

Uma abordagem com


Java

ROSICLEIA FRASSON DE SOUZA


2

INTRODUÇÃO A LINGUAGEM DE PROGRAMAÇÃO

OBJETIVOS

 compreender o que são programas de computador;


 diferenciar hardware de software;
 conhecer os principais componentes dos computadores e suas
funcionalidades;
 conhecer a linguagem dos processadores;
 diferenciar tradutores e interpretadores;
 compreender como é feita a escolha de uma linguagem de
programação;

1. O que são programas de computadores

Computadores são máquinas capazes de realizar uma infinidade de


tarefas em uma velocidade e precisão muito melhor do que nós humanos.
Atualmente, eles estão presentes nos mais diversos segmentos:

 indústria;
 negócios;
 telecomunicações;
 medicina;
 e na vida pessoal de bilhões de pessoas.

Na era em que estamos, seria incogitável viver sem essas poderosas


máquinas. Porém, os computadores não conseguem fazer nada sozinhos, eles
precisam ser orientados para executar qualquer tarefa.
O conjunto de orientações dadas ao computador, para que o mesmo
execute uma tarefa específica, é chamado de programa de computador ou
software.

2. Hardware X Software

O hardware é a parte física do computador. É composta pelos


componentes elétricos, eletrônicos, chips, enfim tudo o que é físico no
computador.

Rosicléia Frasson - rosicleiafrasson@gmail.com


3

Já o software é o que não é palpável, ou seja, a imensa cadeia de


instruções que faz com que o computador seja uma ferramenta útil.

3. Componentes de um computador

Figura 1: Componentes de um computador


Fonte: TI na net. Disponível em: <http://tinanet2011.blogspot.com.br/2011/04/1-mostre-graficamente-os-
principais.html>. Acesso em 12 jan 2013.

O hardware de um computador é composto por vários componentes


e cada um tem uma responsabilidade.
Os componentes de entrada/saída tem a função de comunicar o
computador com o usuário e o usuário com o computador.
A memória secundária serve para armazenar grandes quantidades de
dados e evitar que estes se percam com o desligamento do computador.
A CPU (Unidade Central de Processamento) é o cérebro do
computador. Ela é a responsável por organizar todas as funções executadas pelo
mesmo. Cabe a CPU executar as instruções dadas pelos programas de
computador. Para executar os programas, o processador utiliza a memória RAM
para armazenar as informações necessárias a execução dos programas.

4. Linguagem do processador

O processador é um circuito eletrônico digital. Deste modo, ele


consegue processar informações apenas compostas por bits, ou seja apenas 0 e
1.
Isto se aplica também as instruções dadas nos softwares. Para que o
processador possa entender, as instruções devem ser passadas em linguagem de

Rosicléia Frasson - rosicleiafrasson@gmail.com


4

máquina, apenas contendo números binários.


Os primeiros computadores criados eram programados apenas
utilizando linguagem de máquina. Para inserir as instruções nestes, era
necessário uma grande quantidade de pessoas que percorriam a gigantesca
máquina acionando ou desligando interruptores.
Era um processo muito demorado e sujeito a muitos erros. Por esse
motivo, surgiram as linguagens de programação, que são mais próximas as
linguagens humanas.

5. Interpretadores e Compiladores

Para que os processadores possam executar as instruções escritas em


linguagens de programação, é necessário traduzir as instruções para a linguagem
de máquina.A tarefa de conversão é feita por um programa de computador que
recebe as instruções de alto nível e as converte para instruções binárias. Existem
alguns métodos para efetuar o processo de tradução. Os mais conhecidos são
citados abaixo:

 Interpretador: Quando um interpretador é utilizado para efetuar a


conversão, o mesmo vai percorrendo as instruções e à medida em que vai
interpretando cada instrução, vai traduzindo para o processador, que
então executa cada ação correspondente. Em cada execução do
programa é necessário o uso do interpretador. O uso de um interpretador
torna a execução do programa mais lenta.
 Compilador: Utilizando um compilador, as instruções das linguagens de
programação geram um outro código em linguagem de máquina. A
execução do programa é feita com o arquivo compilado, não sendo mais
necessário o uso do compilador. A execução de programas compilados é
mais rápida, porém, o programa deve ser compilado para cada tipo de
processador e de sistema operacional.

6. Linguagens de programação

Uma linguagem de programação é um meio padronizado de escrever


instruções para um processador. Existem uma infinidade de linguagens de
programação e cada uma delas, foi construída com um propósito diferente.
A escolha de uma linguagem de programação deve estar

Rosicléia Frasson - rosicleiafrasson@gmail.com


5

condicionada ao tipo de problema que se quer resolver. Segundo LUZ (2009), a


escolha de uma linguagem de programação deve ser guiada por alguns
princípios:
Partindo do princípio de que uma linguagem deve facilitar a
comunicação com outras pessoas e ajudar você a expressar seu
conhecimento, vamos entrar no contexto do desenvolvimento de
software e colocar em discussão um tema que gera muita confusão,
acaba com longas amizades e até destrói casamentos.
Qual a melhor linguagem de programação?
Achar uma resposta para essa pergunta muitas vezes passa por
encontrar todo tipo de argumento para defender a linguagem que
você usa – o que pode ser um grande erro se fechar seus olhos para
tecnologias que podem torná-lo um programador melhor.
O objetivo de uma linguagem de programação é permitir que um
programador possa resolver problemas computacionais criando um
conjunto de instruções que seguem um determinado padrão, por
meio do qual se representam ações executáveis por um computador.
Isso pode fazer com que muitos pensem que a melhor linguagem é
aquela que permite que um desenvolvedor possa se ?comunicar? da
melhor forma com o computador. Outro grande erro. Para isso
existem os compiladores.
Quem já trabalhou em um projeto razoável, já sofreu com problemas
durante a reutilização do código – comentários que não comentam
nada, códigos macarrônicos e outros fatores que atrasam qualquer
projeto de criação de software.
Não existe nada mais estressante para um desenvolvedor do que
perder horas, dias, semanas ou meses tentando entender um código
que outro programador criou. Com isso você perde muito tempo de
desenvolvimento, tentando ler códigos e corrigir bugs e perdendo
produtividade.
Pensando dessa forma, uma linguagem de programação deve
melhorar a comunicação entre desenvolvedores, facilitando a criação
de códigos mais limpos, claros e que podem ser lidos facilmente por
outro programador a qualquer momento.
Portanto ser o mais próximo de uma linguagem humana e intuitiva é
uma grande qualidade e deve ser considerada na escolha de uma
linguagem para começar a programar.
Então para de enrolar e diz logo qual devo escolher!
Sinto desapontá-lo, mas essa pergunta não tem uma resposta
predefinida, pois depende de alguns fatores que estão totalmente
incorporados à relação do programador com a linguagem.
Você deve escolher a linguagem que faça de você um programador
melhor, que se divirta programando, que aumente sua produtividade
e o anime a se aprofundar nos conceitos e na filosofia por trás dela.
Mas cuidado para nunca ficar limitado a não conhecer as novas
tecnologias que surgirem. É um erro grave que frequentemente
acontece no mundo do desenvolvimento de software.
Antes de concluir o raciocínio, um exemplo interessante de que a
linguagem melhor é a que fornece a possibilidade de se expressar
melhor, acontece quando imaginamos um possível bate papo entre
um brasileiro e um americano, por exemplo.
Muitas pessoas podem achar que o correto é o brasileiro falar inglês,
outras acham que o americano é quem deve falar português e alguns

Rosicléia Frasson - rosicleiafrasson@gmail.com


6

que vai depender se o brasileiro está nos Estados Unidos ou se o


americano está no Brasil.
Mas a forma como o brasileiro e o americano devem se comunicar é
a forma em que ambos consigam se expressar de forma mais
adequada e confortável, seja ela falar inglês, português ou tentar
uma comunicação por mímica.
Portanto, procurem conhecer bem a linguagem que você programa
ou está interessado em começar a programar e a comunidade por
trás dela. Procure uma linguagem que te possibilite desenvolver seu
conhecimento da melhor e menos dolorosa forma possível. Caso
você consiga isso, ela é ideal.
Na verdade, a linguagem pouco importa. Você, o programador, é
quem faz toda a diferença no final das contas.

7. Por que Java?

Em um curso de desenvolvimento, a escolha de uma linguagem de


programação é um processo bem delicado. Java foi escolhida por atender
alguns requisitos. Dentre eles, pode-se citar:

 Facilidade de aprendizado;
 Versatilidade;
 Popularidade;
 Amplo mercado de trabalho;
 Segurança;
 Inúmeros frameworks;
 Grande aceitação nas companhias;
 Gratuidade e
 Abundância de informações;

Além disso, os conceitos utilizados em Java ajudam a entender


melhor outras linguagens e tecnologias. O que deve ficar claro é que o
objetivo do Java não é o de construir sistemas pequenos, com um ou dois
desenvolvedores, para estes existem linguagens de programação mais
produtivas como cita CAELUM (2012):
O foco da plataforma é outro: aplicações demédio a grande porte,
onde o time de desenvolvedores tem váriaspessoas e sempre pode
vir amudar e crescer. Não tenha dúvidas que criar a primeira versão
de uma aplicaçãousando Java, mesmo utilizando IDEs e ferramentas
poderosas, será mais trabalhoso que muitas linguagensscript ou de
alta produtividade. Porém, com uma linguagem orientada a objetos e
madura como o Java,será extremamente mais fácil e rápido fazer
alterações no sistema, desde que você siga as boas práticas
erecomendações sobre design orientado a objetos.Além disso, a
quantidade enorme de bibliotecas gratuitas para realizar os mais

Rosicléia Frasson - rosicleiafrasson@gmail.com


7

diversos trabalhos (tais comorelatórios, gráficos, sistemas de busca,


geração de código de barra,manipulação de XML, tocadores de
vídeo,manipuladores de texto, persistência transparente, impressão,
etc) é um ponto fortíssimo para adoção doJava: você pode criar uma
aplicação sofisticada, usando diversos recursos, sem precisar
comprar um componenteespecífico, que costuma ser caro. O
ecossistema do Java é enorme.
Cada linguagem tem seu espaço e seu melhor uso. O uso do Java é
interessante em aplicações que virãoa crescer, em que a legibilidade
do código é importante, onde temos muita conectividade e se há
muitasplataformas (ambientes e sistemas operacionais)
heterogêneas (Linux, Unix, OSX eWindows misturados).

Rosicléia Frasson - rosicleiafrasson@gmail.com


8

JAVA

OBJETIVOS

 conhecer a história do Java;


 conhecer as diversas distribuições de Java e a utilidade de cada uma
delas;
 entender o processo de compilação e execução dos programas em
Java;
 compreender a diferença entre jdk e jre;
 aprender a instalar o jdk;
 entender o que são APIs Java;
 desenvolver o primeiro programa em Java.

1. Um pouco de história...

Java foi construída para ser utilizada em pequenos dispositivos


eletrônicos, o que não deu muito certo, pois o projeto era muito avançado
para a época.
Com a explosão da internet, a Sun viu uma nova luz para o Java.
Remodelou a linguagem que passou a ser utilizada em applets para a internet.
A linguagem foi ficando cada vez mais poderosa e hoje está presente em sites,
portais, internet banking, programas desktop, celulares, cartões de crédito,
blue-rays e até em anéis.
A parte mais interessante é que a tecnologia Java nasceu com o
intuito de programar pequenos dispositivos, percorreu um longo caminho e a
cada dia está mais presente em dispositivos eletrônicos, o que era o objetivo
inicial.

PARA SABER MAIS

 Para conhecer detalhes da história do Java


acesse:<http://www.devmedia.com.br/websys.4/webread
er.asp?cat=61&revista=easyjavamag_1#a-2982>

Rosicléia Frasson - rosicleiafrasson@gmail.com


9

2. Distribuições do Java

Java pode ser encontrada em três distribuições principais, cada


uma com sua finalidade específica:

 Java StandartEdition (JSE): Usada em computadores pessoais e


ambientes de trabalho. Várias APIs acompanham esta versão e tantas
outras podem ser baixadas do site da Oracle.
 Java Enterprise Edition (JEE): É a tecnologia Java para aplicativos
distribuídos em rede em larga escala e aplicativos baseados na web .
Possui um grande número de APIs voltadas para a segurança da
aplicação. Usada em servidores, contendo suporte para JSP, XML e
servlets.
 Java Micro Edition (JME): Usada em dispositivos com recursos
limitados, como sistemas embarcados e dispositivos móveis. Possui
APIs bem simples e leves para economizar memória e processamento.

Figura 2: Edições da linguagem Java e seus respectivos alvos de aplicação.


Fonte: FIORESI, Cristiano. Conceitos básicos da plataforma Java e J2ME. Disponível em:
<http://www.devmedia.com.br/conceitos-basicos-das-plataformas-java-e-j2me/6484> Acesso em: 12 jan 2013.

Além das três principais distribuições, também existe o Java Card,


que é uma edição específica para cartões inteligentes, extremamente reduzida.
Nesta tecnologia até a máquina virtual é dividida entre o sistema do cartão e o
sistema operacional do terminal.

3. Compilador e interpretador Java

Rosicléia Frasson - rosicleiafrasson@gmail.com


10

O processo de tradução da linguagem Java para a linguagem de


máquina é um pouco diferente das outras linguagens de programação. Os
programas Java são compilados e interpretados.
Após a criação de um programa Java, um compilador transforma o
programa em uma linguagem intermediária, como pode ser visto na figura 3,
chamada de bytecodes. O bytecode é independente de plataforma.Todas as
vezes que o programa é executado, a JVM (Java Virtual Machine) lê o arquivo
com a extensão .class que está em bytecode e o interpreta para o processador.

Figura 3: Processo de criação e execução de um programa Java


Fonte: MELO, Mario. Minicurso Java Básico

Com o uso da máquina virtual, o programa fica independente de


sistema operacional e de plataforma. Uma máquina virtual é muito mais ampla
do que um interpretador. Uma máquina virtual é uma espécie de computador de
mentira, tem tudo o que um computador tem: gerenciamento de memória,
thread, pilha de execução.
Nas primeiras versões do Java, o processo de interpretação feito pela
JVM era lento, o que tornava um problema para a linguagem. Na versão 1.2
surgiu o Compilador Just In Time ou Compilador JIT. O compilador JIT trabalha
em conjunto com o interpretador Java. O interpretador verifica quais trechos de
código são executados mais vezes e pede que o compilador JIT os compile,
convertendo o bytecode na linguagem de máquina do processador que está
executando o programa. O JIT também possui informações relativas ao ambiente
em que está executando, como quantidade de usuários simultâneos e memória
disponível. Com essas informações a JVM muda a estratégia de compilação em
busca de um melhor desempenho.

Rosicléia Frasson - rosicleiafrasson@gmail.com


11

4. JSE

A JSE é o segmento base da plataforma Java. O JSE possui duas


divisões:

 JRE: ambiente de execução Java para quem quer apenas executar


programas em Java. É composta pela JVM e as APIs Java, que é uma
coleção de softwares prontos, que incluem desde estruturas para a
manipulação de arquivos até a construção de aplicativos gráficos.
 JDK: é o conjunto de ferramentas necessárias para o desenvolvimento de
programas Java. É composto pela JRE, javac (compilador), jar
(empacotador) e o javadoc (documentação)

Na figura 4 é possível observar as APIs que compõem a plataforma


Java e as ferramentas que acompanham o kit de desenvolvimento (jdk).

Figura 4: Arquitetura JSE


Fonte: PAMPLONA, Vitor Fernando. O que é Java. Disponível em: <http://javafree.uol.com.br/artigo/871498/Tutorial-
Java-O-que-e-Java.html> Acesso em 12 jan 2013.

5. Instalando o ambiente de desenvolvimento

Para iniciar o desenvolvimento em Java é necessário ter o jdk


instalado. Abaixo segue um passo-a-passo para a instalação no sistema
operacional windows.
Passo 1: Acessar o site da Oracle

Rosicléia Frasson - rosicleiafrasson@gmail.com


12

Acesse o endereço:
<http://www.oracle.com/technetwork/java/javase/downloads/index.html> e
clique no link correspondente ao JDK 7.

Figura 5: Instalação jdk


Fonte: Elaboração da autora

Passo 2: A página será redirecionada.


Clique em aceitar os termos da licença e escolha a versão compatível com o
sistema operacional. Neste caso, o Windows 64 bits.

Rosicléia Frasson - rosicleiafrasson@gmail.com


13

Figura 6: Instalação do jdk


Fonte: Elaboração da autora

Passo 3: A página será redirecionada.


Abrirá uma janela semelhante a figura abaixo, para a confirmação do download.
Clique em Download.

Figura 7: Instalação do jdk


Fonte: Elaboração da autora

Passo 4: Escolha o local onde o arquivo será salvo.


Escolha o local e clique em Salvar.

Rosicléia Frasson - rosicleiafrasson@gmail.com


14

Figura 8: Instalação do jdk


Fonte: Elaboração da autora

Passo 5: O download será iniciado.


Aguarde a conclusão do download.

Figura 9: Instalação do jdk


Fonte: Elaboração da autora

Passo 6: Instalação
Dê um duplo clique no instalador e a janela abaixo deverá ser exibida.
Clique em Next.

Rosicléia Frasson - rosicleiafrasson@gmail.com


15

Figura 10: Instalação do jdk


Fonte: Elaboração da autora

Deve aparecer a próxima janela do instalador.

Figura 11: Instalação do jdk


Fonte: Elaboração da autora

O botão Change permite alterar o local de instalação.


Clique em Next.
Deve iniciar o processo de instalação

Rosicléia Frasson - rosicleiafrasson@gmail.com


16

Figura 12: Instalação do jdk


Fonte: Elaboração da autora

O instalador pede a confirmação do destino da instalação.


Clique em Next.

Figura 13: Instalação do jdk


Fonte: Elaboração da autora

Deve aparecer a janela abaixo.

Rosicléia Frasson - rosicleiafrasson@gmail.com


17

Figura 14: Instalação do jdk


Fonte: Elaboração da autora

Após concluir o processo de instalação, a janela abaixo será exibida.


Clique em Close.

Figura 15: Instalação do jdk


Fonte: Elaboração da autora

6. Bibliotecas de classes do Java

Os programas Java são formados por classes. As classes contém


métodos que executam tarefas e retornam informações quando as mesmas são
concluídas. É possível criar tudo que é necessário para construir um programa
Java, porém Java traz consigo inúmeras classes prontas, que realizam as mais
variadas tarefas. Essas classes são chamadas de APIs. Deste modo, existem dois
aspectos para aprender o mundo Java. O primeiro deles, é compreender os

Rosicléia Frasson - rosicleiafrasson@gmail.com


18

princípios e sintaxe da linguagem para desenvolver classes e o segundo conhecer


as APIs Java e aprender como usá-las.

7. Primeiro programa em Java

Além de ter o jdk instalado, é necessário ter um editor de texto. Abra


qualquer editor de texto e digite o texto mostrado na figura 16.A princípio, não
se preocupe em entender tudo o que está escrito. Logo abaixo o código será
explicado linha a linha. Vale lembrar que o Java é case sensitive, então cuidado
para não trocar letras maiúsculas e minúsculas. Essa troca pode gerar um erro no
momento da compilação.

Figura 16: Primeiro programa em Java


Fonte: Elaboração da autora

Salve o arquivo dentro da pasta Programas, contida no C: com o


nome PrimeiroPrograma.java. Vale ressaltar que os programas em Java devem
ser salvos com omesmo nome da classe.

O programa já está salvo. Como já visto no tópico 3 deste capítulo, os


programas Java são compilados e interpretados. Portanto, o próximo passo é
compilar o código. Para compilar o programa é necessário solicitar ao compilador
do Java chamado javac, que gere o bytecode correspondente ao código Java.
Para fazê-lo abra o terminal do Windows e vá até o diretório em que o programa
está salvo.

Rosicléia Frasson - rosicleiafrasson@gmail.com


19

Figura 17: Acessando o prompt de comando


Fonte: Elaboração da autora

Digite o comando javacPrimeiroPrograma.java no prompt de


comando. Se não ocorrer nenhum erro, deve aparecer no diretório onde está
salvo o arquivo java, um arquivo PrimeiroPrograma.class. O arquivo .class é o
arquivo que contêm o bytecode do código fonte.
O próximo passo é fazer com que a JVM interprete o bytecode e
execute o programa. Para executar o programa no prompt de comando digite
javaPrimeiroPrograma. Deve aparecer na tela a seguinte mensagem: Este é meu
primeiro programa em Java!.

Figura 18: Execução do programa Java pelo prompt de comando


Fonte: Elaboração da autora

A seguir está descrito o que faz cada linha do código:

 A linha 1 cria uma classe (palavra-chave class) pública (palavra-chave


public) chamada PrimeiroPrograma;

Rosicléia Frasson - rosicleiafrasson@gmail.com


20

 Na linha 3 está o método main, que é o ponto de partida de qualquer


programa java, é onde o programa é de fato iniciado. A função main
precisa ser pública (palavra-chave public), estática (palavra-chave static),
sem tipo de retorno (palavra-chave void) e precisa conter um parâmetro
array do tipo String (Stringargs[]).
 A linha 5 indica que o que está escrito entre os parênteses deve aparecer
na tela.

PARA SABER MAIS

 Para mais informações sobre PATH e CLASSPATH


acesse:<http://devjava.wordpress.com/2010/01/11/java_h
ome-classpath-e-path-o-que-so-isso-para-que-servem-e-
como-configura-los/>
 Para entender um pouco mais sobre jdk e jre acesse:
<http://www.devmedia.com.br/alo-mundo-entendendo-o-
java-de-uma-forma-diferente/24032>

PARA FIXAR

1. Qual a diferença entre jdk e jre?

2. Crie uma classe Java que imprima o texto: "Consegui concluir meu primeiro
programa em Java".

Rosicléia Frasson - rosicleiafrasson@gmail.com


21

IDE

OBJETIVOS

 entender a funcionalidade das IDEs;


 conhecer as principais IDEs para desenvolvimento Java;
 visualizar os passos para a instalação da IDE Netbeans;
 conhecer as principais funcionalidades da ferramenta.

1. IDEs

Como visto no capítulo anterior, o processo de criar programas em


Java usando o bloco de notas e o prompt de comando é um processo bem
dispendioso. Para deixar o processo de desenvolvimento mais produtivo, existem
programas específicos, chamados de IDEs (Ambiente de Desenvolvimento
Integrado).
Uma IDE é um software que tem como objetivo maximizar a
produtividade em uma ferramenta única. Alguns recursos que as IDEs possuem:
 Editor de código: Escrita rápida de código, auto completar,
gerenciamento de importações, dicas para correção e geração de código.
 Depurador: Facilidade na busca por erros no código através da análise
cuidadosa de cada passo executado pelo software.
 Compilador: Geração de código de máquina a partir do código fonte
automaticamente.
 Deploy: Publicação da aplicação, geração de executáveis.
 Código limpo e automatizado: Facilidadeno entendimento do projeto por
todos os envolvidos.
 JVM: Processo de interpretação de bytecodes automático.

2. Principais IDEs para o desenvolvimento Java

Existem uma infinidade de IDEs para o Java, abaixo segue as


características de algumas delas.
 JDeveloper: O JDeveloper é uma ferramenta da Oracle que tem como
principal característica a cobertura de todo o ciclo de desenvolvimento:
análise, codificação, manutenção, otimização e implantação. Esta
ferramenta é pouco flexível e seu uso é recomendado quando o software

Rosicléia Frasson - rosicleiafrasson@gmail.com


22

for produzido usando toda a arquitetura com produtos Oracle.


 Eclipse: Poderosíssima IDE de desenvolvimento, leve, rápido
configurávelcom inúmeros plug-ins. Deixa a desejar no desenvolvimento
de telas para desktop.
 Netbeans: Juntamente com o Eclipse, uma das IDEs mais utilizadas pela
comunidade de desenvolvimento. Tem editor de GUI nativo.Gera muito
código automático, não editável.

3. Netbeans

Neste curso, vamos optar pela IDE Netbeans, por ter um melhor
suporte para desenvolvimento Desktop. O Netbeans é uma ferramenta gratuita e
tem suporte para desenvolvimento nas linguagens C, C++, Groovy, PHP e Java.
O download da ferramenta pode ser feito em:
<http://netbeans.org/downloads/index.html>. Abrindo a página correspondente
será visualizada uma tela como na figura abaixo:

Figura 19: Download do Netbeans


Fonte: Elaboração da autora

Inicialmente, os softwares desenvolvidos, terão o padrão Desktop,


deste modo, baixar a versão correspondente a Java SE é suficiente. Clicando em
Download, será aberta uma janela para a escolha do local onde o instalador será
salvo como mostra a figura abaixo.

Rosicléia Frasson - rosicleiafrasson@gmail.com


23

Figura 20: Download do Netbeans


Fonte: Elaboração da autora

Após a escolha do local onde ficará salvo o instalador clique em


salvar. O download será iniciado. Dê um duplo clique sobre o instalador. A janela
do mesmo será aberta.

Figura 21: Instalação do Netbeans


Fonte: Elaboração da autora

Na janela abaixo, clicando em personalizar é possível escolher os


pacotes que serão instalados. Após ter efetuado a escolha, clique em próximo.

Rosicléia Frasson - rosicleiafrasson@gmail.com


24

Figura 22: Instalação do Netbeans


Fonte: Elaboração da autora

Na janela seguinte, é necessário aceitar o contrato de licença. Clique


em próximo.

Figura 23: Instalação do Netbeans


Fonte: Elaboração da autora

A próxima janela é sobre o framework JUnit. O JUnit é uma


ferramenta usada para testes. Neste momento não será necessário instalar a
mesma. Clique em não instalar JUnit. Clique em próximo.

Rosicléia Frasson - rosicleiafrasson@gmail.com


25

Figura 24: Instalação do Netbeans


Fonte: Elaboração da autora

Na próxima tela serão solicitados o local para a instalação e o local


onde o jdk se encontra. Depois de preencher essas afirmações, clique em
próximo.

Figura 25: Instalação do Netbeans


Fonte: Elaboração da autora

Rosicléia Frasson - rosicleiafrasson@gmail.com


26

Na próxima tela é mostrado um resumo das configurações da


instalação. Clique em instalar.

Figura 26: Instalação do Netbeans


Fonte: Elaboração da autora

A tela do progresso da instalação será mostrada.

Figura 27: Instalação do Netbeans


Fonte: Elaboração da autora

Rosicléia Frasson - rosicleiafrasson@gmail.com


27

Quando a instalação for concluída, a tela abaixo será mostrada. Clique em


finalizar.

Figura 28: Instalação do Netbeans


Fonte: Elaboração da autora

4. Funcionalidades do Netbeans

As principais funcionalidades do Netbeans são:

 Autocompletar: Pressionando as teclas CTRL + Espaço, uma caixa de


seleção será aberta, com opções para preenche o código faltante.
 Gerenciar importações: O Netbeans varre o código do editor de texto
constantemente e avisa imediatamente a ocorrência de classes não
importadas ou instruções importadas não utilizadas. Nos casos de não
importação de classes, uma marca de erro é exibida e para importações
não utilizadas uma advertência.
 Dicas para corrigir código: Para os erros mais comuns de código, o
Netbeans enumera possíveis maneiras de corrigir os mesmos.
 Formatar código: Pressionando ALT + SHIFT + F, o Netbeans formata o
código da classe.
 Dobramento de código: No editor de código, é possível contrair e
expandir blocos de código. Com este recurso, é possível deixar as partes
de código que se está trabalhando mais visível.

Rosicléia Frasson - rosicleiafrasson@gmail.com


28

 Gerar códigos: Pressionando as teclas ALT + INSERT é possível gerar


construtores e métodos de acesso.
 Code templates: São pedaços de código que podem ser acessados por
atalhos. Existem alguns disponíveis no Netbeans e estão citados abaixo.
Eles devem ser acessados juntamente com a tecla TAB.
o sout: Atalho para

o psvm: Atalho para o método main;

o for: Atalho para

o St:

o if:

 Teclas de atalho:
o ALT + F1: pesquisarjavadoc;
o CTRL + E: excluir a linha atual;
o F5: iniciar depuração do projeto principal;
o SHIFT + F6: executar projeto principal;
o ALT+ ENTER: exibir dica.

Rosicléia Frasson - rosicleiafrasson@gmail.com


29

SINTAXE DA LINGUAGEM JAVA

OBJETIVOS

 entender a utilização do ponto-e-vírgula, espaços em branco e o padrão


case-sensitive presente na linguagem Java;
 conhecer as palavras reservadas;
 aprender a utilizar os tipos primitivos de dados;
 compreender os casts implícitos e explícitos entre tipos numéricos;
 entender o uso de Strings em Java;
 aprender como se declaram as variáveis e constantes em Java;
 compreender a diferença de alocação na memória entre os tipos
primitivos e as variáveis de referência;
 conhecer o GarbageCollector;
 conhecer os operadores básicos, lógicos, aritméticos, incremento e
decremento e de atribuição;
 aprender a sintaxe das estruturas de controle e repetição da linguagem
Java;
 diferenciar os tipos de comentários e a utilidade de cada um.

1. Ponto-e-vírgula, blocos, espaços em branco e case-sensitive

Java é uma linguagem de formato livre, ou seja, não existem regras


especiais para o espaçamento vertical ou para a identação horizontal. Porém,
para uma melhor legibilidade do código, é interessante usar espaços, tabulações
e novas linhas. Em Java, espaços em branco podem ser usados sem restrições.

Um bloco é formado por uma ou mais instruções agrupadas entre


chaves indicando que formam uma só unidade. O uso de chaves em Java indica a
presença de um bloco, ondea abertura da chave indica o início do bloco e o
fechamento da chave, o fim do bloco. Os blocos podem ser organizados em
estruturas aninhadas infinitamente.

Uma instrução é composta por uma ou mais linhas terminadas com


um ponto-e-vírgula. No fim de cada instrução, indispensavelmente deve ser
usado o sinal de pontuação ponto-e-vírgula. A quebra de linha não separa
instruções.

O Java é uma linguagem case-sensitive, ou seja, diferencia maiúsculas

Rosicléia Frasson - rosicleiafrasson@gmail.com


30

de minúsculas. Portanto, escrever letra e LETRA é diferente para o Java.

2. Palavras reservadas

O Java possui uma lista de palavras que possuem um significado


especial para o compilador. Essas palavras não podem ser usadas na declaração
de classes, métodos e variáveis. A tabela 1 lista estas palavras.

abstract assert boolean break byte case

catch char class const continue default

Do double else enum extends false

final finally float for goto if

implements import instanceof int interface long

native new null package private protected

public return short static strictpf super

switch synchronized this throw throws transient

Try void volatile while


Tabela 1: Palavras reservadas Java
Fonte: Elaboração da autora.

3. Tipos primitivos de dados

Figura 29: Declaração de tipos primitivos em Java


Fonte: Elaboração da autora

Rosicléia Frasson - rosicleiafrasson@gmail.com


31

Existem somente oito tipos primitivos de dados em Java, todo o resto


é objeto. Tipos primitivos fazem parte da linguagem e não são instâncias de
outras classes. A declaração dos tipos primitivos pode ser vista na figura 29. Os
seus nomes são palavras reservadas.

3.1 Tipo boolean

O tipo boolean é o tipo mais simples encontrado em Java. Uma


variável booleana pode conter apenas dois valores: true ou false, que
representam os valores verdadeiro e falso, respectivamente. O valor padrão do
tipo boolean é false.

3.2 Tipo char

O tipo char representa um único caracter em Java. Caracteres em


Java são representados usando o conjunto de caracteres Unicode, usando dois
bytes por caracter. Esta representação de caracteres permite a representação
em várias línguas simultaneamente.

Alguns caracteres são considerados especiais – se tentarmos imprimir


esses caracteres ao invés de imprimir um caracternormal, uma ação especial
ocorrerá. É o caso, por exemplo do número 7 que corresponde ao som bell.

Existem ainda os caracteres de controle, mostrados na tabela 2.

Caracter Descrição

\” aspa dupla

\’ aspa simples

\n nova linha

\t Tabulação

\\ Barra

\r Enter
Tabela 2: Caracteres de controle
Fonte: Elaboração da autora

Rosicléia Frasson - rosicleiafrasson@gmail.com


32

3.3 Tipos numéricos

Classificação Tipo Descrição

Inteiro byte Variáveis do tipo byte podem representar valores


inteiros com 8 bits de precisão, ou seja, valores
entre -128 a 127.

short Variáveis do tipo short podem representar valores


inteiros com 16 bits de precisão, ou seja, valores
entre -32768 a 32767.

int Variáveis do tipo int podem representar valores


inteiros com 32 bits de precisão, ou seja, valores
entre -2147483648 a 2147483647.

long Variáveis do tipo long podem armazenar valores


inteiros com 64 bits de precisão, ou seja, valores
entre -9223372036854775808 a
9223372036854775807.

Ponto Flutuante float Variáveis do tipo float podem armazenar valores


em ponto flutuante com 32 bits de precisão, na
faixa de - 1.40239846E-45 a 3.40282347E + 38 (9
dígitos significativos de precisão).

double Variáveis do tipo double podem armazenar


valores em ponto flutuante com 64 bits de
precisão, na faixa de - 4.94065645841246544E-
324 a 1.79769313486231570E + 308 (18 dígitos
significativos de precisão).
Tabela 3: Tipos primitivos numéricos em Java
Fonte: Elaboração da autora

Ao escolher um tipo de dado para ser usado, o programador deve


estar atento a faixa de valores que o campo pode vir a ocupar.

Para representar valores decimais em Java, utilizamos o ponto ao


invés da vírgula.

4. Conversão entre tipos primitivos

Rosicléia Frasson - rosicleiafrasson@gmail.com


33

Figura 30: Casts implícitos e explícitos


Fonte: Elaboração da autora

Valores de tipos numéricos podem ser transformados em outros


tipos numéricos de duas formas:

 Implicitamente: A JVM transforma em tempo de execução, quando acha


conveniente, tipos restritos em tipos com maior amplitude, ou seja, uma
variável pode receber valores de variáveis de tipos com tamanho menor
do que a mesma foi declarada. . Nenhuma informação é perdida (Figura
30).
 Através de uma operação chamada casting ou conversão explícita. Para
efetuar a conversão explícita, basta colocar o tipo de dado para o qual se
deseja converter entre parênteses antes da expressão a ser convertida.
Neste caso, o programador estará se responsabilizando por possíveis
perdas de valores (Figura 30).

Na tabela abaixo, estão relacionados todos os casts possíveis na

Rosicléia Frasson - rosicleiafrasson@gmail.com


34

linguagem Java.

Para byte short char int long float double

byte De ----- implícito (char) implícito implícito implícito implícito

short (byte) ----- (char) implícito implícito implícito implícito

char (byte) (short) ----- implícito implícito implícito implícito

int (byte) (short) (char) ----- implícito implícito implícito

long (byte) (short) (char) (int) ----- implícito implícito

float (byte) (short) (char) (int) (long) ----- implícito

double (byte) (short) (char) (int) (long) (float) -----


Tabela 4 :Casts possíveis na linguagem Java
Fonte: CAELUM. Java e orientação a objetos. Disponível em: < http://www.caelum.com.br/apostila-java-orientacao-
objetos/> Acesso em 14 jan 2013.

5. String

Em Java não existe um tipo primitivo para se trabalhar com textos.


Para fazer uso dos mesmos é necessário utilizar a classe String presente no Java
desde a primeira versão. Por ser uma classe amplamente usada, ela não precisa
ser instanciada, sua atribuição é composta por uma sequência de caracteres
delimitados por aspas duplas.

6. Declaração de variáveis

Variáveis são espaços na memória onde podemos guardar


informações. Cada valor é convertido para binário e então pode ser alocado na
memória.Praticamente todos os programas usam variáveis. E como o próprio
nome diz, elas podem ter o valor modificado durante a execução do programa.
As variáveis possuem tipos diferentes, dependendo da informação a ser
armazenada.

No Java, para declarar uma variável é necessário especificar o tipo,


dar um nome a ela e preferencialmente inicializá-la.

Os nomes de variáveis ou identificadores possuem algumas regras


para que o compilador identifique como válido:

Rosicléia Frasson - rosicleiafrasson@gmail.com


35

 Os nomes de variáveis em Java devem ser inicializados por uma letra, um


cifrão ou por undescore;
 Após o primeiro caracter, vale qualquer combinação de números, letras e
caracteres;
 Os identificadores não podem ter o nome igual ao de uma palavra
reservada.

7. Diferença entre tipos primitivos e variáveis de referência

As variáveis primitivas guardam o real conteúdo da variável. Uma


variável de tipo primitivo pode armazenar exatamente um valor de seu tipo
declarado por vez, quando outro valor for atribuído a essa variável, seu valor
inicial será substituído.

As variáveis de referência são as variáveis que apontam para um


objeto, ou seja,guardam um endereço de memória para um objeto criado.Desta
forma, quando um outro valor é atribuído para a variável, uma nova posição de
memória aloca o novo valor e a referência aponta para a nova posição de
memória. O tamanho alocado para uma variável de referência é sempre fixo,
pois se trata de um endereço de memória que mostra como chegar ao objeto.

8. GarbageCollector

Quando referências são criadas, espaço em memória é alocado a


elas. Quando não as utiliza mais, este espaço precisa ser liberado.

Em Java, isto é responsabilidade do


GarbageCollector. Este mecanismo verifica os espaços de
memória sem referência e os limpa para um melhor
aproveitamento.

O coletor de lixo em Java faz isso


automaticamente, ou seja, o programador não precisa se preocupar com isso.

9. Constantes

Uma constante em Java recebe um valor que não pode ser


modificado. Para criar uma constante em Java é utilizado o modificador final.

Rosicléia Frasson - rosicleiafrasson@gmail.com


36

Uma vez que a variável for definida como constante, é obrigatório, a inicialização
da mesma.

Convenções de Código

 Métodos, atributos e variáveis: Devem ser declarados com letras


minúsculas. Caso seja nome composto, a primeira letra de cada
palavra, exceto a primeira, deve ser escrita em maiúscula. Ex: nome,
meuNome.
 Constantes: Devem ser usadas letras maiúsculas na declaração. Em
casos de palavras compostas, as palavras devem ser divididas usando o
undescore.

10.Operadores básicos

. Referência a método, função ou atributo de um objeto.

, Separador de identificadores.

; Finalizador de declarações e comandos.

[] Declarador de vetores e delimitador de índices.

{} Separador de blocos.

() Lista de parâmetros.

= Operador de atribuição.
Tabela 5: Operadores básicos da linguagem Java
Fonte: Elaboração da autora

11. Operadores lógicos

> Maior

>= Maior ou igual

Rosicléia Frasson - rosicleiafrasson@gmail.com


37

< Menor

<= Menor ou igual

== Igual

!= Diferente

&& E

|| Ou
Tabela 6: Operadores lógicos
Fonte: Elaboração da autora

12. Operadores aritméticos

Na tabela 1, estão apresentados os operadores aritméticos


disponíveis em Java.

+ Soma

- Subtração

/ Divisão

* Multiplicação

% Módulo (resto da divisão)


Tabela 7: Operadores lógicos
Fonte: Elaboração da autora

13. Incremento e decremento

Os operadores de incremento e decremento são operadores que


atuam sobre uma única variável numérica, aumentando ou diminuindo ou seu
valor.

 incremento: adicionar o valor de uma unidade ao valor atual. O operador


de incremento é o sinal de ++;
 decremento: diminuir uma unidade do valor atual. O operador de
decremento é o --;

Os operadores de incremento e decremento podem ser posicionados

Rosicléia Frasson - rosicleiafrasson@gmail.com


38

imediatamente antes ou imediatamente após o nome da variável. Vale ressaltar


que esses operadores funcionam de forma diferente dependendo da posição em
relação a variável. Se o operador for colocado antes, a variável é incrementada
no momento da sua avaliação. Caso contrário, a variável é incrementada após a
sua avaliação. Maiores detalhes podem ser vistos na tabela abaixo:

Operador Exemplo Significado

++ ++x Incrementa a variável e depois usa.

x++ Usa a variável e depois incrementa.

-- --x Decrementa a variável e depois usa.

x-- Usa a variável e depois decrementa.


Tabela 8: Operadores de incremento e decremento
Fonte: Elaboração da autora

14. Operadores de atribuição

Para efetuar uma operação aritmética seguida da atribuição do valor


de retorno a variável que continha o primeiro termo da operação, pode ser
utilizada uma notação compacta. Segue abaixo a mesma:

Operador Exemplo Expressão equivalente

+= x += y x=x+y

-= x -= y x=x-y

*= x *= y x=x*y

/= x /= y x=x/y

%= x%=y x=x%y
Tabela 9: Operadores de atribuição
Fonte: Elaboração da autora

PARA FIXAR

1.Quais dos identificadores abaixo, podem ser usados como nomes de variáveis
em Java? Quais não podem e porquê?
a) for
b) four
c) FROM

Rosicléia Frasson - rosicleiafrasson@gmail.com


39

d) main
e) MAIN
f) nome
g) novo_nome
h) $nome
i) _nome
j) 123nome
k) contador
l) para
m) ENQUANTO
n) 123
o) new
p) table
q) PEN
r) dia-e-noite

2. Escolha o tipo de dado mais adequado para representar:


a) O número de cidades do Brasil.
b) A população mundial.
c) Nome do cachorro da minha colega.
d) Um número sorteado na Mega Sena.
e) Estado de uma lâmpada (acesa ou apagada).
f) O peso do seu colega.
g) O sexo de uma pessoa.

3. O que acontece se você dividir um número inteiro por 0? E por 0.0?

4. Determine se cada um dos seguintes itens é verdadeiro ou falso. Se falso


explique por quê.
a) Todas as variáveis em Java devem ser atribuídas a um tipo quando são
declaradas.
b) O Java considera que as variáveis nome e NOME são idênticas.
c) O operador resto (%) pode ser utilizado apenas com operandos inteiros.
d) Os seguintes são todos nomes de variável inválidos: _123, a23, 12a, $12.

Rosicléia Frasson - rosicleiafrasson@gmail.com


40

ENTRADA E SAÍDA DE DADOS

OBJETIVOS

 conhecer os comandos usados para entrada de dados via console e caixa


de diálogo;
 conhecer os comando usados para saída de dados via console e caixa de
diálogo;
 aplicar conversões de tipos de dados.

1. Saída de dados via console

Uma saída no console em Java é feita utilizando o método print ou


println presentes na classe System. A diferença entre os métodos print e println
é que no segundo é impresso o argumento contido e pula uma linha, o que não
ocorre no primeiro.

public class ExemploSaidaDadosConsole {

public static void main(String[] args) {


int numero = 2;

System.out.println("Imprimindo uma " +


"frase no console.");
System.out.println("Imprimindo mais " +
"uma frase no console.");
System.out.println("O número contido " +
"na variável é o " + numero );
System.out.print("Vai ficar ");
System.out.print("tudo na ");
System.out.print("mesma linha.");

}
Figura: Usando saída de dados no console através do método println
Fonte: Elaboração da autora

Desmembrando o comando utilizado é possível observar as


seguintes partes:

 System: Classe que possui o método.


 out: Membro que indica a saída.
 println: Imprime na tela

Rosicléia Frasson - rosicleiafrasson@gmail.com


41

 conteúdo entre os parênteses: argumento contendo a String que será


apresentada na tela. O argumento também pode ser uma variável ou a
composição de variáveis e Strings.

Os valores de saída normalmente são produzidos sem formatação.


Caso haja necessidade de formatação o Java possui o comando printf. Com ele é
possível exibir saídas formatadas.

Alguns formatos que podem ser utilizados com printf:

 %s = String
 %d = decimal inteiro
 %f = número com ponto flutuante
 %c = conteúdo da variável com representação ASCII
 %e = notação científica

public class ExemploSaidaDadosConsole {

public static void main(String[] args) {

double numero = 2.78896767577788989;

System.out.printf ("%.2f", numero);

System.out.printf ("%c\n", 67);

System.out.printf ("%e", numero);

}
Figura: Formatando saída de dados com printf
Fonte: Elaboração da autora

2. Entrada de dados via console

A classe Scanner do pacote java.util implementa as operações de


entrada de dados pelo teclado no console.

O pacote java.util faz parte da API do java assim como o java.lang que
possui os métodos print, println e printf. Por ser um pacote que contém
funcionalidades indispensáveis a qualquer aplicação, as classes do java.lang são
importadas automaticamente na aplicação. No caso do java.util é necessário
informar que a classe utilizará o pacote mencionado. Para isso, é necessário
adicionar um código de importação.

Rosicléia Frasson - rosicleiafrasson@gmail.com


42

//importar o pacote java.util:


import java.util.Scanner;
public class ExemploEntradaDadosConsole {

public static void main(String[] args) {

//Instancia e cria um objeto Scanner:


Scanner ler = new Scanner(System.in);

//Ler um valor inteiro:


int numero;
System.out.printf("Informe um número " +
"inteiro: ");
numero = ler.nextInt();

}
Figura: Entrada de dados com Scanner
Fonte: Elaboração da autora

Para receber outros tipos de dados:

 nextInt(): inteiro
 nextFloat(): valor com ponto flutuante
 nextDouble(): valor com ponto flutuante
 next(): palavra simples que não usa o caracter de espaço
 nextLine(): cadeia de caracteres

3. Entrada de dados via caixa de diálogo

A classe JOptionPane do javax.swing fornece caixas de diálogos pré-


empacotadas que permitem aos programas solicitarem entradas de dados de
valores básicos.

A entrada de dados utiliza o método showInputDialog. O argumento


do método deve ser a mensagem de texto que deve ser exibida na caixa de
diálogo para direcionar o usuário sobre o que ele deve informar.

//Importação do pacote
import javax.swing.JOptionPane;

public class ExemploEntradaCaixaDialogo {

public static void main(String[] args) {

String nome = JOptionPane.

Rosicléia Frasson - rosicleiafrasson@gmail.com


43

showInputDialog("Informe" +
" o seu nome: ");
//Integer.parseInt: converte de inteiro
//para String
int idade = Integer.parseInt
(JOptionPane.showInputDialog
("Informe a sua idade:"));

//Double.parseDouble: converte de double


//para String
double altura = Double.parseDouble
(JOptionPane.showInputDialog
("Informe a sua altura:"));

//Float.parseFloat: converte de float


//para String
float peso = Float.parseFloat
(JOptionPane.showInputDialog
("Informe o seu peso: "));

}
}

Figura: Entrada de dados com caixa de diálogo


Fonte: Elaboração da autora

O método showInputDialog lê os dados informados pelo usuário


como String. Se for necessário armazenar o valor como outro tipo de dado é
necessário fazer a conversão:
 Integer.parseInt: efetua a conversão de String para inteiro.
 Double.parseDouble: efetua a conversão de String para double.
 Float.parseFloat: efetua a conversão de String para float.

4. Saída de dados via caixa de diálogo

O método showMessageDialog exibe mensagem com o uso de caixa


de diálogos. Este método pertence a classe JOptionPane do pacote javax.swing e
deve ser importada para utilizá-la.

//Importação do pacote
import javax.swing.JOptionPane;

public class ExemploSaidaCaixaDialogo {

public static void main(String[] args) {

JOptionPane.showMessageDialog(null,
"Testando sáida de dados " +
"com caixa de diálogo");

Rosicléia Frasson - rosicleiafrasson@gmail.com


44

}
}
Figura: Saída de dados com caixa de diálogo
Fonte: Elaboração da autora

PARA FIXAR

1. Elabore um programa que escreve seu nome completo na primeira linha, seu
endereço na segunda, e o CEP e telefone na terceira.

2. Escreva um programa que produza a seguinte saída na tela:


ALUNO(A) NOTA
========= =====
João 9.0
Antonio 10.0
Julia 4.5
Ana 7.0

3. Elabore um programa que mostre o seguinte menu na tela:


Cadastro de Clientes
0 - Fim
1 - Inclui
2 - Altera
3 - Exclui
4 - Consulta
Opção:

4. (IADES 2011 PG/DF - Analista Jurídico - Analista de Sistemas) Analise o código


fonte em Java a seguir e assinale a alternativa que apresenta o resultado da
execução do programa.

import java.io.*;
public class Calculadora {
public static void main(String [] args) {
int a, b, c;
a = 5;
b = 3;
c = a++ + ++b;

System.out.println("Valores = " + a + b + c);


}
}

a) Valores = 16
b) Valores = 548
c) Valores = 18
d) Valores = 649

Rosicléia Frasson - rosicleiafrasson@gmail.com


45

e) Valores = 19

5. Escreva um aplicativo que exibe uma caixa, uma oval, uma seta e um losango
usando asteriscos(*).

*********
* *
* *
* *
* *
* *
* *
* *
*********

***
* *
* *
* *
* *
* *
* *
* *
***

*
***
*****
*
*
*
*
*
*

*
* *
* *
* *
* *
* *
* *
* *
*

6. Escreva um aplicativo que exibe um padrão de tabuleiro de damas conforme


mostrado a seguir:
********
********
********
********
********

Rosicléia Frasson - rosicleiafrasson@gmail.com


46

********
********
********

7. Faça um programa em Java que peça para calcular o produto de três números
inteiros informados pelo usuário.

8. Faça um aplicativo para ler a idade de uma pessoa, após calcule e mostre o
número de dias que a pessoa já viveu aproximadamente.

9. Uma pessoa comprou 2 artigos em uma loja. Para cada artigo tem-se: nome,
preço e percentual de desconto. Faça um aplicativo que escreva o nome, o preço
e o preço com desconto de cada artigo. Escreva também o total a pagar.

10. Faça um aplicativo para ler um número, após calcular e mostrar o quadrado
deste.

11. Escrever um aplicativo que leia o nome de um aluno e as notas das três
provas que ele obteve no semestre. No final informar o nome do aluno e a sua
média (aritmética).

12. Ler dois valores para as variáveis A e B, e efetuar as trocas dos valores de
forma que a variável A passe a possuir o valor da variável B e a variável B passe a
possuir o valor da variável A. Apresentar os valores trocados.

13. Ler uma temperatura em graus Celsius e apresentá-la convertida em graus


Fahrenheit. A fórmula de conversão é: F=(9*C+160) / 5, sendo F a temperatura
em Fahrenheit e C a temperatura em Celsius.

14. Elaborar um aplicativo que efetue a apresentação do valor da conversão em


real (R$) de um valor lido em dólar (US$). O aplicativo deverá solicitar o valor da
cotação do dólar e também a quantidade de dólares disponíveis com o usuário.

15. Faça um aplicativo que receba um valor que foi depositado e exiba o valor
com rendimento após um mês. Considere fixo o juro da poupança em 0,70% a.
m.

16. A Loja Mamão com Açúcar está vendendo seus produtos em 5 (cinco)
prestações sem juros. Faça um aplicativo que receba um valor de uma compra e
mostre o valor das prestações.

17.Escreva um aplicativo que solicita ao usuário dois números inteiros e imprima


sua soma, diferença, produto e quociente.

18. Escreva um aplicativo para calcular o valor de y na seguinte função y= 3x + 2.

Rosicléia Frasson - rosicleiafrasson@gmail.com


47

19. O valor por hora de um curso de inglês é R$15,00. Faça um aplicativo que
calcule o valor que deverá ser pago por um aluno, sendo que o aluno escolhe
quantas horas de curso que fazer.

20. Crie um aplicativo de calculadora IMC que lê o peso do usuário em


quilogramas e a altura em metros. Calcule o índice de massa corporal do usuário.
IMC =peso em quilogramas / altura em metros x altura metros.

21. Faça um aplicativo que dada a base e altura de um triângulo e calcule a sua
área.
Área = (Base * Altura) / 2

22. Escreva um programa em Java para ler um valor e escrever na tela o seu
antecessor.

23. Tendo como dados de entrada a distância total (em km) percorrida por um
automóvel e a quantidade de combustível (em litros) consumida para percorrê-
la, calcule e imprima o consumo médio de combustível.

24. Monte um aplicativo capaz de resolver o cálculo da área de um trapézio


qualquer.
Lembrando que: Área do trapézio = (Base Maior + Base Menor) x Atura / 2

25. Faça um aplicativo para ler o preço de compra e o percentual de lucro


desejado por um vendedor. Calcule o preço de venda do produto.

26. Uma empresa tem para um determinado funcionário uma ficha contendo o
nome, número de horas trabalhadas e o nº de dependentes do funcionário.
Considerando que:
a) A empresa paga 12 reais por hora e 40 reais por dependentes.
b) Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IR.
Leia o nome, número de horas trabalhadas e número de dependentes de um
funcionário. Após a leitura, escreva qual o nome, o salário bruto,os valores
descontados para cada tipo de imposto e finalmente, qual o salário líquido do
funcionário.

27. O custo de um carro novo ao consumidor é a soma do custo de fábrica com a


porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica).
Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%,
escrever um aplicativo para ler o custo de fábrica de um carro, calcular e
escrever o custo final ao consumidor. Faça o teste de mesa para verificar se a
saída do aplicativo está correta.

28. Uma revendedora de carros usados paga a seus funcionários vendedores um

Rosicléia Frasson - rosicleiafrasson@gmail.com


48

salário fixo por mês, mais uma comissão também fixa para cada carro vendido e
mais 5% do valor das vendas por ele efetuadas. Escrever um aplicativo que leia o
número de carros por ele vendidos, o valor total de suas vendas, o salário fixo e o
valor que ele recebe por carro vendido. Calcule e escreva o salário final do
vendedor.

29. Leia as seguintes informações de um funcionário: nome, idade, cargo e o seu


salário atual. Considere:
a) O salário atual sofrerá um reajuste de 38%.
b) O funcionário receberá também uma gratificação de 20% sobre o salário atual
reajustado.
c) O salário, após o reajuste e gratificação, será descontado em 20%.
Escreva os seguintes resultados:
 Imprimir nome, idade e cargo.
 Imprimir o salário (atual + reajuste + gratificação)
 Imprimir o salário final

30. Faça um aplicativo que leia as medidas do raio e da altura de um recipiente


cilíndrico e calcule e apresente o volume deste recipiente através da formula:
Volume=3.14 * Raio2*Altura.

31. Faça um aplicativo que leia o tempo gasto e a velocidade média em uma
viagem realizada por um veículo com consumo de 12 Km/l. Este aplicativo deverá
calcular e apresentar a quantidade de combustível gasto nesta viagem.

32. Escreva um aplicativo que lê uma entrada do usuário definindo o raio de um


círculo e que imprime o diâmetro e a área do círculo. Utilize o valor 3.1415 para
π.
Utilize as seguintes fórmulas:
Diâmetro=2r
Area=πr2

33. Faça um aplicativo que leia as medidas de uma sala retangular (largura da
parede maior, altura da parede, largura da parede menor) e calcule e apresente
a soma das áreas das paredes internas e também do teto. Também calcule
quantas latas de tinta serão necessárias para pintar as paredes da sala em
questão sabendo que uma lata de tinta é suficiente para pintar uma área de 12
m².

34. Ler dois números inteiros, x e y, e imprimir o quociente e o resto da divisão


inteira entre eles.

35.Faça um aplicativo para ler o valor do saque realizado pelo cliente de um


banco e escrever quantas notas de cada valor serão necessárias para atender ao
saque com a menor quantidade de notas possível. Serão utilizadas notas de 100,

Rosicléia Frasson - rosicleiafrasson@gmail.com


49

50, 20,10, 5, 2 e 1 reais.

ESTRUTURAS DE DECISÃO

OBJETIVOS

 apresentar as diferentes estruturas de decisão disponíveis no Java e a


importância das mesmas para o desvio de fluxo na execução de
aplicativos;
 apresentar a sintaxe das estruturas if, if-else e switch.

1. Instrução if-else

Comando if... else  A estrutura if permite especificar um


comando ou um bloco de comandos que
devem ser executados quando uma
if (expressão){ determinada condição for satisfeita.
bloco de comandos  A estrutura if ... else permite expressar duas
}else{ alternativas de execução, uma delas executa
bloco de comandos caso a condição seja verdadeira e a outra
} quando a condição não for satisfeita.
 Quando houver apenas um comando dentro
do bloco if ou do bloco else, não é necessário
o uso das chaves.
 Quando houver comandos if aninhados, cada
else está relacionado ao if que estiver dentro
do mesmo bloco que ele.

Rosicléia Frasson - rosicleiafrasson@gmail.com


50

import javax.swing.JOptionPane;

//Aplicativo que mostra a situação do aluno conforme a média


//do mesmo.
//média maior ou igual a 7.0: aprovado
//média entre 4 e 7: em recuperação
//média menor que 4: reprovado
public class SituacaoAluno {

public static void main(String[] args) {

double media;
media = Double.parseDouble(JOptionPane.showInputDialog
("Informe o número do mês desejado: "));

if (media >= 7){


JOptionPane.showMessageDialog(null, "Aprovado");
} else if (media >= 4){
JOptionPane.showMessageDialog(null,
"Em recuperação");
}else{
JOptionPane.showMessageDialog(null, "Reprovado");
}
}
}
Figura : Comando if-else
Fonte: Elaboração da autora

2. Instrução switch

Comando switch  O comando switch faz o teste da


switch (expressão){ expressão de seleção contra os valores
case constante1: das constantes indicados nas cláusulas
bloco decomandos; case, até que um valor verdadeiro seja
break; obtido.
case constante2:  Se nenhum dos testes produzir um
bloco decomandos; resultado verdadeiro, são executados
break; os comandos do bloco default.
•••  O comando break é utilizado para
default: forçar a saída do switch.
bloco decomandos;
}

import javax.swing.JOptionPane;

//Aplicativo que mostra o mês do ano conforme o número digitado


public class Meses {

Rosicléia Frasson - rosicleiafrasson@gmail.com


51

public static void main(String[] args) {

int mes;
mes = Integer.parseInt(JOptionPane.showInputDiaLog
("Informe o número do mês desejado: "));

switch(mes){
case 1:
JOptionPane.showMessageDialog(null, "Janeiro");
break;
case 2:
JOptionPane.showMessageDialog(null, "Fevereiro");
break;
case 3:
JOptionPane.showMessageDialog(null, "Março");
break;
case 4:
JOptionPane.showMessageDialog(null, "Abril");
break;
case 5:
JOptionPane.showMessageDialog(null, "Maio");
break;
case 6:
JOptionPane.showMessageDialog(null, "Junho");
break;
case 7:
JOptionPane.showMessageDialog(null, "Julho");
break;
case 8:
JOptionPane.showMessageDialog(null, "Agosto");
break;
case 9:
JOptionPane.showMessageDialog(null, "Setembro");
break;
case 10:
JOptionPane.showMessageDialog(null, "Outubro");
break;
case 11:
JOptionPane.showMessageDialog(null, "Novembro");
break;
case 12:
JOptionPane.showMessageDialog(null, "Dezembro");
break;
}
}
}
Figura : Comando switch
Fonte: Elaboração da autora

3. Comandos break e continue

Os comandos break e continue são estruturas auxiliares dos fluxos de


repetição. O comando break paralisa a execução de um loop inteiro e o comando
continue para somente a interação atual.

Rosicléia Frasson - rosicleiafrasson@gmail.com


52

4. Comentários

Comentário é a parte do código ignorada pelo compilador. É utilizado


para deixar o código mais inteligível. Java possui três tipos diferentes de
comentário:

 Comentário de uma linha: O uso de barra dupla marca o início do


comentário que se estende até o fim da linha.
 Comentário de várias linhas: Os delimitadores /* e */ indicam início e fim
de um comentário e podem conter várias linhas.
 Comentário javadoc: É utilizado para gerar a documentação javadoc e é
delimitado pelas sequências de símbolos /** e */. Para gerar o javadoc é
necessário que o comentário esteja localizado imediatamente antes da
classe, atributo ou método documentado.

PARA FIXAR

1. Faça um aplicativo para ler dois números inteiros e informar se estes números
são iguais ou diferentes.

2. Construa um programa que leia o valor de uma conta de luz (CL) e, caso o
valor seja maior que R$ 50,00 apresente a mensagem: “Você está gastando
muito”. Casocontrário não exiba mensagem nenhuma.

3. Construa um programa que calcule o peso ideal de uma pessoa. Dados de


entrada: altura e sexo.
Fórmulas para calculo do peso:
• peso ideal de homem = (72,7*altura)-58
• peso ideal da mulher = (62,1*altura-44,7)

4. Construa um programa que determine quanto será gasto para encher o


tanque de um carro (VG), sabendo-se que o preço da gasolina é de R$ 1,80 e o
preço do álcool é de R$ 1,00. O usuário fornecerá os seguintes dados: Tipo de
carro (TC) (G – gasolina ou A – álcool) e Capacidade dotanque (CT), em litros.

5. Faça um aplicativo onde o usuário irá digitar a idade de uma pessoa, e é


emitida uma mensagem informando se a mesma é maior ou menor de idade
(considerar 18 anos como maioridade).

6. Construa um aplicativo que cadastre um produto, seu custo unitário e sua


quantidade em estoque. O aplicativo deve mostrar na saída: valor total em
estoque e a mensagem conforme a condição abaixo:

Rosicléia Frasson - rosicleiafrasson@gmail.com


53

- Quantidade menor que 100: COMPRAR


- Quantidade maior ou igual a 100: ESTOQUE SUFICIENTE

7. Faça um aplicativo que leia os valores A, B, C, e diga se a soma de A + B é


menor que C.

8. Uma academia oferece as seguintes atividades a seus clientes:


natação,musculação e aeróbica. O valor da aula de cada modalidade é R$20,00,
R$15,00 e R$10,00. Elabore um aplicativo que calcule o valor a ser pago por um
cliente, dependendo da modalidade escolhida e do número de aulas.

9.Escreva o comando de seleção para cada uma das situações a seguir:


a) Se X for maior que Y ou se Z for menor ou igual a 30, multiplique X por 2. Caso
contrário, divida X por 2 e divida Z por 5.
b) Se o desconto for menor que 25% e o preço do produto for maior que
R$25000,00, então mostre o nome do produto.

10. Uma empresa de vendas oferece para seus clientes um desconto que é em
função do valor da compra do cliente. Esse desconto é de 20% se o valor da
compra for maior ou igual a R$5000,00 e 15% se for menor. Faça um aplicativo
para imprimir o valor da compra e o desconto obtido por um determinado
cliente.

11. Um vendedor tem seu salário calculado em função do valor total de suas
vendas. Esse cálculo é feito de acordo com o seguinte critério: se o valor total de
suas vendas for maior que R$20000,00, o vendedor receberá como salário 10%
do valor das vendas. Caso contrário, receberá apenas 7,5% do valor das vendas.
Escrever um aplicativo que determine o valor ganho pelo vendedor.

12. Uma empresa de vendas tem três corretores. A empresa paga ao corretor
uma comissão calculada de acordo com o valor de suas vendas. Se o valor total
da venda de um corretor for maior que R$50000,00, a comissão será de 12% do
valor vendido. Se o valor da venda do corretor estiver entre R$30000,00 e
RS50000,00 (incluindo extremos), a comissão será de 9,5%. Em qualquer outro
caso a comissão será de 7%. Escreva um aplicativo que gere um relatório
contendo nome, valor da venda e comissão de cada um dos corretores. O
relatório deve mostrar também o total de vendas da empresa.

13. Faça um aplicativo para ler um número inteiro e informar se o número é par
ou ímpar.

14. Faça um aplicativo para ler dois números inteiros A e B e informar se A é


divisível por B.

15. Faça um aplicativo para ler dois números inteiros e escrever o maior.

Rosicléia Frasson - rosicleiafrasson@gmail.com


54

16. Faça um aplicativo para ler dois números inteiros e escrevê-los em ordem
crescente.

17. Elabore um aplicativo que indique se um número digitado está


compreendido entre 20 e 90, ou não.

18. Um comerciante comprou um produto e quer vendê-lo com um lucro de 45%


se o valor da compra for menor que R$ 20,00; caso contrário, o lucro será de
30%. Elabore um aplicativo que leia o valor do produto e imprima o valor de
venda para o produto.

19. Um hotel cobra R$800,00 a diária e mais uma taxa de serviços. A taxa de
serviços é de:
R$ 5,50 por diária, se o número de diárias for maior que 15.
R$ 6,00 por diária, se o número de diárias for igual a 15.
R$ 8,00 por diária, se o número de diárias for menor que 15.
Construa um aplicativo que mostre o nome e a conta de um cliente.

20. Escreva um aplicativo que, para uma conta bancária, leia o seu número, o
saldo, o tipo de operação a ser realizada (depósito ou retirada) e o valor da
operação. Após, determine e mostre o novo saldo. Se o novo saldo ficar
negativo, deve ser mostrada também a mensagem CONTA ESTOURADA.

21. Dado três valores A, B, C, verificar se eles podem ser os comprimentos dos
lados de um triângulo, e se forem, verificar se é um triângulo equilátero,
isósceles ou escaleno. Se eles não formarem um triângulo, escrever uma
mensagem.
Antes da elaboração do aplicativo, torna-se necessária a revisão de algumas
propriedades edefinições:
- Propriedade. O comprimento de cada lado de um triângulo é menor do que a
soma dos comprimentos dos outros dois lados;
- Chama-se triângulo equilátero os que têm os comprimentos dos três lados
iguais;
- Chama-se triângulo isósceles aquele que tem os comprimentos de dois lados
iguais;
- Chama-se triângulo escaleno aquele que tem os comprimentos dos três lados
diferentes.

22. Faça um aplicativo que leia 3 números inteiros e escreva o menor deles.

23. Considere uma situação em que um cliente faz uma determinada compra em
uma loja. Ao realizar o pagamento, são lhe oferecidas as seguintes condições
para pagamento:
Pagamento à vista - 15% de desconto sobre o valor total da compra.

Rosicléia Frasson - rosicleiafrasson@gmail.com


55

Pagamento com cheque pré-datado para 30 dias - 10% de desconto sobre o valor
total da compra.
Pagamento parcelado em 3 vezes - 5% de desconto sobre o valor total da
compra.
Pagamento parcelado em 6 vezes - não tem desconto.
Pagamento parcelado em 12 vezes - 8% de acréscimo sobre o valor total da
compra.
De acordo com o valor total da compra, verifique a opção de pagamento do
cliente, calcule o valor final da compra e, se a escolha for por pagamento
parcelado, calcule também o valor das parcelas. Apresente ao usuário uma
mensagem com o valor total da compra, o valor final da compra, a diferença
entre os dois, identifique como desconto se a diferença for positiva, como juros
se for negativa, mostre também, a quantidade e o valor das parcelas.

24. A empresa XSoftware concederá o aumento salarial anual a seus


funcionários. Esse aumento é variável de acordo com o cargo e o tempo de
serviço na empresa, conforme a tabela a seguir. Faça um aplicativo que leia o
salário, o cargo e a data de admissão de um funcionário e calcule o novo salário.
Calcule o tempo de serviço a partir da data atual. Se o cargo do funcionário não
estiver na tabela, ele deverá receber 7% de aumento. Mostre o salário antigo, o
novo salário e a diferença.
Cargo Tempo de serviço em anos Percentual
Gerente Maior ou igual a 5 10%
Maior ou igual a 3 e menor que 5 9%
Menor que 3 8%
Engenheiro Maior ou igual a 5 11%
Maior ou igual a 3 e menor que 5 10%
Menor que 3 9%
Técnico Maior ou igual a 5 12%
Maior ou igual a 3 e menor que 5 11%
Menor que 3 10%

25. Em um concurso público um candidato à vaga realizou as três provas:


português, matemática e direito. Faça um aplicativo para ler: o nome do
candidato e as notas obtidas em cada uma das provas. Após a leitura mostre na
tela:
a) O nome do candidato.
b) A prova em que o aluno obteve a maior nota. Considere que as notas são
diferentes.
c) A média do aluno.
d) Uma mensagem indicando se o aluno foi aprovado ou não. Considere que o
aluno é aprovado se a sua média for superior ou igual a 7.0, e se ele não obteve,
em nenhuma das provas, notas inferiores a 5.0.

26. Uma agência matrimonial cobra para arranjar encontros com outras

Rosicléia Frasson - rosicleiafrasson@gmail.com


56

pessoas.Para estes encontros, a agência cobra de acordo com o sexo da pessoa


que você está interessado e a faixa etária desta pessoa, conforme a tabela
abaixo:
Sexo do seu interesse Faixa etária Valor cobrado
M 18 a 21 (inclusive extremos) R$ 300,00
22 a 25 (inclusive extremos) R$ 700,00
26 a 30 (inclusive extremos) R$ 1000,00
31 a 40 (inclusive extremos) R$ 3500,00
> 41 (inclusive) R$ 500,00
F 18 a 21 (inclusive extremos) R$ 3500,00
22 a 25 (inclusive extremos) R$ 2500,00
26 a 30 (inclusive extremos) R$ 1000,00
31 a 40 (inclusive extremos) R$ 100,00
> 41 (inclusive) R$ 50,00

27. Faça um programa que faça 5 perguntas para uma pessoa sobre um crime. As
perguntas são:
a."Telefonou para a vítima?"
b."Esteve no local do crime?"
c."Mora perto da vítima?"
d."Devia para a vítima?"
e."Já trabalhou com a vítima?"
O programa deve no final emitir uma classificação sobre a participação da pessoa
no crime. Se a pessoa responder positivamente a 2 questões ela deve ser
classificada como "Suspeita", entre 3 e 4 como "Cúmplice" e 5 como "Assassino".
Caso contrário, ele será classificado como "Inocente". O aplicativo deve imprimir
o nome da pessoa e a classificação em que ele está enquadrado.

28. As Organizações Tabajara resolveram dar um aumento de salário aos seus


colaboradores e lhe contrataram para desenvolver o programa que calculará os
reajustes.
Faça um programa que recebe o salário de um colaborador e o reajuste segundo
o seguinte critério, baseado no salário atual:
• salários até R$ 280,00 (incluindo) : aumento de 20%
• salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
• salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
• salários de R$ 1500,00 em diante : aumento de 5%.
Após o aumento ser realizado, informe na tela:
• o salário antes do reajuste;
• o percentual de aumento aplicado;
• o valor do aumento;
• o novo salário, após o aumento.

29. Um posto está vendendo combustíveis com a seguinte tabela de descontos:


Álcool:

Rosicléia Frasson - rosicleiafrasson@gmail.com


57

a. até 20 litros, desconto de 3% por litro


b. acima de 20 litros, desconto de 5% por litro
Gasolina:
a. até 20 litros, desconto de 4% por litro
b. acima de 20 litros, desconto de 6% por litro.
Escreva um aplicativo que leia o número de litros vendidos, o tipo de
combustível (codificado da seguinte forma: A-álcool, G-gasolina), calcule e
imprima o valor a ser pago pelo cliente sabendo-se que o preço do litro da
gasolina é R$ 2,50 o preço do litro do álcool é R$ 1,90 e a quantidade de litros
vendidos.

30. Muitas empresas utilizam aplicativos para validação do CPF. O aplicativo que
deverá ser elaborado deve ser capaz de receber um CPF completo e verificar se
está correto. Para isso deverá checar os dígitos verificadores. O número do CPF é
composto de 11 dígitos, sendo que os dois últimos são os dígitos verificadores. A
validação do CPF é feita por meio de cálculos com base nos 9 primeiros dígitos.
As etapas desse cálculo são descritas a seguir. Para isso, vamos utilizar o CPF
exemplo ABC.DEF.GHI-XY. Após a elaboração do aplicativo, faça o teste de mesa
com os seguintes valores de CPF e verifique se são válidos:
123.456.789-09 e 456.321.556-98

Cálculo do X:
Passo 1 - Multiplicar o dígito A por 10, o dígito B por 9, o dígito C por 8 e assim
sucessivamente até o dígito I, que deverá ser multiplicado por 2.
Passo 2 - Calcular a soma entre todos os valores calculados no passo 1.
Passo 3 - Dividir o valor obtido no passo 2 por 11. Essa divisão deve ser por
inteiros. Se o resto da divisão for menor que 2, o primeiro dígito verificador será
0. Caso contrário, subtrai-se de 11 o valor obtido. Por exemplo: se o resultado for
5, o dígito verificador será 11 - 5 = 6.

Cálculo do Y:
Passo 1 - Multiplicar o dígito A por 11, o dígito B por 10, o dígito C por 9, e assim
sucessivamente até o dígito Y, que deverá ser multiplicado por 2
Passo 2 - Calcular a soma entre todos os valores calculados no passo 1.
Passo 3 - Dividir o valor obtido no passo 2 por 11. Essa divisão deve ser por
inteiros. Se o resto da divisão for menor que 2, o primeiro dígito verificador será
0. Caso contrário, subtrai-se de 11 o valor obtido.Por exemplo, se o resultado for
5, o dígito verificador será 11- 5 = 6.

31. Faça um aplicativo para calcular a conta final de um hospede de um hotel


considerando que:
a) serão lidos o nome do hóspede, o tipo de apartamento utilizado (A, B, C ou D),
o número de diárias utilizadas pelo hóspede e o valor de consumo interno do
hóspede;
b) o valor da diária é determinado pela seguinte tabela:

Rosicléia Frasson - rosicleiafrasson@gmail.com


58

Tipo do apto Valor da diária (R$)


A 150,00
B 100,00
C 75,00
D 50,00
c) o valor das diárias é calculado pela multiplicação do número de diárias
utilizadas pelo valor da diária.
d) o subtotal é calculado pela soma do valor total das diárias e o valor do
consumo interno;
e) o valor da taxa de serviço equivale a 10% do subtotal
f) o total geral resulta da soma do subtotal com a taxa de serviço.
g) escreva a conta final contendo: o nome do hóspede, o tipo do apartamento, o
número de diárias utilizadas, o valor unitário da diária, o valor total das diárias, o
valor do consumo interno, o subtotal, o valor da taxa de serviço e o total geral.

32. Faça um programa que receba o código correspondente ao cargo de um


funcionário e o seu salário atual e mostre o cargo, o valor do aumento e seu
novo salário. Os cargos estão na tabela a seguir:
Código Cargo Percentual
1 Escriturário 50%
2 Secretário 35%
3 Caixa 20%
4 Gerente 10%

33. Em uma empresa, os funcionários que forem solteiros não receberão bônus
natalinos. Os funcionários que não forem solteiros e tiverem filhos receberão um
bônus de 20% de seu salário-base (ou seja, receberão o valor de seu salário
acrescido de 20%). Os funcionários que não forem solteiros e não tiverem filhos
receberão um bônus de 15% de seu salário-base (ou seja, receberão o valor de
seu salário mais 15%).
Faça um aplicativo que leia o nome do funcionário, seu salário bruto, estado civil
e a quantidade de filhos. Ao final mostre o nome do funcionário, o salário bruto e
o salário acrescido do abono.

34. Elabore um aplicativo que leia um número que represente um determinado


mês do ano. Após a leitura escreva por extenso qual o mês lido. Caso o número
digitado não esteja na faixa de 1..12 escreva uma mensagem informando o
usuário do erro na digitação.

35. Faça um aplicativo que leia dois valores (A e B) e dê a opção ao usuário de


calcular as operações aritméticas: 1 – soma 2 – subtração 3 - multiplicação 4 -
divisão . Caso seja informado outro número mostrar uma mensagem de
operação existente.

36. Construa um aplicativo que cadastre o nome de um aluno e mostre na tela as

Rosicléia Frasson - rosicleiafrasson@gmail.com


59

opções de cursos para o aluno escolher:


1 – DESENHO 2 – INTERNET 3 – IDIOMAS
Em seguida, informe ao aluno o valor da mensalidade conforme o curso
escolhido:
DESENHO(R$20,00)
INTERNET(R$25,00)
IDIOMAS(R$35,00)

37. Faça um aplicativo que cadastre o nome de um filme, o seu gênero (comédia,
aventura, etc) e o tipo do DVD (A=5,00 B=3,00 ou C=1,50). Calcule o valor a ser
pago pelo cliente, conforme o valor da diária e da quantidade de dias da locação
do DVD.

38. Escreva um aplicativo que lê 3 valores X, A e B, onde X é um valor inteiro


positivo e A e B são quaisquer valores reais e diferentes entre si. O aplicativo
deve escrever os valores lidos e:
a) se X=1, efetuar a soma de A e B;
b) se X=2, efetuar a divisão de A por B;
c) se X=3, escrever os valores A e B em ordem crescente;
d) se X=4, escrever os valores A e B em ordem decrescente;
e) se X=5, efetuar a subtração do maior pelo menor;
f) se X não for 1, 2, 3, 4 ou 5, mostrar uma mensagem de erro.

39. Elabore um menu de opções de um cadastro, conforme modelo:


1 – Inserir
2 – Alterar
3 – Pesquisar
4 – Excluir
5 – Sair

40. Uma empresa concederá um aumento de salário aos seus funcionários,


variável de acordo com o cargo, conforme a tabela abaixo. Faça um programa
que leia o salário e o código do cargo de um funcionário e calcule o seu novo
salário. Se o cargo do funcionário não estiver na tabela, ele deverá, então,
receber 15% de aumento. Mostre o salário antigo, o novo salário e a diferença
entre ambos. Utilizar o comando “switch”.
Código do Cargo Percentual
101 5%
102 7,5%
103 10%

Rosicléia Frasson - rosicleiafrasson@gmail.com


60

ESTRUTURAS DE REPETIÇÃO

OBJETIVOS

 apresentar as diferentes estruturas de repetição disponíveis no Java e a


importância das mesmas para que um trecho do código seja executado
diversas vezes;
 apresentar a sintaxe das estruturas for, while e do-while.
 demonstrar a importância do uso de comentários no código e as diversas
formas de usá-lo.

1. Comando for

for (inicialização; condição; incremento){  O comando for é usado


bloco de comandos; quando é necessário
} repetir um trecho de
código diversas vezes.
 o comando for permite
expressar iterações
combinando uma
expressão de inicialização,
um teste de condição e
uma expressão de
incremento.
 inicialização: comando de
atribuição que define o
valor inicial da variável
que controla o número de
repetições.
 condição: expressão
relacional que define até
quando as iterações serão
executadas.
 incremento: expressão
que define como a variável
de controle do laço deve
variar ( pode aumentar ou
diminuir).
 o teste da condição do
controle é feito no início
do laço, o que significa

Rosicléia Frasson - rosicleiafrasson@gmail.com


61

que se já for falsa os


comandos dentro do laço
não serão executados.

import javax.swing.JOptionPane;

//Mostrar números de 0 a 10.


public class RepeticaoFor {

public static void main(String[] args) {

for (int i = 0; i <= 10; i++){


JOptionPane.showMessageDialog(null, i);
}
}
}
Figura : Comando for
Fonte: Elaboração da autora

2. Comando while

while (condição){  como dito anteriormente no comando for, o


bloco de comandos; comando while também é utilizado para
} repetir um trecho de código diversas vezes.
 pode ser qualquer expressão ou valor que
resulte em um verdadeiro ou falso.
 o laço while é executado enquanto a
condição for verdadeira.
 o teste da condição do controle é feito no
início do laço, o que significa que se já for
falsa os comandos dentro do laço não serão
executados.

import javax.swing.JOptionPane;

//Mostrar números de 0 a 10.


public class RepeticaoWhile {

public static void main(String[] args) {

int i = 0;

while (i <= 10){


JOptionPane.showMessageDialog(null, i);
i++;
}
}
}

Rosicléia Frasson - rosicleiafrasson@gmail.com


62

Figura : Comando while


Fonte: Elaboração da autora

3. Comando do ... while

do{  Similar ao comando while, porém, o teste


bloco de comandos; da condição de controle é feito no fim do
}while (condição); laço, o que significa que os comandos
dentro do laço são executados pelo menos
uma vez.

import javax.swing.JOptionPane;
//Mostrar números de 0 a 10.
public class RepeticaoWhile {

public static void main(String[] args) {

int i = 0;

do{
JOptionPane.showMessageDialog(null, i);
i++;
} while (i <= 10);
}
}
Figura : Comando while
Fonte: Elaboração da autora

PARA FIXAR

1. Leia 10 números inteiros positivos e escreva a média aritmética de todos os


números lidos que são pares.

2. Elabore um aplicativo para mostrar os números ímpares entre 1 e 20 em


ordem decrescente.

3. Escreva um aplicativo que escreva os números de 100 a 200, inclusive a média


de todos eles.

4. Elabore um aplicativo para mostrar os números pares compreendidos entre


100 e 150 em ordem crescente.

5. Leia um conjunto de 10 números inteiros positivos e escreva o maior e o


menor deles.

Rosicléia Frasson - rosicleiafrasson@gmail.com


63

6. Escreva um aplicativo que receba vários números digitados pelo usuário, até
que o usuário digite 0. Ao digitar 0, o aplicativo termina.

7. Escreva um aplicativo que leia 10 números e mostre o maior deles.

8. Escreva um aplicativo que mostre todos os números inteiros de 0 a 100.

9. Escreva um aplicativo que mostre os números de 50 a 100, inclusive a soma do


cubo desses números.

10. Escreva um aplicativo que leia 15 números e mostre o quadrado do menor


deles.

11. Escreva um aplicativo que mostre todos os números inteiros ímpares de 5 a


55.

12. Escreva um aplicativo que mostre em ordem decrescente os números pares


compreendidos entre 4 e 40.

13. Escreva um aplicativo que mostre todos os números múltiplos de 5, no


intervalo de 1 a 500.

14. Escreva um aplicativo que imprima o quadrado dos números no intervalo de


1 a 20.

15. Escreva um aplicativo que receba dez números do usuário e imprima a


metade de cada número.

16. Escreva um aplicativo que imprima todos os números de 1 até 100, inclusive
a soma de todos eles.

17. Escreva um aplicativo que imprima todos os números de 100 até 150,
inclusive a soma do quadrado desses números.

18. Faça um aplicativo que leia um número inteiro e mostre o seu dobro na tela.
O programa deve executar até o usuário digitar 0.

19. Escreva um aplicativo que calcule a média dos números digitados pelo
usuário, se eles forem pares. Termine a leitura se o usuário digitar zero (0).

20. Faça um aplicativo para mostrar os 30 primeiros números ímpares.

21. Faça um aplicativo que calcule a soma dos números inteiros entre 5 e 16,
inclusive.

22. Faça um aplicativo que leia 10 números inteiros e para cada um deles diga se
este é positivo, negativo ou zero.

23. Escreva um aplicativo que leia 10 números e imprima a quantidade de


números pares e números ímpares digitados.

Rosicléia Frasson - rosicleiafrasson@gmail.com


64

24. Escreva um aplicativo que leia 10 números e imprima a quantidade de


números maiores que 30 que foram digitados.

25. Escreva um aplicativo que leia 20 números e imprima a soma dos números
pares e a quantidade de números ímpares.

26. Escreva um aplicativo para calcular o fatorial de um número digitado.

27. Escreva um aplicativo que leia um número e imprima todos os múltiplos de 3


e 5 até chegar ao número lido.

28. Escreva um aplicativo que imprima todos os números de 10 a 35, a soma da


metade desses números.

29. Faça um aplicativo que determine o maior entre N números. A condição de


parada é a entrada de um valor 0, ou seja, o aplicativo deve ficar calculando o
maior até que a entrada seja igual a 0 (ZERO).

30. Faça um aplicativo que conte de 1 a 100 e a cada múltiplo de 10 emita uma
mensagem: Múltiplo de 10.

31. Escreva uma Programa que receba a idade de 10 pessoas, calcule e imprima a
quantidade de pessoas maiores de idade (maiores de 18 anos).

32. Escreva um aplicativo que solicite ao usuário que digite o seu login e a sua
senha. Caso o login e a senha estejam errados, pedir para digitar novamente.
Caso estejam corretos, escrever: “Login efetuado com sucesso.” O login deve ser
o seu nome e a senha deve ser a palavra “digital”.

33. Escreva um aplicativo que receba números positivos e calcule a soma dos que
são pares. A estrutura encerra quando o usuário digita um número negativo.

34. Escreva um aplicativo que receba o preço e a quantidade de 10 diferentes


produtos e mostre o valor total da compra.

35. Escreva um aplicativo que receba números do usuário enquanto eles forem
positivos e ao final mostre a média dos números digitados.

36. Desenvolva um aplicativo que solicite ao usuário a entrada de 5 valores


inteiros e,a cada valor lido, aplique a seguinte regra: se o número lido for maior
que 10,subtrai 5 e escreve o resultado na tela, senão soma 2 e manda o
resultado para tela.

37. Escreva um aplicativo que receba números do usuário e imprima o triplo de


cada número. O aplicativo deve encerrar quando o número 999 for digitado.

38. Dado o nome e o salário bruto de 10 funcionários de uma empresa, calcular e


exibir o novo salário com reajuste de 15%.

Rosicléia Frasson - rosicleiafrasson@gmail.com


65

39. Escreva um aplicativo que receba números do usuário enquanto eles forem
positivos e ao fim o aplicativo deve imprimir a quantidade de números digitados.

40. Faça um aplicativo que fique num ciclo de leitura até que o usuário informe
um número positivo (ignorar números não positivos) e depois mostre a raiz
quadrada do número positivo informado.

41. Escreva quantos anos serão necessários para que Ciclano seja maior que
Fulano. Considere que Fulano tem 1,50 m e cresce 2 cm por ano e Ciclano tem
1,10 me cresce 3 cm por ano.

42. Escreva um aplicativo que leia dois números e calcule a média aritmética de
todos os números que estiverem entre os números lidos, incluindo os números
lidos.

43. Uma turma possui N alunos, e para cada aluno tem-se uma média para cada
disciplina. O professor de Matemática precisa saber a média geral de sua
disciplina em uma turma. Faça um aplicativo para auxiliar a encontrar este valor.

44. Escreva um aplicativo que leia vários números e informe quantos números
entre 100 e 200 foram digitados. Quando o valor 0 for lido, o aplicativo deverá
cessar sua execução.

45. Criar um aplicativo que some os números ímpares entre 45 e 99.

46. Faça um trecho de aplicativo para ler e imprimir o nome e a idade de várias
pessoas, até encontrar alguém com 65 anos, quando deverá ser impresso, além
do nome, uma mensagem informando o fato.

47. Faça um aplicativo para ler um determinado número de pessoas e a idade e o


nome de cada um. Ao final informe o nome da pessoa mais velha e da mais nova.

48. Escreva a seguinte sequência de números utilizando estrutura de repetição


em seu aplicativo: 7 - 14 - 21 - 28 - 35 - 42 - 49- 56 - 63 - 70 - 77

49. Uma empresa com X funcionários precisa saber a média de seus salários.
Faça um aplicativo para ler a quantidade de funcionários e o salário de cada um e
escrever a média dos salários.

50. Faça um aplicativo para Imprimir a tabuada do número4 sem usar o operador
de multiplicação.

51. Uma empresa pretende enviar, para outra cidade, via aérea, 50 mercadorias.
Calcular a tarifa de embarque cada mercadoria, sabendo-se que é cobrado 0,5%
do valor da mercadoria. Calcular também a tarifa total para envio de todas as
mercadorias.

52. Faça um aplicativo para:


a) Ler um valor x qualquer

Rosicléia Frasson - rosicleiafrasson@gmail.com


66

b) Calcular Y = ( x+1)+(x+2)+(x+3)+(x+4)+(x+5)+…(x+100).

53. Faça um aplicativo para ler um valor X e calcular Y = X+2X+3X+4X+5X+…+20X.

54. Faça um aplicativo para calcular a soma de vários valores inteiros e positivos
fornecidos pelo usuário. O dado que finaliza a sequência de entrada é o número -
1.

55. Faça um APLICATIVO para:


a) Leia um valor X e um valor N.
b) Calcular:Y = X - 2X + 4X - 6X + 8X - 10X + … NX.

56. Criar um aplicativo que receba vários números inteiros e positivos e imprima
a média dos números múltiplos de 3. A execução deve encerrar quando um
número não positivo for lido.

57. Crie um aplicativo que receba vários números inteiros e positivos e imprima o
produto dos números ímpares digitados e a soma dos pares. O algoritmo encerra
quando o zero ou um número negativo é digitado.

58. Dado o código do produto e preço de 15 produtos, elaborar um aplicativo


para calcular e exibir:
- o maior preço;
- a média aritmética dos preços dos produtos.

59. Num frigorífico existem 10 bois. Cada boi traz preso em seu pescoço um
cartão contando seu número de identificação e seu peso. Fazer um aplicativo
que escreva o número e peso do boi mais gordo e do boi mais magro.

60. Escreva um aplicativo para calcular a média de valores pares e ímpares que
serão digitados pelo usuário. Ao final o aplicativo deve mostrar essas duas
médias. Para finalizar o usuário irá digitar um valor negativo.

61. O salário líquido de um empregado é obtido calculando o seu salário bruto, e


então deduzindo os descontos. O salário bruto é obtido pela fórmula salário
bruto = horas trabalhadas *salário por hora. O desconto é calculado pela fórmula
desconto = salário bruto * percentual de desconto. Escreva um aplicativo para
calcular o salário líquido de 15 funcionários. O aplicativo deverá ler para cada
funcionário o seu número, o salário por hora, o percentual de descontos e as
horas trabalhadas. A seguir, calcular e exibir o salário bruto, os descontos e o
salário líquido.

62. Uma loja oferece para os seus clientes um determinado desconto de acordo
com o valor da compra efetuada. O desconto é de 20%, se o valor da compra for
maior ou igual a R$250,00 e 15%, se for menor. Construa um aplicativo que, para
um grupo de dez clientes, mostre nome, valor da compra, desconto e valor a
pagar de cada cliente. Determine também o quanto a loja arrecadou com esses
clientes.

Rosicléia Frasson - rosicleiafrasson@gmail.com


67

63. Considere dados referente a altura e o sexo de 40 pessoas. Fazer um


aplicativo que calcule e escreva:
- a maior e a menor altura do grupo
- a média de altura das mulheres
- o número de homens.

64. Foi feita uma pesquisa com um grupo de alunos de uma universidade, onde
se perguntou para cada aluno, o número de vezes que utilizou o restaurante da
universidade no último mês. Construa um aplicativo que determine:
a) o percentual de alunos que utilizaram menos de dez vezes o restaurante;
b) o percentual de alunos que utilizaram entre dez e quinze vezes;
c) o percentual de alunos que utilizaram o restaurante acima de quinze vezes.

65. Para uma turma de 15 alunos, construir um aplicativo que determine:


a) idade média dos alunos com altura menor que 1.70m
b) a altura média dos alunos com mais de 20 anos.

66. Um hotel cobra R$150,00 por diária e mais uma taxa de serviços. A taxa de
serviços é de:
R$8,00 por diária, se o número de diárias for < 15;
R$6,30 por diária, se o número de diárias for = 15;
R$5,00 por diária, se o número de diárias for > 15.
Construa um aplicativo que imprima o nome e a conta de cada cliente do hotel.
Imprima também o total ganho pelo hotel.

67. Considere que, para cada uma das praias da região, tenha-se registrado o
nome da praia, a sua distância do centro da cidade, o número médio de
veranistas da última temporada e o tipo de acesso à praia (0 - acesso não
asfaltado; 1 - acesso asfaltado). Construa um aplicativo que forneça:
a) o número de praias que distam mais que 15 Km do centro;
b) a quantidade média de veranistas, na última temporada, nas praias com
acesso não asfaltado;
c) o nome e a distância do centro, em Km, de todas as praias de acesso asfaltado
que tiveram menos de 1000 veranistas.

68. Considere que para cada aluno de uma universidade, tenham-se as seguintes
informações: renda mensal da família, quanto gasta com alimentação, total de
gastos com vestimenta e quanto gasta com aluguel. Construa um aplicativo para
fornecer:
a) a renda média familiar dos alunos que gastam acima de R$ 300,00 com
alimentação;
b) o gasto médio com aluguel;
c) para cada aluno, a proporção de gastos com alimentação (P1) e a proporção
de gastos com vestimentas (P2) em relação à sua renda.
P1 = gastos com alimentação / renda familiar
P2 = gastos com vestimenta / renda familiar

Rosicléia Frasson - rosicleiafrasson@gmail.com


68

69. Uma empresa de vendas possui quinze vendedores viajantes e, ao final do


mês, deseja fazer uma análise de suas vendas. Para tanto, para cada vendedor a
empresa tem as seguintes informações: tempo de serviço (em anos), valor de
suas vendas, total de despesas com viagem. O tempo de serviço é especificado
por um código, conforme a seguir.
Tempo Código
Acima de 10 anos A
Entre 5 e 10 anos (inclusive extremos) B
Menos que 5 anos C
Construir um aplicativo para fornecer:
a) a faixa de tempo de serviço que apresenta maior despesa com viagem;
b) a média de vendas dos vendedores que possuem menos de cinco anos de
serviço;
c) a diferença entre o valor das vendas e despesas com viagem dos vendedores
que tem mais de dez anos de serviço
d) o total de despesas com viagens pagas pela empresa.

70. Uma companhia de seguros possui cinquenta corretores. A companhia para


cada corretor, na forma de comissão, calculada de acordo com a venda mensal
do corretor. Essa comissão é de: 20% do valor da venda, se esse valor for maior
que R$20000,00; 15% do valor da venda, se esse valor estiver entre R$10000,00
e R$20000,00; e 11% do valor da venda, se esse valor estiver abaixo de
R$10000,00. Construir um aplicativo que:
a) mostre o nome e o salário de cada corretor;
b) determine e mostre o total de vendas da companhia;
c) determine e mostre o total de salários pagos aos corretores;
d) determine e mostre o vendedor que mais vendeu.

71. Um determinado material radioativo perde metade de sua massa a cada


cinquenta segundos. Dada a massa inicial, em gramas, faça um aplicativo que
determine o tempo necessário para que essa massa se torne menor que 0,05
gramas.

72. A prova final da disciplina "Introdução à Ciência da Computação" foi feita


para N turmas. Cada turma apresenta certa quantidade de alunos. Para cada
aluno tem-se a nota obtida na disciplina. Escreva um aplicativo que determine,
para cada turma:
a) o número de alunos com nota acima de 5,0;
b) a média obtida pela turma.

73. Um concurso vestibular apresentou três provas: português, matemática e


conhecimentos gerais. Considerando que N candidatos participaram do
concurso, escreva um aplicativo que forneça:
a)nome dos candidatos aprovados;
b) média da prova de português;

Rosicléia Frasson - rosicleiafrasson@gmail.com


69

c) o número de candidatos que obtiveram média maior que 4,5 e nota na prova
de conhecimentos gerais maior que 6,0;
d) o número de candidatos aprovados que obtiveram nota em matemática acima
de 5,0;
Considere que é aprovado no concurso o candidato que tiver média acima de 4,0
e nenhuma nota abaixo de 2,0.

74. Em uma eleição presidencial, há três candidatos, representados pelos


códigos “1”, “2” e “3”. O código “4” representa voto nulo e o código “5”
representa voto em branco. Escreva um aplicativo que leia o voto do eleitor e
calcule a quantidade de votos de cada candidato, bem como a quantidade de
votos nulos e em branco e a quantidade total de votos. Ao digitar a opção “0”, o
eleitor sai do programa e os valores são exibidos. Também é interessante exibir o
candidato vencedor ou, em caso de a quantidade de votos nulos ou em branco
ser maior que a metade do total de votos, a mensagem de eleição anulada.

75. Escreva um aplicativo que apresente ao usuário as opções: (a) Saldo; (b)
Depósito, (c) Saque e (x) Sair. O aplicativo deve repetir até que o usuário digite
“x”. O valor inicial do saldo é R$ 0,00. Se o usuário escolher a opção depósito,
deve digitar o valor do depósito e o saldo é incrementado. Caso o usuário
escolha a opção saque, deve digitar o valor e exibir mensagem e saldo
insuficiente (se não houver saldo) ou debitar o valor, alterando o saldo. Em
ambas as opções, o novo saldo é exibido.

76. Foi feita uma pesquisa de audiência de canal de TV em várias casas de uma
cidade, em um determinado dia. Para cada casa consultada foi fornecido o
número do canal (4, 5 e 12) e se estavam assistindo aquele canal. Também era
considerado se a televisão estivesse desligada. Faça um aplicativo que leia várias
pesquisas até que seja informado o canal negativo. Ao final mostre o percentual
de audiência de cada canal e também os desligados.

77. Faça um aplicativo que receba o nome da ação à ser comercializadana bolsa
de valores, seu preço de compra e preço de venda. O usuário irá informar os
dados até que o nome da ação seja igual a "N". Calcule e mostre: o lucro de cada
ação comercializada, a quantidade total de ações com lucro superior a R$
1.000,00, a quantidade total de ações com lucro inferior a R$ 200,00 e o lucro
total das ações.

78. Escreva um aplicativo que leia um conjunto de 15 fichas, cada umacontendo,


a altura e o código do sexo de uma pessoa(código = 1 se for masculino e 2se for
feminino), e calcule e imprima:
-a maior e a menor altura da turma;
-a média de altura das mulheres;
-a média de altura da turma.

79. Dado um país A, com 5000000 de habitantes e uma taxa de natalidade de 3%


ao ano, e um país B com 7000000 de habitantes e uma taxa de natalidade de 2%

Rosicléia Frasson - rosicleiafrasson@gmail.com


70

ao ano, escrever um aplicativo que seja capaz de calcular o tempo necessário


para que a população do país A ultrapasse a população do país B.

80. Criar um aplicativo em PORTUGOL que leia idade e sexo (0-masculino, 1-


feminino)de várias pessoas. Calcule e imprima a idade média,o total de pessoas
do sexo feminino com idade entre 30-45 inclusive e o número total de pessoas
do sexo masculino. O aplicativo termina quando se digita um número não
positivo (0 ou um número negativo) para a idade.

81. Escreva um aplicativo em PORTUGOL que receba a idade de várias pessoas e


pare a execução com a entrada de um número não positivo. O aplicativo deve
imprimir:
-O total de pessoas com menos de 21 anos;
-O total de pessoas com mais de 50 anos.

82. Criar um aplicativo que leia um conjunto de informações (nome,sexo, idade,


peso e altura) dos atletas que participaram de uma olimpíada, e informar:
-O atleta do sexo masculino mais alto;
-A atleta do sexo feminino mais pesada;
-A média de idade dos atletas.
Deverão ser lidos dados dos atletas até que seja digitado o nome @ para um
atleta.

83. Numa universidade cada aluno possui os seguintes dados:


-Renda pessoal;
-Renda familiar;
-Total gasto com alimentação;
-Total gasto com outras despesas;
Criar um aplicativo em PORTUGOL que imprima a porcentagem dos alunos que
gasta acima de R$ 200,00 com outras despesas, o número de alunos com renda
pessoal maior que renda familiar e a porcentagem gasta com alimentação e
outras despesas em relação às rendas pessoal e familiar. O aplicativo acaba
quando se digita 0 para a renda pessoal.

84. Uma empresa decidiu fazer um recrutamento para preencher algumas vagas.
Os candidatos são cadastrados por computador. Faça um aplicativo para:
ler o número do candidato, a idade, o sexo, a experiência profissional (S/N)
mostrar a idade média dos candidatos
mostrar o número total de candidatos
mostrar os candidatos maiores de idade e que tenham experiência no serviço.

85. Uma empresa decidiu fazer um levantamento em relação aos candidatos que
se apresentarem para preenchimento de vagas no seu quadro de funcionários.
Supondo que você seja o programador desta empresa, faça um programa que
leia para cada candidato a idade, o sexo (M ou F)e a experiência no serviço (S ou
N). Para encerrar a entrada de dados , digite -99 para a idade. Calcule e escreva:
percentual de candidatos do sexo feminino e masculino

Rosicléia Frasson - rosicleiafrasson@gmail.com


71

idade média dos homens que já tem experiência no serviço


percentual de homens com mais de 30 anos entre o total dos homens
número de mulheres com menos de 30 anos e que possuem experiência
idade da candidata mais jovem

86. Foi feita uma pesquisa de audiência de canal de TV em várias casas de uma
certa cidade, em um determinado dia. Para cada casa visitada foi fornecido o
número do canal (4, 5, 7 12) e o número de pessoas que estavam assistindo a ele
naquela casa. Se a televisão estivesse desligada, esta casa não entraria na
pesquisa. Faça um programa que:
leia um número indeterminado de dados, isto é, o número do canal e o número
de pessoas que estavam assistindo.
calcule e imprima a porcentagem de audiência em cada canal
para encerrar a entrada de dados, digite o número do canal zero.

87. Uma certa empresa fez uma pesquisa de mercado para saber se as pessoas
gostaram ou não de um produto lançado. Para isso forneceu p sexo do
entrevistado e sua resposta (sim ou não). Sabendo que foram entrevistadas 10
pessoas, faça um programa que calcule e imprima:
número de pessoas que responderam sim
número de pessoas que responderam não
número de mulheres que responderam sim
porcentagem de homens que responderam não entre todos os homens
analisados.

88. O ArenasClub organizou um jantar em que foi permitida a entrada de sócios e


não-sócios cobrando os seguintes valores para cada ingresso:
sócio: R$ 100,00
não-sócio: R$ 200,00
Criar um aplicativo que leia as informações sobre ingressos vendidos (tipo sócios
ou não-sócios) até que seja digitado -1 ou que todos os ingressos sejam
vendidos, sabendo que o clube tem capacidade para 300 pessoas.
O aplicativo deverá mostrar:
• a quantidade de ingressos vendidos para sócios e não-sócios
• o percentual de ingressos vendidos para sócios em relação ao total de
ingressos vendidos
• o valor em reais recebidos de sócios, não-sócios e o total arrecadado no baile.

89. Uma sala de aula do curso técnico em informática possui 28 alunos, dos quais
é conhecido: nome, cidade onde mora e idade. Faça um aplicativo que imprima:
a) a quantidade de alunos que residem em Criciúma.
b) a quantidade de alunos que residem em Içara.
c) a quantidade de alunos que residem em outras cidades
d) a quantidade de alunos que possuem idade inferior a 17 anos.
e) a quantidade de alunos que tem idade entre 14 e 16 anos.

90. Leia o salário de 20 funcionários e escreva:

Rosicléia Frasson - rosicleiafrasson@gmail.com


72

a) quantos funcionários recebem mais de R$ 2000,00


b) quanto a empresa gasta com os funcionários que ganham mais de R$ 2000,00
c) quanto a empresa gastaria se fosse dar um aumento de 7,5% aos funcionários
que recebem menos de R$2000,00

91. Uma Empresa de fornecimento de energia elétrica faz a leitura mensal dos
medidores de consumo. Para cada consumidor, são digitados os seguintes dados:
-Número do consumidor;
-Quantidade de kWh consumidos durante o mês;
-Tipo (código) do consumidor.
1 – residencial, preço em reais por kWh = 0,3
2 – comercial, preço em reais por kWh = 0,5
3 – industrial, preço em reais por kWh = 0,7
Os dados devem ser lidos até que seja encontrado um consumidor com Número
0(zero). Escreva um aplicativo que calcule e imprima:
-O custo total para cada consumidor;
-O total de consumo para os três tipos de consumidor;
-A média de consumo dos tipos 1 e 2.

Rosicléia Frasson - rosicleiafrasson@gmail.com


73

VETORES E MATRIZES

OBJETIVOS

 conhecer a aplicabilidade de arrays em Java;


 aplicar a sintaxe para declaração de arrays;
 acessar posições de um array;
 inserir dados em um array;
 excluir dados de um array

1. Arrays unidimensionais

Uma variável em Java corresponde a uma posição de memória, cujo


conteúdo pode ser alterado durante a execução do programa. Embora uma
variável possa assumir diversos valores, ela só pode armazenar um valor a cada
instante. Quando é necessário que mais de um valor do mesmo tipo seja
armazenado, utiliza-se uma estrutura chamada vetor.

Como o array pode guardar vários valores, em sua definição é


necessário definir o seu tamanho, ou seja, a quantidade máxima de valores que o
mesmo pode armazenar.
import javax.swing.JOptionPane;

public class ExemploArray {

public static void main(String[] args) {


//Declaração de um array contendo 10 posições
//onde podem ser armazenados dados do tipo
//String.
String [] nome = new String[10];

//Adicionando valores no array criado


for (int i = 0; i < 10; i++){
nome[i] = JOptionPane.showInputDialog(null,
"Informe um nome");
}
}
}

2. Arrays multidimensionais

A linguagem Java não oferece vetores multidimensionais, mas como


um vetor pode ser declarado e possuir qualquer tipo de base, é possível criar

Rosicléia Frasson - rosicleiafrasson@gmail.com


74

vetores de vetores para ter o mesmo efeito.


import javax.swing.JOptionPane;

//Preenche uma matriz 4x4 e mostra a mesma na tela


public class ExemploArray {

public static void main(String[] args) {


int [][] numeros = new int[4][4];

//Popular matriz
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
numeros[i][j] = Integer.parseInt
(JOptionPane.showInputDialog
("Informe um número: "));
}
}

String matriz = " ";


//Exibir matriz
for (int i = 0; i < 4; i++){
String linha = "\n";
for (int j = 0; j < 4; j++){
linha = linha + numeros[i][j] + "\t";
}
matriz = matriz + linha;

}
JOptionPane.showMessageDialog(null, matriz);
}
}

PARA FIXAR

1. Criar um vetor A com 5 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho e com os "mesmos" elementos do vetor A, ou seja, B[i] = A[i].

2. Criar um vetor A com 8 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho e com os elementos do vetor A multiplicados por 2, ou seja: B[i]
= A[i] * 2.

3. Criar um vetor A com 15 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho, sendo que cada elemento do vetor B deverá ser o quadrado do
respectivo elemento de A, ou seja: B[i] = A[i] * A[I].

4. Criar um vetor A com 15 elementos inteiros. Construir um vetor B de mesmo


tamanho, sendo que cada elemento do vetor B deverá ser a raiz quadrada do
respectivo elemento de A, ou seja: B[i] = sqrt(A[i]).

5. Criar um vetor A com 10 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho, sendo que cada elemento do vetor B deverá ser o respectivo
elemento de A multiplicado por sua posição (ou índice), ou seja: B[i] = A[i] * i.

Rosicléia Frasson - rosicleiafrasson@gmail.com


75

6. Criar dois vetores A e B cada um com 10 elementos inteiros. Construir um


vetor C, onde cada elemento de C é a soma dos respectivos elementos em A e B,
ou seja: C[i] = A[i] + B[i].

7. Criar dois vetores A e B cada um com 10 elementos inteiros. Construir um


vetor C, onde cada elemento de C é a subtração dos respectivos elementos em A
e B, ou seja: C[i] = A[i] – B[i].

8. Criar dois vetores A e B cada um com 10 elementos inteiros. Construir um


vetor C, onde cada elemento de C é a multiplicação dos respectivos elementos
em A e B, ou seja: C[i] = A[i] * B[i].

9. Criar dois vetores A e B cada um com 10 elementos inteiros. Construir um


vetor C, onde cada elemento de C é a divisão dos respectivos elementos em A e
B, ou seja: C[i] = A[i] / float(B[i]).

10. Criar um vetor A com 10 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho, sendo que cada elemento do vetor B deverá ser o resto da
divisão do respectivo elemento de A por 2 (dois), ou seja: B[i] := A[i] % 2.

11. Criar um vetor A com 10 elementos inteiros. Implementar um programa que


defina e escreva a quantidade de elementos armazenados neste vetor que são
pares.

12. Criar um vetor A com 10 elementos inteiros. Implementar um programa que


defina e escreva a soma de todos os elementos armazenados neste vetor.

13. Criar um vetor A com 10 elementos inteiros. Implementar um programa que


determine a soma dos elementos armazenados neste vetor que são múltiplos de
5.

14. Criar um vetor A com 10 elementos inteiros. Implementar um programa que


defina e escreva a média aritmética simples dos elementos ímpares
armazenados neste vetor.

15. Criar um vetor A com 10 elementos inteiros. Desenvolver um programa que


defina o percentual de elementos pares e ímpares, respectivamente,
armazenados neste vetor.

16. Criar um vetor A com 10 elementos inteiros. Escrever um programa que


calcule e escreva: a) a soma de elementos armazenados neste vetor que são
inferiores a 15; b) a quantidade de elementos armazenados no vetor que são
iguais a 15; e c) a média dos elementos armazenados no vetor que são
superiores a 15.

17. Ler um vetor A com 10 elementos inteiros correspondentes as idades de um


grupo de pessoas. Escreva um programa que determine e escreva a quantidade
de pessoas que possuem idade superior a 35 anos.

Rosicléia Frasson - rosicleiafrasson@gmail.com


76

18. Ler um vetor A com 10 elementos inteiros correspondentes as idades de um


grupo de pessoas. Escreva um programa que determine e escreva a menor e a
maior idades e suas respectivas posições.

19. Ler as duas notas bimestrais para um conjunto de 10 alunos. Armazenar as


notas informadas em dois vetores “Nota1” e “Nota2” do tipo real. Escreva um
programa que calcule a média aritmética simples das notas informadas
armazenando o resultado em um vetor “Result” de mesmo tipo e tamanho. Ao
mostrar os resultados exibir a situação de cada aluno. Se a média calculada for
superior ou igual a 7 o aluno estará “aprovado”, caso contrário, a situação do
aluno será “reprovado”.

20. Implementar um programa que obtenha a cotação do dólar (U$) em relação


ao real (R$) e a seguir armazene em vetor A com 20 elementos as seguintes
conversões: A[i] = cotação do dolar * i, para todo i variando de 1 até 20.

21. Gerar aleatoriamente um vetor A com 10 elementos inteiros e iguais a 0 e 1,


sugestão: A[i] = (int)Math.round(Math.random() * 1); Pede-se para implementar
um programa que determine o percentual de números 0's e 1's existentes no
vetor A.

22. Criar um vetor A com 10 elementos inteiros. Desenvolver um programa que


verifique se "todos" os elementos do vetor A são pares. Se pelo menos um
elemento do vetor não for par o processo de repetição para percorrer os
elementos do vetor deve ser encerrado, como sugestão: utilize uma variável do
tipo flag para atingir este propósito.

23. Números palíndromos são aqueles que escritos da direita para a esquerda
têm o mesmo valor quando escritos da esquerda para a direita. Exemplo: 545;
789987; 97379; 123454321; etc. Escreva um programa que verifique se um dado
vetor A de 10 elementos inteiros é um palíndromo, ou seja, se o primeiro
elemento do vetor e igual ao último, se o segundo elemento do vetor é igual ao
penúltimo e assim por diante até verificar todos os elementos ou chegar a
conclusão que o vetor não é um palíndromo.

24. Criar um vetor A com 10 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho, obedecendo as seguintes regras de formação: a) Bi deverá
receber 1 quando Ai for par; b) Bi deverá receber 0 quando Ai for ímpar.

25. Criar dois vetores A e B cada um com 10 elementos inteiros. Construir um


vetor C de mesmo tipo e tamanho, obedecendo as seguintes regras de formação:
a) Ci deverá receber 1 quando Ai for maior que Bi; b) Ci deverá receber 0 quando
Ai for igual a Bi; c) Ci deverá receber -1 quando Ai for menor que Bi.

26. Criar um vetor A com 10 elementos inteiros. Construir um vetor B de mesmo


tipo e tamanho, obedecendo as seguintes regras de formação: a) Bi deverá
receber 'a' quando Ai for menor que 7; b) Bi deverá receber 'b' quando Ai for
igual a 7; c) Bi deverá receber 'c' quando Ai for maior que 7 e menor que 10; d) Bi

Rosicléia Frasson - rosicleiafrasson@gmail.com


77

deverá receber 'd' quando Ai for igual a 10; e e) Bi deverá receber 'e' quando Ai
for maior que 10. Sugestão: char B[10];

27. Ler um vetor A com 10 elementos e construir um vetor B de mesmo tipo e


tamanho e com os mesmos elementos de A, sendo que estes deverão estar
invertidos, ou seja, o primeiro elemento de A passa a ser o último de B, o
segundo elemento de A passa a ser o penúltimo de B e assim por diante.

28. Ler dois vetores A e B com 10 elementos cada. Construir um vetor C, sendo
este a junção dos dois outros vetores. Os primeiros 10 elementos de C deverão
receber os elementos de A e os últimos elementos C deverão receber os
elementos de B. Desta forma, C deverá ter o dobro de elementos de A e B, ou
seja, 20 elementos.

29. Ler um vetor A com 20 elementos. Construir dois vetores B e C, sendo que
nos vetor B e C serão armazenados o valores pares e ímpares de A,
respectivamente.

30. Ler um vetor A com 20 elementos. Separar os elementos pares e ímpares de


A utilizando apenas um vetor extra B. Sugestão: no início do vetor B armazene os
elementos pares de A e nas posições restantes do vetor B armazene os
elementos de A que são ímpares.

31. Criar um vetor A com 5 elementos inteiros. Escreva um programa que


imprima a tabuada de cada um dos elementos do vetor A.

32. Criar um vetor A com 10 elementos inteiros. Escreva um programa que


imprima cada elemento do vetor A e uma mensagem indicando se o respectivo
elemento é um número primo ou não.

33. Criar um vetor A com 10 elementos inteiros. Escreva um programa que


imprima cada elemento do vetor A e a relação de todos os pares de 0 até o
respectivo elemento.

34. Criar um vetor A com 10 elementos inteiros. Escreva um programa que


imprima cada elemento do vetor A e a relação de todos os divisores do
respectivo elemento.

35. Criar um vetor A com 11 elementos, indexados de 0 até 10. Sendo que cada
elemento do vetor A é formado pela potência de base 2 elevado ao expoente
igual a posição do respectivo elemento, ou seja: A[i] = 2i. Sugestão int A[11];

36. Criar um vetor A com 15 elementos inteiros. Construir um vetor B de mesmo


tamanho, sendo que cada elemento do vetor B seja o fatorial do elemento
correspondente em A.

37. Ler um vetor A com 10 elementos. Construir um vetor B de mesmo tipo e


tamanho, sendo que cada elemento de B deverá ser o seguinte somatório: Bi =
Somatório de Aj, para todo j variando de i até 10.

Rosicléia Frasson - rosicleiafrasson@gmail.com


78

38. Criar dois vetores A e B cada um com 10 elementos inteiros. Desenvolver um


programa que realize a interseção dos vetores A e B para produzir um vetor C.
Interseção de conjuntos = todos os elementos que existem em A e também
existem em B.

39. Criar dois vetores A e B cada um com 10 elementos inteiros. Desenvolver um


programa que crie um vetor C que é a diferença dos conjuntos formados pelos
elementos dos vetores A e B. Diferença de conjuntos = todos os elementos do
conjunto A que não existem no conjunto B.

40. Ler 10 elementos inteiros em um vetor A. Montar uma rotina de busca, para
pesquisar se um dado elemento X está armazenado em A.

41. Ler 10 elementos inteiros em um vetor A e colocá-los em ordem crescente e


apresentar os elementos ordenados.

42. Declarar, alimentar e exibir os elementos de uma matriz 2x4, ou seja, 2 linhas
por 4 colunas.

43. Declarar, alimentar e exibir os elementos de uma matriz quadrada de ordem


3, ou seja, 3 linhas por 3 colunas.

44. Ler uma matriz quadrada de ordem 3 e a seguir escrever a localização (linha e
a coluna) do maior valor.

45. Ler uma matriz quadrada de ordem 3 e a seguir realizar a rotina de busca
para verificar se um dado elemento X está armazenado na matriz. Escrever a
localização (linha e coluna) se o elemento for encontrado na matriz ou a
mensagem de “não encontrado” caso contrário.

46. Ler uma matriz quadrada de ordem 3 e a seguir deverão ser trocados entre si
os valores da 1ª linha pelos respectivos valores da 3ª linha escrevendo ao final a
matriz resultante.

47. Ler uma matriz quadrada de ordem 3 e a seguir contar quantos elementos da
matriz são iguais a zero apresentando este resultado.

48.Ler uma matriz quadrada de ordem 3 e a seguir realizar a soma de cada linha
e a soma de todos os elementos apresentando estes resultados.

49. Ler uma matriz quadrada de ordem 3 e a seguir realizar a soma dos
elementos da diagonal principal e da diagonal secundária apresentando estes
resultados.

50. Ler uma matriz A quadrada de ordem 3 e a seguir criar a sua matriz oposta.
Para implementar a matriz oposta basta tornar os elementos da matriz em seus
opostos, ou seja, fazer Ai,j igual a -Ai,j.

51. Ler uma matriz A quadrada de ordem 3 e a seguir verificar se a matriz

Rosicléia Frasson - rosicleiafrasson@gmail.com


79

informada é nula. Recebe o nome de matriz nula toda matriz que


independentemente do número de linhas e colunas todos os seus elementos são
iguais a zero.

52. Ler uma matriz A quadrada de ordem 3 e a seguir verificar se a matriz


informada é uma matriz diagonal. Será uma matriz diagonal, toda matriz
quadrada que os elementos que não pertencem à diagonal principal sejam iguais
a zero. Sendo que os elementos da diagonal principal podem ser iguais a zero ou
não.

53. Ler uma matriz A quadrada de ordem 3 e a seguir verificar se a matriz


informada é uma matriz identidade. Para que uma matriz seja matriz identidade
ela tem que ser quadrada e os elementos que pertencerem à diagonal principal
devem ser iguais a 1 e o restante dos elementos iguais a zero. Obs. A matriz
identidade também é chamada de matriz unidade.

54. Ler uma matriz A quadrada de ordem 4 e a seguir verificar se a sua matriz
informada é uma matriz simétrica. Uma matriz é simétrica se for quadrada e
todos os elementos situados em posições "simétricas" relativamente à diagonal
principal forem iguais entre si.

55. Ler uma matriz quadrada de ordem 4 e a seguir verificar se a matriz


informada é uma matriz triangular inferior. Na matriz triangular inferior todos os
elementos acima da diagonal principal são iguais a zero: para todo i < j, Ai,j == 0.

56. Ler uma matriz quadrada de ordem 4 e a seguir verificar se a matriz


informada é uma matriz triangular superior. Na matriz triangular superior todos
os elementos abaixo da diagonal principal são iguais a zero: para todo i > j, Ai,j ==
0.

57. Ler uma matriz quadrada de ordem 4 e a seguir transformá-la em uma matriz
triangular inferior, atribuindo zero a todos os elementos acima da diagonal
principal, escrevendo-a no final.

58. Ler uma matriz quadrada de ordem 4 e a seguir transformá-la em uma matriz
triangular superior, atribuindo zero a todos os elementos abaixo da diagonal
principal, escrevendo-a no final.

59. Ler uma matriz A quadrada de ordem 3 e a seguir criar a sua matriz
transposta. Chama-se transposta de A e indica-se por At a matriz que se obtém
trocando-se ordenadamente as linhas pelas colunas de A.

60. Ler duas matrizes A e B quadradas de ordem 3 e construir uma matriz C de


mesma ordem, onde cada elemento de C é a soma dos respectivos elementos de
A e B, ou seja: Ci,j = Ai,j + Bi,j.

61. Ler duas matrizes A e B quadradas de ordem 3 e realizar o produto destas


matrizes. O produto AB da matriz A pela matriz B, apenas está definido se o
número de colunas de A for igual ao número de linhas de B. Cada elemento de

Rosicléia Frasson - rosicleiafrasson@gmail.com


80

AB é definido através do somatório do produto dos elementos da i-esima linha


da matriz A com os respetivos elementos da j-esima coluna da matriz B.

Rosicléia Frasson - rosicleiafrasson@gmail.com


81

FUNÇÕES E PROCEDIMENTOS

OBJETIVOS

 Compreender a importância do uso de procedimentos e funções;


 Conhecer a sintaxe de declaração e chamada de um procedimento;
 Conhecer a sintaxe de declaração e chamada de uma função.

As funções e os procedimentos são utilizados para evitar que os


blocos do programa fiquem grandes demais e mais difíceis de ler e entender.
Também é possível reaproveitar códigos construídos anteriormente. Evitam
repetição de trechos de códigos, minimizando erros e facilitando as alterações.

1. Procedimentos

São estruturas que agrupam um conjunto de comandos, que são executados


quando o procedimento é chamado. Um procedimento não retorna nenhum
valor, por este motivo ele é chamado de sem retorno ou void.

Indica que nenhum valor será retornado.

Indica o tipo e o valor que é esperado para ser manipulado pelo


procedimento.

import javax.swing.JOptionPane;

public class ExemploProcedimento {

public static void main(String[] args) {


int num;
num = Integer.parseInt(JOptionPane.showInputDialog
("Informe um número: "));
//Invoca o método
imprimeDobro(num);

Rosicléia Frasson - rosicleiafrasson@gmail.com


82

//Corpo do método
public static void imprimeDobro (int a){
JOptionPane.showMessageDialog(null,a * 2 );
}
}

2. Funções

São procedimentos que retornam um valor ao seu término.

Toda função deve ter um tipo (String, int, float, double), o qual indicará o
tipo de seu valor de retorno.

Os argumentos (ou parâmetros) indicam


o tipo e quais valores são esperados
para serem manipulados pela função.

public class ExemploFuncao {

public static void main(String[] args) {

int num1 = Integer.parseInt(JOptionPane.showInputDialog


("Informe o primeiro número: "));
int num2 = Integer.parseInt(JOptionPane.showInputDialog
("Informe o segundo número: "));

//Comando responsável por chamar a função


int resultado = soma(num1, num2);

JOptionPane.showMessageDialog(null, resultado);
}

//Corpo da função
static int soma (int a, int b) {
int c;
c = a + b;
return c;
}
}

Rosicléia Frasson - rosicleiafrasson@gmail.com


83

PARA FIXAR

1. Desenvolver uma estrutura modular com um procedimento que recebe


através de parâmetro um número inteiro e apresenta a tabuada deste número.

2. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um número inteiro e retorna o valor absoluto (positivo) deste
número.

3. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um número inteiro e retorna um valor booleano indicando se o
número é par ou não.

4. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro dois números inteiros e retorna um valor booleano indicando se o
primeiro número é múltiplo do segundo.

5. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um número inteiro e retorna um valor booleano indicando se o
número corresponde a um ano bissexto. Um ano é bissexto quando for divisível
por 4 e não for divisível por 100. Também são bissextos os divisíveis por 400.

6. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um número inteiro que corresponde a um mês do ano e retorna com
o nome desse mês. Por exemplo, se o mês enviado for 1 a função deverá retorna
janeiro, se o mês enviado for 2 a função deverá retornar fevereiro e assim por
diante.

7. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um número inteiro e retorna o fatorial deste número.

8. A série de Fibonacci é formada pela sequência: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um número indicando a posição do termo e retorna o valor
correspondente na sequência de Fibonacci.

9. Desenvolver uma estrutura modular com uma função que calcula e retorna o
Gasto Energético Basal (GEB), utilizando as seguintes fórmulas:
. para os homens: GEB = 66.47 + (13.75 * PC) + (5 * Alt) – (6.76 * I);
. para as mulheres: GEB = 655.1 + (9.56 * PC) + (1.85 * Alt) – (4.67 * I);
Onde: PC- Peso Corporal em “kg”; Alt- altura em “cm” e I- Idade. Obs. No corpo
do programa principal deve-se obter os dados de entrada: sexo, peso corporal,
altura e idade e a função deverá receber estes dados através de parâmetros

Rosicléia Frasson - rosicleiafrasson@gmail.com


84

retornando o gasto energético basal calculado.

10. Desenvolver uma estrutura modular com uma função que calcula e retorna o
peso ideal, utilizando as seguintes fórmulas:
. para homens: (72.7 * Alt) - 58;
. para mulheres: (62.1 * Alt) - 44.7.
Obs. No corpo do programa principal deve-se obter os dados de entrada: sexo e
altura (em metros).

11. Desenvolver uma estrutura modular com uma função que calcula e retorna a
conversão de graus Fahrenheit(F) para Centígrados(C) através da fórmula
C=5/9(F-32).

12. Desenvolver uma estrutura modular com uma função que calcula e retorna a
multiplicação de dois números enviados por parâmetro através de somas
sucessivas, ou seja, para fazer A X B basta somar o valor do parâmetro A, B vezes.

13. Desenvolver uma estrutura modular com uma função que determina e
retorna a potência de um número. A função deverá receber através de
parâmetro a base e o expoente da potência, com um número positivo, e sem
utilizar funções prontas do Pascal deverá realizar o cálculo através de um
processo de repetição. Por exemplo, para os valores 2 para a base e 5 para o
expoente a função deverá retornar 32 fazendo, 25 = 2 X 2 X 2 X 2 X 2 = 32.

14. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um caractere e retorna verdadeiro se este caractere for um caractere
alfabético.

15. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um caractere e retorna verdadeiro se este caractere for um caractere
alfabético maiúsculo.

16. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um caractere e retorna verdadeiro se este caractere for um caractere
alfabético minúsculo.

17. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um caractere e retorna verdadeiro se este caractere for um dígito.

18. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um caractere e retorna o correspondente caractere maiúsculo.

19. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um caractere e retorna o correspondente caractere minúsculo.

Rosicléia Frasson - rosicleiafrasson@gmail.com


85

20. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro uma frase e retorna a frase com as letras convertidas para
maiúsculas.

21. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro uma frase e retorna a frase com as letras convertidas para
minúsculas.

22. Desenvolver uma estrutura modular com uma função que recebe através de
parâmetro um nome e retorna o sobrenome deste nome. Por exemplo para o
nome: Omero Francisco Bertol, a função deverá retornar: Bertol.

23. Desenvolva uma estrutura modular com uma função que recebe através de
parâmetro uma cadeia de caracteres e retorna verdadeiro ou falso indicando se a
cadeia representa uma sequência binária.

24. Desenvolva uma estrutura modular com uma função que recebe através de
parâmetro uma palavra e retorna verdadeiro ou falso e se a palavra da
representa um palíndromo.

25. Desenvolva uma estrutura modular com uma função que recebe através de
parâmetro uma cadeia de caracteres e retorna verdadeiro se “todos” os
caracteres alfabéticos da cadeia são maiúsculos e falso caso contrário.

26. Desenvolva uma estrutura modular com uma função que recebe através de
parâmetro uma cadeia de caracteres e retorna verdadeiro se “todos” os
caracteres alfabéticos da cadeia são minúsculos e falso caso contrário.

27. Desenvolva uma função que recebe através de parâmetros, duas cadeias de
caracteres e retorna verdadeiro se as cadeias são iguais e falso caso contrário.
Obs. fazer comparações “caractere por caractere” até definir o valor de retorno.

28. Desenvolva uma estrutura modular com uma função que recebe através de
parâmetro a cadeia de caracteres e retorna:
. -1, se existir na cadeia pelo menos um caractere que não seja um caractere
numérico e alfabético.
. 0, se a quantidade de caracteres numéricos da cadeia for maior ou igual a
quantidade de caracteres alfabéticos.
. 1, se a quantidade de caracteres alfabéticos da cadeia for maior que quantidade
de caracteres numéricos.

29. Desenvolva uma estrutura modular com uma função que recebe através de
parâmetro um número inteiro positivo e retorna a quantidade de dígitos deste

Rosicléia Frasson - rosicleiafrasson@gmail.com


86

número.

30. Desenvolva uma estrutura modular que imprima todos os número primos
compreendidos entre 10 e 100. Implemente uma função que verifica se um dado
número é primo ou não.

31. Número perfeito é aquele cuja soma de seus divisores, exceto ele próprio, é
igual ao número. Exemplo: 6 é perfeito porque 1 + 2 + 3 = 6. Desenvolva uma
estrutura modular que imprima todos os número perfeitos compreendidos entre
1 e 500.

32. Números palíndromos são aqueles que escritos da direita para a esquerda
têm o mesmo valor quando escritos da esquerda para a direita. Exemplo: 545;
97379; 123454321; etc. Escreva uma função que, recebendo como parâmetro
um número inteiro, retorne este número escrito ao contrário. A seguir,
implementar uma estrutura modular que determine e escreva, usando a função
implementada, todos os números palíndromos entre 1000 e 10000.

33. O número 3025 possui a seguinte característica:


a) 30 + 25 = 55
b) 55 * 55 = 3025
Desenvolva uma estrutura modular que verifica, através de uma função, e
imprima todos os números de quatro algarismos (de 1000 até 9999) que
apresentam tal característica.

34. Desenvolva uma estrutura modular com as funções que:


. calcula e retorna o Índice de Massa Corpórea (IMC) através da seguinte
fórmula:
IMC = PC / (Alt * Alt); onde: PC - Peso Corporal em kg e Alt- altura em metros.
. recebe através de parâmetro o índice de massa corpórea e retorna a
interpretação conforme a tabela a seguir:
IMC Interpretação
Menos de 20 Magro
20 – 24 Normal
25 – 29 Acima do peso
30 – 34 Obeso
Acima de 34 Muito Obeso

35. Escrever uma função que faz criptografia por substituição, ou seja, pega um
texto legível e transforma em texto cifrado, substituindo os caracteres originais
por caracteres que estão "n" posições na frente. Este processo também é
conhecido como “Cifra de César”.

Rosicléia Frasson - rosicleiafrasson@gmail.com


87

36. Desenvolva uma estrutura modular com a função recursiva para calcular e
retornar o fatorial de um número.

37. Desenvolva uma estrutura modular com a função recursiva para determinar e
retornar o n-ésimo termo da sequência de Fibonacci.

Rosicléia Frasson - rosicleiafrasson@gmail.com


88

PROGRAMAÇÃO ORIENTADA A OBJETOS

OBJETIVOS

 diferenciar programação estruturada de programação orientada a


objetos;
 entender os princípios da POO;
 distinguir objetos de classes;
 definir atributos e métodos;
 compreender o que são instâncias de classes;
 construir construtores;
 organizar classes e pacotes.

1. Programação estruturada X programação orientada à objetos

Diferença entre programação estruturada e programação orientada a objetos


Fonte: http://www.webfinal.com.br/blog/wp-content/uploads/2010/07/sextanet2.png

A programação estruturada é baseada em funções e dados. Os


procedimentos inseridos em blocos estruturados comunicam-se com outros
procedimentos por meio da passagem de dados.

A programação orientada a objetos simula o mundo real dentro do


computador. Nela, os problemas são resolvidos com a criação e interação de
diferentes objetos. Os objetos comunicam-se através de mensagens.

Rosicléia Frasson - rosicleiafrasson@gmail.com


89

2. Princípios da programação orientada a objetos

A programação orientada a objetos foi criada com o intuito de


aproximar o mundo real do virtual. Para isso, um programa é visto como um
conjunto de objetos que executam tarefas específicas e se comunicam através de
mensagens em busca de um objetivo comum.

De uma maneira geral, os objetos são compostos por dados e


instruções para processar estes dados.

Na POO, o desenvolvedor é responsável por moldar os objetos e


explicar para os mesmos como será feita a comunicação. Esses moldes de
objetos são chamados de classes.

A programação orientada a objetos está sedimentada em quatro


pilares: encapsulamento, herança, composição e polimorfismo.

Figura 31: Pilares da orientação a objetos


Fonte: BEZERRA, Adriano. Programação orientada a objetos. Disponível em:
<http://www.metropoledigital.ufrn.br/aulas/disciplinas/poo/aula_01.html> Acesso em 15 jan 2013.

Benefícios da programação orientada a objetos:

 Modularidade: um objeto criado pode ser passado por todo o sistema;


 Encapsulamento: os detalhes da implementação ficam ocultos, quem usa
determinado objeto não precisa saber como seus métodos estão
implementados;
 Reuso: após a implementação o objeto pode ser usado em todo o
programas e até mesmo em outros programas.
 Manutenibilidade: a manutenção é realizada somente dentro do objeto
que deve ser alterado, não influenciando nas demais partes do código.

Rosicléia Frasson - rosicleiafrasson@gmail.com


90

3. Objetos

Objeto é qualquer entidade do mundo real que possui atributos e


comportamentos, como por exemplo, casa, carro, escola, computador, cachorro.

Todo objeto possui características próprias, que são comumente


chamadas de atributos. Os atributos são o que diferem dois objetos
semelhantes. Tomando como exemplo o cachorro, o que diferencia dois deles éa
raça, o peso, a cor do pelo, o peso, ou seja, os atributos que eles possuem.

Além de possuírem atributos, os objetos também possuem


comportamentos. Os comportamentos geralmente são verbos e representam as
ações que o objeto pode realizar. Um objeto cachorro, por exemplo, pode
comer, correr e latir.

A figura 34 ilustra três diferentes objetos do tipo cachorro: Bob,


Scooby e Rex. Os cachorros ilustrados possuem os métodos andar, falar, comer,
pegar osso e dormir.

Figura 32: Exemplos de objetos.


Fonte: PALMEIRA, Thiago Vinícius Varallo. Introdução a programação orientada a objetos em Java. Disponível em:
<http://www.devmedia.com.br/introducao-a-programacao-orientada-a-objetos-em-java/26452>. Acesso em 15 jan.
2013.

Rosicléia Frasson - rosicleiafrasson@gmail.com


91

4. Classes

Uma classe em Java é a especificação para a criação de um objeto.


Uma classe descreve as propriedades e funcionalidades que um objeto terá.
Desta forma, os atributos e métodos que os objetos têm são declarados na
classe.

A figura 34 mostra a representação de uma classe pela UML e pelo


código Java.

public class Carro {

String placa;
String corLataria;
String corParachoque;
String aro;

Figura 33: Representação de uma classe public void trocarMarcha(){


Fonte: Elaboração da autora }

public void ligar(){


}

public void acelerar(){


}
}

A figura 34 especifica um novo tipo, Carro. Na especificação (classe)


foi definido que um objeto do tipo Carro deve conter necessariamente os
atributos placa, cor da lataria, cor do para-choque e aro.

Em Java, uma classe é definida utilizando a palavra chave class. Após


a palavra chave class, deve seguir o nome da classe, que deve ser um
identificador válido. A definição da classe pode conter também um modificador.
No exemplo acima, foi utilizado o modificador public. Outros modificadores
usados na definição de classes são o abstract e o final.

Rosicléia Frasson - rosicleiafrasson@gmail.com


92

Após a declaração da classe aparecem os atributos e os métodos que


serão detalhados a seguir.

5. Atributos

Os atributos são as características de um objeto.

A declaração de um atributo deve conter necessariamente um tipo e


um nome. O tipo pode ser um dos tipos primitivos Java ou o nome de uma
classe. O nome dever ser um identificador válido da linguagem Java.

Um atributo pode conter um modificador de acesso, que será


descrito mais adiante e pode ser inicializado no ato de sua construção.

Palavra Nome da classe escolhido


obrigatória para pelo programador. Por
indicar a criação padrão, utiliza-se sempre a
Modificador de uma classe. primeira letra em maiúscula.
de acesso

public class Carro {

tipo String placa; nome

String corLataria;
String corParachoque;
String aro;
Conjunto de características dos objetos da
Classe Carro

6. Métodos

Métodos são as ações realizadas pelos objetos. Eles podem

Rosicléia Frasson - rosicleiafrasson@gmail.com


93

manipular atributos de objetos para os quais os métodos foram definidos. Os


métodos também podem definir e manipular variáveis locais.

Cada método é especificado por uma assinatura. A assinatura de um


método é composta pelo modificador (não obrigatório), tipo de retorno e o
nome do método que deve ser um identificador válido. Os métodos também
podem receber parâmetros por valor através da lista de argumentos.

Os métodos podem ter retorno ou não. Para métodos sem retorno


usa-se a palavra chave void. Para os métodos com retorno, usa-se o tipo de
retorno, que pode ser um valor primitivo ou uma classe Java.

O fato de um método possuir retorno ou não, altera o encerramento


da execução. Quando um método não tem valor de retorno, a execução é
encerrada quando o bloco do corpo do método chega ao final. Já quando o
método possui valor de retornoa execução é encerrada através do comando
return.

Os métodos podem receber argumentos representados por uma lista


de parâmetros separados por vírgula, onde para cada parâmetro é indicado o
tipo e o nome.
Método sem retorno e sem
parâmetros
public void trocarMarcha(){

}
Método com retorno do tipo boolean, sem
public boolean estaLigado (){ parâmetros. O uso da palavra-chave return é
returntrue;
obrigatório em métodos com retorno.
}

public void frear (int intensidade){


Método sem retorno e com parâmetro.
}
Este método necessita da informação
da intensidade da velocidade para ser
executado.

6.1. O método main

O método main é utilizado pela JVM para inicializar a execução do


programa.Segundo RICARTE (2001):

O método main é um método associado a classe e não a um objeto


específico da classe – assim ele é definido como método estático.
Adicionalmente, deve ser um método público para permitir sua

Rosicléia Frasson - rosicleiafrasson@gmail.com


94

execução a partir da máquina virtual Java. Não tem valor de retorno,


mas recebe como argumentoum arranjo de strings que corresponde
aos parâmetros que podem ser passados para a aplicação a partir da
linha de comando.

7. Instâncias de classes

Uma classe é a especificação de um objeto. Porém para ser criado,


um objeto precisa ser instanciado. Quando um objeto é criado, ele adquire
espaço em memória para armazenar seu estado e um conjunto de operações
podem ser aplicadas ao mesmo.

Abaixo, segue exemplo com a criação de um objeto carro.

Declaração da
variável c1 do Cria um objeto na
tipo Carro. memória

public class Principal {

public static void main(String[] args) {

Carro c1 = new Carro();

c1.aro = "18";
c1.corLataria = "prata";
c1.corParachoque = "prata";
c1.placa = "MHZ 1521";
}
} Definindo valores para os atributos
do Carro criado c1.

8. Construtores

A função do construtor é iniciar a construção de um objeto. O mesmo


é invocado toda vez que a palavra new é utilizada.

O construtor possui o mesmo nome da classe e não tem nenhum tipo

Rosicléia Frasson - rosicleiafrasson@gmail.com


95

de retorno. Ele pode conter parâmetros.

Toda classe deve ter um construtor definido. Se o construtor não


estiver explicitamente declarado, o compilador cria um construtor default, ou
seja, um construtor sem parâmetros e o corpo vazio.

No momento em que o programador cria um construtor, o


construtor default deixa de ser criado automaticamente. Portanto, é necessário
declarar o construtor default, se a utilização domesmo for necessária.

Podem ser declarados diversos construtores em uma mesma classe,


desde que a assinatura dos mesmos forem diferentes, ou seja, vários
construtores com argumentos diferentes.

public class Carro { A - Construtor sem corpo e sem


parâmetros.Quando um construtor
não é declarado explicitamente, o
String placa; compilador cria um construtor
String corLataria; similar a este.
String corParachoque;
String aro; B - Construtor contendo os parâmetros
placa e cor da lataria. Ao usar este
public Carro (){ construtor, no momento da criação do
objeto devem ser informados a placa e
a cor da lataria do objeto criado.
}

public Carro (String placa, String corLataria){


this.placa = placa;
this.corLataria = corLataria;
}

public Carro (String aro){ C - Construtor com o


parâmetro aro. No momento
this.aro = aro;
da construção deve ser
corParachoque = "preto"; informado, o aro do objeto. No
} corpo do método também é
inicializado o atributo cor do
parachoque. Os objetos
A palavra this é usada para
criados utilizando este
referenciar métodos ou
construtor, são inicializados
atributos do objeto que está
com a cor do parachoque
sendo usado.
preto.
Rosicléia Frasson - rosicleiafrasson@gmail.com
96

public class Principal {

public static void main(String[] args) {


Objeto criado usando o
construtor A.
Carro c1 = newCarro();

Carro c2 = newCarro("JLM 2343", "vermelho");


Objeto criado
Carro c3 = newCarro("16"); usando o
Objeto criado usando o construtor B.
} construtor C.
}

9. Pacotes

Os pacotes servem para organizar as classes de acordo com suas


funcionalidades. Um pacote é um diretório onde está armazenada uma ou mais
classes.A palavra chave package define em qual pacote se encontra a classe.

Para utilizar classes de um pacote é usada a palavra chave import.A


utilização do import só é necessária, caso a classes que está utilizando as
funcionalidades da outra classe esteja em pacote diferente.

O pacote java.lang é automaticamente importado pelo Java. É o


único pacote que contém esta característica.

As principais classes que fazem parte deste pacote são: Math, Object,
String, System.

Rosicléia Frasson - rosicleiafrasson@gmail.com


97

package br.com.senai.exemplo.pacote;

public class Pac { Definição do pacote em que a


classe se encontra.
}

import br.com.senai.exemplo.pacote.Pacote;
Importação do
public class TestePacote {
pacote para o uso da
classe Pac
Pac p1 = new Pac();

PARA FIXAR

1. O que é uma classe e para que serve?

2. Escreva um modelo para representar um livro que está à venda em uma


livraria. Que dados devem ser representados por este modelo?

3. Escreva uma classe “EntradaDeCinema” com a seguinte estrutura (dados):


 Data dataDoFilme
 float horário
 int sala
 float valor
E com as seguintes ações (métodos):
Construtor: com a finalidade de inicializar todos os atributos.
CalculaDesconto: que deve receber como parâmetro a data de nascimento do
cliente (do tipo Data) e caso seja menor de 12 anos, deve ser dado um desconto
de 50% no valor normal.
CalculaDesconto: que deve receber como parâmetro a data de nascimento do
cliente (do tipo Data) e o número de sua carteira de estudante (do tipo int). Se o
estudante tiver idade entre 12 e 15 anos, deve ser dado um desconto de 40%, de
16 a 20 um desconto de 30% e mais que 20 anos um desconto de 20% no valor
normal.

Rosicléia Frasson - rosicleiafrasson@gmail.com


98

CalculaDescontoHorário: esse método deve dar um desconto de 10% sobre o


valor aferido após todas as outras opções de desconto, caso o horário do filme
seja antes das 16 horas.
toString(): que deve imprimir todos os dados do ingresso.
Desenvolva uma aplicação que leia os dados necessários para instanciar e
imprimir o ingresso para clientes normais, menores de 12 anos e estudantes.

Rosicléia Frasson - rosicleiafrasson@gmail.com


99

ENCAPSULAMENTO

OBJETIVOS

 entender o conceito de encapsulamento;


 conhecer os modificadores de acesso;
 utilizar os métodos getter e setter.

1. Encapsulamento

O encapsulamento isola as partes do programa. Apenas o mínimo


necessário deve ser revelado. Deve ser suficiente conhecer a especificação do
método, sem saber como a funcionalidade que ele executa foi implementada.

O encapsulamento torna possível a idéia de abstração da


programação orientada a objetos.

A orientação a objetos recomenda que os objetos devem ser


manipulados somente através dos métodos públicos do objeto, dos quais apenas
a assinatura deve ser revelada. Os atributos não devem ser revelados
externamente, exceto em caso de serem constantes.

2. Modificadores de acesso

Para tornar possível o encapsulamento, se faz necessário, o uso dos


modificadores de acesso. Em Java, os principais modificadores de acesso são:

 public: membro acessível a qualquer objeto;


 protected: membro acessível as subclasses e aos objetos do mesmo
pacote;
 default: quando não for definido nenhum modificar o membro fica
acessível apenas as classes do mesmo pacote;
 private: não pode ser acessado por nenhum outro objeto.

Normalmente na constituição das classes, os métodos são públicos e


os atributos são privados.

Rosicléia Frasson - rosicleiafrasson@gmail.com


100

public class Carro {

String placa;
String corLataria;
String corParachoque;

String aro; //modificador default: acesso


somente as classes do mesmo pacote

public double velocidade; //modificador


público: acesso a todas as classes

protected int ano; //modificador protegido:


acesso as classes do mesmo pacote
// e as subclasses

private String marca; //modificador privado:


nenhum acesso externo é permitido.

3. Gets e sets

Quando é usado o modificador de acesso private em um atributo,


não é possível acessá-lo em outra classe. Para alterar ou recuperar o valor do
mesmo, é necessário escrever dois métodos de acesso, um que retorna o valor e
outro que muda o valor.

A convenção para estes métodos é colocar a palavra get ou set antes


do nome do produto.

O método set é usado para modificar algum atributo. Os métodos


sets não retornam nenhum valor, portanto são métodos void. Porém, eles
devem receber obrigatoriamente um argumento, que será o valor atribuído ao
campo.

O método get é usado para retornar algum atributo. Os métodos


gets obrigatoriamente possuem retorno de valor. Porém, eles não possuem
nenhum argumento.

Rosicléia Frasson - rosicleiafrasson@gmail.com


101

public class Carro {


Método que atribui um
valor para a variável
private String placa; placa. Na chamada do
private String corLataria; método é indicado o valor
private String corParachoque; que a placa terá.
private String aro;

public void setPlaca (String placa){


this.placa = placa;
}
Método que retorna o
public String getPlaca (){ valor de um atributo.
returnthis.placa; Nesse caso, o método
} deve retornar uma
string.

public class Principal {

public static void main(String[] args) {

Carro c1 = newCarro();

c1.setPlaca("TRW 2345");

System.out.println(c1.getPlaca());

}
}

PARA SABER MAIS

 Como não aprender Java e orientação a objetos: getters e


setters. Disponível em:<http://blog.caelum.com.br/nao-
aprender-oo-getters-e-setters />

Rosicléia Frasson - rosicleiafrasson@gmail.com


102

4. Sobrecarga de métodos

Métodos sobrecarregados são métodos com o mesmo nome, porém


com assinaturas diferentes.

O compilador, a partir da análise dos tipos de argumentos dos


métodos determina qual o método deve ser executado.

5. Agregação e composição

A agregação é uma relação entre os objetos em que um objeto


contém uma lista de outros objetos. Na agregação, os objetos contidos podem
existir fora do contexto do objeto que os contém. Por exemplo, pneu e carro.
Um pneu existe sem o carro.

Composição é o mecanismo que permite o uso de uma ou várias


classes para compor uma outra classe.Na composição, os objetos contidos não
fazem sentido fora do contexto do objeto que os contém. Por exemplo, pedido e
item. Um item não existe fora do pedido.

PARA FIXAR
O exercício 1 foi retirado do curso Java Starter e deve respeitar o uso do
encapsulamento. Disponível em:
<http://www.t2ti.com/curso/video/java/basico/java_starter.php>

1. De acordo com os conceitos apresentados:


a) Implemente uma classe Pessoa com os seguintes atributos: nome, idade e cpf;
b) Utilizando a classe implementada na letra a, crie um programa que instancie 2
pessoas com todos os atributos e imprima os valores;
c) Implemente uma classe que represente uma sala de aula, esta sala pode ter o
máximo de 10 alunos, se extrapolar este limite deve ser impressa uma
mensagem avisando que o número máximo de alunos foi atingido;
d) Implemente uma classe de Endereço com os seguintes atributos: estado,
cidade, rua, cep e telefone;
e) Adicione a classe Pessoa um atributo de endereço utilizando a classe
desenvolvida no ítem d;
f) Implemente um método construtor para a classe Pessoa de forma que uma
instância desta classe seja criada apenas se possui nome, idade e cpf;
g) Implemente uma classe que simule um cadastro de pessoal. Esta classe deve
armazenar até 100 pessoas (utilize a classe Pessoa) com seus respectivos
endereços. Essa classe deve ter os seguintes comportamentos: permitir o
cadastramento e exclusão de pessoas do cadastro;

Rosicléia Frasson - rosicleiafrasson@gmail.com


103

2. Escreva uma classe que represente um pais. Um pais tem como atributos o seu
nome e a sua dimensão em Km2 e uma lista de países com os quais ele faz
fronteira. Represente a classe e forneça os seus membros a seguir:
a) Construtor que inicialize o nome e a dimensão do país;
b) Métodos de acesso (get) para a propriedade dimensão do país;
c) Um método que permita verificar se dois países são iguais. Dois países são
iguais se tiverem o mesmo nome e a mesma capital. A assinatura deste método
deve ser:public boolean equals(Pais outro);
d) Um método que informe se um outro país é seu limítrofe (faz fronteira);
e) Um método que receba um outro país como parâmetro e retorne uma lista de
vizinhos comuns aos dois países.
Obs: Considere que um país tem no máximo 40 outros países com os quais faz
fronteira.
f) Escreva uma classe continente. Um continente possui um nome e um conjunto
de países, que dele fazem parte. Desenvolva um método que forneça a dimensão
total do continente.

3. Um avião é representado pelo seu prefixo, pelo nome do seu modelo, pelo
nome do seu fabricante, pela quantidade de assentos e pela quantidade de
assentos ocupados.
Escreva uma classe que represente um avião e desenvolva um método que
informe qual o prefixo da aeronave.
Um aeroporto é representado pelo seu código e seu nome (ex.: SSA: Salvador,
BSB: Brasília. etc), por um status que informa se ele é um aeroporto
internacional ou não, uma lista de outros aeroportos para os quais partam vôos
diretos à partir dele e uma lista de outros aeroportos de onde venham vôos para
ele. Além disto possui uma lista de aviões que estão atualmente no pátio.
Escreva uma classe que contemple os atributos apresentados e mais os seguintes
membros:
a) Um construtor que inicialize o código do aeroporto e seu nome.
b) Métodos que verifiquem e alterem a situação relativa ao fato do aeroporto ser
internacional ou não.
c) Um método que verifique e informe se um aeroporto é igual a ele:
 public boolean equals (Aeroporto aeroporto)
 Dois aeroportos são iguais se o seu código for coincidente.
d) Um método que receba um prefixo de avião como parâmetro e informe se a
aeronave está pousada nele.
e) Um método que receba um outro aeroporto como parâmetro e verifique se
existe alguma forma de se chegar nele. Para isto, o aeroporto deve verificar se
ele possui vôo partindo para o aeroporto desejado, e caso não saia, se existe
alguma forma de chegar nele à partir dos aeroportos de onde sai
 public boolean possuiRota(Aeroporto aeroporto)

Rosicléia Frasson - rosicleiafrasson@gmail.com


104

 Obs: A quantidade máxima de aeronaves que um aeroporto pode ter em


terra é igual a 100 e a quantidade máxima de outros aeroportos com os
quais o aeroporto pode ter linhas saindo e chegando é 100.

4. Nas duas tabelas abaixo estão inseridos os códigos de duas classes Java: a
classe Carro e a classe Principal. Explique o que cada linha de código representa.

package br.com.senai.exemplo.modelo;

public class Carro {

//Atributos
private String cor;

private String modelo;

private double velocidadeAtual;

private double velocidadeMaxima;

public Carro() {

public Carro(String cor, String modelo, double velocidadeAtual,


double velocidadeMaxima) {
this.cor = cor;
this.modelo = modelo;
this.velocidadeAtual = velocidadeAtual;
this.velocidadeMaxima = velocidadeMaxima;
}

public String getCor() {


return cor;
}

public void setCor(String cor) {


this.cor = cor;
}

public String getModelo() {


return modelo;
}

public void setModelo(String modelo) {


this.modelo = modelo;
}

Rosicléia Frasson - rosicleiafrasson@gmail.com


105

public double getVelocidadeMaxima() {


return velocidadeMaxima;
}

public void setVelocidadeMaxima(double velocidadeMaxima) {


this.velocidadeMaxima = velocidadeMaxima;
}

public double getVelocidadeAtual() {


return velocidadeAtual;
}

public void setVelocidadeAtual(double velocidadeAtual) {


this.velocidadeAtual = velocidadeAtual;
}

public void liga(){


System.out.println("O carro está ligado");
}

public void acelera (double quantidade){


double velocidadeNova = this.velocidadeAtual +
quantidade;
this.velocidadeAtual = velocidadeNova;
}

Rosicléia Frasson - rosicleiafrasson@gmail.com


106

HERANÇA E POLIMORFISMO

OBJETIVOS

 compreender o uso da herança;


 usar a sobrescrita de métodos;
 entender o conceito de polimorfismo.

1. Herança

A herança é um dos pilares da programação orientada a objetos que


permite a criação de novas classes a partir de outras já existentes, ou seja, uma
classe pode derivar de outra classe. As novas classes são chamadas de subclasses
e as classes já existentes que deram origem as subclasses são chamadas de
superclasses.

O mecanismo de herança viabiliza o reuso de código. Para fazer uso


da herança é usada a palavra-chave extends, seguida do nome da superclasse.

Para referenciar os métodos da superclasse é utilizada a palavra-


chave super.

A herança em Java também pode ocorrer implicitamente, é o que


ocorre com a superclasse Object. Todas as classes criadas em Java estendem
implicitamente de Object.

Rosicléia Frasson - rosicleiafrasson@gmail.com


107

import java.awt.Image;

public class Animal {

private Image foto;


private double peso;
private String comida;

public void comer(){


}

public void dormir(){


}

public void movimentar(){


}

public void fazerBarulho(){


}

public class Cachorro extends Animal {


}

public class Coruja extends Animal {


public void voar(){
}

public void botar(){


}
}

public class Galinha extends Animal {


public void voar(){
}

Rosicléia Frasson - rosicleiafrasson@gmail.com


108

public void botar(){


}
}

2. Sobrescrita de métodos

A sobrescrita de métodos é o mecanismo que permite a alteração do


comportamento de uma superclasse pelas suas subclasses, ou seja, a sobrescrita
de um método é uma nova implementação para o mesmo.

A sobrescrita de um método ocorre somente se a assinatura do


mesmo permanece intacta, isto é, o tipo de retorno e os parâmetros devem ser
os mesmos.

O modificador final não permite que o método seja sobrescrito. Este


modificador também pode ser usado na definição da classe para impedir que a
mesma seja estendida.

3. Polimorfismo

O polimorfismo em Java é o mecanismo que garante que classes


derivadas de uma mesma superclasse invoquem métodos com a mesma
identificação, mas com comportamentos distintos.

PARA FIXAR

Os exercícios 1 e 2 foram retirados do curso Java Starter disponível em:


<http://www.t2ti.com/curso/video/java/basico/java_starter.php>

1. A partir dos conceitos apresentados:

a) Crie uma hierarquia de classes em Java com os atributos e comportamentos


descritos abaixo. Distribua as características de forma que tudo o que for comum
a todos os animais fique na classe Animal.

Rosicléia Frasson - rosicleiafrasson@gmail.com


109
Animal

cachorro cavalo preguiça


possui nome possui nome possui nome
possui idade possui idade possui idade
deve emitir som deve emitir som deve emitir som
deve correr deve correr devesubir em árvores

b) Implemente um programa que crie os três tipos de animais definidos no item


anterior e invoque o método que emite o som de maneira polimórfica, isto é,
independente do tipo de animal.
c) Implemente uma classe Veterinário que contenha um método examinar( ),
cujo parâmetro de entrada é um Animal, quando o animal for examinado deve
emitir um som, passe os três animais como parâmetro.
d) Crie uma classe Zoológico com 10 jaulas (utilize um array), coloque em cada
jaula um animal diferente, percorra cada jaula e emita o som do animal
correspondente.

2. Resolva a seguinte situação utilizando os conceitos aprendidos.


a) Uma empresa quer manter o registro da vida acadêmica de todos os
funcionários, o modelo deve contemplar o registro das seguintes informações,
de forma incremental.
 Para o funcionário que não estudou, apenas o nome e o código funcional;
 Para o funcionário que concluiu o ensino básico, a escola;
 Para o funcionário que concluiu o ensino médio, a escola;
 Para o funcionário que concluiu a graduação, a universidade.
b) Estenda o modelo de forma que todo funcionário possua uma renda básica de
R$ 1000,00 e:
 Com a conclusão do ensino básico a renda total é a renda básica
acrescida de 10%;
 Com a conclusão do ensino médio a renda total é a renda básica
acrescida de 50%;
 Com a conclusão do ensino superior a renda total é a renda básica
acrescida de 100%;
c) Crie um programa que simule uma empresa com 10 funcionários, utilize um
array, sendo que a escolaridade dos funcionários é distribuída da seguinte forma:
40% do ensino básico, 40% do ensino médio e 20% superior. Calcule os custos da
empresa com salários totais e por nível de escolaridade.

Rosicléia Frasson - rosicleiafrasson@gmail.com


110

3. (FCC - TRT 20ª REGIÃO/2010 - Tecnologia da Informação) Considere o código


JAVA abaixo:

public class Carro extends Veiculos {

private String categoria;

public void setCategoria(String categoria) {


this.modelo = categoria;
}

public String getCategoria() {


return this.categoria;
}
}
Em relação ao código acima, é correto afirmar que:
A) A palavra reservada extends indica que Carro é uma superclasse e Veiculo é
um objeto.
B) A classe Carro irá herdar atributos e métodos da classe Veiculo que não
estejam com o modificador protected.
C) Todas as classes que herdarem a classe Carro terão o atributo modelo.
D) A palavra reservada extends indica que Carro e Veiculo são classes de mesmo
nível.
E) A classe Carro irá herdar atributos e métodos da classe Veiculo que não
estejam com o modificador private.

4. (ESAF - ANA/2009 - Analista Desenvolvimento de Sistemas)Em Java, para que


um método de uma superclasse não seja sobrescrito em suas subclasses, aplica-
se o modificador :
A) static.
B) public.
C) final.
D) protected.
E) abstract.

5. (ESAF - ANA/2009 - Analista Desenvolvimento de Sistemas) Se, na superclasse,


um método é declarado protected, o(s) modificador(es) aplicável(is) na
sobrescrita do método é(são):
A) private.
B) private e protected.
C) “default”.
D) protected, “default” e public.

Rosicléia Frasson - rosicleiafrasson@gmail.com


111

E) protected e public.

6. class Prova{
public int a;
Prova(int _a){
a = _a;
}

public void acrescenta(int n){


a += n;
}

public void acrescenta(){


a++;
}
}

class SubProva extends Prova{


private int b;
SubProva(int umb, int uma){
super(uma);
b = umb;
}

public void acrescenta(int n){


b = b + n + 2;
}

public static void main (String args[ ]) {


SubProva s = new SubProva(2,5);
Prova p = new Prova(2);
s.acrescenta(3);
p.acrescenta();
System.out.println(s.b+s.a);
System.out.println(p.a);
s.acrescenta();
System.out.println(" "+s.b+p.a+s.a) ;
}
}

Rosicléia Frasson - rosicleiafrasson@gmail.com


112

7. (COSEAC/UFF - Dataprev/2008 - Analista - Desenvolvimento de Sistemas) Com


relação às duas classes anteriores pode-se dizer que:
A) existe sobrecarga no método main;
B) existe sobrecarga no método SubProva;
C) existe sobrecarga no método Prova;
D) existe sobrecarga no método acrescenta;
E) não existe sobrecarga;

8. (ESAF 2009 ANA - Analista de Sistemas) Se, na superclasse, um método é


declarado protected, o(s) modificador(es) aplicável(is) na sobrescrita do método
é(são):
a) private.
b)private e protected.
c) "default".
d) protected, “default" e public.
e) protected e public.

9. (ESAF 2008 CGU - AFC-TI) Na linguagem de programação Java, pode-se definir


a visibilidade dos métodos e atributos. Com relação a essa característica, é
correto afirmar que:

a) métodos declarados como public em uma superclasse, quando herdados,


precisam ser protected em todas as subclasses dessa classe.
b) métodos declarados como protected em uma superclasse, quando herdados,
precisam ser protected ou public nas subclasses dessa classe.
c) o nível de acesso protected é mais restritivo do que o nível de acesso default.
d) métodos declarados como public só podem ser acessados a partir dos
métodos da própria classe ou de classes derivadas.
e) métodos declarados como default só podem ser acessados a partir dos
métodos da própria classe.

10. O que é herança?

11. O que é herança múltipla? O Java suporta herança múltipla?

12. Um animal contém um nome, comprimento, número de patas (o padrão é 4),


uma cor, ambiente e uma velocidade (em m/s).
Um peixe é um animal, tem 0 patas, o seu ambiente é o mar (padrão), cor
cinzenta (padrão). Além disso, o peixe tem como características: barbatanas e
cauda;
Um mamífero é um animal, o seu ambiente é a terra (padrão);
Um urso é um mamífero, cor castanho e o seu alimento preferido é o mel.

Codifique as classes animal, peixe e mamífero.


Para a classe animal, codifique os métodos:

Rosicléia Frasson - rosicleiafrasson@gmail.com


113

 Animal (String nome, String cor, String ambiente, int comprimento, float
velocidade, int patas);
 void alteraNome (String nome);
 void alteraComprimento(int comprimento);
 void alteraPatas (int patas);
 void alteraCor (String cor);
 void alteraAmbiente (String ambiente);
 void alteraVelocidade (float velocidade);
 void dados(); //imprime os dados do animal;

E os seus atributos são:


 String nome;
 int comprimento;
 int patas;
 String cor;
 String ambiente;
 float velocidade;

Para a classe Peixe, codifique:


 Peixe (String nome, String caracteristica, int comprimento, float
velocidade);
 void alteraCaracteristica (String caracteristica);
 String caracteristica ( ); //retorna a característica de um determinado
peixe;
 void dados ( ); //imprimir na tela todos os dados;

Para a classe Mamifero, codifique:


 Mamifero ( String nome, String cor, String alimento, int comprimento,
float velocidade, int patas);
 void alteraAlimento (String alimento);
 String alimento ( ); //retorna o alimento de um determinado urso
 void dados ( ); imprimir na tela todos os dados;

Por último, crie um arquivo de teste de forma a ter um jardim zoológico com os
seguintes animais: camelo, tubarao, urso-do-canadá.

Rosicléia Frasson - rosicleiafrasson@gmail.com


114

13. Escreva uma classe chamada Pessoa com os atributos: nome (tipo String),
sexo (tipo char), idade (tipo int). Escreva agora outra classe chamada Amigo, que
é uma pessoa (estende da classe Pessoa) de quem sabemos o dia de seu
aniversário, atributo diaDoAniversario (tipo String). Use encapsulamento e
forneça construtor padrão e construtor usando todos os atributos para as duas
classes. Faça uma classe teste para criar um amigo e imprimir o nome e a data de
nascimento do mesmo.

14. Escreva as seguintes classes:


a) Uma classe Pessoa com atributos nome (tipo String) e sobrenome (tipo String).
Use encapsulamento. A classe Pessoa ainda deve ter o seguinte método:
Assinatura String getNomeCompleto()
Efeito Retorna a concatenação do atributo nome com o atributo
sobrenome
Além disso, a classe deve possuir um construtor sem parâmetros e outro
construtor que recebe como parâmetros o nome e o sobrenome da pessoa e
armazena respectivamente nos atributos nome e sobrenome.
b) Uma subclasse de Pessoa, chamada Funcionario. A classe Funcionario deve ter
os atributos matricula (tipo int) e salario (tipo double). Use encapsulamento.
Considere a seguinte regra no método modificador setSalario:
Assinatura void setSalario(int valor)
Efeito Atribui ao atributo salário o valor recebido como parâmetro
desde que este valor não seja negativo. Caso seja negativo, não
faz nada.

Rosicléia Frasson - rosicleiafrasson@gmail.com


115

Todo funcionario recebe seu salário em duas parcelas, sendo 60% na primeira
parcela e 40% na segunda parcela. Assim, escreva os métodos:
Assinatura double getSalarioPrimeiraParcela()
Efeito Retorna o valor da primeira parcela do salário (60%)

Assinatura double getSalarioSegundaParcela()


Efeito Retorna o valor da segunda parcela do salário (40%)
c) Uma subclasse de Funcionario, chamada Professor. Todo professor recebe seu
salário em uma única parcela. Assim, deve-se sobrescrever os métodos
getSalarioPrimeiraParcela e getSalarioSegundaParcela.
Assinatura double getSalarioPrimeiraParcela()
Efeito Retorna o valor integral do salário do professor

Assinatura double getSalarioSegundaParcela()


Efeito Retorna o valor zero.

d) Uma classe Programa que, no método main, instancia os seguintes objetos:


Nome da variável: Nome da variável: Nome da variável: pessoa3
pessoa1 (tipo Pessoa) pessoa2 (tipo (tipo Professor)
nome: João Funcionario) nome: Antônio
sobrenome: nome: Leonardo sobrenome: Silva
Medeiros sobrenome: Messias salario: 1500.00
salario: 1000.00
Depois disso, executa as seguintes operações na seguinte ordem:
- Imprime o retorno do método getNomeCompleto para os 3 objetos.
- Imprime o retorno dos métodos getSalarioPrimeiraParcela e
getSalarioSegundaParcela para os objetos pessoa2 e pessoa3.

15. Escreva uma classe Conta com atributo saldo (tipo double) e os seguintes
métodos
Assinatura void depositar(double valor)
Efeito Acrescentar o valor recebido como parâmetro ao atributo saldo
Assinatura void sacar(double valor)
Efeito Subtrair o valor recebido como parâmetro do atributo saldo
O atributo saldo pode ser negativo. Escreva uma subclasse de Conta chamada
Poupanca. A classe Poupanca deve ter um atributo chamado diaRendimento do
tipo int que armazena o dia do mês em que ocorre o rendimento da poupança.
Use encapsulamento nas duas classes. Forneça construtor que recebe valores
para os atributos correspondentes para as duas classes. O atributo saldo da
classe Poupanca não pode ser negativo. Use esta regra no método modificador
do atributo saldo (método setSaldo):
Assinatura void setSaldo(double valor)
Efeito Atribui ao atributo saldo o valor recebido como parâmetro

Rosicléia Frasson - rosicleiafrasson@gmail.com


116

desde que este valor não seja negativo. Caso seja negativo, não
faz nada.
Aplique esta mesma regra e redefina (por sobreposição) o método sacar para a
classe Poupanca:
Assinatura void sacar(double valor)
Efeito Subtrair o valor recebido como parâmetro do atributo saldo
desde que este valor não seja negativo. Caso seja negativo, não
faz nada.
Escreva um programa com um método main que cria um objeto do tipo Conta e
outro objeto do tipo Poupanca. Em seguida realiza um depósito na conta no
valor de 10000 e depois um saque de 15000 da conta e um depósito na
poupança no valor de 15000. Depois realize um saque de 20000 na poupança e
imprima o saldo da conta e da poupança.

16. Escreva as seguintes classes:


Uma classe Equipamento com o atributo ligado (tipo boolean) e com os
métodos:
Assinatura void liga()
Efeito Torna o atributo ligado true

Assinatura void desliga()


Efeito Torna atributo ligado false
Use encapsulamento.
Uma classe EquipamentoSonoro que herda as características de Equipamento e
que possui os atributos volume (tipo int) e stereo (tipo boolean). Use
encapsulamento. A classe deve possuir os métodos:
Assinatura void mono()
Efeito Torna o atributo stereo falso

Assinatura void stereo()


Efeito Torna o atributo stereo verdadeiro

Assinatura void liga()


Efeito Sobrescreve o método liga da superclasse. Este método deve
chamar o método liga da superclasse e ajustar o atributo
volume para 5

17. Quais são as regras para a utilização de sobrescrita de método? Forneça um


exemplo em código Java.

18. Quais são as regras para a utilização de sobrecarga de método? Forneça um


exemplo em código Java.

Rosicléia Frasson - rosicleiafrasson@gmail.com


117

19. Em um sistema de folha de pagamento de uma empresa, que calcula o


salário dos funcionários, dois tipos de funcionários são considerados:
funcionários horistas e funcionários mensalistas.
Todo funcionário possui nome e sobrenome. Os funcionários horistas possuem
como atributos o salarioPorHora (que guarda o salário por hora) e o
numeroHoras (que guarda o número de horas que o horista trabalhou). Os
funcionários mensalistas possuem o valor do salário armazenado no atributo
salMensal. Caso o funcionário mensalista tenha faltado algum dia de trabalho, os
dias não trabalhados implicam em perda de 2 % no valor total do salário por cada
um dos dias não trabalhados (veja se é necessário criar um atributo para isso).
- A superclasse Funcionário possui o seguinte atributo: private static int
numFunc, que armazena o número de funcionários instanciados. Esse atributo é
incrementado no construtor e decrementado no método “finalize” da classe.
- A superclasse Funcionário deve implementar os métodos: clone e equals (que
são herdados da classe Object) para que seja possível realizar um clone de um
objeto funcionário e também comparar um funcionário com outro.
- O cálculo do valor do salário do funcionário horista é: nº de horas trabalhadas *
salário por hora.
- O cálculo do valor do salário do mensalista é o valor do seu atributo salMensal.
Um novo cálculo do valor do salário do mensalista deve ser feito caso existam
dias não trabalhados, conforme explicado anteriormente.
- As subclasses devem usar pelo menos um método sobrescrito. Os outros
métodos devem ser identificados e implementados de acordo com a sua
modelagem.
Desenvolver um sistema orientado a objetos para implementar o sistema de
folha de pagamento de uma empresa, implementando a classe Funcionário, as
subclasses identificadas por você e o teste da classe.
Criar um pacote Java (package). O pacote deve ter o seguinte nome:
pacote.folha. Nesse pacote devem estar as classes Funcionário e subclasses que
você implementar. As classes do pacote devem ser “arquivadas” em um arquivo
.jar com o seu nome: nomeDoAlunofolha.jar (que também deve ser entregue).
O teste da classe (main Java) deve realizar as seguintes tarefas em ordem:
- mostrar o número de funcionários existentes;
- deve instanciar dois funcionários horistas;
- deve instanciar dois funcionários mensalistas;
- deve mostrar o valor do salário de cada um dos funcionários;
- deve mostrar nome e sobrenome de cada funcionário instanciado;
- deve comparar dois funcionários;

Rosicléia Frasson - rosicleiafrasson@gmail.com


118

REFERÊNCIAS BIBLIOGRÁFICAS

CAELUM. Disponível em: < http://www.caelum.com.br/apostila-java-orientacao-


objetos/>. Acesso em: 21 jan. 2013.

JAVA STARTER. Disponível em:


<http://www.t2ti.com/curso/video/java/basico/java_starter.php> Acesso em: 19
jan. 2013.

LUZ, Diego. Linguagens de programação, qual devo escolher? Disponível em: <
http://webinsider.uol.com.br/2009/09/16/linguagens-sao-linguagens-mas-qual-
devo-escolher/>. Acesso em 22 jan. 2013.

PAMPLONA, Vitor Fernando. Tutorial Java 2: características básicas. Disponível


em: <http://javafree.uol.com.br/artigo/871496/Tutorial-Java-2-Caracteristicas
-Basicas.html>. Acesso em: 20 jan. 2013.

Rosicléia Frasson - rosicleiafrasson@gmail.com

Você também pode gostar