Buscar

Linguagem de Programação Orientada a Objetos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UFRA – UNIVERSIDADE FEDERAL 
RURAL DA AMAZÔNIA 
INSTITUTO CIBERESPECIAL 
 
 
 
 
 
 
 
TÉCNICAS DE PROGRAMAÇÃO EM JAVA 
 
 
 
 
Prof. D.Sc. Eng. Emerson Cordeiro Morais 
Belém-PA, Abril de 2011. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 2 
Sumário 
 
Capítulo I – Algoritmos e Linguagens de Programação ......................... 4 
1 Resolução de Problemas Computacionais ................................................................. 4 
2 Conceito Formal de Algoritmo .................................................................................. 4 
3 Linguagens de Programação ...................................................................................... 6 
4 Tipos de Linguagens .................................................................................................. 8 
5 Processos de Tradução .............................................................................................. 8 
5.1 Montadores (Assemblers) ................................................................................... 9 
5.2 Compiladores ...................................................................................................... 9 
5.3 Interpretadores .................................................................................................. 10 
5.4 Compiladores x Interpretadores ....................................................................... 11 
5.5 Processo de Tradução da linguagem Java ........................................................ 11 
Capítulo II – Conceitos Básicos de Programação .................................. 13 
1 Tipos Primitivos de Dados ...................................................................................... 13 
1.1 Tipos Numéricos .............................................................................................. 13 
1.2 Tipos Não-numéricos ....................................................................................... 13 
2 Identificadores ......................................................................................................... 14 
3 Variáveis .................................................................................................................. 14 
4 Constantes ................................................................................................................ 15 
5 Comando de Atribuição ........................................................................................... 15 
6 Entrada e Saída de Dados ........................................................................................ 16 
6.1 Comandos de Saída de Dados .......................................................................... 16 
6.2 Comandos de Entrada de Dados ....................................................................... 17 
7 Blocos e Comentários .............................................................................................. 20 
8 Operadores e Funções predefinidas ......................................................................... 20 
8.1 Operadores Aritméticos .................................................................................... 20 
8.2 Operadores Relacionais .................................................................................... 21 
8.3 Funções Matemáticas ....................................................................................... 21 
8.4 Operadores Lógicos .......................................................................................... 22 
8.5 Tabelas Verdade ............................................................................................... 22 
9 Ordem de Prioridade das Operações ....................................................................... 23 
Capítulo III – Estrutura de Controle Linear (ou de Sequência) ........... 24 
1 Estruturas de Controle ............................................................................................. 24 
2 Estrutura de Controle Linear ................................................................................... 24 
3 Reunião dos Conceitos na Formação do Primeiro Programa .................................. 25 
4 Exercícios Propostos ............................................................................................... 25 
Capítulo IV – Estrutura de Controle de Seleção ..................................... 29 
1 Conceito de Seleção ................................................................................................ 29 
2 Seleção Simples ....................................................................................................... 29 
3 Seleção Composta ................................................................................................... 30 
4 Seleção Encadeada .................................................................................................. 31 
5 Seleção de Múltipla Escolha ................................................................................... 33 
6 Exercícios Propostos ............................................................................................... 35 
Capítulo V – Estrutura de Controle de Repetição ................................... 39 
1 Conceito de Repetição ............................................................................................. 39 
2 Repetição com Variável de Controle ....................................................................... 40 
3 Repetição com Teste no Início ................................................................................ 41 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 3 
4 Repetição com Teste no Final ................................................................................. 43 
5 Exercícios Propostos ............................................................................................... 44 
Capítulo VI – Vetores e Matrizes .................................................................. 48 
1 Tipos Construídos .................................................................................................... 48 
2 Vetores ..................................................................................................................... 48 
3 Entrada, manipulação e saída de dados em Vetores ................................................ 49 
4 Matrizes Bidimensionais ......................................................................................... 51 
5 Entrada, manipulação e saída de dados em Matrizes .............................................. 52 
6 Exercícios Propostos ............................................................................................... 53 
Bibliografia ........................................................................................................ 56 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 4 
Capítulo I – Algoritmos e Linguagens de 
Programação 
 
1 Resolução de Problemas Computacionais 
Na fase de resolução do problema, será concentrada a tarefa de elaboração de um 
algoritmo para resolver um problema proposto. Somente depois da satisfação com a 
formulação de um algoritmo adequado é que se passará à implementação deste 
algoritmo em alguma linguagem de programação, o que representará a fase de 
implementação do problema. 
Dado um algoritmo suficientemente preciso, sua codificação em alguma 
linguagem de programação é direta. Nas fases anteriores descritas pode-se visualizar o 
conceito de semântica e sintaxe de programas, respectivamente. 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 1: Resolução do Problema e Programação. 
 
2 Conceito Formal de Algoritmo 
Um algoritmo computacional pode ser definido como: uma sequência finita de 
instruções bem definidas e não ambíguas, onde cada uma das quais pode serexecutada mecanicamente, num período de tempo finito e com uma quantidade de 
esforço finito (TREMBLAY & BUNT, 1983). 
Solução em 
forma de 
Algoritmo 
Solução como 
um programa 
de computador 
Problema 
Passo difícil 
Fase da 
resolução do 
problema 
Fase da 
implementação 
do problema 
Técn
Exem
 
indic
se en
Exem
9
9
9
9
9
9
Exem
9
9
9
9
9
9
9
Hanó
Exist
difer
para 
O ob
nicas de Pro
mplos Infor
Apesar d
cações dada
ncontrar ess
mplo 1: Tel
9 Retirar o
9 Aguarda
9 Colocar 
9 Discar o 
9 Falar ao 
9 Colocar 
mplo 2: Tro
9 Posicion
9 Selecion
9 Subir na
9 Retirar a
9 Colocar 
9 Descer d
9 Retirar a
Existem,
ói e Três Jes
O proble
tem três has
rentes (1-2-3
qualquer ha
bjetivo é tran
ogramação e
rmais de A
de o termo s
as para se c
a rua, por e
lefone públ
o fone do ga
ar o sinal son
o cartão no 
número de
telefone; 
o fone no g
oca de uma
nar a escada
nar uma nov
a escada; 
a lâmpada q
a nova lâmp
da escada; 
a escada. 
, inclusive, 
suítas e Trê
ema das To
stes (a-b-c),
3), os meno
aste, contan
nsferir os tr
em Java – P
Algoritmos
ser novo em
hegar a um
xemplo. 
lico a cartã
ancho; 
noro; 
local indica
sejado; 
gancho. 
a lâmpada 
a embaixo d
va lâmpada p
queimada do
pada no soq
alguns algo
ês Canibais.
orres de Han
, uma das qu
ores sobre o
nto que nunc
rês discos pa
rof. D.Sc. E
m si, o conc
ma determin
ão 
ado; 
queimada
a lâmpada q
para a subst
o soquete; 
quete; 
oritmos para
nói consiste
uais serve d
os maiores.
ca seja colo
ara outra ha
Eng. Emerso
 
ceito é certa
nada rua con
queimada; 
tituição; 
a problema
e em mover
de suporte p
 Pode-se m
ocado um di
aste. 
on Cordeiro
amente basta
nstituem um
s clássicos 
r três disco
para três dis
mover um di
isco maior s
o Morais 
ante familia
m algoritmo
como: Torr
os de uma T
scos de tama
isco de cad
sobre um m
5 
ar. As 
o para 
res de 
Torre. 
anhos 
da vez 
menor. 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 6 
Algoritmo 
 início 
 mover o disco 1 para a haste b; 
 mover o disco 2 para a haste c; 
 mover o disco 1 para a haste c; 
 mover o disco 3 para a haste b; 
 mover o disco 1 para a haste a; 
 mover o disco 2 para a haste b; 
 mover o disco 1 para a haste b; 
 fim 
Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um 
barco com capacidade para duas pessoas. Por medidas de segurança não se permite que 
em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a 
sequência de passos que permitiria a travessia com segurança? 
Algoritmo 
 início 
 atravessar um jesuíta e um canibal; 
 voltar um canibal; 
 atravessar dois canibais; 
 voltar um canibal; 
 atravessar um jesuíta e um canibal; 
 voltar um canibal; 
 atravessar dois canibais; 
 voltar um canibal; 
 atravessar um jesuíta e um canibal; 
 fim 
3 Linguagens de Programação 
 Para realizar qualquer tarefa, por mais simples que seja, um computador precisa 
de instruções que o instruam como realizá-la. A maioria das máquinas opera 
representações binárias e essa não é certamente o melhor método de comunicação com 
os seres humanos. Linguagens de programação foram criadas para servir de interface 
entre o usuário e o computador, facilitando a comunicação entre uma pessoa com um 
problema e o computador que se deseja usar para resolvê-lo. 
 Uma LP (Linguagem de Programação) é uma linguagem destinada a ser usada 
