1 / 61

Statements básicos na linguagem Java Prof. Ricardo Linden

Statements básicos na linguagem Java Prof. Ricardo Linden. Statements. Nesta aula analisaremos alguns statements importantes para a programação. Todos nesta matéria sabem programar imperativamente, logo, considerem esta aula como uma revisão. Tópicos principais:

sarai
Download Presentation

Statements básicos na linguagem Java Prof. Ricardo Linden

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Statements básicos na linguagem Java Prof. Ricardo Linden Programação Orientada a Objetos - aula 3

  2. Statements • Nesta aula analisaremos alguns statements importantes para a programação. • Todos nesta matéria sabem programar imperativamente, logo, considerem esta aula como uma revisão. • Tópicos principais: • Fluxo de controle através de um método • Statements e operadores para tomada de decisão • Statements de repetição Programação Orientada a Objetos - aula 3

  3. Fluxo de controle • A não ser que ordenado de outra maneira, a ordem de execução dentro de um método é linear: uma após a outra na ordem em que estão escritas. • Alguns statements permitem que modifiquemos esta ordem da seguinte maneira: • decidindo se vamos executar ou não um (bloco de) statement • realizar uma mesma statements várias vezes consecutivas. • A ordem de execução de statements é chamada de fluxo decontrole Programação Orientada a Objetos - aula 3

  4. Fluxo de controle Não se esqueçam: a execução de um programa Java começa dentro do método main (e só pode existir um por arquivo!) Isto é um contrasenso: uma LOO que tem um método main... Outras LOO agem de forma diferente! Programação Orientada a Objetos - aula 3

  5. Statements Condicionais • Uma statementcondicionalpermite que selecionemos qual statement será a próxima executada. • Por isto, elas são muitas vezes chamadas de statements de seleção. • Statements condicionais nos dão o poder de tomar decisões básicas. • As statements condicionais do Java são: • if • if-else • switch • e o operador ? Programação Orientada a Objetos - aula 3

  6. A condição deve ser uma expressão booleana. Ele deve retornar um valor verdadeiro ou falso. if é uma palavra reservada do Java Se a condição for verdadeira, o statement é executado. Se for falsa, o statement é “saltado”. O statement if • O statement if tem a seguinte sintaxe: if ( condição ) statement; Programação Orientada a Objetos - aula 3

  7. O statement if • Exemplo de um statement if if (sum > MAX) delta = sum - MAX; System.out.println (”A soma é " + sum); Primeiro a condição é avaliada. Se o valor de sum é maior que o valor de MAX, ou não Se a condição for verdaeira, a atribuição é executada Se a condição for falsa, a atribuição é saltada. De qualquer maneira, a chamada para o println é executada, pois ela não pertence ao corpo do if. Programação Orientada a Objetos - aula 3

  8. Você não lembra de fluxogramas? Nós os vimos em Programação I Eles são uma ótima ferramenta de definição de algoritmos e merecem ser revistos! condição avaliada true false statement Lógica de um statement if : Resto do Programa : Programação Orientada a Objetos - aula 3

  9. Exemplo completo de if import javax.swing.JOptionPane; public class Exemplo_If { public static void main (String[] args) { int n1; n1=Integer.parseInt(JOptionPane.showInputDialog(”Entre com um num. :")); if (n1>50) System.out.println(“O numero e maior que 50”); System.out.println(“Fim do programa.”); System.exit(0); } } Programação Orientada a Objetos - aula 3

  10. O Statement if-else • Uma cláusula else pode ser adicionada a um statement if para torná-lo um statement if-else: if ( condição ) statement1; else statement2; • Se a condição é verdadeira, a statement1 é executada; Se a condição for falsa, a statement2 é executada. Como a condição não pode ser verdadeira e falsa ao mesmo tempo, ou statement1 é executada ou statement2 é executada. Não podemos executar ambas. Programação Orientada a Objetos - aula 3

  11. condição avaliada true false statement1 statement2 Lógica de uma statement if-else Note que os caminhos não se cruzam - logo statement1 e statement2 não podem ser executadas juntas, dada a mesma condição : Resto do Programa : Programação Orientada a Objetos - aula 3

  12. Exemplo completo de if-else import javax.swing.JOptionPane; public class Exemplo_If_Else { public static void main (String[] args) { int n1=Integer.parseInt(JOptionPane.showInputDialog(”Entre com num. :")); if (n1>50) System.out.println(“O numero e maior que 50”); else System.out.println(“O numero nao e maior que 50”); System.out.println(“Fim do programa.”); System.exit(0); } } Programação Orientada a Objetos - aula 3

  13. Bloco de Statements • Muitas statements podem ser agrupadas em um bloco de statement • Um bloco é delimitado por chaves ( { … } ) • Um bloco de statements pode ser usado em qualquer lugar que uma statement for definida na sintaxe do Java • Por exemplo, no if ou no if-else, tanto a statement do if quanto a do if-else podem ser substituídas por um bloco. • Fazemos isto quando precisamos tomar várias atitudes quando de um teste, por exemplo, ao invés de uma só. Programação Orientada a Objetos - aula 3

  14. Exemplo completo de bloco de instruções import javax.swing.JOptionPane; public class Exemplo_Bloco { public static void main (String[] args) { int d,n1=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n1. :")); int n2=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n2. :")); if (n1>n2){ System.out.println(“O maior dos números é”+n1); d=n1-n2; } else{ System.out.println(“O maior dos números é”+n2); d=n2+n1; } System.out.println(“O valor de d é “+d); System.exit(0); } } Programação Orientada a Objetos - aula 3

  15. Conselho sobre blocos • Se não usarmos as chaves, somente a primeira statement subseqüente a um if (e a outras statements que veremos depois) ser-lhe-á subordinada. • Exemplo: if (n1>n2) n1=n1-n2; n2=n2+1; if termina aqui! Esta instrução não pertence ao if! Isto é uma causa muito comum de erros! Para evitá-los, basta usar sempre as chaves, mesmo quando temos apenas uma única instrução subordinada ao if! Programação Orientada a Objetos - aula 3

  16. Ifs aninhados • Uma statement executada dentro de um statement if ou dentro de um statement else pode ser outra statement if • Na verdade, pode ser qualquer statement válido do Java, sem distinção! • A isto é dado o nome de ifs aninhados • A cláusula else encontrada, a não ser que haja chaves delimitantes, é relacionada com o último if. • Não importa o que a identação quer implicar! Programação Orientada a Objetos - aula 3

  17. Exemplo completo de ifs aninhados import javax.swing.JOptionPane; public class Exemplo_Bloco { public static void main (String[] args) { int n1=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n1. :")); int n2=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n2. :")); int n3=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n3. :")); if (n1>n2) if (n1>n3) System.out.println(“O maior e “+n1) else System.out.println(“O maior e “+n3) else if (n2>n3) System.out.println(“O maior e “+n2) else System.out.println(“O maior e “+n3); System.exit(0); } } Programação Orientada a Objetos - aula 3

  18. Conselho sobre ifs aninhados O else dependurado é uma bomba pronta para criar bugs inesperados em seu programa. Para evitar isto, basta usar as chaves para garantir que os ifs e elses “pertençam” a quem nós efetivamente queremos. Veja como o exemplo anterior fica mais claro quando usamos as chaves. Programação Orientada a Objetos - aula 3

  19. Novamente o exemplo de ifs aninhados import javax.swing.JOptionPane; public class Exemplo_Bloco { public static void main (String[] args) { int n1=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n1. :")); int n2=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n2. :")); int n3=Integer.parseInt(JOptionPane.showInputDialog(”Entre com n3. :")); if (n1>n2) { if (n1>n3) System.out.println(“O maior e “+n1) else System.out.println(“O maior e “+n3) } else{ if (n2>n3) System.out.println(“O maior e “+n2) else System.out.println(“O maior e “+n3); } System.exit(0); } } Programação Orientada a Objetos - aula 3

  20. Porque objetos são ponteiros. Se nós os compararmos, estaremos vendo se apontam para o mesmo lugar. Porque? Comparando Strings • Lembre-se que uma string de caracteres em Java é um objeto. • Nós não podemos usar o operador relacional para comparar strings. Programação Orientada a Objetos - aula 3

  21. Comparando Strings • O método equals da classe string pode ser chamado de um a string para determinar se duas strings contêm exatamente os mesmos caracteres na mesma ordem. • A classe String também tem uma método chamado compareTo para determinar se uma string vem antes de outra alfabeticamente (conforme determinado pelo conjunto de caracteres Unicode) Programação Orientada a Objetos - aula 3

  22. Exemplo completo de Strings import javax.swing.JOptionPane; public class Compara_Strings { public static void main (String[] args) { String senha=JOptionPane.showInputDialog(”Entre com a senha:"); if (senha.equals(“senha1”)) { System.out.println(“Bem vindo ao programa.”) } else { System.out.println(“Usuário não autorizado”); } System.exit(0); } } Repare que os métodos em Java sempre começam com minúsculas. Se eles tiverem uma segunda palavra, então esta será escrita com maiúscula (exemplo : compareTo) Programação Orientada a Objetos - aula 3

  23. Comparando valores em ponto flutuante • Nós também devemos ser bastante cautelosos quando compararmos dois valores de ponto flutuante (float or double) para saber se eles são iguais. • Em termos práticos, nós raramente devemos usar o operador de igualdade (==) para comparar dois reais. • Na maioria das situações, nós devemos analsar se dois números são próximos os suficiente para serem considerados iguais. • Por exemplo: if (Math.abs (f1 - f2) < 0.00001) System.out.println (”Praticamente iguais."); Programação Orientada a Objetos - aula 3

  24. Isto ocorre por problemas de arredondamento normais em um ambiente de representação finita. Às vezes, duas operações que deveriam resultar em números idêntico, por problemas de arredondamento, não o fazem e podemos ter um problema de lógica em nossos programas. Uma lembrança boa: Em Java, se errarmos e substituirmos o == por um =, o programa não compila. Isto evita erros chatos que tínhamos em C Comparando valores em ponto flutuante Programação Orientada a Objetos - aula 3

  25. O statement switch • O statementswitchfornece outra maneira de decidir qual dentre várias opções de statements será executada a seguir. • O switch avalia uma expressão e depois tenta casar o resultado com um dentre vários casos possíveis. • Cada caso contém um valor e uma lista de statements • O fluxo de controle é transferido para a lista de statements associada ao primeiro valor que casa com a expressão avaliada Programação Orientada a Objetos - aula 3

  26. O statement switch • A sintaxe geral do statement switch é a seguinte: switch ( expressão ) { case valor1: statement-list1 case valor2: statement-list2 case valor3 : statement-list3 case... } Switch e case sao palavras reservadas Java Se a expressão casa com valor2, o fluxo de controle salta para cá. Programação Orientada a Objetos - aula 3

  27. O statement switch • Freqüentemente, um statementbreak é usado como última instrução de cada lista de statements. • Um statement break faz com que o fluxo de controle seja transferido para o fim do statement switch. • Se o break não for usado, o fluxo de controle continua executando as statements do próximo case • Algumas vezes isto pode ser útil, especialmente quando houver um caso que executa um suoperconjunto de instruções do outro. • Entretanto, na maioria dos casos, esquecer um break é uma causa de bugs em seus programas. Programação Orientada a Objetos - aula 3

  28. O statement switch • A expressão de um switch deve resultar em um integral data type, como um inteiro ou caracter. • Não pode resultado em um ponto flutuante ou string. • Note que implicitamente estamos usando o operador de igualdade em cada case do switch. • Não podemos realizar testes relacionais dentro de um switch - para isto usamos o if. Programação Orientada a Objetos - aula 3

  29. Exemplo completo de switch import javax.swing.JOptionPane; public class Exemplo_Switch { public static void main (String[] args) { char sexo=‘M’; switch sexo { case ‘M’,’m’ : { System.out.println(“É um homem.”) break; } case ‘F’,’f’ : { System.out.println(“É uma mulher.”) break; } } System.exit(0); } } O que acontece se apagarmos os breaks? Programação Orientada a Objetos - aula 3

  30. O statement switch • Um statement switch pode ter um caso default opcional. • O caso default não tem nenhum valor associado, e simplesmente usa a palavra reservada default • Se o caso default estiver presente, o controle será transferido para ele caso nenhum outro caso tenha um valor que case com a expressão. • Apesar do caso default poder ser colocado em qualquer posição no switch, ele normalmente é colocado no fim. • Se não há caso default e nenhum valor casa com a expressão, o controle é transferido para a primeira instrução após o switch. Programação Orientada a Objetos - aula 3

  31. Exemplo completo de switch-default import javax.swing.JOptionPane; public class Exemplo_Switch { public static void main (String[] args) { char sexo=‘M’; switch sexo { case ‘M’,’m’ : { System.out.println(“É um homem.”) break; } case ‘F’,’f’ : { System.out.println(“É uma mulher.”) break; } default : {System.out.println(“Sexo inválido.”);} } System.exit(0); } } Porque não colocamos break no default? Programação Orientada a Objetos - aula 3

  32. O operador condicional • Java tem um operador condicional, como o C, que avalia uma condição booleana e determina qual de duas outras expressões são avaliadas • O resultado da expressão selecionada é então o resultado da expressão condicional • Sua sintaxe é: condição ? expressão1 : expressão2 • Se a condição avalia para verdadeira, a expressão1 é avaliada; se condição for falsa, a expressão2 é avaliada Programação Orientada a Objetos - aula 3

  33. Exemplo completo do operador condicional import javax.swing.JOptionPane; public class op_Condicional { public static void main (String[] args) { String senha=JOptionPane.showInputDialog(”Entre com a senha:"); System.out.println(senha.equals(“senha1”) ?“Bem vindo ao programa.”: “Usuário não autorizado.”) System.exit(0); } } Programação Orientada a Objetos - aula 3

  34. Statements de Repetição • Statements de repetiçãonos permitem executar uma ou mais statements múltiplas vezes. • Eles são chamados freqüentemente de loops • Assim como as statements condicionais, eles são controlados por expressões booleanas. • Java tem três tipos de statements de repetição statements • while • do loop • for • Cada uma delas tem peculiaridades que as fazem adequadas para diferentes situações e cabe ao programador escolher a mais apropriada Programação Orientada a Objetos - aula 3

  35. A condição deve ser uma expressão booleana. Ele deve retornar um valor verdadeiro ou falso. while é uma palavra reservada Se a condição for avaliada como verdadeira, o statement é executado. Ao fim do statement, “volta-se para cima” e a condição é re-avaliada O statement é executado de forma repetitiva até que a condição torne-se falsa. O statement while • O statementwhile tem a seguinte sintaxe: while ( condição ) statement; Programação Orientada a Objetos - aula 3

  36. condição avaliada true false A chave do bom uso do while é perceber que o statement pode executar zero ou várias vezes, já que a condição é avaliada antes do statement ser executado statement Lógica de um loop while Programação Orientada a Objetos - aula 3

  37. Exemplo completo de um while import javax.swing.JOptionPane; public class Exemplo_While { public static void main (String[] args) { int n1=1,soma=0; while(n1>0) { n1=Integer.parseInt(JOptionPane.showInputDialog(”No. positivo :")); soma+=n1; } System.out.println(“Fim do programa. Soma=”+soma); System.exit(0); } } Programação Orientada a Objetos - aula 3

  38. Desafio em sala de aula Que tal modificarmos o programa de senha para dar três chances para o usuário acertar? Programação Orientada a Objetos - aula 3

  39. Loops Infinitos • O corpo de um loop while deve eventualmente fazer com que a condição de teste se torne falsa. • Se não, temos uma situação de um loop infinito, que executará para sempre, a não ser que o usuário interrompa o programa Este é um tipo de erro lógico comum que deve ser evitado. Sempre cheque seus programas para garantir que existam pontos de saída em seus loops. Programação Orientada a Objetos - aula 3

  40. Perguntas Razoáveis Em nosso exemplo anterior, para que servia o valor de inicialização de n1? Garantir que o loop executasse pela primeira vez O que fazia com que o loop tivesse um ponto de saída? A entrada de um número menor ou igual que zero pelo usuário Programação Orientada a Objetos - aula 3

  41. Loops Aninhados • Da mesma maneira que os statements ifs podem ser aninhados, loops também podem sê-lo. • Isto é, o corpo de um loop pode conter outro loop. • O loop que contém é chamado de loop mais externo, enquanto que o loop contido é chamado de loop mais interno. • Cada vez que executamos o loop mais externo, o loop mais interno executará n vezes. Programação Orientada a Objetos - aula 3

  42. condição avaliada true true Loop mais interno : cada vez que entramos no loop mais externo, executamos este loop n vezes Lógica dos loops aninhados false condição avaliada false statement Programação Orientada a Objetos - aula 3

  43. Exemplo de loops aninhados public class Exemplo_Aninhados { public static void main (String[] args) { int n1=0,n2; while(++n1<10) { n2=n1+1; while(n2<10) { System.out.println(n1+ “ ”+n2++); } } System.out.println(“Fim do programa. Soma=”+soma); System.exit(0); } } Programação Orientada a Objetos - aula 3

  44. Mãos à massa Vamos colocar o programa anterior para funcionar e ver o resultado. Como garantimos os pontos de saída dos dois loops do exemplo? Programação Orientada a Objetos - aula 3

  45. O statement é executado uma vez e depois a condição é avaliada. O processo se repete até que a condição se torne falsa. O Statement do • O statementdo tem a seguinte sintaxe: do { statement; } while ( condição ) Usa as palavras reservadas do e while Programação Orientada a Objetos - aula 3

  46. statement Note que o loop do é muito similar ao loop while, exceto que a condição é avaliada ao fim do corpo do loop. Isto garante que o corpo do loop seja executado ao menos uma vez. true condição avaliada false Lógica de um loop do Programação Orientada a Objetos - aula 3

  47. Comparando os loops while e do Loop while Loop do statement condição avaliada true true false condição avaliada statement false Programação Orientada a Objetos - aula 3

  48. Outro exercício Vamos modificar o exemplo com loop while para fazer o mesmo, só que usando um loop do. Fica melhor? Precisamos da inicialização de n1? Porquê? Programação Orientada a Objetos - aula 3

  49. A porção de initialização é executada uma vez quando o loop começa Palavra Reservada O statement é executado até que a condição se torne falsa A porção incremento é executada ao fim de cada iteração O Statement for • O statementfor tem a seguinte sintaxe: for ( initialização ; condição ; incremento ) statement; Programação Orientada a Objetos - aula 3

  50. Logo, como no caso do while, o corpo do loop pode executar 0 ou n vezes! O Statement for • Um loop for é equivalente à seguinte estrutura do loop while: initialização; while ( condição ) { statement; incremento; } Programação Orientada a Objetos - aula 3

More Related