Buscar

08- LTP1_Selecao_-_Slides

Prévia do material em texto

Linguagem e Técnicas de 
Programação
10 – Estruturas de Seleção
1
Centro Universitário do Pará – Cesupa
Área de Ciências Exatas e Tecnologia
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Agenda
Estruturas de controle
Sequencia
Seleção simples - if
Seleção composta – if/else
Operador condicional
Aninhamento
Blocos
 Seleção múltipla escolha - switch/case
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 2
Estruturas de controle
Transferência de controle
 Três técnicas de transferência de controle
podem especificar a ordem dos comandos
 Estrutura de sequencia
 Estrutura de seleção
 Estrutura de repetição
3Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Estruturas de Controle em
Java
Estrutura sequencial
Estruturas de seleção
 if
 if/else
 switch/case
Estruturas de repetição
 while
 do/while
 for
4Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Estrutura Sequencial
 Os comandos são executados um a um, 
de cima para baixo, da esquerda para 
direita.
 Após o início da execução, todos os 
comandos são executados, sem exceção.
{
comando_1;
comando_2;
comando_3;
}
5Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Estruturas de seleção
Também chamados de comandos 
condicionais
 Condicional Simples
 Condicional Composto
 Condicional Seleção Múltipla
6Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Condicional Simples
 Algoritmos:
se <expressão-lógica> entao
<seqüência-de-comandos>
fimse
 Java:
if (<expressão-lógica>) {
<sequência-de-comandos>
}
<expressão-lógica>
<sequência-de-
comandos>
7Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Funcionamento do if simples
Ao encontrar este comando, é feita a análise da 
<expressão-lógica>. Se o seu resultado for 
VERDADEIRO, todos os comandos da 
<sequência-de-comandos> são executados. 
 Se o resultado for FALSO, estes comandos são 
desprezados e a execução do algoritmo continua 
a partir da primeira linha depois do comando.
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 8
A estrutura de seleção if
 Exemplo:
 Suponha verificar se o aluno tem média para passar
direto (nota>=7)
9
Algoritmo:
Se a média do aluno for maior ou igual a 7
Imprimir “Aprovado”
Java:
if ( media >= 7)
System.out.println(“Aprovado”);
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Exemplo11 - if
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 10
//Uso da estrutura de seleção if
import javax.swing.JOptionPane; //habilita o uso da classe JOptionPane
public class Exemplo11 { //cabeçalho da classe
public static void main (String args[]) { //cabeçalho do método main
String entrada; //variável para a entrada de dados
float nota1, nota2, media; //variáveis para cálculos
//entrada da nota do primeiro bimestre
entrada = JOptionPane.showInputDialog("Forneça a nota do primeiro bimestre");
//conversão de texto (entrada) pata float (nota1)
nota1 = Float.parseFloat(entrada);
//entrada da nota do segundo bimestre
entrada = JOptionPane.showInputDialog("Forneça a nota do segundo bimestre");
//conversão de texto (entrada) pata float (nota2)
nota2 = Float.parseFloat(entrada);
//cálculo da média
media = (nota1 + nota2) / 2;
//saída do resultado da média
JOptionPane.showMessageDialog(null, "Média: "+media);
//saída do texto somente quando a média for maior ou igual a 7
if ( media >= 7 ) 
JOptionPane.showMessageDialog(null, "Aprovado direto");
System.exit(0);
} //fim do método main
} //fim da classe ExemploIf
Condicional Composto
 Algoritmo:
se <expressão-lógica> entao
<seqüência-de-comandos-1>
senao
<seqüência-de-comandos-2>
fimse
 Java:
if (<expressão-lógica>){
<seqüência-de-comandos-1>
}
else{
<seqüência-de-comandos-2>
}
fimse
<expressão-
lógica>
11Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Condicional Composto if/else
 Nesta outra forma do comando, se o resultado da 
avaliação de <expressão-lógica> for VERDADEIRO, 
todos os comandos da <seqüência-de-comandos-1> são 
executados, e a execução continua depois a partir da 
primeira linha depois do comando. 
 Se o resultado for FALSO, estes comandos são 
desprezados e o algoritmo continua a ser executado a 
partir da primeira linha depois do else, executando todos 
os comandos da <seqüência-de-comandos-2>.
12Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
A estrutura de seleção if / 
else
Exemplo:
 Suponha verificar se o aluno tem ou não