por uma pessoa para expressar um processo através do qual um computador pode 
resolver um problema. Existem alguns paradigmas ou também chamados modelos, de 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 7 
linguagens de programação: Imperativo, Funcional, Lógico e Orientado a Objetos. Os 
quatro modelos de LP correspondem aos pontos de vista dos quatro componentes 
citados. A eficiência na construção e execução de programas depende da combinação 
dos quatro pontos de vista. Seguem os modelos respeitando a cronologia. 
O modelo Imperativo é baseado na perspectiva do computador. A execução 
sequencial de comandos e o uso de dados são conceitos baseados no modo como os 
computadores executam programas no nível de linguagem de máquina. As LPs 
imperativas são de fácil tradução. Um programa imperativo é equivalente a uma 
sequência de modificações de locações de memória. São exemplos de linguagens 
Imperativas: Fortran, Cobol, Ada, Perl, Basic, Pascal e C. 
O modelo Funcional focaliza o processo de resolução do problema. A visão 
funcional resulta em diversas funções que descrevem as operações que devem ser 
efetuadas para resolver o problema, inclusive adotando recursividade. Pode-se citar 
como exemplo de Linguagem Funcional: Lisp, Scheme, ML e Haskell. 
O modelo Lógico está relacionado à perspectiva da pessoa. O modelo encara o 
problema de uma perspectiva lógica através de um subconjunto do cálculo de 
predicados, levando a um processo de dedução automática. Um programa lógico é 
equivalente à descrição do problema expressa de maneira formal, similar à maneira que 
o ser humano raciocinaria sobre ele. Pode-se citar como exemplos: Prolog, Datalog e 
Mercury. 
O modelo Orientado a Objeto focaliza o problema, uma vez que a 
complexidade foi aumentada com o passar do tempo. No modelo OO a entidade 
fundamental é o objeto. Objetos trocam mensagens entre si e os problemas são 
resolvidos por objetos enviando mensagens uns para os outros. Os objetos do programa 
equivalem aos objetos da vida real. 
A primeira linguagem OO foi Smalltalk, desenvolvida em 1972, através de 
refinamentos da Linguagem Simula 67. Existem algumas linguagens híbridas: 
imperativas com características de Orientação a Objetos, como por exemplo: C++ 
(posteriormente C#), Visual Basic (posteriormente VB.NET) e Object Pascal (Delphi). 
Java já nasceu puramente Orientada a Objetos. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 8 
 
4 Tipos de Linguagens 
A linguagem de máquina é a linguagem que está intimamente ligada ao projeto 
lógico do computador. É a linguagem que ele entende desde que ele foi construído. A 
linguagem de máquina é a mais trabalhosa de todas, tem que se preocupar muito durante 
a programação, com os detalhes, o que torna esta tarefa bastante difícil. 
A linguagem simbólica foi um passo adiante na tentativa de simplificar a 
programação difícil da linguagem de máquina. A estrutura da linguagem simbólica 
ainda se mantém na linguagem de máquina, mas os códigos são substituídos por 
códigos mnemônicos, isto é, por códigos que empregam abreviações de nomes 
sugestivos que lembram a função da instrução, e os endereços e áreas de trabalho são 
mencionados por símbolos e nomes. É muito mais fácil trabalhar com codificação 
simbólica do que codificação numérica. Seguem exemplos de instruções aritméticas e a 
seguir, código equivalente em C e Assembly: 
 
A linguagem automática foi um passo decisivo na tentativa de obter uma 
linguagem bem próxima ao problema real. As estruturas destas linguagens são 
orientadas de modo que possam ser facilmente assimiladas por especialistas de várioscampos de atividades profissionais. Ex: Cobol, Pascal, Fortran, etc. 
 
5 Processos de Tradução 
Para representar mais facilmente o que se deseja, os programas não são escritos 
na linguagem que a máquina entende, mais sim em linguagens de mais alto nível. Para 
isso há necessidade de se traduzir ou converter esses programas em linguagem de 
máquina. Esse trabalho é feito automaticamente pelo próprio computador através de 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 9 
programas tradutores. A linguagem na qual o programa original é escrito é denominada 
linguagem fonte e a linguagem para a qual é convertido é denominada linguagem alvo. 
Tradutores são programas que convertem um programa de usuário escrito em 
uma linguagem para outra linguagem. Os tradutores podem ser montadores, 
compiladores ou interpretadores. 
 
5.1 Montadores (Assemblers) 
Montador é o programa que traduz programas em uma linguagem fonte 
simbólica para uma linguagem numérica de máquina. Essa tradução é a mais rápida e 
simples que existe, pois cada comando na linguagem simbólica produz exatamente uma 
instrução de máquina. A figura abaixo ilustra o fluxo básico de uma montagem, onde o 
programa escrito em linguagem fonte, chamado código fonte, é analisado e convertido 
instrução por instrução em um programa em linguagem binária de máquina, 
denominado código objeto. 
 
 
 
 
 
Figura 2: Processo de Montagem. 
 
5.2 Compiladores 
 Compiladores são programas que realizam a conversão de um programa escrito 
em linguagem de alto nível para um programa correspondente em linguagem de 
máquina. Na compilação, o programa original em linguagem fonte é analisado e 
traduzido para um programa equivalente descrito em linguagem de máquina. 
 Para um programa, que usa rotinas armazenadas em bibliotecas do compilador, 
possa ser executado, é necessário inserir no código objeto do programa os códigos já 
compilados dessas rotinas chamadas. Esse processo é feito na linkedição ou ligação e é 
realizado por um programa chamado ligador ou linkeditor. Linkeditor é um programa 
que tem como finalidade agregar rotinas (existentes em bibliotecas) referidas no 
programa objeto, mas que não estão nele incluídas. Uma vez o código executável ou 
Linguagem 
de Máquina 
Código 
Fonte 
Linguagem 
Assembly 
Código 
Objeto Montador 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 10 
módulo de carga é gerado, então o programa está pronto para ser executado pelo 
computador. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura3: Processo de Compilação. 
 
5.3 Interpretadores 
Interpretadores são programas tradutores que diferem dos compiladores porque 
não traduzem o programa fonte todo de uma vez, mas uma linha de cada vez. Cada linha 
do programa fonte é lida, traduzida para linguagem de máquina e imediatamente 
executada. 
Não é necessário gerar qualquer programa equivalente ao inicial, pois a 
interpretação se caracteriza por realizar as três fases (compilação, ligação e execução), 
comando a comando, do programa fonte. Na realidade, existe apenas um passo: 
executar uma instrução do programa fonte original. Tem a vantagem de ser um 
 
Compilador 
Código 
Fonte
Linguagem de 
Alto Nível
Código 
Objeto
Linguagem 
de Máquina
Linkeditor 
Código 
Executável
Linguagem 
de Máquina
Bibliotecas 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 11 
programa de menor tamanho e maior flexibilidade, porém tem a desvantagem de levar 
mais tempo, para executar um programa do que os compiladores, tornando-se 
ineficientes para grande quantidade de instruções ou dados. 
Não há produtos intermediários como o código objeto ou código executável, 
como acontece na compilação. Pelo método da interpretação cada comando do código 
fonte é lido pelo interpretador, é convertido em código executável e imediatamente 
executado, antes que o comando seguinte seja lido. 
 
 
 
 
 
 
 
Figura 4: Processo de Interpretação. 
 
5.4 Compiladores x Interpretadores 
A principal vantagem da interpretação sobre a compilação é sua capacidade de 
identificar e indicar um erro no programa fonte. Uma razoável desvantagem da 
interpretação é o consumo de memória, pois o código (geralmente grande) do 
interpretador deve permanecer na memória durante toda a execução, pois cada comando 
necessita do interpretador, ao contrário da compilação. 
Outra desvantagem da interpretação sobre a compilação consiste na 
possibilidade de uma mesma parte de um código fonte ter que ser interpretada tantas 
vezes quanto definidas na repetição, enquanto na compilação, isto acontece uma única 
vez. A mesma desvantagem acontece com programas que são executados 
frequentemente, pois na interpretação são convertidos toda vez que forem executados 
enquanto na compilação essa conversão acontece uma única vez. 
Há linguagens de programação cujas características estruturais são típicas de 
métodos de compilação, possuindo apenas compiladores. São exemplos deste tipo: 
Cobol, Fortran, Pascal e C. Há outras que possuem apenas interpretadores como o APL. 
 
5.5 Processo de Tradução da linguagem Java 
A linguagem de programação Java tem uma arquitetura diferente, o que fornece 
a seus programas mais portabilidade que outras linguagens de programação de alto 
Instrução 
Código 
Fonte 
Execução Interpretador 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 12 
nível. A compilação do código Java não gera código executável em algum sistema 
operacional. Em vez disso, gera um código “pseudo-executável”, chamado bytecode. 
Esse é uma espécie de código de baixo nível que não é linguagem de máquina de algum 
processador, nem faz interface específica com algum determinado sistema operacional. 
Para que esse código possa ser executado em algum (e ao mesmo tempo em 
qualquer) sistema operacional, é necessário que mais uma camada de software esteja 
instalada. A camada funciona como um sistema operacional genérico, deixando 
transparentes as particularidades do sistema operacional real. Essa camada de software 
é chamada de Máquina Java Virtual, ou Java Virtual Machine (JVM). 
A JVM faz a tradução dos bytecodes para código executável naquele sistema 
operacional. Isto faz com que um programa escrito em Java e que seja compilado para 
bytecode possa ser executado em qualquer máquina que tenha a JVM adequada 
instalada. Durante a execução, esse código será traduzido em tempo real para a 
linguagem proprietária e executado. A tradução em tempo real pode ser entendida como 
uma espécie de interpretação. Portanto, é difícil afirmar que a linguagem de 
programação Java seja uma linguagem puramente compilada ou interpretada. 
Essa característica da linguagem Java faz com que esta seja extremamente 
interessante para o uso na Internet, visto que o código Java que esteja presente em um 
site poderá ser executado em qualquer plataforma que contenha a JVM instalada. 
Normalmente, os browsers já contêm uma JVM para que possam trabalhar com sites 
que contenham programas Java. A Figura 5 apresenta as etapas necessárias para a 
execução de um programa Java. 
 
Figura 5: Processo de Tradução da Linguagem de Programação Java. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 13 
Capítulo II – Conceitos Básicos de 
Programação 
 
1 Tipos Primitivos de Dados 
Um tipo de dado primitivo corresponde ao conjunto de valores queuma 
variável, constante, expressão ou função pode assumir e o conjunto de operações que 
podem ser efetuadas sobre ele. Estes conjuntos de valores são definidos pelas 
linguagens de programação, sobre modelos matemáticos, que aproveitam as operações 
sobre estes modelos. No caso do estudo da linguagem Java será usado os tipos: 
 
1.1 Tipos Numéricos 
ƒ Inteiro: informação numérica que pertença ao conjunto dos números inteiros, sendo 
eles: positivos, negativos e o zero. Existem 4 (quatro) tipos: 
a) byte: tem capacidade de 8 bits (de -128 a 127); 
b) short: tem capacidade de 16 bits (de –32.768 a 32.767); 
c) int: tem capacidade de 32 bits (de -2.147.483.648 a 2.147.483.647); 
d) long: tem capacidade de 64 bits (de -9.223.372.036.854.775.808 a 
9.223.372.036.854.775.807); 
ƒ Real: informação numérica que pertença aos números reais, isto é, o conjunto dos 
inteiros mais os números fracionários. Existem 2 (dois) tipos: 
a) float: tem a capacidade de 32 bits (-3,4 x 10-38 a 3,4 x 1038). 
b) double: tem a capacidade de 64 bits (-1,7 x 10-308 a 1,7 x 10308). 
 
