A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB."— Transcrição da apresentação:

1 Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB

2 (C) 2008 Gustavo Motta2 5. Comandos condicionais Comando Comando Definição Definição Um comando é todo trecho de programa que, quando executado, tem o efeito de modificar o conteúdo armazenado em variáveis Um comando é todo trecho de programa que, quando executado, tem o efeito de modificar o conteúdo armazenado em variáveis Comando condicional Comando condicional Definição Definição Um comando condicional contém uma certa quantidade de subcomandos, dos quais exatamente um é escolhido para ser executado, de acordo com uma condição Um comando condicional contém uma certa quantidade de subcomandos, dos quais exatamente um é escolhido para ser executado, de acordo com uma condição Modalidades em Java Modalidades em Java if-else if-else switch switch

3 (C) 2008 Gustavo Motta3 Comando if-else Comando if-else if (expressão-lógica) subcomando_1; subcomando_1; else else subcomando_2; subcomando_2; Caso a expressão lógica seja avaliada true, então o subcomando_1 é escolhido para execução, caso contrário ( false ), o subcomando_2 é selecionado e executado Caso a expressão lógica seja avaliada true, então o subcomando_1 é escolhido para execução, caso contrário ( false ), o subcomando_2 é selecionado e executado double max = 0, x = Math.random(), y = Math.random(); if (x > y) max = x; max = x;else max = y; max = y; 5. Comandos condicionais Nota-se que a execução dos subcomandos é mutuamente exclusiva: somente um deles é executado Observa-se ainda que todo else refere-se ao if imediatamente anterior

4 (C) 2008 Gustavo Motta4 Comando if-else Comando if-else O comando if-else pode ser combinado para permitir a escolha de exatamente um dentre vários subcomandos O comando if-else pode ser combinado para permitir a escolha de exatamente um dentre vários subcomandos if (expressão-lógica_1) subcomando_1; subcomando_1; else if (expressão-lógica_2) else if (expressão-lógica_2) subcomando_2;... subcomando_2;... else if (expressão-lógica_n) else if (expressão-lógica_n) subcomando_n; subcomando_n; else subcomando_0; else subcomando_0; As expressões lógicas são avaliadas seqüencialmente e, na primeira expressão-lógica_i que resulte true, o subcomando_i é selecionado para execução. Caso nenhuma expressão lógica seja avaliada true, então o subcomando_0 é o escolhido para execução As expressões lógicas são avaliadas seqüencialmente e, na primeira expressão-lógica_i que resulte true, o subcomando_i é selecionado para execução. Caso nenhuma expressão lógica seja avaliada true, então o subcomando_0 é o escolhido para execução 5. Comandos condicionais

5 (C) 2008 Gustavo Motta5 Comando if-else Comando if-else Exemplo: escolher o maior dentre três números Exemplo: escolher o maior dentre três números doublemax = 0, x = Math.random(), y = Math.random(), z = Math.random(); if ((x >= y) && (x >= z)) if ((x >= y) && (x >= z)) max = x; max = x; else if ((y >= x) && (y >= z)) else if ((y >= x) && (y >= z)) max = y; else max = z; max = y; else max = z; 5. Comandos condicionais

6 (C) 2008 Gustavo Motta6 Comando if-else Comando if-else A cláusula else do comando if-else é opcional A cláusula else do comando if-else é opcional double x = Math.random(), y = Math.random(); double max = y; if (x > y) if (x > y) max = x; System.out.println("x = " + x + " y = " + y); System.out.println("max = " + max); System.out.println("x = " + x + " y = " + y); System.out.println("max = " + max); No caso, se a expressão lógica ( x > y ) for avaliada false, o subcomando ( max = x; ) do if-else é saltado e o programa segue executando o seu fluxo normal No caso, se a expressão lógica ( x > y ) for avaliada false, o subcomando ( max = x; ) do if-else é saltado e o programa segue executando o seu fluxo normal 5. Comandos condicionais