média para passar direto ( nota >= 7 )
13
Se a média do aluno for maior ou igual a 7
Imprimir “Aprovado”
Senão Imprimir “Não Aprovado”
if ( media >= 7 )
System.out.println(“Aprovado”);
else
System.out.println(“Não Aprovado”);
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Exemplo12 – if/else
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 14
//Uso da estrutura de seleção if/else
import javax.swing.JOptionPane; //habilita o uso da classe JOptionPane
public class Exemplo12 { //cabeçalho da classe
public static void main (String args[]) { //cabeçalho do método main
String entrada; //variável para a entrada de dados
float nota1, nota2, media; //variáveis para cálculos
//entrada da nota do primeiro bimestre
entrada = JOptionPane.showInputDialog("Forneça a nota do primeiro bimestre");
//conversão de texto (entrada) pata float (nota1)
nota1 = Float.parseFloat(entrada);
//entrada da nota do segundo bimestre
entrada = JOptionPane.showInputDialog("Forneça a nota do segundo bimestre");
//conversão de texto (entrada) pata float (nota2)
nota2 = Float.parseFloat(entrada);
//cálculo da média
media = (nota1 + nota2) / 2;
//saída do resultado da média
JOptionPane.showMessageDialog(null, "Média: "+media);
//saída do texto somente quando a média for maior ou igual a 7
if ( media >= 7 ) 
JOptionPane.showMessageDialog(null, "Aprovado direto");
else
JOptionPane.showMessageDialog(null,"Não aprovado direto");
System.exit(0);
} //fim do método main
} //fim da classe
Dica
Recue ambas as instruções do corpo de 
uma estrutura if/else
15
if ( media >= 7 ) 
JOptionPane.showMessageDialog(null, "Aprovado direto");
else
JOptionPane.showMessageDialog(null,"Não aprovado direto");
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Operador condicional (?:)
É uma forma de abreviar uma instrução
if/else
Pode ser usado quando o mesmo
comando é usado tanto no if quanto no 
else, mudando apenas os parâmetros
16
System.out.println( (media >= 7) ? “Aprovado” : “Não aprovado” );
if ( media >= 7)
System.out.println(“Aprovado”);
else
System.out.println(“Não Aprovado”);
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Exemplo13 – Operador 
condicional
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 17
//Uso da estrutura de seleção com operador condicional
import javax.swing.JOptionPane; //habilita o uso da classe JOptionPane
public class Exemplo13 { //cabeçalho da classe
public static void main (String args[]) { //cabeçalho do método main
String entrada; //variável para a entrada de dados
float nota1, nota2, media; //variáveis para cálculos
//entrada da nota do primeiro bimestre
entrada= JOptionPane.showInputDialog("Forneça a nota do primeiro bimestre");
//conversão de texto (entrada) pata float (nota1)
nota1 = Float.parseFloat(entrada);
//entrada da nota do segundo bimestre
entrada = JOptionPane.showInputDialog("Forneça a nota do segundo bimestre");
//conversão de texto (entrada) pata float (nota2)
nota2 = Float.parseFloat(entrada);
//cálculo da média
media = (nota1 + nota2) / 2;
//saída do resultado da média
JOptionPane.showMessageDialog(null, "Média: "+media);
//saída do texto que mostra a situação do aluno
JOptionPane.showMessageDialog(null, media >= 7 ? 
"Aprovado direto" : "Não aprovado direto");
System.exit(0);
} //fim do método main
} //fim da classe
Aninhamento
Podemos aninhar estruturas if/else para 
múltiplas decisões sequencias
Algoritmo:
18
Se a média do aluno for maior ou igual a 7
Imprimir “Aprovado Direto”
Senão 
Se a média do aluno for maior ou iguala a 5
Imprimir “Prova Final”
Senão
Imprimir “Reprovado Direto”
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Aninhamento
Java:
19
if ( media >= 7)
System.out.println(“Aprovado Direto”);
else
if ( media >=5 )
System.out.println(“Prova Final”);
else
System.out.println(“Reprovado Direto”);
Se existirem vários níveis de recuo, cada nível 
deve ser recuado pela mesma quantidade 
adicional de espaço.
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Exemplo14 – Aninhamento
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 20
//Uso da estrutura de seleção com aninhamento
import javax.swing.JOptionPane; //habilita o uso da classe JOptionPane
public class Exemplo14 { //cabeçalho da classe
public static void main (String args[]) { //cabeçalho do método main
String entrada; //variável para a entrada de dados
float nota1, nota2, media; //variáveis para cálculos
entrada = JOptionPane.showInputDialog("Forneça a nota do primeiro bimestre");
nota1 = Float.parseFloat(entrada);
entrada = JOptionPane.showInputDialog("Forneça a nota do segundo bimestre");
nota2 = Float.parseFloat(entrada);
media = (nota1 + nota2) / 2;
JOptionPane.showMessageDialog(null, "Média: "+media);
if ( media >= 7 ) 
JOptionPane.showMessageDialog(null,"Aprovado direto");
else
if ( media >= 5 ) 
JOptionPane.showMessageDialog(null, "Prova Final");
else
JOptionPane.showMessageDialog(null, "Reprovado direto");
System.exit(0);
} //fim do método main
} //fim da classe
Blocos de instruções
 Quando queremos agrupar mais de uma instrução, 