1.2 Tipos Não-numéricos 
ƒ Literal (char): informação composta por: caracteres alfanuméricos {‘0’... ‘9’}, 
{‘A’... ‘Z’}, {‘a’... ‘z’} ou especiais {‘%’, ‘&’, ‘<’, ‘+’, ‘#’, ‘®’, ‘@’, ...}. O tipo 
char tem capacidade de armazenamento de 16 bits. 
Obs1: Em Java, String é uma classe definida, não um tipo primitivo, mas é utilizado 
para armazenar cadeias de caracteres como o tipo de dado primitivo literal. 
Obs2: Em Java, os caracteres são representados entre apóstrofos (‘ ’). As cadeias de 
caracteres devem ser representadas entre aspas (“ ”). 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 14 
ƒ Lógico (boolean): informação que pode assumir apenas duas situações: true (1) ou 
false (0). O tipo boolean tem capacidade de armazenamento de 8 bits. 
 
2 Identificadores 
São os nomes das constantes, variáveis, tipos construídos e do programa e 
servem para a sua identificação no código fonte. Os identificadores devem acompanhar 
as seguintes regras de formação: 
a) Devem começar por um caractere alfabético, sublinhado (‘_’) ou cifrão (‘$’); 
b) Podem ser seguidos por mais caracteres, inclusive algarismos; 
c) Não podem utilizar caracteres especiais, exceto os citados anteriormente; 
d) Não poderá existir mais de um identificador, com o mesmo nome, no mesmo 
programa; 
e) Os nomes escolhidos não podem ser uma palavra reservada da linguagem 
Java; 
f) Os nomes escolhidos devem explicitar seus conteúdos; 
Obs: as letras podem ser maiúsculas ou minúsculas, porém a linguagem Java é Case 
Sensitive. 
 
3 Variáveis 
Uma informação é classificada como variável quando tem a possibilidade de ser 
alterada em algum instante no decorrer do programa. Em um ambiente computacional, 
as variáveis são guardadas na memória RAM. Visto que na memória existem inúmeras 
variáveis, precisa-se diferenciá-las, o que é feito através do nome da variável. 
Todo dado a ser armazenado na memória de um computador deve ser 
previamente identificado, ou seja, primeiro é necessário saber qual o seu tipo, para 
depois fazer a alocação de um espaço de memória para o seu armazenamento adequado. 
Cada variável, no entanto, pode guardar apenas uma informação de cada vez, sendo 
sempre do mesmo tipo. Os exemplos abaixo mostram como se deve declarar uma 
variável: 
float X; 
double Y,Z; 
char SEXO; 
 String NOME; 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 15 
 boolean RESPOTA; 
Alguns tipos de dados da linguagem Java têm particularidades. O tipo long deve 
ser identificado com a letra l, para não ser compactado pela linguagem em um tipo 
inteiro. A compactação ocorre como uma maneira de reduzir o uso de memória. 
Da mesma forma que tanta usar o mínimo de memória, a linguagem Java tenta 
utilizar o máximo de precisão possível. Assim, se um elemento do tipo float (7 casas de 
precisão após a vírgula) não for identificado com a letra f, a linguagem irá considerá-lo 
como um tipo double (15 casas de precisão após a vírgula), o que pode gerar vários 
erros de compilação e execução. 
int N = 4; 
long NUMERO = 456l; 
float PI = 3.14f; 
double TAMANHO = 3.873457486513793; 
 
4 Constantes 
Entende-se que uma informação é constante quando não sofre variações no 
decorrer da execução do programa. Em Java, uma constante é uma variável declarada 
com o modificador final. Modificadores são utilizados para modificar a atribuição de 
classes, variáveis ou métodos. A declaração de constantes será feita, por exemplo, da 
seguinte forma: 
final int preco = 45; 
final char resposta = ‘s’; 
final float pi = 3.1415f; 
As constantes devem ser declaradas como variáveis, cujo valor atribuído 
permanecerá inalterado ao longo do programa. Por isto, também são chamadas de 
variáveis somente leitura. 
 
5 Comando de Atribuição 
 Um comando de atribuição permite fornecer um valor a uma variável, onde o 
tipo dessa informação deve ser compatível com o tipo de variável. Este valor pode ser 
predefinido ou pode ser resultado de um processamento. Exemplos: 
 TOTAL = 34; 
 RESPOSTA = true; 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 16 
 TIMEBOM = “Clube do Remo”; 
 Uma característica das variáveis é a de que podem guardar valores diferentes em 
tempos diferentes. A habilidade de modificar os valores das variáveis é muito 
importante, e por isso, as vezes, pode-se verificar a presença de mesma variável em 
ambos os lados da linha de atribuição. Considere que esta aparição em ambos os 
membros têm significados diferentes no processamento do comando. O exemplo mostra 
a função da variável em cada um dos lados. 
 X = 1; 
 X = X + 1; 
 
 
 
 
 
6 Entrada e Saída de Dados 
Os cálculos do computador são de pouco valor a não ser que, primeiro, se possa 
fornecer os dados sobre os quais estes cálculos serão efetuados e, segundo, ver os 
resultados desses cálculos. Uma vez que as operações de entrada e saída são muito 
relacionadas à interação dos programadores, sua forma é altamente dependente da 
linguagem de programação específica. 
Todo algoritmo para computador possui comandos que levam a informação da 
memória principal do computador a seus periféricos e vice-versa. Os comandos que se 
fará uso para manusear entrada e saída de informações são mostrados a seguir. 
 
6.1 Comandos de Saída de Dados 
 O comando de saída é utilizado para mostrar dados na tela ou na impressora. É 
possível mostrar: conteúdo de qualquer variável; resultado de qualquer expressão; valor 
de qualquer constante. 
Os comandos de saída mais utilizados em Java são: System.out.println 
(mostra o seu conteúdo e passa para a linha de baixo) e System.out.print 
(mantém o cursor na mesma linha após mostrar a mensagem). Seguem alguns 
exemplos: 
Indica que um 
segundo valor 
será atribuído à 
variável X 
Indica que o 
primeiro valor 
da variável X 
será utilizado 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 17 
System.out.println(X); 
System.out.println (“Conteúdo de x =” + X); 
 
public class Primeiro { 
public static void main(String args[]){ 
 System.out.println(“Alô Mundo!”); 
} 
} 
Também podemos realizar a saída de dados utilizando elementos gráficos como 
segue no exemplo: 
import javax.swing.JOptionPane; 
public class Primeiro{ 
 public static void main(String args[]){ 
 JOptionPane.showMessageDialog(null,"Alô Mundo!"); 
 } 
} 
Outro problema encontrado na linguagem é em relação à formatação de saída de 
dados. Quando estamos trabalhando com tipos de dados reais, precisamos fazer a 
formatação desses números para definir aquantidade de casas decimais que devem ser 
mostradas. Segue exemplo utilizando o método DecimalFormat. 
DecimalFormat casas; 
casas = new DecimalFormat(“0.00”); 
System.out.println(“Média = ” + casas.format(media)); 
 Neste exemplo, a formatação permitirá que sejam mostradas duas casas decimais 
para o valor da variável media. Para utilização deste método, deve-se incluir o pacote de 
classes text, ou seja, import java.text.*; 
 
6.2 Comandos de Entrada de Dados 
O comando de entrada é utilizado para receber dados digitados pelo usuário. Os 
dados recebidos são armazenados em variáveis. Há de se ressaltar que o processo de 
associar valores às variáveis indicadas é semelhante à operação de atribuição em dois 
importantes aspectos: i) qualquer valor que a variável possua anteriormente será 
destruído; e ii) como na atribuição, é verificada a compatibilidade de tipo. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 18 
Uma das formas de entrada utilizada na Linguagem Java é por meio da classe 
Scanner, que requer a importação do pacote java.util.Scanner. Seguem alguns 
exemplos: 
int n1; 
Scanner dado; 
dado = new Scanner (System.in); 
n1 = dado.nextInt( ); 
 
