Algoritmos – Estruturas Condicionais – Parte 2

 

Parte deste material foi adaptado dos conteúdos originais dos Professores Fábio Tirelo, Silvio Jamil e Theldo Cruz.
Material da Professora Dulcinéia Oliveira da Penha

Primeira parte aqui: Algoritmos – Estruturas Condicionais – Parte 1 (draddx.com)

Diversas informações são dependentes de condições.

Por exemplo, SE a nota de um aluno for menor do que 60%, ENTÃO este aluno será reprovado, SENÃO este aluno será aprovado.

 

a)  Expressões de comparação

Os operadores de comparação da linguagem Java são:



b)  Expressões lógicas

Os operadores lógicos da linguagem Java são:



Eles são utilizados de forma idêntica aos operadores Not, And e Or bit-a-bit, se considerarmos verdadeiro como 1 e falso como 0 (zero).



c)  Comando Condicional IF

Para expressarmos uma condição no programa, utilizamos os comandos if e switch. O comando if pode aparecer de uma das seguintes formas:


if (condição for verdadeira)

    comando;


ou


if (condição for verdadeira)

    comando;

else //condição falsa outro comando;


Se precisarmos de mais de um comando dentro do IF ou do ELSE, utilizamos chaves:


if (condição for verdadeira){

    comando 1;

    comando 2;

}

else{ //condição falsa comando 3;

    comando 4;

}


Em geral, quando estivermos pensando na lógica do programa, utilizaremos os nomes SE, ENTÃO e SENÃO.


Exemplo 01: Aprovado/Reprovado


Considere que, dada a nota final de um aluno queiramos saber se este aluno foi aprovado ou reprovado. Para este problema, podemos criar o seguinte algoritmo:


Algoritmo:

    variável:

        nota do tipo inteiro

    LEIA nota;

    SE nota >=60 ENTÃO

        ESCREVA “Aluno aprovado.”;

    SE nota < 60 ENTÃO

        ESCREVA “Aluno reprovado.”;


Outra forma de escrever este algoritmo é utilizando SENÃO:


Algoritmo:

    variável:

        nota do tipo inteiro LEIA nota;

    SE nota >=60 ENTÃO

        ESCREVA “Aluno aprovado.”;

    SENÃO

        ESCREVA “Aluno reprovado.”;


Este programa em Java:

public class Exemplo01{

    public static void main (String [] args){

        int nota;

        System.out.println(“Verifica se um aluno foi aprovado”);

        nota  =  Integer.parseInt(JOptionPane.showInputDialog(“Qual  é a nota do aluno?”));

        if (nota >=60)

            System.out.println(“Aluno aprovado”);

         else

            System.out.println(“Aluno reprovado”);

    }

}


Exemplo 02: Conceito do Aluno

Considere que, dada a nota final de um aluno, queiramos saber o seu conceito final, dado pela tabela abaixo:


Algoritmo:
    variável:
    nota do tipo inteiro mensagem do tipo String
    LEIA nota;
    SE nota < 0 OU nota > 100 ENTÃO
        mensagem = “Nota invalida\nExecute o programa novamente”;
    SENÃO
       SE nota >= 90 ENTÃO
           mensagem = “Conceito A”;
        SENÃO
            SE nota >= 80 ENTÃO
                mensagem = “Conceito B”;
             SENÃO
                SE nota >= 70 ENTÃO
                    mensagem = “Conceito C”;
                SENÃO
                    SE nota >= 60 ENTÃO
                        mensagem = “Conceito D”;
                    SENÃO
                        mensagem = “Conceito R”;
    ESCREVA mensagem;


Este programa em Java:

public class Exemplo02{
public static void main (String [] args){
int nota;
String mensagem;
System.out.println(“Determina o conceito de um aluno”);

nota = Integer.parseInt(JOptionPane.showInputDialog(“Qual é a nota do aluno?”));

if (nota < 0 || nota > 100)
mensagem = “Nota invalida\nExecute o programa novamente”;
else{
if (nota >= 90)
mensagem = “Conceito A”;
else{
if (nota >= 80)
mensagem = “Conceito B”; 
else{
if (nota >= 70)
mensagem = “Conceito C”;
else{
if (nota >= 60)
mensagem = “Conceito D”;
else{
mensagem = “Conceito R”;
}
}
}
}
}
System.out.println(mensagem);
}
}

Exemplo 03: Cálculo do Imposto de Renda
Para os exemplos 3 e 4, os cálculos e valores são supostos (o importante aqui são os algoritmos e não os valores).



Exemplo 04: Cálculo do INSS
O INSS é um imposto que possui teto de descontos, isto é, há um valor máximo que pode ser descontado do funcionário. Suponha que o valor do INSS seja de 10%, não podendo ultrapassar o limite de R% 150,00. Desta maneira, podemos calcula o valor do INSS sendo igual a 10% do valor do salário bruto. Se este desconto ultrapassar R$ 150,00, então passamos o valor do desconto para R$ 150,00, o que nos dá o seguinte programa:


Exemplo 05: Escrita de datas por extenso
Faça um algoritmo que leia três números representando dia, mês e ano de uma data e escreva esta data por extenso. Eliminaremos quebras de linhas por questões de espaço.



d) Uma forma alternativa do comando IF
O comando condicional das linhas 12 a 23 contém uma forma especial de condicional, que é a comparação do valor de uma mesma variável com diversos valores, sendo que todas as comparações são feitas por igualdade. Quando este tipo de comparação é feita no programa, em geral fazemos uso do comando SWITCH, por duas razões: eficiência e legibilidade do código.


Este comando verifica se o valor da expressão é algum dos valores especificados nos casos. Se for, executa-se todos os comandos que estiverem abaixo até encontrar um PARE ou terminar o código do comando ESCOLHA. Por exemplo, se não houvesse o PARE após COMANDOS_1, se o valor da expressão fosse valor_1, então os COMANDOS_1 e COMANDOS_2 seriam executados. Entretanto, se o valor fosse valor_2, então somente o COMANDOS_2 seria executado. Se o valor da expressão for diferente de todos os valores especificados, então executa-se a seção DEFAULT.

A seção DEFAULT não é obrigatória, mas se este não for utilizado, deve-se prestar atenção ao que acontecerá caso nenhum dos valores especificados for igual ao valor da expressão.

Podemos reescrever o trecho das linhas 12 a 23 utilizando o comando ESCOLHA da seguinte forma:


-> O comando switch
O código acima pode ser escrito em Java de forma bastante simples, utilizando o comando SWITCH:

O programa completo utilizando switch é o seguinte:




É importante ressaltar que os comandos break são essenciais para que o valor correto seja atribuído à variável.

Além de facilitar a leitura, o uso do comando switch torna o programa mais eficiente, pois o compilador gera uma tabela e evita os vários teste que seriam feitos se utilizássemos comandos if.

Exemplo 07: Validação de datas
Neste exemplo, utilizaremos comando switch para validação de datas, desconsiderando a existência de anos bissextos. Vejamos inicialmente um algoritmo para resolver este problema com condicional IF.
Leremos três números representando a data e utilizaremos o critério de validação abaixo:
o ano pode ser qualquer valor;
o mês deve estar entre 1 e 12;
o dia deve ser um valor a partir de 1 e deve ser no máximo um valor limite, dado de acordo com o mês.

O algoritmo para resolver este problema pode ser:



Regras Básicas do Comando Switch
Quando utilizar o comando switch, é importante lembrar-se de algumas regras básicas:
O comando switch só pode ser utilizado com tipos “enumeráveis”; dentro do que vimos até agora, só pode ser utilizado com int, char e boolean.
O comando switch só pode substituir o condicional if se todas as condições forem de igualdade com uma única variável.
Nunca se esqueça de utilizar o break após os comandos de cada caso.








Comentários