Sunteți pe pagina 1din 10

Linguagem de Programao 1

Estrutura Condicional em Java


O Java contm trs tipos de instrues de seleo. A instruo if realiza uma
ao se uma condio for verdadeira ou pula a ao se a condio for falsa. A instruo
if... else realiza uma ao se uma condio for verdadeira e realiza uma ao
diferente se a condio for falsa. A instruo de seleo switch realiza uma de muitas
aes diferentes, dependendo do valor de uma expresso.
A instruo if uma instruo de uma nica seleo porque seleciona ou
ignora uma nica ao (ou um nico grupo de aes). A instruo if... else
chamada instruo de seleo dupla porque seleciona entre duas aes diferentes (ou
grupos de aes). A instruo switch chamada de instruo de seleo mltipla uma
vez que seleciona entre muitas aes diferentes (ou grupos de aes).

Instruo de uma nica seleo


A instruo IF uma instruo de controle de uma nica entrada e uma nica
sada.
Exemplo 1: verificar se um nmero fornecido pelo usurio impar. Se for, exibir a
mensagem O nmero _____ informado mpar.
import javax.swing.JOptionPane;
public class impar {
public static void main(String args[]){
int numero;
numero = Integer.parseInt(JOptionPane.showInputDialog
("Digite um nmero"));
/*avalia se o nmero impar
* ao verificar se o resto da divso por 2
* igual a 1
*/
if (numero % 2 == 1){
JOptionPane.showMessageDialog(null,
"O nmero "+numero+" mpar");
}
}
}

Exemplo 2: determinar o maior de dois nmeros dados. Suponha que o primeiro deles
o maior, armazenando-o em uma varivel MAIOR e depois, compare se os maior
procurado o segundo dos nmeros dados, neste caso o contedo da varivel MAIOR
deve ser alterado.
//importa para utilizar a classe Scanner
import java.util.*;
//o nome da nova classe
public class maior_de_dois {
//a funo principal
public static void main(String args[]){
//declara entrada como Scanner, para ler do teclado
Scanner entrada = new Scanner(System.in);
//declara as trs variveis
int a, b, maior;
//exibe uma mensagem solicitando a digitao dos nmeros
System.out.println("Digite dois nmeros inteiros: ");
//armazena os nmeros em a e b
a = entrada.nextInt();
http://erinaldosn.wordpress.com

2 Estrutura Condicional
b = entrada.nextInt();
//atribui a para maior
maior = a;
//verifica se b maior que a
if (b > a){
//se for, atribui b para maior
maior = b;
}
//exibe a mensagem com os dois valores digitados e o valor
de maior
System.out.printf("O maior dos nmeros %d e %d %d",
a,b,maior);
}
}

Exemplo 3: ordenar os contedos das variveis X e Y. S h necessidade de se realizar


alguma ao se o contedo de Y for maior que o contedo de X. Neste caso, deve-se
fazer a permuta dos contedos de X e de Y.
//para usar a classe Graphics
import java.awt.*;
//para usar a classe JApplet e JOptionPane
import javax.swing.*;
//classe principal
public class ordena extends JApplet{
//declarao de variveis de instncia
int X, Y;
//mtodo para receber informaes
public void init(){
//variveis que recebero dados digitados pelo usurio
String num1, num2;
//varivel auxiliar para ordenao
int AUX;
//atribui o valor digitado para num1 e num2
num1 = JOptionPane.showInputDialog(
"Digite o valor de X");
num2 = JOptionPane.showInputDialog(
"Digite o valor de Y");
//atribui num1 e num2 para X e Y
X = Integer.parseInt(num1);
Y = Integer.parseInt(num2);
//mostra os valores de X e Y na ordem que foram digitados
JOptionPane.showMessageDialog(null,
"Nmeros digitados: X "+X
+" Y "+Y);
//verifica se X maior que Y
if (X > Y){//se for
//atribui X para a varivel auxiliar
AUX = X;
//atribui Y para X
X = Y;
/*Y receber o valor de X
* que ficou armazenado
* na varivel auxiliar
*/
Y = AUX;
}
}
public void paint(Graphics g){
super.paint(g);
//desenha um retngulo
g.drawRect(10, 10, 200, 30);
http://erinaldosn.wordpress.com

Linguagem de Programao 3
//escreve os valores ordenados de X e Y
g.drawString("Nmeros ordenados: X "+X
+" Y "+Y, 20, 30);
}
}

A instruo if de uma nica seleo realiza uma ao indicada somente quando


a condio true; caso contrrio, a ao pulada.

Instruo de seleo dupla