float x; 
Scanner dado; 
dado = new Scanner (System.in); 
x = dado.nextFloat( ); 
 
String nome; 
Scanner dado; 
dado = new Scanner (System.in); 
nome = dado.next( ); 
 
É importante salientar que todas as entradas são recebidas pela linguagem Java 
como um conjunto de caracteres. Assim, estes caracteres deverão ser convertidos por 
funções de conversão de tipos. Seguem algumas dessas funções: 
FUNÇÃO FUNCIONALIDADE 
next( ) Aguarda uma entrada em formato String com uma única palavra. 
nextLine( ) Aguarda uma entrada em formato String com uma ou várias palavras. 
nextInt( ) Aguarda uma entrada em formato número inteiro. 
nextByte( ) Aguarda uma entrada em formato número inteiro. 
nextShort( ) Aguarda uma entrada em formato número inteiro. 
nextLong( ) Aguarda uma entrada em formato número inteiro. 
nextFloat( ) Aguarda uma entrada em formato número fracionário. 
nextDouble( ) Aguarda uma entrada em formato número fracionário. 
 
Outra possibilidade é a utilização de caixas de diálogo disponibilizadas pelo 
pacote gráfico javax.swing. Seguem exemplos: 
Um valor inteiro digitado pelo 
usuário será armazenado na 
variável n1. 
Um valor real digitado pelo 
usuário será armazenado na 
variável x. 
Um valor literal digitado pelo 
usuário será armazenado na 
variável nome. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 19 
Exemplo1: 
import javax.swing.JOptionPane; 
public class ExEntrada { 
 public static void main(String args[]){ 
 String nome; 
 nome = JOptionPane.showInputDialog("Qual o seu Nome?"); 
 JOptionPane.showMessageDialog(null, "O seu nome é " + 
nome); 
 } 
} 
Exemplo2: 
import javax.swing.JOptionPane; 
public class ExSoma{ 
 public static void main (String args []){ 
 int valor1, valor2, soma; 
 valor1 = Integer.parseInt(JOptionPane.showInputDialog 
("Qual o primeiro valor?")); 
 valor2 = Integer.parseInt(JOptionPane.showInputDialog 
("Qual o segundo valor?")); 
 soma = valor1 + valor2; 
 JOptionPane.showMessageDialog(null, "Resultado " + 
soma); 
 } 
} 
Neste caso, também existe a necessidade de funções de conversão de tipos. 
Seguem alguns exemplos: 
FUNÇÃO FUNCIONALIDADE 
Integer.parseInt( ) Converte um parâmetro literal em formato número inteiro. 
Byte.parseByte( ) Converte um parâmetro literal em formato número inteiro. 
Short.parseShort( ) Converte um parâmetro literal em formato número inteiro. 
Long.parseLong( ) Converte um parâmetro literal em formato número inteiro. 
Float.parseFloat( ) Converte um parâmetro literal em formato número real. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 20 
Double.parseDouble( ) Converte um parâmetro literal em formato número real. 
 
7 Blocos e Comentários 
 Um bloco pode ser definido como um conjunto de ações com uma função 
definida; neste caso, um algoritmo pode ser visto como um bloco. Delimita-se o bloco 
por um início ({) e um fim (}). 
{ 
 . 
 . {sequência de ações} 
 . 
} 
Comentários são textos que podem ser inseridos em programas com o objetivo 
de documentá-los. Eles são ignorados no processo de tradução. Com este objetivo, 
devemos utilizar os símbolos /* */ ou // (encerrado automaticamente no final da linha). 
 
8 Operadores e Funções predefinidas 
A Linguagem Java possui operadores e funções predefinidos destinados a 
cálculos matemáticos. Alguns são apresentados a seguir: 
 
8.1 Operadores Aritméticos 
OPERADOR OPERAÇÃO 
+ Adição 
- Subtração 
* Multiplicação 
/ Divisão* 
% Resto da divisão inteira 
++ Incremento de 1 em relação ao valor atual 
-- Decremento de 1 em relação ao valor atual 
 
* A divisão pode ser inteira ou real. Só será divisão real se ao menos um dos operandos 
for real, caso contrário será uma divisão inteira. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 21 
8.2 Operadores Relacionais 
Um operador relacional, ou simplesmente relação, é uma comparação realizada 
entre dois valores de mesmo tipo básico. 
 
OPERADOR OPERAÇÃO 
== Igual 
!= Diferente 
> Maior 
< Menor 
>= Maior ou Igual 
<= Menor ou Igual 
 
8.3 Funções Matemáticas 
Além das operações básicas anteriormente citadas, pode-se usar nas expressões 
aritméticas algumas funções da matemática, tais como: 
 
FUNÇÃO FUNCIONALIDADE 
Math.ceil(X) Arredonda o número real X para o inteiro superior 
Math.floor(X) Arredonda o número real X para o inteiro inferior 
Math.round(X) Arredonda o número real X para o inteiro mais próximo 
Math.sqrt(X) Calcula a raiz quadrada de X 
Math.cbrt(X) Calcula a raiz cúbica de X 
Math.pow(X, Y) Calcula a potenciação da base X elevada ao expoente Y 
Math.cos(X) Calcula o cosseno de X (sendo X em radianos) 
Math.sin(X) Calcula o seno de X (sendo X em radianos) 
Math.tan(X) Calcula a tangente de X (sendo X em radianos) 
Math.abs(X) Retorna o valor absoluto de X 
Math.log10(X) Obtém o logaritmo na base 10 de X 
Math.log(X) Obtém o logaritmo natural (na base e) de X 
Math.exp(X) Obtém o número e elevado ao expoente X 
Math.PI Retorna o valor de π 
Math.toDegrees(X) Converte o valor de X de radianos para graus 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 22 
Math.toRadians(X) Converte o valor de X de graus para radianos 
Math.max(X, Y) Retorna o maior dos dois valores X e Y 
Math.min(X, Y) Retorna o menor dos dois valores X e Y 
Math.random( ) Retorna um valor real aleatório >= 0 e < 1 
 
Math.signum(X) 
Retorna 0 se o argumento real X é igual a zero; retorna 1 se o 
argumento é maior do que zero; ou retorna -1 se o argumento 
é menor do que zero 
 
A linguagem Java possui muitas outras funções matemáticas que podem ser 
observadas detalhadamente na documentação da classe Math. 
 
8.4 Operadores Lógicos 
Serão utilizados três conectivos básicos para a formação de novas preposições a 
partir de outras já conhecidas. Os operadores lógicos são: 
 
OPERADOR OPERAÇÃO 
! Negação (Não) 
&& Conjunção (E) 
|| Disjunção (Ou) 
 
8.5 Tabelas Verdade 
Tabela Verdade é o conjunto de todas as possibilidades combinatórias entre os 
valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações. 
8.5.1 Operação Negação 
A !A 
Verdadeiro Falso 
Falso Verdadeiro 
 
8.5.2 Operação Conjunção 
A B A && B 
Verdadeiro Verdadeiro Verdadeiro 
Verdadeiro Falso Falso 
Falso Verdadeiro Falso 
Falso Falso FalsoTécnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 23 
8.5.3 Operação Disjunção 
A B A || B 
Verdadeiro Verdadeiro Verdadeiro 
Verdadeiro Falso Verdadeiro 
Falso Verdadeiro Verdadeiro 
Falso Falso Falso 
 
9 Ordem de Prioridade das Operações 
Durante a execução de uma expressão que envolve vários operadores, é 
necessária a existência de prioridades, caso contrário poder-se-á obter valores que não 
representam o resultado esperado. É a seguinte a hierarquia que a linguagem Java segue: 
1. Operações embutidas em parênteses mais internos; 
2. Funções matemáticas; 
3. Potenciações; 
4. Multiplicações e/ou divisões; 
5. Adições e/ou subtrações; 
6. Atribuições; 
7. Operadores relacionais; 
8. Operadores lógicos de negação; 
9. Operadores lógicos de conjunção e de disjunção; 
Deve-se lembrar sempre, que na ausência de ordem de prioridade, as operações 
são realizadas da esquerda para a direita. 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 24 
Capítulo III – Estrutura de Controle 
Linear (ou de Sequência) 
 
1 Estruturas de Controle 
Na criação de programas em Java, utilizamos os conceitos de: bloco lógico, 
entrada e saída de dados, variáveis, constantes, atribuições, expressões e operadores 
lógicos, relacionais e aritméticos, bem como comandos que traduzam estes conceitos de 
forma a representar um conjunto de ações. 
Para que este conjunto de ações se torne viável, deve existir uma perfeita relação 
lógica intrínseca ao modo pelo qual as ações são executadas, ao modo pelo qual é regido 
o fluxo de execução do programa. 
Através das estruturas básicas de controle do fluxo de execução, a saber: linear, 
seleção e repetição, e da combinação delas, podemos criar programas para solucionar 
nossos problemas. 
 
2 Estrutura de Controle Linear 
A estrutura linear de um programa corresponde ao fato de que o conjunto de 
ações primitivas será executado em uma sequência de cima para baixo e da esquerda 
para a direita, isto é, na mesma ordem em que foram escritas. Nenhuma das instruções 
deixará de ser executada e cada uma dessas instruções será executada apenas uma vez. 
A seguir é ilustrado o modelo de um programa linear. 
import nome_do_pacote_das_classes; 
public class Nome_da_Classe{ 
 public static void main (String args []){ 
Instrução 1; 
 Instrução 2; 
 ... 
 Instrução n; 
 } 
} 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 25 
Convencionaremos que as ações serão seguidas por ponto-e-vírgula (;), que 
objetiva separar uma ação da outra e auxiliar a organização sequencial das ações, pois 
após encontrar um (;) deveremos executar o próximo comando da sequência. 
 
