Processamento da Informação

Estruturas de desvio de fluxo condicional

Prof. Ronaldo Cristiano Prati
ronaldo.prati@ufabc.edu.br
Bloco A, Sala 513-2

O comando if

  if (<condição>){
    // Executa quando a condição é avaliada como verdadeira
  }else{
    // Executa quando a condição é avaliada como falsa
  }
  • <condição> é uma expressão do tipo booleana. Essas expressões podem assumir os valores verdadeiro (true) e falso (false)

O comando if

  • O comando if é usado para controlar o fluxo de um programa, de acordo com alguma condição (uma expressão booleana).
  • Se a expressão é avaliada como verdade(true), então o bloco if será executado; caso contrário o bloco do else será executado.
  • Um comando if pode ser seguido de um else opcionalmente, que é executado quando a expressão booleana é avaliada como falso (false).

Operadores e conectores

Operador Significado
== igual a
!= diferente
> maior que
>= maior ou igual a
< menor que
<= menor ou igual a

Exemplo sem o else

import java.util.Scanner;
public static void main(String[] args){}
  Scanner sc = new Scanner (System.in);
  int x = sc.nextInt();
  if (x>0){
    System.out.println("O número é positivo");
  }
}

Exemplo com o else

import java.util.Scanner;
public static void main(String[] args){}
  Scanner sc = new Scanner (System.in);
  int x = sc.nextInt();
  if (x>0){
    System.out.println("O número é maior que zero");
  }else{
    System.out.println("O número não é maior que zero")
  }
}

O comando if-else-if

  • Um comando if pode ser seguindo por um comando if...else, que é bastante útil para testar várias condições sobre uma mesma variável.
  • Quando usamos o comando if...else if, há alguns pontos que precisamos ter em mente:
    • Um if pode ter zero ou um else, e esse else deve vir após um if-else.
    • Um if pode ter um ou mais else...if, e eles devem vir antes do else final.
    • Quando um else é exeucato, nenhum dos outros elses ou ifs será testado ou executado.

Exemplo com o if-else-if

  import java.util.Scanner;
  public static void main(String[] args){}
    Scanner sc = new Scanner (System.in);
    int x = sc.nextInt();
    if (x>0){
      System.out.println("O número é maior que zero");
    }else if (x < 0 ){
      System.out.println("O número é menor que zero")
    }else{
      System.out.println("O número é zero");
    }
  }

if aninhado (dentro de outro if)

  • Podemos também criar estruturas complexas, colocando um comando if dentro de outro comando if (ou else)

Exemplo com o if-else-if

  import java.util.Scanner;
  public static void main(String[] args){}
    Scanner sc = new Scanner (System.in);
    int x = sc.nextInt();
    if (x>0){
      if (x%2==0){
        System.out.println("O número é maior que zero e par");
      }else{
        System.out.println("O número é maior que zero e impar");
      }
    }else if (x < 0 ){
      System.out.println("O número é menor que zero")
    }else{
      System.out.println("O número é zero");
    }
  }

Exercício 1

  • Na aula passada, fizemos um programa que calcula as raízes do polinômio de segundo grau
    ax2+bx+c=0ax^2 + bx+c= 0
    mas esse programa só funcionava se o δ\delta fosse maior que zero. Refaça o programa para tratar os três possíveis casos:

  • Se Δ>0\Delta > 0, as raízes são x1=b+Δ2ax_1 = \frac{- b + \sqrt{\Delta}}{2a} e x2=bΔ2ax_2 = \frac{- b - \sqrt{\Delta}}{2a}

  • Se Δ=0\Delta = 0, então existe uma única raíz x=b2ax = \frac{-b}{2a}

  • Se Δ<0\Delta < 0, as raízes tem uma parte real e uma parte complexa real=b2areal = \frac{-b}{2a} e imaginária img=Δ2aimg = \frac{\sqrt{- \Delta}}{2a}, e as raízes x1=real+iimgx_1 = real + i * img e x2=realiimgx_2 = real -i * img

Exercício 1

  • Implemente um programa em JAVA que lê os coeficientea aa, bb, e cc de uma equação do segundo grau, e calcula o seu discriminante.
  • Então:
    • Se o discriminante for positivo, calcule e imprima as duas raízes;
    • Se o discriminante for zero, calcule e imprima a raiz única;
    • Se o discriminante for menor que zero, calcule e imprima a parte real e a parte imaginária das raízes (note que o Java não tem um símbolo para o número imaginário ii, então você pode imprimir a letra (String) 'i' ).

Exerício 2

  • O índice de massa corporal pode ser calculado por
    IMC=pesoaltura2IMC = \frac{peso}{altura^2}
  • Em que peso é expresso em quilos e altura e altura em metros. Uma pessoa pode ser categorizada de acordo com o seu IMC pela tabela
IMC Classificação
até 18,5 abaixo do peso
acima de 18,5 até 25,0 peso ideal
acima de 25,0 até 30,0 sobrepeso
acima de 30,0 até 35,0 obesidade I
acima de 35,0 até 40,0 obesidade II
acima de 40 obesidade III

Exerício 2

  • Crie um programa em JAVA que leia o peso e a altura de uma pessoa, e então imprima a sua categoria, de acordo com a tabela.

Exerício 3

  • Dados o tamanho dos três lados de um triângulo, podemos categorizá-lo em:
    • Equilátero, em que todos os lados tem o mesmo tamanho;
    • Escaleno, em que todos os lados tem tamanho diferente;
    • Isósceles, em que dois dos três lados de um triângulo são iguais.
  • Escreva um programa em JAVA que leia o tamanho dos lados de um triangulo e imprima a sua categoria.