SlideShare uma empresa Scribd logo
Aula 09 – La¸cos (cont.)
Norton Trevisan Roman
19 de mar¸co de 2020
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 1 / 47
Do ... While
Existe ainda um outro tipo de la¸co: do...while
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 2 / 47
Do ... While
Existe ainda um outro tipo de la¸co: do...while
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
public static void main(String[] args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´AreatValor");
do {
System.out.println(area+"t"+
valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 2 / 47
Do ... While
O while faz o teste antes de
rodar o la¸co pela primeira vez
O do...while faz o teste depois
de rodar o la¸co pela primeira
vez
Rodando novamente apenas se o
teste for positivo
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 3 / 47
Do ... While
E quando usar um ou o outro?
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 4 / 47
Do ... While
E quando usar um ou o outro?
Depende de quando o teste
deve ser feito:
Se antes ou depois do corpo do la¸co
rodar uma vez
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 4 / 47
Do ... While
E qual dentre o while e do...while ´e melhor?
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
Do ... While
E qual dentre o while e do...while ´e melhor?
S˜ao totalmente equivalentes
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
Do ... While
E qual dentre o while e do...while ´e melhor?
S˜ao totalmente equivalentes
Todo while pode ser escrito
como do... while
while (condi¸c~ao) {
comando;
}
if (condi¸c~ao) {
do {
comando;
} while (condi¸c~ao);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
Do ... While
E qual dentre o while e do...while ´e melhor?
E vice versa:
do {
comando;
} while (condi¸c~ao);
condi¸c~ao = true;
while (condi¸c~ao) {
comando;
recalcula_condi¸c~ao;
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 6 / 47
Do ... While
O que ditar´a qual deles ser´a
usado ´e a conveniˆencia para o
programador
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 7 / 47
Do ... While
O que ditar´a qual deles ser´a
usado ´e a conveniˆencia para o
programador
Ser´a escolhido, naturalmente,
aquele que exigir a escrita de
menos c´odigo
while (condi¸c~ao) {
comando1;
comando2;
...
comandon;
}
do {
comando1;
comando2;
...
comandon;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 7 / 47
Do ... While
Em nosso c´odigo, esses trechos s˜ao equivalentes:
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
while (area <= 200) {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
if (area <= 200) {
do {
System.out.println(area+
"t"+
valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 8 / 47
Do ... While
Nesse caso, contudo, o if sempre ser´a verdadeiro
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
while (area <= 200) {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
if (area <= 200) {
do {
System.out.println(area+
"t"+
valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 9 / 47
Do ... While
Ent˜ao podemos removˆe-lo
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
while (area <= 200) {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´Areat
Valor");
do {
System.out.println(area+"t"
+ valorPiscina(area,tipo));
area = area + 50;
} while (area<=200);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 10 / 47
Do ... While
Da mesma forma, esses trechos s˜ao equivalentes:
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"t
t"+valorPiscina(area,
tipo));
tipo = tipo+1;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
if (tipo <= PLASTICO) {
do {
System.out.println(tipo+
"tt"+valorPiscina(area,
tipo));
tipo = tipo + 1;
} while (tipo <= PLASTICO);
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 11 / 47
Do ... While
Tamb´em aqui o if era redundante
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"t
t"+valorPiscina(area,
tipo));
tipo = tipo+1;
}
}
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
do {
System.out.println(tipo+"t
t"+valorPiscina(area,
tipo));
tipo = tipo + 1;
} while (tipo <= PLASTICO);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 12 / 47
Do ... While
E, finalmente,
assim como no
while...
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterialt
Valor");
while (area <= 200) {
tipo = ALVENARIA;
while (tipo <= PLASTICO) {
System.out.println(area+"t"+tipo+
"tt"+valorPiscina(area,tipo));
tipo = tipo+1;
}
area = area+50;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 13 / 47
Do ... While
Tamb´em o
do...while
pode estar
aninhado
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterialt
Valor");
do {
tipo = ALVENARIA;
do {
System.out.println(area+"t"+tipo+
"tt"+valorPiscina(area,tipo));
tipo = tipo+1;
} while (tipo <= PLASTICO);
area = area+50;
} while (area <= 200);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 14 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
Se ela for verdadeira,
executa o la¸co (corpo do
while)
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
Se ela for verdadeira,
executa o la¸co (corpo do
while)
do {
comando;
} while (condi¸c~ao);
Primeiro executa o la¸co
(corpo do do...while)
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Primeiro testa a condi¸c˜ao
Se ela for verdadeira,
executa o la¸co (corpo do
while)
do {
comando;
} while (condi¸c~ao);
Primeiro executa o la¸co
(corpo do do...while)
Ao final do corpo, testa
ent˜ao a condi¸c˜ao
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
while
do {
comando;
} while (condi¸c~ao);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
while
do {
comando;
} while (condi¸c~ao);
Se a condi¸c˜ao for
verdadeira, executa o la¸co
novamente
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
Em Suma...
while (condi¸c~ao) {
comando;
}
Ao final do corpo, volta ao
in´ıcio, testando novamente
a condi¸c˜ao
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
while
do {
comando;
} while (condi¸c~ao);
Se a condi¸c˜ao for
verdadeira, executa o la¸co
novamente
Se ela for falsa, passa `a
pr´oxima instru¸c˜ao ap´os o
do...while
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
Em Suma...
Fonte: Meme de autor desconhecido
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 17 / 47
For
Os while vistos
tinham
caracter´ısticas em
comum em suas
vari´aveis de controle:
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 18 / 47
For
Os while vistos
tinham
caracter´ısticas em
comum em suas
vari´aveis de controle:
Ambos variavam em
passos constantes (de
1 em 1 ou de 50 em
50)
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 18 / 47
For
N˜ao haveria um
modo de deixar esse
c´odigo mais enxuto?
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 19 / 47
For
N˜ao haveria um
modo de deixar esse
c´odigo mais enxuto?
Um modo de dizer
“para tipo
come¸cando em 0,
variando de 1 em 1,
at´e 3, fa¸ca...”
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 19 / 47
For
Ou “para area
come¸cando em 50,
variando de 50 em
50, at´e 200, fa¸ca...”
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´AreatValor");
while (area <= 200) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
area = area+50;
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 20 / 47
For
O la¸co for:
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
For
O la¸co for:
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Primeiro, h´a a inicializa¸c˜ao das vari´aveis de controle
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
For
O la¸co for:
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Primeiro, h´a a inicializa¸c˜ao das vari´aveis de controle
Esse passo ´e executado uma ´unica vez
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
For
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Em seguida, a condi¸c˜ao ´e testada
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 22 / 47
For
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Em seguida, a condi¸c˜ao ´e testada
Se resultar verdadeira, os comandos do corpo do
for s˜ao executados
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 22 / 47
For
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Ao final do corpo, ´e executada a atualiza¸c˜ao
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
For
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Ao final do corpo, ´e executada a atualiza¸c˜ao
Inicia-se o la¸co novamente, voltando ao teste da
condi¸c˜ao
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
For
for (inicializa¸c~ao;
condi¸c~ao;
atualiza¸c~ao) {
comandos;
}
inicializa¸c~ao;
while (condi¸c~ao) {
comandos;
atualiza¸c~ao;
}
Ao final do corpo, ´e executada a atualiza¸c˜ao
Inicia-se o la¸co novamente, voltando ao teste da
condi¸c˜ao
Se a condi¸c˜ao for falsa, o corpo ´e ignorado
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
For
public static void main(String[]
args) {
double area = 100;
int tipo = ALVENARIA;
System.out.println("Materialt
Valor");
while (tipo <= PLASTICO) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
}
public static void main(String[]
args) {
double area = 100;
System.out.println("Materialt
Valor");
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
}
}
S˜ao totalmente equivalentes: dependem da
conveniˆencia do programador
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 24 / 47
For
´E poss´ıvel declarar
a vari´avel de
controle dentro do
for
Nesse caso, seu
escopo ´e o
corpo do for
public static void main(String[]
args) {
double area = 100;
System.out.println("Materialt
Valor");
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 25 / 47
For
Nada impede,
contudo, que seja
declarada antes,
para ser vis´ıvel a
mais algu´em:
public static void main(String[]
args) {
double area = 100;
System.out.println("Materialt
Valor");
int tipo;
for(tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(tipo+"tt"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 26 / 47
For
Incremento de um em um n˜ao ´e s´o o que o for ´e
capaz de fazer:
public static void main(String[]
args) {
double area = 50;
int tipo = ALVENARIA;
System.out.println("´AreatValor");
while (area <= 200) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
area = area+50;
}
}
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 27 / 47
For
Qualquer express˜ao
alg´ebrica pode ser
usada
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 28 / 47
For
Qualquer express˜ao
alg´ebrica pode ser
usada
At´e mesmo coisas
como
area = 2*area +
Math.pow(area,3)
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 28 / 47
For
E n˜ao ´e apenas o
int que pode ser
usado como
vari´avel de controle
Podemos tamb´em
usar outros tipos –
Cuidado com
compara¸c˜oes em
ponto flutuante!!!
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 29 / 47
For
Da mesma forma,
na condi¸c˜ao
qualquer express˜ao
l´ogica ou relacional
pode ser usada
Ex:
(area <= 200)||
(area == 300)
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 50; area <= 200;
area = area+50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 30 / 47
For
Tamb´em nada nos
impede de fazer um
decremento
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 200; area >= 50;
area = area-50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 31 / 47
For
E o resultado seria
apenas a invers˜ao
da tabela:
´Area Valor
200.0 300000.0
150.0 225000.0
100.0 150000.0
50.0 75000.0
public static void main(String[]
args) {
int tipo = ALVENARIA;
System.out.println("´AreatValor");
for(double area = 200; area >= 50;
area = area-50) {
System.out.println(area+"t"+
valorPiscina(area,tipo));
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 32 / 47
For Aninhado
La¸cos for podem tamb´em ser aninhados
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterial
tValor");
while (area <= 200) {
tipo = ALVENARIA;
while (tipo <= PLASTICO) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
area = area+50;
}
}
public static void main(String[] args) {
System.out.println("´AreatMaterial
tValor");
for(double area = 50; area <= 200;
area = area+50) {
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
}
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 33 / 47
For Aninhado
La¸cos for podem tamb´em ser aninhados
public static void main(String[] args) {
double area = 50;
int tipo;
System.out.println("´AreatMaterial
tValor");
while (area <= 200) {
tipo = ALVENARIA;
while (tipo <= PLASTICO) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
tipo = tipo+1;
}
area = area+50;
}
}
public static void main(String[] args) {
System.out.println("´AreatMaterial
tValor");
for(double area = 50; area <= 200;
area = area+50) {
for(int tipo = ALVENARIA;
tipo <= PLASTICO;
tipo = tipo+1) {
System.out.println(area+"t"+
tipo+"tt"+
valorPiscina(area,tipo));
}
}
}
Podem ficar at´e mais f´aceis de serem entendidos
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 33 / 47
For
Embora a condi¸c˜ao
tenha que ser ´unica
int a;
int b;
for(???; a<b; ???) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
For
Embora a condi¸c˜ao
tenha que ser ´unica
Aceita m´ultiplas
inicializa¸c˜oes
Separadas por v´ırgula
int a;
int b;
for(a=1, b=4; a<b; ???) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Declaradas fora do for
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
For
Embora a condi¸c˜ao
tenha que ser ´unica
Aceita m´ultiplas
inicializa¸c˜oes
Separadas por v´ırgula
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Declaradas fora do for
E m´ultiplas atualiza¸c˜oes
Tamb´em separadas por v´ırgula
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
For
Embora a condi¸c˜ao
tenha que ser ´unica
Aceita m´ultiplas
inicializa¸c˜oes
Separadas por v´ırgula
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Declaradas fora do for
E m´ultiplas atualiza¸c˜oes
Tamb´em separadas por v´ırgula
a++? b--?
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
Express˜oes Contra´ıdas
S˜ao “atalhos” →
Express˜oes contra´ıdas int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 35 / 47
Express˜oes Contra´ıdas
S˜ao “atalhos” →
Express˜oes contra´ıdas
´Uteis para realizar a
opera¸c˜ao e armazenar
o resultado na mesma
vari´avel
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 35 / 47
Express˜oes Contra´ıdas
Express˜ao Contra´ıda
x = x + 5 x += 5
x = x - 5 x -= 5
x = x * 5 x *= 5
x = x / 5 x /= 5
x = x % 5 x %= 5
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 36 / 47
Express˜oes Contra´ıdas
Express˜ao Contra´ıda
x = x + 5 x += 5
x = x - 5 x -= 5
x = x * 5 x *= 5
x = x / 5 x /= 5
x = x % 5 x %= 5
int a;
int b;
for(a=1, b=4; a<b; a++,b--) {
System.out.println("a="+a);
System.out.println("b="+b);
}
E o ++?
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 36 / 47
Express˜oes Contra´ıdas
Tem duas formas: x++
ou ++x
int x = 2;
int y = 2;
x++;
++y;
System.out.println("x = "
+x+", y = "+y);
Sa´ıda:
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
Express˜oes Contra´ıdas
Tem duas formas: x++
ou ++x
int x = 2;
int y = 2;
x++;
++y;
System.out.println("x = "
+x+", y = "+y);
Sa´ıda:
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
Express˜oes Contra´ıdas
Tem duas formas: x++
ou ++x
Usados isoladamente,
tanto ++x quanto x++
correspondem a
x = x+1
int x = 2;
int y = 2;
x++;
++y;
System.out.println("x = "
+x+", y = "+y);
Sa´ıda:
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
O que houve?
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
O que houve?
x++ ´e um
p´os-incremento
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
Express˜oes Contra´ıdas
Mas coisas acontecem
quando usados em
conjunto com outros
comandos...
O que houve?
x++ ´e um
p´os-incremento
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Diz que o compilador deve usar o valor que est´a em
x e s´o ent˜ao increment´a-lo
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
Express˜oes Contra´ıdas
++x ´e um
pr´e-incremento
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 39 / 47
Express˜oes Contra´ıdas
++x ´e um
pr´e-incremento
Diz que o compilador
deve primeiro
incrementar o valor de
x, e s´o ent˜ao us´a-lo
int x = 2;
int y = 2;
System.out.println("x = "+
x++ +", y = "+ ++y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 3
x = 3, y = 3
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 39 / 47
Express˜oes Contra´ıdas
De forma semelhante
ao ++, o --
decrementa, em vez
de incrementar
Tamb´em em suas duas
formas: x-- e --x
int x = 2;
int y = 2;
System.out.println("x = "+
x-- +", y = "+ --y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 40 / 47
Express˜oes Contra´ıdas
De forma semelhante
ao ++, o --
decrementa, em vez
de incrementar
Tamb´em em suas duas
formas: x-- e --x
int x = 2;
int y = 2;
System.out.println("x = "+
x-- +", y = "+ --y);
System.out.println("x = "+
x +", y = "+ y);
Sa´ıda:
x = 2, y = 1
x = 1, y = 1
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 40 / 47
Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 3, y = 2
x = 4, z = 4
y = x++ far´a y conter 2, se x contiver 2
antes do ++
z = ++x far´a z conter 4,
se x contiver 3 antes do ++
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 3, y = 2
x = 4, z = 4
y = x++ far´a y conter 2, se x contiver 2
antes do ++
z = ++x far´a z conter 4,
se x contiver 3 antes do ++
C´odigo
int x = 1;
int y = x++ + 4;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x + 4;
System.out.println("x = "+ x +", z = "+ z);
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
Express˜oes Contra´ıdas
Mais exemplos:
C´odigo
int x = 2;
int y = x++;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 3, y = 2
x = 4, z = 4
y = x++ far´a y conter 2, se x contiver 2
antes do ++
z = ++x far´a z conter 4,
se x contiver 3 antes do ++
C´odigo
int x = 1;
int y = x++ + 4;
System.out.println("x = "+ x +", y = "+ y);
int z = ++x + 4;
System.out.println("x = "+ x +", z = "+ z);
Sa´ıda
x = 2, y = 5
x = 3, z = 7
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
La¸cos
Considere o c´odigo ao
lado:
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
La¸cos
Considere o c´odigo ao
lado:
O que ser´a impresso?
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
La¸cos
Considere o c´odigo ao
lado:
O que ser´a impresso?
1 2 3 4
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
La¸cos
Considere o c´odigo ao
lado:
O que ser´a impresso?
1 2 3 4
A inicializa¸c˜ao em um
la¸co for ´e opcional
public static void main(
String[] args) {
int x = 1;
for (; x<5; x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
La¸cos
Considere agora esse
c´odigo: public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
La¸cos
Considere agora esse
c´odigo:
O que ser´a impresso?
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
La¸cos
Considere agora esse
c´odigo:
O que ser´a impresso?
1 1 1 1 1 1 1 1 1...
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
La¸cos
Considere agora esse
c´odigo:
O que ser´a impresso?
1 1 1 1 1 1 1 1 1...
La¸co infinito: a
condi¸c˜ao de parada
nunca ´e satisfeita
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
La¸cos
Tamb´em a atualiza¸c˜ao
da vari´avel de controle
´e opcional
public static void main(
String[] args) {
int x = 1;
for (; x<5;) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 44 / 47
La¸cos
E esse c´odigo?
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
La¸cos
E esse c´odigo?
1 2 3 4 5 6 7 8...
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
La¸cos
E esse c´odigo?
1 2 3 4 5 6 7 8...
De novo! Ningu´em
disse ao la¸co o que
testar para parar
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
La¸cos
E esse c´odigo?
1 2 3 4 5 6 7 8...
De novo! Ningu´em
disse ao la¸co o que
testar para parar
A condi¸c˜ao de parada
em um la¸co for
tamb´em ´e opcional
public static void main(
String[] args) {
for (int x=1;;x++) {
System.out.print(
x+" ");
}
}
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
La¸cos
Em Suma:
Inicializa¸c˜ao, condi¸c˜ao e atualiza¸c˜ao s˜ao opcionais
A condi¸c˜ao aceita qualquer express˜ao que resulte em
verdadeiro ou falso (express˜oes l´ogicas e relacionais)
Inicializa¸c˜ao e atualiza¸c˜ao s˜ao apenas c´odigos
rodados, respectivamente, antes da primeira
itera¸c˜ao e ao fim de cada itera¸c˜ao do la¸co
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 46 / 47
Videoaula
https://www.youtube.com/watch?v=mOrsP1-wtlM
(parcial)
e
https://www.youtube.com/watch?v=SKoEmpiSXm0
Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 47 / 47

Mais conteúdo relacionado

Mais de Norton Trevisan Roman

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
Norton Trevisan Roman
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
Norton Trevisan Roman
 

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 

Último

epidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).pptepidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).ppt
MarceloMonteiro213738
 
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdfUFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
Manuais Formação
 
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxSlides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
wagnermorais28
 
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdfUFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
Manuais Formação
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
lveiga112
 
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxSlides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
O que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdfO que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdf
Pastor Robson Colaço
 
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdfO Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
silvamelosilva300
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
joseanesouza36
 
Dicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de cursoDicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de curso
Simone399395
 
Atividade letra da música - Espalhe Amor, Anavitória.
Atividade letra da música - Espalhe  Amor, Anavitória.Atividade letra da música - Espalhe  Amor, Anavitória.
Atividade letra da música - Espalhe Amor, Anavitória.
Mary Alvarenga
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
Zenir Carmen Bez Trombeta
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
WelberMerlinCardoso
 
Fernão Lopes. pptx
Fernão Lopes.                       pptxFernão Lopes.                       pptx
Fernão Lopes. pptx
TomasSousa7
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
Eró Cunha
 
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
LeticiaRochaCupaiol
 
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIASA SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
HisrelBlog
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
YeniferGarcia36
 

Último (20)

epidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).pptepidemias endemia-pandemia-e-epidemia (1).ppt
epidemias endemia-pandemia-e-epidemia (1).ppt
 
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdfUFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
UFCD_10145_Enquadramento do setor farmacêutico_indice.pdf
 
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxSlides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptx
 
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptxPP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
PP Slides Lição 11, Betel, Ordenança para exercer a fé, 2Tr24.pptx
 
Potenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números RacionaisPotenciação e Radiciação de Números Racionais
Potenciação e Radiciação de Números Racionais
 
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdfUFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
UFCD_3546_Prevenção e primeiros socorros_geriatria.pdf
 
Testes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdfTestes + soluções_Mensagens12 )11111.pdf
Testes + soluções_Mensagens12 )11111.pdf
 
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptxSlides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
Slides Lição 11, Central Gospel, Os Mortos Em CRISTO, 2Tr24.pptx
 
O que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdfO que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdf
 
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdfO Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
O Mito da Caverna de Platão_ Uma Jornada em Busca da Verdade.pdf
 
Educação trabalho HQ em sala de aula uma excelente ideia
Educação  trabalho HQ em sala de aula uma excelente  ideiaEducação  trabalho HQ em sala de aula uma excelente  ideia
Educação trabalho HQ em sala de aula uma excelente ideia
 
Dicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de cursoDicas de normas ABNT para trabalho de conclusão de curso
Dicas de normas ABNT para trabalho de conclusão de curso
 
Atividade letra da música - Espalhe Amor, Anavitória.
Atividade letra da música - Espalhe  Amor, Anavitória.Atividade letra da música - Espalhe  Amor, Anavitória.
Atividade letra da música - Espalhe Amor, Anavitória.
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
 
Livro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo FreireLivro: Pedagogia do Oprimido - Paulo Freire
Livro: Pedagogia do Oprimido - Paulo Freire
 
Fernão Lopes. pptx
Fernão Lopes.                       pptxFernão Lopes.                       pptx
Fernão Lopes. pptx
 
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...REGULAMENTO  DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
REGULAMENTO DO CONCURSO DESENHOS AFRO/2024 - 14ª edição - CEIRI /UREI (ficha...
 
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
1ª LEI DE OHN, CARACTERISTICAS IMPORTANTES.
 
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIASA SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
A SOCIOLOGIA E O TRABALHO: ANÁLISES E VIVÊNCIAS
 
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
000. Para rezar o terço - Junho - mês do Sagrado Coração de Jesús.pdf
 

(ACH2001) Introdução à Programação - Aula 09

  • 1. Aula 09 – La¸cos (cont.) Norton Trevisan Roman 19 de mar¸co de 2020 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 1 / 47
  • 2. Do ... While Existe ainda um outro tipo de la¸co: do...while do { comando1; comando2; ... comandon; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 2 / 47
  • 3. Do ... While Existe ainda um outro tipo de la¸co: do...while do { comando1; comando2; ... comandon; } while (condi¸c~ao); public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´AreatValor"); do { System.out.println(area+"t"+ valorPiscina(area,tipo)); area = area + 50; } while (area<=200); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 2 / 47
  • 4. Do ... While O while faz o teste antes de rodar o la¸co pela primeira vez O do...while faz o teste depois de rodar o la¸co pela primeira vez Rodando novamente apenas se o teste for positivo while (condi¸c~ao) { comando1; comando2; ... comandon; } do { comando1; comando2; ... comandon; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 3 / 47
  • 5. Do ... While E quando usar um ou o outro? while (condi¸c~ao) { comando1; comando2; ... comandon; } do { comando1; comando2; ... comandon; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 4 / 47
  • 6. Do ... While E quando usar um ou o outro? Depende de quando o teste deve ser feito: Se antes ou depois do corpo do la¸co rodar uma vez while (condi¸c~ao) { comando1; comando2; ... comandon; } do { comando1; comando2; ... comandon; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 4 / 47
  • 7. Do ... While E qual dentre o while e do...while ´e melhor? Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
  • 8. Do ... While E qual dentre o while e do...while ´e melhor? S˜ao totalmente equivalentes Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
  • 9. Do ... While E qual dentre o while e do...while ´e melhor? S˜ao totalmente equivalentes Todo while pode ser escrito como do... while while (condi¸c~ao) { comando; } if (condi¸c~ao) { do { comando; } while (condi¸c~ao); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 5 / 47
  • 10. Do ... While E qual dentre o while e do...while ´e melhor? E vice versa: do { comando; } while (condi¸c~ao); condi¸c~ao = true; while (condi¸c~ao) { comando; recalcula_condi¸c~ao; } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 6 / 47
  • 11. Do ... While O que ditar´a qual deles ser´a usado ´e a conveniˆencia para o programador while (condi¸c~ao) { comando1; comando2; ... comandon; } do { comando1; comando2; ... comandon; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 7 / 47
  • 12. Do ... While O que ditar´a qual deles ser´a usado ´e a conveniˆencia para o programador Ser´a escolhido, naturalmente, aquele que exigir a escrita de menos c´odigo while (condi¸c~ao) { comando1; comando2; ... comandon; } do { comando1; comando2; ... comandon; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 7 / 47
  • 13. Do ... While Em nosso c´odigo, esses trechos s˜ao equivalentes: public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´Areat Valor"); while (area <= 200) { System.out.println(area+"t" + valorPiscina(area,tipo)); area = area+50; } } public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´Areat Valor"); if (area <= 200) { do { System.out.println(area+ "t"+ valorPiscina(area,tipo)); area = area + 50; } while (area<=200); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 8 / 47
  • 14. Do ... While Nesse caso, contudo, o if sempre ser´a verdadeiro public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´Areat Valor"); while (area <= 200) { System.out.println(area+"t" + valorPiscina(area,tipo)); area = area+50; } } public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´Areat Valor"); if (area <= 200) { do { System.out.println(area+ "t"+ valorPiscina(area,tipo)); area = area + 50; } while (area<=200); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 9 / 47
  • 15. Do ... While Ent˜ao podemos removˆe-lo public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´Areat Valor"); while (area <= 200) { System.out.println(area+"t" + valorPiscina(area,tipo)); area = area+50; } } public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´Areat Valor"); do { System.out.println(area+"t" + valorPiscina(area,tipo)); area = area + 50; } while (area<=200); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 10 / 47
  • 16. Do ... While Da mesma forma, esses trechos s˜ao equivalentes: public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"t t"+valorPiscina(area, tipo)); tipo = tipo+1; } } public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("Materialt Valor"); if (tipo <= PLASTICO) { do { System.out.println(tipo+ "tt"+valorPiscina(area, tipo)); tipo = tipo + 1; } while (tipo <= PLASTICO); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 11 / 47
  • 17. Do ... While Tamb´em aqui o if era redundante public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"t t"+valorPiscina(area, tipo)); tipo = tipo+1; } } public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("Materialt Valor"); do { System.out.println(tipo+"t t"+valorPiscina(area, tipo)); tipo = tipo + 1; } while (tipo <= PLASTICO); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 12 / 47
  • 18. Do ... While E, finalmente, assim como no while... public static void main(String[] args) { double area = 50; int tipo; System.out.println("´AreatMaterialt Valor"); while (area <= 200) { tipo = ALVENARIA; while (tipo <= PLASTICO) { System.out.println(area+"t"+tipo+ "tt"+valorPiscina(area,tipo)); tipo = tipo+1; } area = area+50; } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 13 / 47
  • 19. Do ... While Tamb´em o do...while pode estar aninhado public static void main(String[] args) { double area = 50; int tipo; System.out.println("´AreatMaterialt Valor"); do { tipo = ALVENARIA; do { System.out.println(area+"t"+tipo+ "tt"+valorPiscina(area,tipo)); tipo = tipo+1; } while (tipo <= PLASTICO); area = area+50; } while (area <= 200); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 14 / 47
  • 20. Em Suma... while (condi¸c~ao) { comando; } do { comando; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
  • 21. Em Suma... while (condi¸c~ao) { comando; } Primeiro testa a condi¸c˜ao do { comando; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
  • 22. Em Suma... while (condi¸c~ao) { comando; } Primeiro testa a condi¸c˜ao Se ela for verdadeira, executa o la¸co (corpo do while) do { comando; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
  • 23. Em Suma... while (condi¸c~ao) { comando; } Primeiro testa a condi¸c˜ao Se ela for verdadeira, executa o la¸co (corpo do while) do { comando; } while (condi¸c~ao); Primeiro executa o la¸co (corpo do do...while) Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
  • 24. Em Suma... while (condi¸c~ao) { comando; } Primeiro testa a condi¸c˜ao Se ela for verdadeira, executa o la¸co (corpo do while) do { comando; } while (condi¸c~ao); Primeiro executa o la¸co (corpo do do...while) Ao final do corpo, testa ent˜ao a condi¸c˜ao Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 15 / 47
  • 25. Em Suma... while (condi¸c~ao) { comando; } Ao final do corpo, volta ao in´ıcio, testando novamente a condi¸c˜ao do { comando; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
  • 26. Em Suma... while (condi¸c~ao) { comando; } Ao final do corpo, volta ao in´ıcio, testando novamente a condi¸c˜ao Se ela for falsa, passa `a pr´oxima instru¸c˜ao ap´os o while do { comando; } while (condi¸c~ao); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
  • 27. Em Suma... while (condi¸c~ao) { comando; } Ao final do corpo, volta ao in´ıcio, testando novamente a condi¸c˜ao Se ela for falsa, passa `a pr´oxima instru¸c˜ao ap´os o while do { comando; } while (condi¸c~ao); Se a condi¸c˜ao for verdadeira, executa o la¸co novamente Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
  • 28. Em Suma... while (condi¸c~ao) { comando; } Ao final do corpo, volta ao in´ıcio, testando novamente a condi¸c˜ao Se ela for falsa, passa `a pr´oxima instru¸c˜ao ap´os o while do { comando; } while (condi¸c~ao); Se a condi¸c˜ao for verdadeira, executa o la¸co novamente Se ela for falsa, passa `a pr´oxima instru¸c˜ao ap´os o do...while Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 16 / 47
  • 29. Em Suma... Fonte: Meme de autor desconhecido Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 17 / 47
  • 30. For Os while vistos tinham caracter´ısticas em comum em suas vari´aveis de controle: public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 18 / 47
  • 31. For Os while vistos tinham caracter´ısticas em comum em suas vari´aveis de controle: Ambos variavam em passos constantes (de 1 em 1 ou de 50 em 50) public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 18 / 47
  • 32. For N˜ao haveria um modo de deixar esse c´odigo mais enxuto? public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 19 / 47
  • 33. For N˜ao haveria um modo de deixar esse c´odigo mais enxuto? Um modo de dizer “para tipo come¸cando em 0, variando de 1 em 1, at´e 3, fa¸ca...” public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 19 / 47
  • 34. For Ou “para area come¸cando em 50, variando de 50 em 50, at´e 200, fa¸ca...” public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´AreatValor"); while (area <= 200) { System.out.println(area+"t"+ valorPiscina(area,tipo)); area = area+50; } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 20 / 47
  • 35. For O la¸co for: for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
  • 36. For O la¸co for: for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Primeiro, h´a a inicializa¸c˜ao das vari´aveis de controle Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
  • 37. For O la¸co for: for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Primeiro, h´a a inicializa¸c˜ao das vari´aveis de controle Esse passo ´e executado uma ´unica vez Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 21 / 47
  • 38. For for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Em seguida, a condi¸c˜ao ´e testada Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 22 / 47
  • 39. For for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Em seguida, a condi¸c˜ao ´e testada Se resultar verdadeira, os comandos do corpo do for s˜ao executados Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 22 / 47
  • 40. For for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Ao final do corpo, ´e executada a atualiza¸c˜ao Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
  • 41. For for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Ao final do corpo, ´e executada a atualiza¸c˜ao Inicia-se o la¸co novamente, voltando ao teste da condi¸c˜ao Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
  • 42. For for (inicializa¸c~ao; condi¸c~ao; atualiza¸c~ao) { comandos; } inicializa¸c~ao; while (condi¸c~ao) { comandos; atualiza¸c~ao; } Ao final do corpo, ´e executada a atualiza¸c˜ao Inicia-se o la¸co novamente, voltando ao teste da condi¸c˜ao Se a condi¸c˜ao for falsa, o corpo ´e ignorado Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 23 / 47
  • 43. For public static void main(String[] args) { double area = 100; int tipo = ALVENARIA; System.out.println("Materialt Valor"); while (tipo <= PLASTICO) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } } public static void main(String[] args) { double area = 100; System.out.println("Materialt Valor"); for(int tipo = ALVENARIA; tipo <= PLASTICO; tipo = tipo+1) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); } } S˜ao totalmente equivalentes: dependem da conveniˆencia do programador Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 24 / 47
  • 44. For ´E poss´ıvel declarar a vari´avel de controle dentro do for Nesse caso, seu escopo ´e o corpo do for public static void main(String[] args) { double area = 100; System.out.println("Materialt Valor"); for(int tipo = ALVENARIA; tipo <= PLASTICO; tipo = tipo+1) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 25 / 47
  • 45. For Nada impede, contudo, que seja declarada antes, para ser vis´ıvel a mais algu´em: public static void main(String[] args) { double area = 100; System.out.println("Materialt Valor"); int tipo; for(tipo = ALVENARIA; tipo <= PLASTICO; tipo = tipo+1) { System.out.println(tipo+"tt"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 26 / 47
  • 46. For Incremento de um em um n˜ao ´e s´o o que o for ´e capaz de fazer: public static void main(String[] args) { double area = 50; int tipo = ALVENARIA; System.out.println("´AreatValor"); while (area <= 200) { System.out.println(area+"t"+ valorPiscina(area,tipo)); area = area+50; } } public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 50; area <= 200; area = area+50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 27 / 47
  • 47. For Qualquer express˜ao alg´ebrica pode ser usada public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 50; area <= 200; area = area+50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 28 / 47
  • 48. For Qualquer express˜ao alg´ebrica pode ser usada At´e mesmo coisas como area = 2*area + Math.pow(area,3) public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 50; area <= 200; area = area+50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 28 / 47
  • 49. For E n˜ao ´e apenas o int que pode ser usado como vari´avel de controle Podemos tamb´em usar outros tipos – Cuidado com compara¸c˜oes em ponto flutuante!!! public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 50; area <= 200; area = area+50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 29 / 47
  • 50. For Da mesma forma, na condi¸c˜ao qualquer express˜ao l´ogica ou relacional pode ser usada Ex: (area <= 200)|| (area == 300) public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 50; area <= 200; area = area+50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 30 / 47
  • 51. For Tamb´em nada nos impede de fazer um decremento public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 200; area >= 50; area = area-50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 31 / 47
  • 52. For E o resultado seria apenas a invers˜ao da tabela: ´Area Valor 200.0 300000.0 150.0 225000.0 100.0 150000.0 50.0 75000.0 public static void main(String[] args) { int tipo = ALVENARIA; System.out.println("´AreatValor"); for(double area = 200; area >= 50; area = area-50) { System.out.println(area+"t"+ valorPiscina(area,tipo)); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 32 / 47
  • 53. For Aninhado La¸cos for podem tamb´em ser aninhados public static void main(String[] args) { double area = 50; int tipo; System.out.println("´AreatMaterial tValor"); while (area <= 200) { tipo = ALVENARIA; while (tipo <= PLASTICO) { System.out.println(area+"t"+ tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } area = area+50; } } public static void main(String[] args) { System.out.println("´AreatMaterial tValor"); for(double area = 50; area <= 200; area = area+50) { for(int tipo = ALVENARIA; tipo <= PLASTICO; tipo = tipo+1) { System.out.println(area+"t"+ tipo+"tt"+ valorPiscina(area,tipo)); } } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 33 / 47
  • 54. For Aninhado La¸cos for podem tamb´em ser aninhados public static void main(String[] args) { double area = 50; int tipo; System.out.println("´AreatMaterial tValor"); while (area <= 200) { tipo = ALVENARIA; while (tipo <= PLASTICO) { System.out.println(area+"t"+ tipo+"tt"+ valorPiscina(area,tipo)); tipo = tipo+1; } area = area+50; } } public static void main(String[] args) { System.out.println("´AreatMaterial tValor"); for(double area = 50; area <= 200; area = area+50) { for(int tipo = ALVENARIA; tipo <= PLASTICO; tipo = tipo+1) { System.out.println(area+"t"+ tipo+"tt"+ valorPiscina(area,tipo)); } } } Podem ficar at´e mais f´aceis de serem entendidos Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 33 / 47
  • 55. For Embora a condi¸c˜ao tenha que ser ´unica int a; int b; for(???; a<b; ???) { System.out.println("a="+a); System.out.println("b="+b); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
  • 56. For Embora a condi¸c˜ao tenha que ser ´unica Aceita m´ultiplas inicializa¸c˜oes Separadas por v´ırgula int a; int b; for(a=1, b=4; a<b; ???) { System.out.println("a="+a); System.out.println("b="+b); } Declaradas fora do for Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
  • 57. For Embora a condi¸c˜ao tenha que ser ´unica Aceita m´ultiplas inicializa¸c˜oes Separadas por v´ırgula int a; int b; for(a=1, b=4; a<b; a++,b--) { System.out.println("a="+a); System.out.println("b="+b); } Declaradas fora do for E m´ultiplas atualiza¸c˜oes Tamb´em separadas por v´ırgula Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
  • 58. For Embora a condi¸c˜ao tenha que ser ´unica Aceita m´ultiplas inicializa¸c˜oes Separadas por v´ırgula int a; int b; for(a=1, b=4; a<b; a++,b--) { System.out.println("a="+a); System.out.println("b="+b); } Declaradas fora do for E m´ultiplas atualiza¸c˜oes Tamb´em separadas por v´ırgula a++? b--? Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 34 / 47
  • 59. Express˜oes Contra´ıdas S˜ao “atalhos” → Express˜oes contra´ıdas int a; int b; for(a=1, b=4; a<b; a++,b--) { System.out.println("a="+a); System.out.println("b="+b); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 35 / 47
  • 60. Express˜oes Contra´ıdas S˜ao “atalhos” → Express˜oes contra´ıdas ´Uteis para realizar a opera¸c˜ao e armazenar o resultado na mesma vari´avel int a; int b; for(a=1, b=4; a<b; a++,b--) { System.out.println("a="+a); System.out.println("b="+b); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 35 / 47
  • 61. Express˜oes Contra´ıdas Express˜ao Contra´ıda x = x + 5 x += 5 x = x - 5 x -= 5 x = x * 5 x *= 5 x = x / 5 x /= 5 x = x % 5 x %= 5 int a; int b; for(a=1, b=4; a<b; a++,b--) { System.out.println("a="+a); System.out.println("b="+b); } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 36 / 47
  • 62. Express˜oes Contra´ıdas Express˜ao Contra´ıda x = x + 5 x += 5 x = x - 5 x -= 5 x = x * 5 x *= 5 x = x / 5 x /= 5 x = x % 5 x %= 5 int a; int b; for(a=1, b=4; a<b; a++,b--) { System.out.println("a="+a); System.out.println("b="+b); } E o ++? Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 36 / 47
  • 63. Express˜oes Contra´ıdas Tem duas formas: x++ ou ++x int x = 2; int y = 2; x++; ++y; System.out.println("x = " +x+", y = "+y); Sa´ıda: Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
  • 64. Express˜oes Contra´ıdas Tem duas formas: x++ ou ++x int x = 2; int y = 2; x++; ++y; System.out.println("x = " +x+", y = "+y); Sa´ıda: x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
  • 65. Express˜oes Contra´ıdas Tem duas formas: x++ ou ++x Usados isoladamente, tanto ++x quanto x++ correspondem a x = x+1 int x = 2; int y = 2; x++; ++y; System.out.println("x = " +x+", y = "+y); Sa´ıda: x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 37 / 47
  • 66. Express˜oes Contra´ıdas Mas coisas acontecem quando usados em conjunto com outros comandos... int x = 2; int y = 2; System.out.println("x = "+ x++ +", y = "+ ++y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 3 x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
  • 67. Express˜oes Contra´ıdas Mas coisas acontecem quando usados em conjunto com outros comandos... O que houve? int x = 2; int y = 2; System.out.println("x = "+ x++ +", y = "+ ++y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 3 x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
  • 68. Express˜oes Contra´ıdas Mas coisas acontecem quando usados em conjunto com outros comandos... O que houve? x++ ´e um p´os-incremento int x = 2; int y = 2; System.out.println("x = "+ x++ +", y = "+ ++y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 3 x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
  • 69. Express˜oes Contra´ıdas Mas coisas acontecem quando usados em conjunto com outros comandos... O que houve? x++ ´e um p´os-incremento int x = 2; int y = 2; System.out.println("x = "+ x++ +", y = "+ ++y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 3 x = 3, y = 3 Diz que o compilador deve usar o valor que est´a em x e s´o ent˜ao increment´a-lo Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 38 / 47
  • 70. Express˜oes Contra´ıdas ++x ´e um pr´e-incremento int x = 2; int y = 2; System.out.println("x = "+ x++ +", y = "+ ++y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 3 x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 39 / 47
  • 71. Express˜oes Contra´ıdas ++x ´e um pr´e-incremento Diz que o compilador deve primeiro incrementar o valor de x, e s´o ent˜ao us´a-lo int x = 2; int y = 2; System.out.println("x = "+ x++ +", y = "+ ++y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 3 x = 3, y = 3 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 39 / 47
  • 72. Express˜oes Contra´ıdas De forma semelhante ao ++, o -- decrementa, em vez de incrementar Tamb´em em suas duas formas: x-- e --x int x = 2; int y = 2; System.out.println("x = "+ x-- +", y = "+ --y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 40 / 47
  • 73. Express˜oes Contra´ıdas De forma semelhante ao ++, o -- decrementa, em vez de incrementar Tamb´em em suas duas formas: x-- e --x int x = 2; int y = 2; System.out.println("x = "+ x-- +", y = "+ --y); System.out.println("x = "+ x +", y = "+ y); Sa´ıda: x = 2, y = 1 x = 1, y = 1 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 40 / 47
  • 74. Express˜oes Contra´ıdas Mais exemplos: C´odigo int x = 2; int y = x++; System.out.println("x = "+ x +", y = "+ y); int z = ++x; System.out.println("x = "+ x +", z = "+ z); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
  • 75. Express˜oes Contra´ıdas Mais exemplos: C´odigo int x = 2; int y = x++; System.out.println("x = "+ x +", y = "+ y); int z = ++x; System.out.println("x = "+ x +", z = "+ z); Sa´ıda x = 3, y = 2 x = 4, z = 4 y = x++ far´a y conter 2, se x contiver 2 antes do ++ z = ++x far´a z conter 4, se x contiver 3 antes do ++ Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
  • 76. Express˜oes Contra´ıdas Mais exemplos: C´odigo int x = 2; int y = x++; System.out.println("x = "+ x +", y = "+ y); int z = ++x; System.out.println("x = "+ x +", z = "+ z); Sa´ıda x = 3, y = 2 x = 4, z = 4 y = x++ far´a y conter 2, se x contiver 2 antes do ++ z = ++x far´a z conter 4, se x contiver 3 antes do ++ C´odigo int x = 1; int y = x++ + 4; System.out.println("x = "+ x +", y = "+ y); int z = ++x + 4; System.out.println("x = "+ x +", z = "+ z); Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
  • 77. Express˜oes Contra´ıdas Mais exemplos: C´odigo int x = 2; int y = x++; System.out.println("x = "+ x +", y = "+ y); int z = ++x; System.out.println("x = "+ x +", z = "+ z); Sa´ıda x = 3, y = 2 x = 4, z = 4 y = x++ far´a y conter 2, se x contiver 2 antes do ++ z = ++x far´a z conter 4, se x contiver 3 antes do ++ C´odigo int x = 1; int y = x++ + 4; System.out.println("x = "+ x +", y = "+ y); int z = ++x + 4; System.out.println("x = "+ x +", z = "+ z); Sa´ıda x = 2, y = 5 x = 3, z = 7 Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 41 / 47
  • 78. La¸cos Considere o c´odigo ao lado: public static void main( String[] args) { int x = 1; for (; x<5; x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
  • 79. La¸cos Considere o c´odigo ao lado: O que ser´a impresso? public static void main( String[] args) { int x = 1; for (; x<5; x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
  • 80. La¸cos Considere o c´odigo ao lado: O que ser´a impresso? 1 2 3 4 public static void main( String[] args) { int x = 1; for (; x<5; x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
  • 81. La¸cos Considere o c´odigo ao lado: O que ser´a impresso? 1 2 3 4 A inicializa¸c˜ao em um la¸co for ´e opcional public static void main( String[] args) { int x = 1; for (; x<5; x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 42 / 47
  • 82. La¸cos Considere agora esse c´odigo: public static void main( String[] args) { int x = 1; for (; x<5;) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
  • 83. La¸cos Considere agora esse c´odigo: O que ser´a impresso? public static void main( String[] args) { int x = 1; for (; x<5;) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
  • 84. La¸cos Considere agora esse c´odigo: O que ser´a impresso? 1 1 1 1 1 1 1 1 1... public static void main( String[] args) { int x = 1; for (; x<5;) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
  • 85. La¸cos Considere agora esse c´odigo: O que ser´a impresso? 1 1 1 1 1 1 1 1 1... La¸co infinito: a condi¸c˜ao de parada nunca ´e satisfeita public static void main( String[] args) { int x = 1; for (; x<5;) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 43 / 47
  • 86. La¸cos Tamb´em a atualiza¸c˜ao da vari´avel de controle ´e opcional public static void main( String[] args) { int x = 1; for (; x<5;) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 44 / 47
  • 87. La¸cos E esse c´odigo? public static void main( String[] args) { for (int x=1;;x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
  • 88. La¸cos E esse c´odigo? 1 2 3 4 5 6 7 8... public static void main( String[] args) { for (int x=1;;x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
  • 89. La¸cos E esse c´odigo? 1 2 3 4 5 6 7 8... De novo! Ningu´em disse ao la¸co o que testar para parar public static void main( String[] args) { for (int x=1;;x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
  • 90. La¸cos E esse c´odigo? 1 2 3 4 5 6 7 8... De novo! Ningu´em disse ao la¸co o que testar para parar A condi¸c˜ao de parada em um la¸co for tamb´em ´e opcional public static void main( String[] args) { for (int x=1;;x++) { System.out.print( x+" "); } } Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 45 / 47
  • 91. La¸cos Em Suma: Inicializa¸c˜ao, condi¸c˜ao e atualiza¸c˜ao s˜ao opcionais A condi¸c˜ao aceita qualquer express˜ao que resulte em verdadeiro ou falso (express˜oes l´ogicas e relacionais) Inicializa¸c˜ao e atualiza¸c˜ao s˜ao apenas c´odigos rodados, respectivamente, antes da primeira itera¸c˜ao e ao fim de cada itera¸c˜ao do la¸co Norton Trevisan Roman Aula 09 – La¸cos (cont.) 19 de mar¸co de 2020 46 / 47