3 Reunião dos Conceitos na Formação do Primeiro Programa 
Neste momento todos os conceitos apresentados até aqui serão utilizados na 
formação do primeiro programa, apenas com o intuito de junção de idéias, que em 
princípio, estavam soltas. 
O programa deve realizar a entrada de duas notas escolares e calcular a média 
dessas notas. 
import javax.swing.JOptionPane; 
public class Media{ 
 public static void main (String args []){ 
 int valor1, valor2; 
 double media; 
 valor1 = Integer.parseInt(JOptionPane.showInputDialog 
("Qual o primeiro valor?")); 
 valor2 = Integer.parseInt(JOptionPane.showInputDialog 
("Qual o segundo valor?")); 
 media = (valor1 + valor2)/2.0f; 
 JOptionPane.showMessageDialog(null, "Resultado " + 
media); 
 } 
} 
 
4 Exercícios Propostos 
E301 – Preparar um programa que dada a entrada do cateto oposto (CO) e do cateto 
adjacente (CA), calcular a hipotenusa (HIP) de um triângulo retângulo. Sabe-se que pelo 
Teorema de Pitágoras: 
 
 
 
 222 COCAHIP += 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 26 
E302 – Calcule a área (A) e o perímetro (p) de um círculo, tendo como entrada o raio. 
Pela Geometria Euclidiana Plana, sabe-se: 
 
 
 
E303 – Desenvolver um programa para ler uma temperatura na escala Celsius (Tc), 
convertê-la e apresentá-la na escala Farenheit (Tf). Pela Termometria, sabe-se: 
 
 
 
E304 – Preparar um programa para calcular o volume de uma esfera em que o raio é um 
valor lido. Pela Geometria Euclidiana Espacial, sabe-se: 
 
 
 
E305 – Uma equação quadrática apresenta a seguinte forma: AX 2 + BX + C, sendo A, B 
e C os coeficientes quadrático, linear e angular, respectivamente, da equação de 2º grau. 
Realizar a entrada dos três coeficientes, calcular e imprimir na tela o discriminante (Δ) 
da equação quadrática. Sabe-se que: 
 
 
E306 – Calcular a área de um triângulo, utilizando a fórmula de Heron (Matemático 
Grego Herão de Alexandria), dada abaixo. A entrada será composta pelos três lados 
válidos de um triângulo (L1, L2 e L3). A fórmula utiliza o conceito de semiperímetro 
(s), também dado abaixo. 
 
 
 
E307 – Ler dois valores para as variáveis A e B, e efetuar a troca 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. Ao final da troca mostrar na tela os seus novos valores. 
E308 – Uma família deseja realizar uma viagem de férias e precisa calcular: a 
quantidade de litros de combustível que será utilizada e o valor total gasto com 
 2RA ⋅= π e R2p ⋅⋅= π 
 32
5
Tc9Tf +⋅= 
3
R4V
3⋅⋅= π 
CA4B 2 ⋅⋅−=Δ
2
3L2L1Ls ++= e )3Ls()2Ls()1Ls(sA −⋅−⋅−⋅= 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 27 
combustível. Sabe-se que o automóvel possui um desempenho capaz de realizar 12 
quilômetros com um litro de combustível. Como entradas, serão informados: o tempo 
total de viagem e a velocidade média impressa durante a mesma. Sabe-se que o litro da 
gasolina custa R$ 2,93. Pela Cinemática, sabe-se: 
 
 
 
E309 – Efetuar o cálculo e a apresentação do valor de uma prestação em atraso, 
utilizando a fórmula abaixo descrita. Dados informados pelo usuário: o valor principal 
da prestação, a taxa de juros que será aplicada (em porcentagem) e o tempo de atraso 
(em dias). 
 
 
 
E310 – Construir um algoritmo que efetue o cálculo do salário líquido de um professor. 
Para resolver este problema, deve-se realizar a entrada de alguns dados, tais como: 
nome do professor, valor da hora-aula, número de horas trabalhadas no mês, percentual 
de desconto do imposto de renda e valor do desconto de INSS. Em primeiro lugar, deve-
se calcular o salário bruto, multiplicando as horas trabalhadas pelo valor da hora aula. 
Depois, devemos aplicar o percentual de desconto de Imposto de Renda sobre este 
salário bruto para gerar um salário com desconto aplicado. Após este passo, deve-se 
calcular o salário líquido subtraindo este último do valor do desconto do INSS. Como 
saída de dados, deve-se emitir o nome do professor juntamente com o seu salário bruto e 
líquido. 
E311 – Desenvolver um programa que realize a entrada das abscissas e ordenadas de 
dois pontos quaisquer A(x1, y1) e B(x2, y2) e calcule a distância entre estes pontos. 
 
 
E312 – Levando em consideração Progressões Aritméticas e Geométricas, desenvolver 
um algoritmo no qual o usuário informe: o primeiro termo a1, a razão q e a posição do 
termo a ser encontrado n. O algoritmo deverá devolver o n-ésimo (an) termo em ambas 
as séries. 
 
dT
dSVm
→
→ = 
100
TEMPOSTAXADEJUROVALORVALORPRESTAÇÃO ××+= 
( ) ( )212212 yyxxDIST −+−= 
)1(
Aritmética Progressão
1 −⋅+= nqaan 11
Geométrica Progressão
−⋅= nn qaa
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 28 
E313 – O custo ao consumidor de umcarro novo é a soma do preço de fábrica com o 
percentual de lucro do distribuidor e dos impostos aplicados ao preço de fábrica. Faça 
um programa que receba o preço de fábrica de um veículo, o percentual de lucro do 
distribuídos e o percentual de impostos, calcule e mostre: 
a) O valor correspondente ao lucro do distribuidor; 
b) O valor correspondente aos impostos; 
c) O preço final do veículo. 
E314 – Construa um algoritmo que calcule a quantidade de latas de tinta e o custo de 
uma obra de pintura interna em um tanque cilíndrico sem tampa, onde são fornecidos a 
altura e o raio desse cilindro. Sabe-se que: 
a) A lata de tinta custa R$ 50,00; 
b) Cada lata contém 5 litros; 
c) Cada litro de tinta pinta 3 metros quadrados. 
E315 – Informar o valor de N notas escolares (três, por exemplo: X1, X2 e X3) e calcular 
o desvio padrão do conjunto. 
 
 
 
 
 
 
 
 
 
 
 
 
 
⎥⎥⎦
⎤
⎢⎢⎣
⎡ ⎟⎠
⎞⎜⎝
⎛⋅−⋅−= ∑ ∑= =
N
i
N
i
ii XN
X
N
dp
1
2
1
2 1
1
1 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 29 
Capítulo IV – Estrutura de Controle de 
Seleção 
 
1 Conceito de Seleção 
 Apesar de se conseguir solucionar problemas e transformá-los em programas, os 
recursos da estrutura linear são muito limitados, pois haverá momentos em que um 
determinado valor dentro de um programa necessitará ser tratado para se efetuar um 
processamento mais adequado. 
 Uma estrutura de seleção permite a escolha de um grupo de ações e estruturas a 
ser executado quando determinadas condições, representadas por expressões lógicas, 
são ou não satisfeitas. Desta forma, conseguimos aplicar desvios condicionais aos 
programas capacitando-os a executar ou não um conjunto de instruções. 
 
2 Seleção Simples 
 
Sintaxe da estrutura: 
 
if (condição){ 
 Instrução 1; 
 Instrução 2; 
 ... 
 Instrução n; 
}//fim do if 
 
<condição> é uma expressão lógica, que quando verificada, pode gerar um 
resultado falso ou verdadeiro. Se <condição> for verdadeira, então o “bloco verdade” 
será executado; caso contrário (<condição> for falsa) o comando será encerrado. 
 Verificar-se-á, agora, o seguinte exemplo, para se analisar a estrutura de seleção 
simples: 
 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 30 
import javax.swing.JOptionPane; 
public class Notas1{ 
 public static void main (String args []){ 
 float nota1, nota2; 
 double media; 
 nota1 = Float.parseFloat(JOptionPane.showInputDialog 
("Qual a primeira nota?")); 
 nota2 = Float.parseFloat (JOptionPane.showInputDialog 
("Qual a segunda nota?")); 
 media = (nota1 + nota2)/2; 
 if (media >= 5.0f){ 
 JOptionPane.showMessageDialog(null, "Você está 
aprovado”); 
 } 
 } 
} 
 
3 Seleção Composta 
 
Sintaxe de estrutura: 
 
if (condição){ 
 Instrução 1; 
 Instrução 2; 
 ... 
 Instrução n1; 
}//fim do if 
else{ 
Instrução 1; 
 Instrução 2; 
 ... 
 Instrução n2; 
}//fim do else 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 31 
 Se a <condição> for satisfeita, então apenas o “bloco verdade” será 
executado, caso contrário, somente o “bloco falsidade” é o que será executado. Segue 
uma melhoria do programa anterior, levando em consideração duas possibilidades: 
aprovado ou reprovado. 
 
import javax.swing.JOptionPane; 
public class Notas2{ 
 public static void main (String args []){ 
 float nota1, nota2; 
 double media; 
 nota1 = Float.parseFloat(JOptionPane.showInputDialog 
("Qual a primeira nota?")); 
 nota2 = Float.parseFloat (JOptionPane.showInputDialog 
("Qual a segunda nota?")); 
 media = (nota1 + nota2)/2; 
 if (media >= 5.0f){ 
 JOptionPane.showMessageDialog(null, "Você está 
aprovado”); 
 } 
 else { 
 JOptionPane.showMessageDialog(null, "Você está 
reprovado”); 
 } 
 } 
} 
 
