Baixe o app para aproveitar ainda mais
Prévia do material em texto
JAVA Estruturas de Controle e Repetição Prof. M. Sc. Edgar Gurgel Instruções Condicionais l if e if/else if(expressão_de_teste) comando ou bloco 1; else comando ou bloco 2; Exemplo: if (a > b) System.out.println("a é maior que b"); else System.out.println("b é maior ou igual a a"); POO II 2 Instruções Condicionais public class Nota{ public static void main (String args[ ]){ String nome="Joao", disciplina="Java"; float p1=4, p2=6, p3=9, media; System.out.println( "Nome.........: "+nome); System.out.println ("Disciplina...: "+disciplina); System.out.println ("P1...........: "+p1); System.out.println ("P2...........: "+p2); System.out.println ("P3...........: "+p3); if (p1<p2 && p1<p3) media = (p2+p3)/2; else if (p2<p1 && p2<p3) media = (p1+p3)/2; else media = (p1+p2)/2; System.out.println ("Media........: "+media); if (media>=6) System.out.println ("Situação...: Aprovado"); else System.out.println ("Situação...: Reprovado"); } //Fim do método main() }//Fim da classe POO II 3 Instruções Condicionais Para comparar o conteúdo de uma string utiliza- se o método equals() Exemplos: if (sexo.equals(“F”)) POO II 4 Instruções Condicionais l A seguir tem-se a sintaxe do operador condicional: Expressão booleana ? Expressão if-true : Expressão if-false l Ao contrário dos operadores vistos até então, o operador condicional consiste de uma combinação de caracteres distribuídos, ? e :, separando três operandos - a expressão booleana, a expressão if-true e a expressão if-false. Desta forma, o operador condicional é dito ser um operador ternário; l Ou a expressão if-true ou a expressão if-false é avaliada, mas não ambas; POO II 5 Instruções Condicionais l ? : expressão_de_teste ? expressão1 : expressão2; Exemplo: int a, b, maior; a = 17 + 15; b = 3 * 7; maior = (a > b) ? a : b; POO II 6 Instruções Condicionais l O valor da seguinte expressão é a string "minuto", se a alteração na duração for de 1 minuto; de outra forma, o valor é a string "minutos": Expressão condicional if-true if-false alteracao == 1 ? “minuto” : "minutos" l Você pode, se desejar, empregar parênteses para demarcar a expressão booleana, mas eles não são necessários neste exemplo, por que o operador de igualdade tem precedência maior que o operador condicional. POO II 7 Instruções Condicionais l Como uma expressão de operador condicional, diferentemente do comando if, produz um valor, pode-se colocá-lo dentro de uma outra expressão. No exemplo seguinte uma expressão de operador condicional aparece dentro de uma expressão de exibição em tela, resolvendo o problema de duplicação de comandos encontrado no programa anterior: public class Demonstrate{ public static void main(String argv[]){ int alteracao = 1; System.out.println("A duração foi alterada de "); System.out.print(alteracao); System.out.println(alteracao == 1 ?" minuto.": " minutos."); }//fim main() } // fim da classe Resultado: A duração foi alterada de 1 minuto. POO II 8 Exercícios Exercícios da Lista 3 POO II 9 Instruções Condicionais l Switch l Objetivo: Aprender a escrever programas em que se escolhe uma dentre várias alternativas a serem executadas, com base na avaliação de uma expressão que retorna um valor inteiro; l O propósito de um comando switch é executar uma sequência particular de comandos de acordo com o valor de uma expressão que produz um inteiro. Na maioria dos comandos switch, a sequência de comandos correspondente a cada possível valor em que pode resultar a expressão que resulta em um inteiro fica delimitada entre uma palavra chave case de um lado e um comando break do outro, com um caractere de : separando o valor e a sequência de comandos; POO II 10 Instruções Condicionais switch(expressão que é avaliada em um inteiro){ case constante_inteira_1: comandos1; break; case constante_inteira_2: comandos2; break; ... default: comandos_default; } POO II 11 Instruções Condicionais public class ExemploSwitch { public static void main (String args[]) { int tam; String valor = "java"; tam = valor.length(); switch (tam) { case 0: System.out.println("zero"); break; case 1: System.out.println("um"); break; case 2: System.out.println("dois"); break; case 3: System.out.println("tres"); break; case 4: System.out.println("quatro"); break; case 5: System.out.println("cinco"); break; case 6: System.out.println("seis"); break; case 7: System.out.println("sete"); break; case 8: System.out.println("oito"); break; case 9: System.out.println("nove"); break; default : System.out.println(”Não reconhecido"); } // fim switch case } // fim main( ) } // fim classe POO II 12 Exercícios da Lista 4 Exercícios POO II 13 Instruções de Repetição l O laço for for(inicialização; teste; incremento) comando ou bloco POO II 14 Exemplo do Laço for public class ExemploFor { public static void main (String args[ ]) { for (int i=10; i>0; i - -) System.out.print(i + " "); System.out.println(); // linha em branco System.out.println("Acabou!"); } // fim main( ) } // fim classe POO II 15 Exemplo do Laço for public class ExemploFor2{ public static void main(String argv[]){ System.out.println(metodoInt(4)); } // fim main() public static int metodoInt(int n){ int counter, result = 1; for (counter=n; counter != 0; counter = counter – 1) result = 2 * result; return result; } // fim método } Resultado: 16 --counter counter-- != 0; POO II 16 Instruções de Repetição l O laço while while (expressão_de_teste) comando ou bloco i=5; while ( i > 0 ) {i --;} // as chaves aqui podiam ter sido omitidas, visto // que só existe uma sentença. System.out.println("Agora i vale 0"); POO II 17 Instruções de Repetição l O laço do/while i=5; do {i --;} // as chaves aqui podem ser omitidas visto while ( i > 0 ); // que só existe uma sentenca. POO II 18 Operadores de Pré e Pós incremento l Os operadores de incremento e decremento são unários que alteram a variável sobre a qual estão aplicados; l O que eles fazem é incrementar ou decrementar, a variável sobre a qual estão aplicados, de 1; l Então: x = x + 1 é equivalente à x++; l E x = x - 1 é equivalente à x--; POO II 19 Operadores de Pré e Pós incremento l Estes operadores podem ser pré-fixados ou pós- fixados; l A diferença é que quando são pré-fixados eles incrementam e retornam o valor da variável já incrementada; l Quando são pós-fixados eles retornam o valor da variável sem o incremento e depois incrementam a variável; l Então, em x=23; y=x++; l teremos, no final: y=23 e x=24.l Em x=23; y=++x; teremos no final: y = 24 e x = 24. POO II 20 l public class opIncDec1{ l public static void main(String args[]) l { l int contador=10,numero=2,x,y,var; l System.out.println("contador="+contador); l System.out.println("numero="+numero); l System.out.println(); l l numero++; l contador--; l System.out.println("contador="+contador); l System.out.println("numero="+numero); l System.out.println(); l l x=2; l var=0; l var=++x; l System.out.println("x="+x); l System.out.println("var="+var); l System.out.println(); l l y=2; l var=0; l var=y++; l System.out.println("y="+y); l System.out.println("var="+var); l System.out.println(); l } l } POO II 21 l public class opIncDec2{ l public static void main(String args[]) l { l int x,y,z; l x=y=10; l z=++x; l System.out.println("x="+x); l System.out.println("z="+z); l l System.out.println(); l l x=-x; l System.out.println("x="+x); l y++; l System.out.println("y="+y); l l System.out.println(); l l x=x+y-(z--); l System.out.println("x="+x); l System.out.println("y="+y); l System.out.println("z="+z); l l System.out.println(); l } l } POO II 22 Entrada de Dados l Até agora, nossas aplicações apenas escreviam valores na tela de console. Fizemos isso usando um Stream de dados. Um Stream é um canal ou fluxo que conduz os bytes de um lugar (um arquivo ou um dispositivo) para outro. A stream de saída padrão (out) está na classe Java.lang.System e é aberta automaticamente pela máquina virtual Java, já associada ao dispositivo de saída padrão (display). l Já a Stream de entrada padrão (in), disponível estaticamente através da mesma classe Java.lang.System, é de utilização bastante precária, na medida em que disponibiliza métodos apenas de acesso a bytes, de forma que, para que se leia valores inteiros, reais ou Strings, é necessário ir concatenando bytes para formar a entrada desejada. Assim, não utilizaremos essa forma de entrada e sim uma classe mais elaborada, disponível na biblioteca java.util.Scanner, que permite a chamada de métodos para ler diretamente Strings, números inteiros e números reais. POO II 23 Entrada de Dados – Classe Scanner l Para utilizá-la, é necessário instanciar um objeto da classe Scanner e chamar um método apropriado para ler cada um dos tipos básicos ou String de um dispositivo qualquer. Por exemplo, para ler do dispositivo padrão de entrada, podemos ter o seguinte código: // cria Scanner para ler entrada na janela de comando Scanner entrada = new Scanner(System.in); // faz Scanner ler variáveis de diferentes tipos palavra = entrada.next(); // lê String até <branco> nome = entrada.nextLine(); // lê String até <ENTER> valorI = entrada.nextInt(); // lê valor inteiro valorF = entrada.nextFloat(); // lê valor float valorD = entrada.nextDouble(); // lê valor double valorB = entrada.nextBoolean(); // lê valor boolean POO II 24 Entrada de Dados l Além de ler os valores, podemos também testar se o valor é do tipo esperado, através de métodos que retornam valores lógicos. Por exemplo: if (entrada.hasInt()) { // true, se entrada inteira if (entrada.hasFloat()) { // true, se entrada float if (entrada.hasDouble()) { // true, se entrada double if (entrada.hasBoolean()) { // true,se entrada boolean POO II 25 Exemplo import java.util.Scanner; //biblioteca pra entrada de dados. public class EntraDado{ public static void main (String args[ ]) { float nota1=0, nota2=0, trabalho=0, media=0; Scanner sc = new Scanner(System.in); /*Declara um objeto chamado sc do tipo Scanner que possibilita a entrada via teclado*/ System.out.println("Entre com a nota 1: "); nota1=sc.nextFloat(); //A variável nota1 recebe o conteúdo do teclado System.out.println("Entre com a nota 2: "); nota2=sc.nextFloat(); System.out.println("Entre com a nota do Trabalho: "); trabalho=sc.nextFloat(); media=(nota1+nota2+trabalho)/3; System.out.println("Media : "+ media); }// fim main( ) } // fim classe POO II 26 Exercícios da Lista 5 Exercícios POO II 27
Compartilhar