podemos criar um bloco de instruções
 Um bloco começa com chave { e termina com chave }
 Bastante usado em estruturas de seleção if, if/else e 
laços de repetição
 O bloco pode ser colocado em qualquer lugar de um 
programa em que se possa colocar uma instrução 
simples
 Esquecer uma ou ambas as chaves que delimitam um 
bloco pode levar a erros de sintaxe ou erros de lógica
21Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Bloco de instruções
22
if ( media >= 7 ) {
System.out.println(“Aprovado”);
System.out.println(“Muito bem !”);
}
else {
System.out.println(“Não Aprovado”);
System.out.println(“Precisa repetir a disciplina”);
}
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
A estrutura de seleção 
switch-case
 A estrutura switch-case se refere a uma outra 
modalidade de desvio da execução do programa de 
acordo com certas condições, semelhante ao uso da 
instrução if
 Ao trabalhar com uma grande quantidade de desvios 
condicionais contendo instruções if, pode-se 
comprometer a inteligibilidade do programa, deixando-o 
difícil de ser interpretado 
 A estrutura switch-case fornece uma forma mais 
adequada e eficiente de atender a este tipo de situação, 
constituindo-se uma estrutura de controle com múltipla 
escolha 
23Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
A estrutura de seleção 
switch-case
 A estrutura switch-case equivale a um conjunto de 
instruções if encadeadas, fornecendo maior 
inteligibilidade e eficiência durante a execução 
 A <expressão> só pode ser de valores inteiros ou 
caracteres
 Não pode ser usado para valores String, float ou double
 O comando break é obrigatório para cada item do switch
24
switch (<expressão>){
case 1: instruções; break;
case 2: instruções; break;
case 3: instruções; break,
default : instruções;
}
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 25
Exemplo15 – switch/case
Professor Odlaniger Lourenço Damaceno Monteiro | odlaniger.lourenco@gmail.com 26
//Uso da estrutura de seleção switch/case
import javax.swing.JOptionPane;
public class Exemplo15{
public static void main (String args[]){
int x;
x = Integer.parseInt(JOptionPane.showInputDialog("Digite um número de 0 a 9"));
switch(x){
case 0: JOptionPane.showMessageDialog(null,"zero"); break;
case 1: JOptionPane.showMessageDialog(null,"um"); break;
case 2: JOptionPane.showMessageDialog(null,"dois"); break;
case 3: JOptionPane.showMessageDialog(null,"três"); break;
case 4: JOptionPane.showMessageDialog(null,"quatro");break;
case 5: JOptionPane.showMessageDialog(null,"cinco"); break;
case 6: JOptionPane.showMessageDialog(null,"seis"); break;
case 7: JOptionPane.showMessageDialog(null,"sete"); break;
case 8: JOptionPane.showMessageDialog(null,"oito"); break;
case 9: JOptionPane.showMessageDialog(null,"nove"); break;
default: JOptionPane.showMessageDialog(null,"inválido");
}
System.exit(0);
}
}

Continue navegando