4 Seleção Encadeada 
 Podemos agrupar várias alternativas a fim de inspecionar uma ou mais 
condições. Geralmente tal estrutura é formada quando uma determinada instrução ou 
bloco de ações deve ser executado se um conjunto de possibilidades ou combinações de 
situações for satisfeito. 
 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 32 
Sintaxe da estrutura: 
 
if (condição 1){ 
 Instrução 1; 
}//fim do if 
else if (condição 2){ 
Instrução 2; 
 Instrução 3; 
 Instrução 4; 
}//fim do if 
else if (condição 3){ 
Instrução 5; 
}//fim do if 
else{ 
Instrução 6; 
}//fim do senão 
 
 Se <condição 1> for satisfeita, então a instrução 1 será executada, caso 
contrário, a <condição 2> será inspecionada e se for satisfeita, então o bloco de 
ações (instrução 2, instrução 3, instrução 4) será executado, caso contrário a 
<condição 3> será verificada e se for satisfeita, a instrução 5 será executada, caso 
contrário a instrução 6 é que será executada. Segue uma melhoria do programa anterior, 
levando em consideração três possibilidades: aprovado, reprovado ou recuperação. 
 
import javax.swing.JOptionPane; 
public class Notas3{ 
 public static void main (String args []){ 
 float nota1, nota2; 
 double media; 
 nota1 = Float.parseFloat(JOptionPane.showInputDialog 
("Qual a primeira nota?")); 
 nota2 = Float.parseFloat (JOptionPane.showInputDialog 
("Qual a segunda nota?")); 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 33 
 media = (nota1 + nota2)/2; 
 if (media >= 8.0f){ 
 JOptionPane.showMessageDialog(null, "Você está 
aprovado direto”); 
 } 
 else if (media >= 4.0f){ 
 JOptionPane.showMessageDialog(null, "Você 
está de recuperação”); 
} 
else{ 
 JOptionPane.showMessageDialog(null, "Você 
está reprovado”); 
 } 
 } 
} 
 
5 Seleção de Múltipla Escolha 
 Quando uma única variável pode assumir diversos valores e que as instruções a 
serem executadas dependam do valor armazenado nesta variável, pode-se usar a 
estrutura de seleção de múltipla escolha. Estas situações são classificadas como 
mutuamente exclusivas, isto é, se uma situação for executada, as demais não serão. 
Seria uma forma mais compacta da Seleção encadeada. 
 
Sintaxe da estrutura: 
 
switch (variável){ 
case valor 1: lista de comandos; 
 break; 
case valor 2: lista de comandos; 
 break; 
... 
default: lista de comandos; 
} 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 34 
Exemplo: Construa um programa que, tendo como dados de entrada o custo de 
produção de um produto e um código de origem, emita o preço final ao consumidor, 
levando em consideração os custos de impostos. Código de Região de Origem: 
1- Sul (20%) 
2- Norte (21%) 
3- Sudeste (15%) 
4- Centro-Oeste (23%) 
5- Nordeste (19%) 
 
