Buscar

POO 9 estruturasControleRepeticao escopo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ESTRUTURAS DE 
CONTROLE E REPETIÇÃO
Thaís Alves Burity Rocha
Agenda
 Desvios Condicionais
 Laços de repetição
 Desvios incondicionais
 Escopo de Variáveis
Introdução
 Os programas são executados de forma 
sequencial
 Estruturas de controle permitem que o 
programador mude o fluxo de execução do 
programa
 Antigamente se usava goto (mas não é indicado)
 Em Java, é apenas palavra reservada
Estruturas de Controle em Java
 Desvios condicionais
 if-else
 switch
 Operador condicional ?
 Laços de repetição
 while
 do-while
 for
 Desvios incondicionais
 continue
 break
Desvio Condicional: if-else
if(expressão booleana){
comando1;
}
if (expressão booleana){
comando1;
} else {
comando2;
comando3;
}
 Não é possível utilizar o comando else sozinho
 O corpo dos comandos if e else é limitado por ‘{‘ e ‘}’
 É possível omitir, desde que só contenha um comando
 A condição sempre é limitada por ‘(‘ e ‘)’
Desvio Condicional: if-else
Calculadora calculadora = new Calculadora();
double va1=3.5, va2=7.3, va3=9.5;
double media = calculadora.calcularMedia(va1,va2,va3);
String resultado = “”;
if ( media < 5 ){
resultado = “Reprovado”;
} else {
resultado = “Aprovado”;
}
Desvio Condicional: if-else
if ( media < 5 )
resultado = “Reprovado”;
else
resultado = “Aprovado”;
if ( media < 5 )
resultado = “Reprovado”;
System.out.println(resultado);
else
resultado = “Aprovado”;
Não recomendado
Desvio Condicional: if-else
int x=2, y=0, z=0, a=0; 
if ( x > 3 )
y = 2;
z+= 8;
a = y+x; 
É uma má prática de programação
usar if-else sem chaves!
int x = 1; 
if (x == 3){ //faz nada }
else if(x>4) { System.out.println(“>4”); }
else if(x<2) { System.out.println(“<2”); }
else { System.out.println(“else”); }
É possível encadear comandos if-else, mas 
não é adequado que seja algo muito extenso!
Desvio Condicional: if-else
 É possível aninhar comandos if-else
 Cuidado para não comprometer a legibilidade do 
código
if ( media < 5 ){
resultado = “Reprovado”;
} else {
resultado = “Aprovado”;
if( media >= 7){
resultado += “ por média”;
}
}
Desvio Condicional: switch
switch(<expressão>) {
case <expressão constante 1>:
// Bloco de código 1
break;
case <expressão constante 2>:
// Bloco de código 2
break;
case <expressão constante 3>:
// Bloco de código 3
break;
default:
// Bloco de código
}
Executado somente
quando todos os outros
cases falham
Tipo deve ser
byte, char, short, int ou 
String (a partir de Java 7)
Desvio Condicional: switch
int x = 3;
switch(x) {
case 1:
System.out.println(“x vale 1”);
break;
case 2:
System.out.println(“x vale 2”);
break;
case 3:
System.out.println(“x vale 3”);
break;
default:
System.out.println(“Não sei quanto vale x”); 
}
Desvio Condicional: switch
 O valor da expressão em cada case deve ser único
 É possível delimitar o corpo de cada case com 
chaves
 A cláusula default não precisa vir por último, mas 
essa é a forma mais convencional de usar
 Uso de break é opcional
 É executado tudo a partir do case válido ou
default (caso nenhum case seja válido) até a 
condição de parada
Desvio Condicional: switch
 Dentro das cláusulas case é possível ter outros 
blocos switch, if-else, laços de repetição, etc…
 switch não substitui totalmente o uso de if-else 
encadeado
 switch só verifica igualdade
 Com if-else é possível utilizar outros operadores de 
comparação
Desvio Condicional: switch
int x = 3; int k = 3;
switch(x) {
case 1:
System.out.println(“x vale 1”);
break;
case 2:
System.out.println(“x vale 2”);
break;
case k:
System.out.println(“x vale ”+k);
break;
default:
System.out.println(“Não sei quanto vale x”); 
}
O valor do case tem
que ser constante
Operador Condicional
 No geral, pouco usado por comprometer a 
legibilidade do código
<condição> ? <valor se true> : <valor se false>;
int x = 5, y;
y = (x>3) ? x*2 : x*4;
Uso de ( ) é opcional
Laço de Repetição: while
while (<expressão booleana>){
//comandos
}
while ( true ){
//fazer alguma coisa
}
int contador = 0;
while (contador < 10) {
System.out.println(contador);
contador = contador + 1;
}
Teste é feito 
no início
Loop infinito
Se não usar chaves, só
executará um comando
Laço de Repetição: do-while
do{
//comandos
}while (<expressão booleana>);
int contador = 0;
do{
System.out.println(contador);
contador = contador + 1;
}while (contador < 10);
Teste é feito no final, 
o que significa que o 
loop executará pelo 
menos 1 vez
Se não usar chaves, só
executará um comando
for(<inicialização> ; <condição> ; <incremento>){
//comandos
}
Laço de Repetição: for
Se a condição for false,
o laço é “quebrado”
É executado depois 
de comandos
Pode ser declaração e inicialização 
ou somente inicialização
Laço de Repetição: for
for(int contador = 0 ; contador < 10 ; contador++){
System.out.println(contador);
}
Laço de Repetição: for
 Campos não são obrigatórios
for(;;){
System.out.println("executou for");
}
Loop infinito
int contador = 0;
for(;contador<10;){
System.out.println(contador);
contador++;
} De maneira
equivalente ao while
Laço de Repetição: for
 É possível declarar mais de uma variável
for(int i=0, j=0; (i<10)&&(j<10) ; i++, j++){
System.out.println(“i vale ”+i+”, j vale ”+j);
}
Desvio Incondicional: break
 Saída imediata da estrutura de controle na qual a 
instrução é executada
 Além de ser usado em switch, pode ser usado em 
while, for e do-while
for(int i=1, j=10; (i<10)&&(j>0) ; i++, j--){
if(j%i == 2) break;
System.out.println("i vale "+i+", j vale "+j);
}
Desvio Incondicional: continue
 Interrompe a execução da iteração corrente e 
avalia a condição de repetição
 Usada em laços de repetição: while, for e do-
while
 Não se usa em switch
for(int i=1, j=10; (i<10)&&(j>0) ; i++, j--){
if(j%i == 2) continue;
System.out.println("i vale "+i+", j vale "+j);
}
Desvio Incondicional: return
 Foi definido para indicar o retorno de um método
 Exemplo:
 Também pode ser utilizado para desviar o fluxo de 
execução do programa
 Faz a execução do método corrente ser interrompida
public double getSaldo(){
return saldo;
}
Desvio Incondicional: return
public static boolean fazerAlgo(){
for (int x=0; x<3; x++){
System.out.println(“entrou no for”);
return true;
}
System.out.println(“saiu do for”);
return true;
}
public static void main(String[] args){
fazerAlgo();
System.out.println(“fim”);
}
Saída:
entrou no for
fim
Desvio Incondicional: return
 Quando o método tem tipo de retorno void, é 
possível utilizar o comando return vazio, somente
para finalizar a execução do método
public static void main(String[] args){
for(int i=0; i<10; i++){
System.out.println("oi");
return;
}
}
Se o método especifica o tipo de retorno, o comando
return deve ser usado retornando o dado do tipo definido
Desvio Incondicional: return
 Diferença em relação ao break e continue
 Finaliza a execução do método em que foi chamado
 Se o método é o main, o programa é finalizado!
 Por questão de legibilidade de código, não é 
recomendável usar return vazio
 O ideal é estruturar a lógica com as estruturas
estudadas
Escopo de Variáveis
 O escopo de uma variável determina a sua
visibilidade
 O corpo doscomandos de controle e de repetição 
é delimitado por { }, também chamado de bloco
 O escopo de bloco é similar ao escopo de métodos
Escopo de Variáveis
 O escopo das variáveis declaradas em blocos é
delimitado pelo bloco
{
int n;
int k;
k = 0;
}
{
int n;
{ 
int k;
}
k = 0;
}
{
int n;
{ 
int k;
int n;
}
}
n e k possuem o 
mesmo escopo
k foi declarada no bloco
interno, não sendo visível
no bloco mais externo
n foi declarada no 
bloco externo, sendo
visível no bloco mais
interno

Outros materiais