A instruo de seleo dupla if... else permite que o programao
especifique uma ao a realizar quando a condio verdadeira e uma ao diferente
quando a condio falsa.
Exemplo 1: a empresa XSoftwares Ltda. concedeu um bnus de 20% do valor do
salrio a todos os funcionrios com tempo de trabalho na empresa igual ou superior a
cinco anos, e 10% aos demais. Calcular e exibir o valor do bnus.
import javax.swing.JOptionPane;
public class bonus {
public static void main(String args[]){
//declarao das variveis necessrias para a resoluo do
problema
float salario, premio;
int tempo;
//leitura (entrada) dos valores com as converses adequadas
salario = Float.parseFloat(JOptionPane.showInputDialog(
"Salrio"));
tempo = Integer.parseInt(JOptionPane.showInputDialog(
"Tempo de empresa"));
//avalia a condio:
if (tempo >= 5){
//se o resultado for verdadeiro
premio = salario * 0.20f;
}
else{
//se o resultado for falso
premio = salario * 0.10f;
}
JOptionPane.showMessageDialog(null, "O valor do bnus :
"+premio);
}
}

Exemplo 2: calcule a rea de um tringulo, dados os comprimentos dos seus lados. Para
os nmeros serem comprimentos dos lados de um tringulo, cada um deles precisa ser
menor que a soma dos outros dois.
//para usar a classe JOptionPane
import javax.swing.*;
//para formatar nmeros reais
import java.text.DecimalFormat;
//classe principal
public class area_triangulo {
//funo principal
public static void main(String args[]){
//num_real recebe o formato de nmero decimal
DecimalFormat num_real = new DecimalFormat ("0.000");
//declarao das variveis
float x, y, z, area, semiper;
//atribuio dos valores para x, y e z
http://erinaldosn.wordpress.com

4 Estrutura Condicional
x = Float.parseFloat(JOptionPane.showInputDialog(
"Digite o primeiro lado: "));
y = Float.parseFloat(JOptionPane.showInputDialog(
"Digite o segundo lado: "));
z = Float.parseFloat(JOptionPane.showInputDialog(
"Digite o terceiro lado: "));
//verifica se cada lado menor que a soma dos outros dois
if ((x < y+z) && (y < x+z) && (z < x+y)){//se for
//acha o semipermetro
semiper = (x + y + z)/2;
//calcula a rea
area = (float)Math.sqrt(semiper*
(semiper-x)*(semiper-y)*(semiper-z));
//exibe a rea no formato de num_real
JOptionPane.showMessageDialog(null,
"A rea do tringulo :
"+num_real.format(area));
}
else{//caso a verificao seja falsa
//exibe a mensagem informando que no um tringulo
JOptionPane.showMessageDialog(null,
"Os valores no podem ser comprimentos
dos lados de um tringulo");
}
}
}

Operador condicional
O Java fornece o operador condicional ?:, que pode ser utilizado no lugar de
uma instruo if... else. Esse o nico operador ternrio1 do Java. Juntos, os
operandos e o smbolo ?: formam uma expresso condicional.
O primeiro operando ( esquerda do ?) uma expresso booleana2, o segundo
operando (entre o ? e :) o valor da expresso condicional se a expresso booleana for
true, e o terceiro operando ( direita do :) o valor da expresso condicional se a
expresso booleana for avaliada como false.
Exemplo: imprimir Aprovado se a mdia do aluno for maior ou igual a 60, mas
imprimir Reprovado se for menor que 60.
import java.util.Scanner;
public class mediaaluno {
public static void main(String args[]){
Scanner entrada = new Scanner(System.in);
float media;
System.out.print("Digite a mdia do aluno: ");
media = entrada.nextFloat();
System.out.println(media>=60 ? "Aprovado" : "Reprovado");
}
}

Instrues if... else aninhadas


Um programa pode testar mltiplos casos colocando instrues if... else
dentro de outras instrues if... else para criar instrues if... else
aninhadas.

1
2

Significa que ele recebe trs operandos.


Uma condio que avalia um valor boolean true ou false.
http://erinaldosn.wordpress.com

Linguagem de Programao 5

Exemplo 1: receba trs valores fornecidos pelo usurio que representaro os lados de
um tringulo. Verifique se os valores formam um tringulo e classifique esse tringulo
como:
a) Equiltero: trs lados iguais.
b) Issceles: dois lados iguais.
c) Escaleno: trs lados diferentes.
Lembre-se de que, para formar um tringulo, nenhum dos lados pode ser igual a
zero, um lado no pode ser maior do que a soma dos outros dois.
import javax.swing.*;
public class triangulo {
public static void main (String args[]){
//declara as variveis A, B e C
int A, B, C;
//inicializa as variveis
A = Integer.parseInt(JOptionPane.showInputDialog("Lado
A"));
B = Integer.parseInt(JOptionPane.showInputDialog("Lado
B"));
C = Integer.parseInt(JOptionPane.showInputDialog("Lado
C"));
//verifica se os lados no so iguais a zero
if (A != 0 && B != 0 && C != 0){
//verifica se um lado no maior que a soma dos
outros dois
if (A+B > C && A+C>B && B+C > A){
//verifica se todos os lados so diferentes
if (A != B && A != C && B != C){
JOptionPane.showMessageDialog(null,
"Escaleno");
}
//caso no sejam todos diferentes
else{
//verifica se todos os lados so iguais
if (A == B && B == C){
JOptionPane.showMessageDialog(null,
"Equiltero");
}
//caso no sejam todos iguais
else{
JOptionPane.showMessageDialog(null,
"Issceles");
}
}
}
//caso a soma de dois lados no seja maior que um dos
lados
else{
JOptionPane.showMessageDialog(null, "No forma
um tringulo");
}
}
//caso algum dos lados seja igual a zero
else{
JOptionPane.showMessageDialog(null, "No forma um
tringulo");
}
}
}

http://erinaldosn.wordpress.com

6 Estrutura Condicional

Exemplo 2: determine as razes de uma equao do segundo grau. Sabendo que uma
quao ax2 + bx + c = 0 s tem razes se b24ac
0. Alm disso, para que ela
seja do segundo grau, deve-se ter a
0.
//para ler do teclado
import java.util.Scanner;
//para formatar nmero decimal
import java.text.DecimalFormat;
//programa
public class eqgrau2 {
//principal
public static void main(String args[]){
//declara entrada para ler do teclado
Scanner entrada = new Scanner(System.in);
//declara num_real para nmeros decimais
DecimalFormat num_real = new DecimalFormat("0.0");
//declarao de variveis
float a, b, c, x1, x2, delta;
//recebe os valores da equao
System.out.println("Digite os valores de a, b e c: ");
//atribui os valores s variveis
a = entrada.nextFloat();
b = entrada.nextFloat();
c = entrada.nextFloat();
//verifica se o valor de a diferende de 0
if (a != 0){//se for diferente de 0
//calcula o valor de delta
delta = (float)Math.pow(b, 2)-4*a*c;
//verifica se delta maior ou igual a 0
if (delta >= 0){//se for
//calcula as razes
x1 = (-b+(float)Math.sqrt(delta))/2*a;
x2 = (-b-(float)Math.sqrt(delta))/2*a;
//exibe o valor das razes
System.out.println("Razes da equao: "+
num_real.format(x1)+" e "+
num_real.format(x2));
}
//se delta no for maior ou igual a 0
else{
//exibe a mensagem
System.out.println("A equao dada no tem
razes reais");
}
}
//se a for igual a 0
else{
//exibe a mensagem
System.out.println("A equao no do segundo
grau");
}
}
}

Operadores lgicos
As instrues IF, IF... else, e outras, requerem uma condio para determinar
como continuar o fluxo de um programa de controle. O Java fornece operadores lgicos
para permitir que os programadores formem condies mais complexas combinando
condies simples.
http://erinaldosn.wordpress.com

Linguagem de Programao 7

Operador E condicional (&&)

Se em algum ponto em um programa ambas condies precisam ser verdadeiras


antes de escolher certo caminho de execuo, utilizamos o operador && (E condicional).
Expresso 1 Expresso 2 Expresso 1 && expresso 2
false
false
false
false
true
false
true
false
false
true
true
true
Operador OU condicional (||)

Se um programa quiser assegurar que qualquer uma ou ambas as condies


sejam verdadeiras antes de escolher certo caminho de execuo, deve utilizar o operador
|| (OU condicional).
Expresso 1 Expresso 2 Expresso 1 || expresso 2
false
false
false
false
true
true
true
false
true
true
true
true
Operador E lgico booleano (&) e OU lgico booleano(|)

Esses operadores funcionam de modo idntico aos operadores && e ||, com
uma exceo: os operadores lgicos booleanos sempre avaliam seus dois operandos.
OU exclusivo lgico booleano (^)

Uma condio simples que contm o operador OU exclusivo lgico booleano


true se e somente se um de seus operandos for true e o outro for false. Se os dois
operandos forem true ou somente forem false, a condio inteira false.
Expresso 1 Expresso 2 Expresso 1 ^ expresso 2
false
false
false
false
true
true
true
false
true
true
true
false
Operador de negao lgica (!)

O operador ! permite ao programador inverter o significado de uma condio. O


operador de negao lgica um operador unrio que tem apenas uma nica condio
como um operando. O operador lgico de negao colocado antes de uma condio
para escolher um caminho de execuo se a condio original for false.
expresso !expresso
false
true
true
false

Estrutura de seleo mltipla


Uma estrutura de seleo mltipla escolha uma estrutura de seleo que
funciona como um conjunto de opes para escolha. tambm denominada estrutura de
seleo homognea.
O Java oferece a instruo de mltipla seleo switch para realizar diferentes
aes baseadas nos possveis valores de uma varivel de inteiro ou expresso. Cada
http://erinaldosn.wordpress.com

8 Estrutura Condicional

ao est associada com o valor de uma expresso integral constante (byte, short,
int ou char) que a varivel ou expresso em que a switch baseada pode assumir.
Exemplo: ler o cdigo de um produto e exibir seu nome de acordo com a tabela a
seguir:
Cdigo do produto Nome do produto
1
Caderno
2
Lpis
3
Borracha
Qualquer outro
Diversos
//para mostrar caixas de dilogo
import javax.swing.JOptionPane;
//programa
public class exibeproduto {
//principal
public static void main(String args[]){
//declarao de variveis
int codigo;
String texto;
//atribuio do valor do cdigo do produto
codigo = Integer.parseInt(JOptionPane.showInputDialog
("Digite o cdigo do produto"));
//verifica o valor do cdigo
switch (codigo){
//caso seja 1
case 1 :
//atribui a string varivel texto
texto = "O produto caderno";
//interrompe o fluxo
break;
//caso seja 2
case 2:
//atribui a string varivel texto
texto = "O produto lpis";
//interrompe o fluxo
break;
//caso seja 3
case 3:
//atribui a string varivel texto
texto = "O produto borracha";
//interrompe o fluxo
break;
//caso o cdigo no seja 1, 2 ou 3
default :
//atribui a string varivel texto
texto = "Diversos";
}
//exibe o contedo da varivel texto
JOptionPane.showMessageDialog(null, texto);
}
}

Instruo break
O Java fornece a instruo break para alterar o fluxo de controle. A instruo
break ocasiona sua sada imediata da instruo. A execuo continua com a primeira
instruo depois da instruo de controle.

http://erinaldosn.wordpress.com

Linguagem de Programao 9

Exerccios
1. Preencha as lacunas:
a) A instruo __________ utilizada para executar uma ao quando uma
condio for verdadeira e outra quando essa condio for falsa.
b) O Java requer que todas as variveis tenham um __________.
c) A instruo __________ seleciona entre mltiplas aes com base nos possveis
valores de uma varivel ou expresso integrais.
d) O operador __________ pode ser utilizado para assegurar que duas condies
so verdadeiras antes de escolher certo caminho de execuo.
2. Determine se cada uma das seguintes afirmaes verdadeira ou falsa. Se falso,
explique por que.
a) Um algoritmo um procedimento para resolver um problema em termos das
aes a serem executadas e a ordem em que essas aes so executas.
b) Um conjunto de instrues dentro de um par de parnteses chamado bloco.
c) Uma instruo de seleo especifica que uma ao deve ser repetida enquanto
algumas condies permanecem verdadeiras.
d) O pseudocdigo ajuda um programador a pensar sobre um programa antes de
tentar escrev-lo em uma linguagem de programao.
e) O caso default requerido na instruo de seleo switch.
f) A instruo break necessria no ltimo caso de uma instruo de seleo
switch.
g) A expresso ((x>y)&&(a<b)) verdadeira se x>y for verdadeira ou a<b for
verdadeira.
h) Uma expresso contendo o operador || verdadeira se um ou ambos de seus
operandos forem verdadeiros.
i) Para testar uma srie de valores em uma instruo switch, utilize um hfen ()
entre os valores inicial e final da srie em um rtulo case.
3. Escreva instrues Java para realizar cada uma das seguintes tarefas:
a) Teste se a varivel contador maior do que 10. Se for, imprima
Contador maior que 10.
b) Calcule o resto aps q ser dividido por divisor e atribua o resultado a q.
c) Calcule o valor de 2.5 elevado potncia de 3, utilizando o mtodo pow.
4. Escreva uma instuo Java para realizar cada uma das seguintes tarefas:
a) Declare as variveis soma e x que sero do tipo inteiro.
b) Atribua 1 varivel x.
c) Atribua 0 varivel soma.
d) Adicione a varivel x varivel soma e atribua o resultado varivel soma.
e) Imprima A soma : seguido pelo valor da varivel soma.

Bibliografia
Java: como programar
H. M. Deitel, P. J. Deitel
So Paulo: Pearson Prentice Hall, 2005
Estrutura de dados e algoritmos em Java
Michael Goodrich, Roberto Tamassia
Porto Alegre: Bookman, 2007
Lgica de programao e estrutua de dados, com aplicaes em Java
Sandra Puga, Gerson Rissetti
http://erinaldosn.wordpress.com

10 Estrutura Condicional

So Paulo: Pearson Prentice Hall, 2009

http://erinaldosn.wordpress.com

S-ar putea să vă placă și