import javax.swing.JOptionPane; 
public class PrecoFinal{ 
 public static void main (String args []){ 
 int regiao; 
 float valor; 
 valor = Float.parseFloat(JOptionPane.showInputDialog 
("Informe o valor de custo do produto?")); 
 regiao = Integer.parseInt (JOptionPane.showInputDialog 
("1-Sul\n2-Norte\n3-Sudeste\n4-Centro-Oeste\n5-Nordeste\n 
Informe a região:")); 
 switch(regiao){ 
 case 1: 
 JOptionPane.showMessageDialog(null, "Preço do 
Produto na Região Sul = R$” + (valor*1.21)); 
 break; 
 case 2: 
 JOptionPane.showMessageDialog(null, "Preço do 
Produto na Região Norte = R$” + (valor*1.20)); 
 break; 
 case 3: 
 JOptionPane.showMessageDialog(null, "Preço do 
Produto na Região Sudeste = R$” + (valor*1.15)); 
 break; 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 35case 4: 
 JOptionPane.showMessageDialog(null, "Preço do 
Produto na Região Centro-Oeste = R$” + (valor*1.23)); 
 break; 
 case 5: 
 JOptionPane.showMessageDialog(null, "Preço do 
Produto na Região Nordeste = R$” + (valor*1.19)); 
 break; 
 default: JOptionPane.showMessageDialog(null, "Região 
Inválida!!! Entre Novamente!!!”); 
 } 
 } 
} 
 
6 Exercícios Propostos 
E401 – Desenvolver um programa que realize a entrada do raio de uma esfera. Deve-se 
realizar tratamento de exceção sobre a entrada. Isto é, se o raio for válido (maior do que 
zero), deve-se calcular e apresentar na tela o volume da esfera, caso contrário, o cálculo 
não será realizado e apenas uma mensagem de erro será exibida ao usuário. Sabe-se 
que: 
 
 
 
E402 – Preparar um programa para realizar a entrada dos três coeficientes de uma 
equação quadrática, a saber: A, B e C; e calcular e imprimir as raízes da equação 
quadrática: X1 e X2, se as mesmas forem reais. Caso sejam imaginárias, apresentar 
mensagem de erro na tela. Sabe-se que: 
 
 
 
E403 – O Greenpeace deseja desenvolver um programa para controlar o índice de 
poluição das cidades. Para isto, guarda duas listas (A e B) de empresas que contribuem 
para o aumento da poluição. Mensalmente, é medido in loco, o índice de poluição (varia 
A2
Bx1
Δ+−= e 
A2
Bx2
Δ−−= 
3
R4V
3⋅⋅= π 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 36 
obrigatoriamente entre 0 e 1) que será a entrada única do programa e o mesmo deverá 
emitir as seguintes mensagens: 
“Tudo normal!”, caso o índice fique entre 0,00 e 0,30; 
“Fechar as empresas da lista A!”, caso o índice ultrapasse 0,30; 
“Fechar as empresas da lista A e B!”, caso o índice ultrapasse 0,40; 
“Evacuar a cidade! Socorro!”, caso o índice ultrapasse 0,50. 
E404 – Elaborar um programa para ler três números inteiros A, B e C. Caso existam 
números iguais, uma mensagem de erro para o usuário deve ser emitida. Caso contrário, 
encontrar o maior, o menor e o médio elemento entre eles. 
E405 – Desenvolver um programa para dada a entrada de três lados de um triângulo (A, 
B e C), primeiramente verificar a sua possível formação, lembrando que cada lado deve 
ser inferior a soma dos outros dois lados. Em caso afirmativo de formação, classificar o 
triângulo em: equilátero, isósceles ou escaleno. 
E406 – Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um 
programa que calcule e escreva o seu peso ideal, utilizando as seguintes fórmulas: 
 Para homens: (72,7 x H) - 58 
 Para mulheres: (62,1 x H) - 44,7, sendo H a altura lida. 
E407 – Elabore um programa que, dada a idade do nadador, classifique-os em uma das 
seguintes categorias, sendo que qualquer outra idade deve ser tratada como exceção: 
 infantil A: 4 a 7 anos 
 infantil B: 8 a 10 anos 
 juvenil A: 11 a 13 anos 
 juvenil B: 14 a 17 anos 
 profissional: 18 a 39 anos 
sênior: 40 a 99 anos 
E408 – Escreva um programa que converta notas quantitativas em notas qualitativas de 
acordo com a tabela abaixo: 
Nota Quantitativa Nota Qualitativa 
0 a 2 Sem rendimento 
>2 a 4 Mau 
>4 a 6 Regular 
>6 a 8 Bom 
>8 a 10 Excelente 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 37 
E409 – Escreva um programa cuja saída seja o número de dias em um mês, usando 
como entrada o número do mês (1 a 12) e o ano, se necessário. O programa deve tratar 
corretamente os anos bissextos. 
E410 – Um sebo está fazendo uma promoção para pagamento à vista em que o 
comprador pode escolher dois critérios de pagamento: 
Critério A: R$ 2,50 por livro + R$ 75,00 de taxa fixa. 
Critério B: R$ 5,00 por livro + R$ 25,00 de taxa fixa. 
Faça um programa em que o usuário digite a quantidade de livros que deseja comprar e 
o programa diga qual é a melhor opção de compra. 
E411 – Faça um programa que receba o código correspondente ao cargo de um 
funcionário e seu salário atual e mostre o cargo, o valor do aumento e seu novo salário. 
Os cargos estão na tabela abaixo: 
Código Cargo Percentual 
1 Escriturário 50% 
2 Secretário 35% 
3 Caixa 20% 
4 Gerente 10% 
5 Diretor Não tem aumento 
 
E412 – Um endocrinologista deseja controlar a saúde de seus pacientes, e para isso, se 
utiliza o índice de massa corporal (IMC). Sabendo que o IMC é calculado através da 
fórmula IMC = peso/altura2, crie um algoritmo que apresente o nome do paciente e a 
faixa de risco, baseado na seguinte tabela: 
IMC Faixa de Risco 
Abaixo dos 20 Abaixo do peso 
A partir dos 20 até 25 Normal 
A partir dos 25 até 35 Excesso de peso 
A partir dos 35 até 50 Obesidade 
A partir dos 50 Obesidade Mórbida 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 38 
E413 – Um comerciante calcula o valor de venda, tendo em vista a tabela abaixo. Crie 
um algoritmo que entre com o valor da compra e o nome do produto. O programa 
deverá imprimir o nome do produto e o valor da venda. 
 
Valor da compra Valor da Venda 
Valor < 10,00 Lucro de 70% 
 10,00 <= Valor < 20,00 Lucro de 60% 
 20,00 <= Valor <= 40,00 Lucro de 50% 
Valor > R$ 40,00 Lucro de 30% 
 
E414 – Escreva um programa que leia um peso (massa) no planeta Terra e o número de 
um planeta e imprima o valor do seu peso (massa relativa) neste planeta. A relação de 
planetas é dada a seguir, juntamente com o valor das gravidades nos referidos planetas. 
# Gravidade local Planeta 
1 3,78 Mercúrio
2 8,60 Vênus 
3 3,72 Marte 
4 22,90 Júpiter 
5 9,05 Saturno 
6 7,77 Urano 
7 11,00 Netuno 
8 0,30 Plutão 
Para calcular o peso no planeta use a fórmula: 
 
 
 
E415 – Desenvolver um programa que simule um empréstimo em um banco. Como 
entradas serão necessários: valor a ser emprestado (P), tempo de empréstimo em meses 
(n), taxa de juros ao mês em porcentagem (i) e se o modelo é juros simples ou juros 
compostos. As saídas deverão ser em R$: o montante a ser pago (S) e o valor das 
parcelas (V). 
 
 
81,9
planeta
terraplaneta
g
PP ⋅= 
n
SV
niPS
=
⎟⎠
⎞⎜⎝
⎛ ⋅+⋅=
100
1
Simples Juros 
 
n
SV
iPS
n
=
⎟⎠
⎞⎜⎝
⎛ +⋅=
100
1
Compostos Juros
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 39 
Capítulo V – Estrutura de Controle de 
Repetição 
 
1 Conceito de Repetição 
 Na estrutura linear sabemos que os comandos são executados uma única vez e 
um após o outro (de cima para baixo). Com o estudo da seleção, acrescenta-se a 
possibilidade de escolher instruções a serem executadas, mas cada instrução continua 
sendo executada apenas uma vez, no máximo. Em programação é frequentemente 
necessário repetir a execução de um grupo de instruções, ou mesmo repetir a execução 
de todo o programa, para diferentes valores de dados. 
 
 Figura 6: “Boa” aplicação do conceito de repetição. 
 
Em programação, uma sequência de instruções executada repetidas vezes é 
chamada de laço (ou loop). Um laço é constituído por uma sequência de instruções, o 
corpo do laço, e por uma estrutura que controla a repetição deste corpo, especificando 
quantas vezes ele terá de ser repetido. 
 As instruções que constituem o corpo de um laço podem ser executadas qualquer 
número de vezes (até mesmo nenhuma), mas este número é finito. Existem erros 
semânticos que podem provocar a execução interminável do corpo do laço, caso que se 
diz que o laço é infinito. 
 Existem três estruturas que permitem a especificação de laços em linguagem 
Java: for, while e do while. 
Os laços de repetição podem ser classificados em laços determinados ou laços 
indeterminados. Os laços determinados são aqueles na qual podemos definirquantas 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 40 
vezes o corpo do laço irá se repetir antes da execução. Nos laços indeterminados isto 
não é possível, pois o número de repetições irá depender da entrada do usuário. 
 
2 Repetição com Variável de Controle 
A estrutura de repetição com variável de controle repete a execução do bloco um 
número fixo de vezes através da manipulação de uma variável do tipo inteira, pois ela 
possui limites fixos. O número de repetições do bloco será determinado por: valor 
inicial da variável, condição de parada e valor do incremento ou decremento. 
 Na estrutura for, usar-se-á o conceito de variável de controle, que será uma 
variável v que será incrementada ou decrementada após a repetição de um bloco de 
acordo com o valor deste incremento. 
 
Sintaxe da estrutura: 
 
for(v = vi; v <= vf; v++){ 
 instrução 1; 
 instrução 2; 
instrução 3; 
 ... 
instrução n; 
} 
Onde: 
Vi: valor inicial; e Vf: valor final 
 
A estrutura Para só aceita repetições determinadas e nestes casos será a estrutura 
mais conveniente. Usar-se-á o exemplo da soma dos 100 primeiros números inteiros e 
positivos. 
 
import javax.swing.JOptionPane; 
public class Soma100_1{ 
 public static void main (String args []){ 
 int numero,soma; 
 soma = 0; 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 41 
 for (numero=1; numero<=100; numero++){ 
 soma = soma + numero; 
 } 
 JOptionPane.showMessageDialog(null, "Soma = ”+soma); 
 } 
} 
3 Repetição com Teste no Início 
 Consiste numa estrutura de controle de fluxo que permite executar de forma 
repetitiva uma instrução (ou bloco de instruções) enquanto uma determinada expressão 
lógica tiver o valor verdadeiro, porém, sempre verificando antes de cada execução se é 
permitido repetir o mesmo trecho. 
 
Sintaxe da estrutura: 
 
while (condição){ 
 instrução 1; 
 instrução 2; 
instrução 3; 
 ... 
instrução n; 
} 
 
Enquanto a condição for satisfeita, as instruções de 1 a n serão repetidas, caso 
contrário, o comando é abandonado (sai do laço). Se já da primeira vez o resultado for 
falso, os comandos serão executados nenhuma vez. 
 A estrutura de repetição com teste no final while pode ser usada para construir 
laços determinados ou indeterminados. Seguem alguns exemplos de como estes tipos de 
laços funcionam: 
 
Exemplo para laços determinados: Construir um programa para calcular a soma dos 
100 primeiros números inteiros e positivos. 
 
import javax.swing.JOptionPane; 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 42 
public class Soma100_2{ 
 public static void main (String args []){ 
 int numero = 1, soma = 0; 
 while (numero <= 100){ 
 soma = soma + numero; 
 numero = numero + 1; 
 } 
 JOptionPane.showMessageDialog(null, “Soma” = +soma); 
 } 
} 
 
Exemplo para laços indeterminados (uso de finalizadores ou flags): Construir um 
programa que, dado um conjunto de valores inteiros positivos, determinar o maior valor 
do conjunto. O valor 0 (zero) é usado como finalizador do conjunto de entrada. 
import javax.swing.JOptionPane; 
public class MaiorElemento_1{ 
 public static void main (String args []){ 
 int valor, maior; 
 valor = -1; 
 maior = 0; 
 while (valor != 0){ 
 if (valor > maior) { maior = valor; } 
 valor = Integer.parseInt(JOptionPane.showInputDialog 
(“Informe um novo valor (0 para sair):”)); 
 } // fim do laço 
 if (maior == 0){ 
JOptionPane.showMessageDialog(null, "Não foram 
entrados valores válidos”); 
 } 
 else{ 
 JOptionPane.showMessageDialog(null, "Maior = ”+maior); 
 } 
} 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 43 
4 Repetição com Teste no Final 
 Consiste numa estrutura que permite que um bloco ou uma ação primitiva seja 
repetida até que uma determinada condição não seja satisfeita. Tem a mesma finalidade 
do comando while. Porém, a diferença básica entre as estruturas while e do while é que 
nesta última, o bloco é executado pelo menos uma vez independentemente da validade 
da condição, pois a inspeção da condição só é feita após a execução do bloco ou ação 
primitiva. 
Da mesma forma que a estrutura while, a estrutura do while também serve para 
construir laços determinados e indeterminados. Far-se-á os mesmos exemplos para 
podermos comparar as duas estruturas. 
Sintaxe da estrutura: 
do{ 
 instrução 1; 
 instrução 2; 
instrução 3; 
 ... 
instrução n; 
} while (condição); 
 
Exemplo para laços determinados: Construir um programa para calcular a soma dos 
100 primeiros números inteiros e positivos. 
import javax.swing.JOptionPane; 
public class Soma100_3{ 
 public static void main (String args []){ 
 int numero = 1, soma = 0; 
 do{ 
 soma = soma + numero; 
numero = numero + 1; 
 } while (numero <= 100); 
 JOptionPane.showMessageDialog(null, “Soma = ”+soma); 
 } 
} 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 44 
Exemplo para laços indeterminados (uso de finalizadores ou flags): Construir um 
programa que, dado um conjunto de valores inteiros positivos, determinar o maior valor 
do conjunto. O valor 0 (zero) é usado como finalizador do conjunto de entrada. 
import javax.swing.JOptionPane; 
public class MaiorElemento_2{ 
 public static void main (String args []){ 
 int valor, maior; 
 valor = -1; 
 maior = 0; 
 
 
 do{ 
 if (valor > maior) { maior = valor; } 
 valor = Integer.parseInt(JOptionPane.showInputDialog 
(“Informe um novo valor (0 para sair):”)); 
 } while (valor != 0); // fim do laço 
 if (maior == 0){ 
JOptionPane.showMessageDialog(null, "Não foram 
entrados valores válidos”); 
 } 
 else{ 
 JOptionPane.showMessageDialog(null, "Maior = ”+maior); 
 } 
} 
 
5 Exercícios Propostos 
E501 – Preparar um algoritmo para ler 15 números inteiros e verificar quantos deles são 
pares. 
E502 – Sendo H = 1 + 1/2 + 1/3 +...+ 1/(N – 1) + 1/N, prepare um algoritmo para gerar 
o número H, onde o número N é fornecido pelo usuário. 
E503 – Escrever um programa que imprima a soma dos inteiros ímpares de 1 até N, 
onde N deve ser fornecido como entrada e testado para ser um número ímpar maior que 
1. 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 45 
E504 – Para dado um valor N, inteiro, calcular o fatorial de N. Sabe-se que por 
definição: 0! = 1 e não existe fatorial de número negativo. 
 
 
E505 – Preparar um programa que informe 50 notas escolares do tipo real de uma turma 
e calcule a média desta turma. Porém, o programa tem que fazer tratamento máximo de 
exceção da entrada, isto é, cada vez que o usuário digitar uma nota menor que zero ou 
maior do que dez, esta nota deve ser desconsiderada e a mesma nota deverá ser 
solicitada novamente. 
E506 – Calcular a soma dos 50 primeiros termos da série: 
 
 
E507 – O matemático Fibonacci em 1202 formulou e resolveu o problema de 
reprodução de coelhos através da sequência: 1, 1, 2, 3, 5, 8, 13, 21, 34,... Percebemos a 
seguinte relação de recorrência: an+1 = an-1 + an. Escreva um algoritmo que gere a 
impressão da série de Fibonacci até o trigésimo termo. 
E508 – Escreva um algoritmo para ler um conjunto de fichas, contendo cada uma a 
altura e o código do sexo de uma pessoa (1 = masculino e 2 = feminino), calcule e 
escreva: a maior altura entre as mulheres e a média de altura entre os homens. A última 
ficha contém o código do sexo = 3, que não deve ser considerada. 
E509 – Escrever um programa que calculea seguinte soma: 
 
 
 
E510 – O valor aproximado de pi pode ser calculado usando a série abaixo até o 
vigésimo termo: 
 
 
 
 
E511 – Fazer um programa que dada a entrada do expoente x, calcule o valor de ex 
através da série até o décimo termo: 
 
( ) ( ) 12...21! ⋅⋅⋅−⋅−⋅= NNNN 
...
9
4
7
3
5
2
3
1 +−+−=S 
1
2...
48
2
49
2
50
2 50321 +++ 
3
33333
32 
...
9
1
7
1
5
1
3
1
1
1
×=
−+−+−=
S
S
π
 
...
!3!2!1
321
0 xxxxe x +++= 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 46 
E512 – Uma empresa de energia elétrica está interessada em um relatório contendo: 
• A média da quantidade de energia gasta por todos os consumidores residenciais, 
comerciais e industriais, separadamente; e 
• O código do assinante que consumiu a maior quantidade de energia residencial; 
 Para isto é feita a leitura de fichas contendo: código do assinante, quantidade de 
energia e a categoria (1 = residencial, 2 = comercial e 3 = industrial). O final do 
conjunto de assinantes é dado por um código de assinante igual a 0 (zero). 
E513 – Um número primo é aquele que somente é divisível por ele mesmo e pela 
unidade. Desenvolver um programa que dada a entrada de um número, informar se ele é 
primo ou não. 
E514 – Faça um programa que receba o valor de um carro e mostre uma tabela com os 
seguintes dados: preço final, quantidade de parcelas e o valor da parcela. Considere o 
seguinte: 
• O preço final para compra à vista tem desconto de 10%; 
• A quantidade de parcelas e os percentuais e acréscimo encontram-se no quadro a 
seguir: 
Quantidade 
de Parcelas 
Percentual de 
Acréscimo 
6 3% 
12 6% 
18 9% 
24 12% 
30 15% 
36 18% 
42 21% 
48 24% 
54 27% 
60 30% 
 
E515 – Uma empresa de telefonia deseja calcular as contas telefônicas de seus 
assinantes. A cobrança de seus serviços é feita da seguinte maneira: 
a) Tarifa básica: 
• Telefone residencial (código 1): R$ 20,00 
• Telefone comercial (código 2): R$ 70,00 
b) Serviço de telefonia: 
• R$ 1,20 por minuto excedente (acima de 90 minutos). 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 47 
c) Serviço de internet: 
• R$ 5,00 por dia. 
Na entrada de dados teremos: 
• Código do assinante; 
• Tipo do telefone (comercial ou residencial); 
• Número de minutos registrados e número de dias de uso da Internet. 
Faça um programa que leia os dados de um conjunto de assinantes (o código do 
assinante igual a zero encerra a entrada de dados), calcule e imprima: 
• Para cada assinante, o total de sua conta; 
• Valor da maior conta e o código do assinante que a pagou; 
• Valor médio arrecadado por assinante no mês. 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 48 
Capítulo VI – Vetores e Matrizes 
 
1 Tipos Construídos 
 Retornando ao conceito de tipos de dados, podemos notar que foi feita uma 
divisão, a fim de tornar mais simples a classificação das informações. Podemos 
perceber, também, que a quantidade de tipos de dados estipulados (tipos primitivos) não 
é suficiente para representar toda e qualquer informação que possa surgir. Como estes 
recursos de representação são escassos, poderíamos resolver o problema se existissem 
mais tipos de dados ou, ainda melhor, se esses tipos pudessem ser “construídos”, à 
medida que se fizessem necessários. 
 A partir de agora, apresentar-se-á uma técnica de programação que permitirá 
trabalhar com o agrupamento de várias informações dentro de uma mesma variável. 
Vale salientar que este agrupamento ocorrerá obedecendo sempre ao mesmo tipo de 
dado, isto é, cria-se um novo dado que é homogêneo. 
 
2 Vetores 
 Um vetor é uma coleção de variáveis de um mesmo tipo que compartilham o 
mesmo nome e que ocupam posições consecutivas de memória. Cada variável da 
coleção denomina-se elemento e é identificada por um índice. 
 
 
 Figura 7: Representação de um vetor. 
 
Sua utilização mais comum está vinculada à criação de tabelas. Caracteriza-se 
por ser definida uma única variável dimensionada com um determinado tamanho. A 
dimensão de um vetor é constituída por constantes inteiras e positivas. Os nomes dados 
aos vetores seguem as mesmas regras de nomes utilizados em variáveis simples. A 
sintaxe para a declaração de um vetor é: 
 
Sintaxe da estrutura: 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 49 
<tipo> <identificador>[]; ou 
<tipo>[] <identificador>; 
 
 Algumas linguagens permitem determinar o primeiro índice do vetor. Em Java, 
porém, o primeiro índice é sempre 0 (zero). Assim, um vetor com tamanho n tem 
índices que variam de 0 a n–1. 
Em Java, os vetores são objetos, permitindo o uso de atributos (propriedades) e a 
aplicação de métodos. Com isso, além da declaração, é necessário criar esse objeto na 
memória, determinando seu tamanho, para poder utilizá-lo (n). Essa criação pode ser 
feita utilizando-se o operador new. 
 
<tipo> <identificador>[] = new <tipo_primitivo>[n]; ou 
<tipo>[] <identificador> = new <tipo_primitivo>[n]; 
 
Em orientação a objetos a criação de um objeto é chamada instanciação. O 
operador new associado ao nome da classe chama o método construtor dessa classe, 
responsável pela inicialização de um novo objeto e sua alocação na memória. Todo tipo 
primitivo de dados possui uma classe empacotadora de tipo correspondente, no pacote 
Java.lang. 
 
3 Entrada, manipulação e saída de dados em Vetores 
Uma variável simples somente pode conter um valor por vez. No caso dos 
vetores, estes poderão armazenar mais de um valor por vez, pois são dimensionadas 
exatamente para este fim. Por consequência, a manipulação dos elementos de um vetor 
ocorrerá de forma individualizada, pois não é possível efetuar a manipulação de todos 
os elementos do conjunto ao mesmo tempo. 
Apresentamos, a seguir, um exemplo de um vetor usado para guardar os nomes 
dos meses do ano. 
 
String meses[ ] = new String[12]; 
meses[0] = “Janeiro”; 
meses[1] = “Fevereiro”; 
... 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 50 
meses[10] = “Novembro”; 
meses[11] = “Dezembro”; 
 Outra forma de declarar e inicializar um vetor em Java é pelo uso da 
inicialização direta, que consiste em incluir ambas as operações em uma única 
instrução, por exemplo, a linha de código: 
int meses[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} 
Tanto a entrada como a saída de dados manipulada com um vetor é processada 
passo a passo, um elemento por vez. Estes processos são executados com o auxílio de 
um laço de repetição para manipulação de todos os índices do vetor. Verificar-se-á 
agora uma aplicação de um vetor: desenvolver um programa para calcular a média geral 
de uma turma de cinquenta alunos. 
 
import javax.swing.JOptionPane; 
public class Media_Turma{ 
 public static void main (String args []){ 
 final int tamanho = 50; 
 float notas[] = new float [tamanho]; 
 float somaNotas = 0, media; 
 int contNotas = 0; 
 for (int i=0; i<tamanho; i++){ 
 notas[i]=Float.parseFloat(JOptionPane.showInputDialog 
(“Informe a”+ (i+1)+ “a. Nota:”)); 
 if (notas[i]>=0.0f && notas[i]<=10.0f){ 
 contNotas++; 
 somaNotas = somaNotas + notas[i]; 
 } 
 } 
 if (contNotas == 0){ 
 JOptionPane.showMessageDialog(null, “Não foram 
entrados dados válidos!!!”); 
 } 
 
 
Técnicas de Programação em Java – Prof. D.Sc. Eng. Emerson Cordeiro Morais 51 
 else{ 
 media = somaNotas/contNotas; 
 JOptionPane.showMessageDialog(null,

Continue navegando

Outros materiais