Loops
Arquivo original: Loops.pdf
Página 1

Orientação a Objetos
Variáveis Primitivas e Controle de Fluxo (Loops)
Profa. Alana Neo
Página 2

O WHILE
O while é um comando usado para fazer um laço (loop), isto é, repetir um trecho de código algumas vezes.
A ideia é que esse trecho de código seja repetido enquanto uma determinada condição permanecer verdadeira.
Página 3

O WHILE
O trecho dentro do bloco do while será executado até o momento em que a condição idade < 18 passe a ser falsa.
Isso ocorrerá exatamente no momento em que idade == 18, o que não o fará imprimir 18.
Página 4

O WHILE
Exemplo:
- O que você acha que irá imprimir?
Página 5

O WHILE
Exemplo:
- O que você acha que irá imprimir? - O while acima imprime de 0 a 9.
Página 6

O FOR
- Outro comando de loop extremamente utilizado é o for.
- A ideia é a mesma do while: fazer um trecho de código ser repetido enquanto uma condição continuar verdadeira.
- Mas além disso, o for isola também um espaço para inicialização de variáveis e o modificador dessas variáveis.
- Isso faz com que fiquem mais legíveis, as variáveis que são relacionadas ao loop:
Página 7

O FOR
- Exemplo:
Página 8

O FOR
Esse for poderia ser trocado por:
Porém, o código do for indica claramente que a variável i serve, em especial, para controlar a quantidade de laços executados.
Quando usar o for? Quando usar o while? Depende do gosto e da ocasião.
Página 9

PRÉ e PÓS INCREMENTO ++
i = i + 1 pode realmente ser substituído por i++ quando isolado, porém, em alguns casos, temos essa instrução envolvida em, por exemplo, uma atribuição:
- Qual é o valor de x ? - Qual é o valor de i ?
Página 10

PRÉ e PÓS INCREMENTO ++
O de i , após essa linha, é 6.
O operador ++ , quando vem após a variável, retorna o valor antigo, e incrementa (pós incremento), fazendo x valer
Usando o ++ antes da variável (pré incremento), o resultado é 6:
Página 11

CONTROLANDO LOOPS
Apesar de termos condições booleanas nos nossos laços, em algum momento, podemos decidir parar o loop por algum motivo especial sem que o resto do laço seja executado.
O código acima vai percorrer os números de x a y e parar quando encontrar um número divisível por 19, uma vez que foi utilizada a palavra chave break .
Página 12

CONTROLANDO LOOPS
Da mesma maneira, é possível obrigar o loop a executar o próximo laço.
Para isso usamos a palavra chave continue.
O código acima não vai imprimir alguns números. (Quais exatamente?)
Página 13

ESCOPO DAS VARIÁVEIS
No Java, podemos declarar variáveis a qualquer momento. Porém, dependendo de onde você as declarou, ela vai valer de um determinado ponto a outro.
O escopo da variável é o nome dado ao trecho de código em que aquela variável existe e onde é possível acessá-la.
Página 14

ESCOPO DAS VARIÁVEIS
Quando abrimos um novo bloco com as chaves, as variáveis declaradas ali dentro só valem até o fim daquele bloco.
No bloco acima, a variável j para de existir quando termina o bloco onde ela foi declarada.
Página 15

ESCOPO DAS VARIÁVEIS
- Se você tentar acessar uma variável fora de seu escopo, ocorrerá um erro de compilação.
Página 16

ESCOPO DAS VARIÁVEIS
O mesmo vale para um if:
Aqui a variável i não existe fora do if e do else !
Se você declarar a variável antes do if , vai haver outro erro de compilação: dentro do if e do else a variável está sendo redeclarada!
Página 17

ESCOPO DAS VARIÁVEIS
- Então o código para compilar e fazer sentido fica:
Página 18

ESCOPO DAS VARIÁVEIS
Uma situação parecida pode ocorrer com o for :
Neste for , a variável i morre ao seu término, não podendo ser acessada de fora do for, gerando um erro de compilação.
Se você realmente quer acessar o contador depois do loop terminar, precisa de algo como:
Página 19

UM BLOCO DENTRO DO OUTRO
- Um bloco também pode ser declarado dentro de outro. Isto é, um if dentro de um for, ou um for dentro de um for, algo como:
Página 20

Atividade
Vimos apenas os comandos mais usados para controle de fluxo. O Java ainda possui o do..while e o switch. Pesquise sobre eles e diga quando é interessante usar cada um deles.
Algumas vezes, temos vários laços encadeados, podemos utilizar o break para quebrar o laço mais interno. Mas, se quisermos quebrar um laço mais externo, teremos de encadear diversos ifs e seu código ficará uma bagunça. O Java possui um artifício chamado labeled loops; pesquise sobre eles.
O que acontece se você tentar dividir um número inteiro por 0? E por 0.0? Explique.
Além dos operadores de incremento, existem os de decremento, como –i e i– . Além desses, você pode usar instruções do tipo i += x e i -= x , o que essas instruções fazem?
Página 21

Dúvidas
alana.neo@ifms.edu.br