7 (C) 2008 Gustavo Motta7 Comando if-else Comando if-else Os subcomandos de um comando if-else podem (e devem) ser agrupados em blocos Os subcomandos de um comando if-else podem (e devem) ser agrupados em blocos if ((saldo + valor) <= limite) { saldo = saldo + valor; saldo = saldo + valor; creditaBonus(valor); creditaBonus(valor);} else { System.out.println("Limite de crédito não pode ser excedido"); System.out.println("Limite de crédito não pode ser excedido");} No caso, os respectivos blocos das cláusulas if e else é que são considerados subcomandos No caso, os respectivos blocos das cláusulas if e else é que são considerados subcomandos Não explicitar os blocos pode ocasionar erros e dificultar o entendimento Não explicitar os blocos pode ocasionar erros e dificultar o entendimento 5. Comandos condicionais O trecho de código abaixo provoca erros em tempo de compilação O trecho de código abaixo provoca erros em tempo de compilação if ((saldo + valor) <= limite) saldo = saldo + valor; saldo = saldo + valor; creditaBonus(valor); creditaBonus(valor);else System.out.println("Limite de crédito não pode ser excedido"); System.out.println("Limite de crédito não pode ser excedido"); Apenas primeira linha assinalada é que faz parte do ifApenas primeira linha assinalada é que faz parte do if A segunda linha assinalada não é parte integrante do ifA segunda linha assinalada não é parte integrante do if A cláusula else não se refere a nenhum if, pois está separada do if pela segunda linha assinaladaA cláusula else não se refere a nenhum if, pois está separada do if pela segunda linha assinalada if-else Portanto, sempre use o comando if-else com blocos, mesmo quando não for necessário, porque evita-se erros deste tipo if (expressão-lógica_1) { subcomandos_1; subcomandos_1; } else if (expressão-lógica_2) { else if (expressão-lógica_2) { subcomandos_2;... subcomandos_2;... } else if (expressão-lógica_n) { else if (expressão-lógica_n) { subcomandos_n; subcomandos_n; } else { else { subcomandos_0; subcomandos_0; }

8 (C) 2008 Gustavo Motta8 Comando if-else Comando if-else Comandos if-else podem ser aninhados, de modo que os blocos associados ao if possam conter outros comandos if-else Comandos if-else podem ser aninhados, de modo que os blocos associados ao if possam conter outros comandos if-else Scanner entrada = new Scanner(System.in); boolean aprovado = false; String acessaInternetDuranteAaula = entrada.nextLine(); double mediaFinal = entrada.nextDouble(), freqüência = entrada.nextDouble(); if (mediaFinal >= 5.0) { if (freqüência >= 75) { if (!acessaInternetDuranteAaula.equals(s)){ aprovado = true; } aprovado = true; } }} }} 5. Comandos condicionais

9 (C) 2008 Gustavo Motta9 5. Comandos condicionais Comando switch { Comando switch { switch (expressão-inteiro) case n 1 : subcomando_1; break; case n 1 : subcomando_1; break; case n 2 : subcomando_2; break; case n 2 : subcomando_2; break; case n m : subcomando_m; break; case n m : subcomando_m; break; default: subcomando_0; break; default: subcomando_0; break; } O comando switch avalia expressão-inteiro. O valor resultante que casar com o valor n i da cláusula case determina a execução do subcomando_i. Caso nenhum valor case, estão o subcomando_0 da cláusula default é executado O comando switch avalia expressão-inteiro. O valor resultante que casar com o valor n i da cláusula case determina a execução do subcomando_i. Caso nenhum valor case, estão o subcomando_0 da cláusula default é executado A cláusula default é opcional A cláusula default é opcional O último break é sempre opcional O último break é sempre opcional

10 (C) 2008 Gustavo Motta10 5. Comandos condicionais Comando switch Comando switch Exemplo: datas Exemplo: datas int month = entrada.nextInt(); switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; } int month = entrada.nextInt(); switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; } Note que a mesma saída poderia ser obtida com o comando if int month = entrada.nextInt(); if (month == 1) { System.out.println("January"); } else if (month == 2) { System.out.println("February"); }... Neste caso particular, o comando switch é mais simples Usa-se o if quando se lida com faixa de valores ou outras condições mais complexas

11 (C) 2008 Gustavo Motta11 5. Comandos condicionais Comando switch Comando switch Exemplo: datas Exemplo: datas int month = entrada.nextInt(); int year = entrada.nextInt(); int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) numDays = 29; else numDays = 28; break; } int month = entrada.nextInt(); int year = entrada.nextInt(); int numDays = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: numDays = 31; break; case 4: case 6: case 9: case 11: numDays = 30; break; case 2: if (((year % 4 == 0) && !(year % 100 == 0)) || (year % 400 == 0)) numDays = 29; else numDays = 28; break; }


Carregar ppt "Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB."

Apresentações semelhantes


Anúncios Google