Vous êtes sur la page 1sur 20

08/06/2009

1 Introduo linguagem JAVA


Aula 03 Estruturas de Controle

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Sumrio
2

 Introduo s Estruturas de Controle de fluxo


 Estruturas de seleo
 if, if-else, switch
 Estruturas de repetio
 while, do-wilhe, for
 Estruturas de transferncia de fluxo
 break, continue, return

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

1
08/06/2009

Chegou a hora de tomar uma deciso!


3

 Pediram-me para fazer um programa que d a


nota dos alunos e parabenize o que foi aprovado
com nota maior que 7 ou escreva um sermo de
15000 linhas caso o mesmo tenha reprovado. Mas
como fazer isso?

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo if
4

if ( <condio> )
if ( <condio> ) {
{ <declaraes>
<declaraes> }
} else
{
<declaraes>
}

Avaliar
expresso lgica Avaliar
expresso lgica
[verdadeiro] [falso]
[verdadeiro] [falso]
Executa
bloco if Executa Executa
bloco if bloco else

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

2
08/06/2009

Estrutura de seleo if
5

... Parnteses obrigatrios


int x = 5;
Chaves opcionais para
int y = 10; uma instruo
if (x == y) {
System.out.println(x = y);
}
else {
System.out.println(x != y);
}
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo if
6

 Escreva com clareza:


 Uso de chaves
 Identao

 Encadeamento de condies:
if (nota <= y) {
if (nota > 4) {
System.out.println(Voc far prova final!);
}
}
else { System.out.println(Voc est aprovado!); }

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

3
08/06/2009

Estrutura de seleo if
7

 Blocos de comando: aumenta a abrangncia das


estruturas de controle
Sem Bloco Com Bloco

int i = 1; int i = 1;
if (i == 0) if (i == 0) {
i = 3; i = 3;
i+=5; i+=5;
}
// i = 6
// i = 1

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


8

 E se eu quisesse escolher vrias opes?


 Com o if eu sempre teria que testar todas as
opes
 Com switch o cdigo fica mais legvel
 A performance melhor pois no preciso testar
todas as opes

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

4
08/06/2009

Estrutura de seleo mltipla


9

switch ( <expresso integral> )


{
case <label1>:
<declaraes> Expresso integral:
case <label2>: (char, byte, short, int)
<declaraes>
...
default:
<declaraes>
}
Avaliar expresso inteira
e achar o label

[label 1] [label n]
Executa bloco ... Executa bloco Executa bloco
associado associado associado

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


10

char, byte,
short ou int

switch ( i % 35) {
case 0:
<BLOCO DE COMANDOS 1> Constant
Expression
break;
case 5: case 10: case 15:
<BLOCO DE COMANDOS 2>
break;
default: Opcional
Opcional
<BLOCO DE COMANDOS 3>
break;
}

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

5
08/06/2009

Estrutura de seleo mltipla


11

int i = 0;
switch (i) {
case 0:
System.out.println(Case 0);
break;
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
default:
System.out.println(Case Default);
break;
}

Sada: Case 0.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


12

int i = 10;
switch (i) {
case 0:
System.out.println(Case 0);
break;
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
default:
System.out.println(Case Default);
break;
}

Sada: Case 5, 10 ou 15.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

6
08/06/2009

Estrutura de seleo mltipla


13

int i = 1;
switch (i) {
case 0:
System.out.println(Case 0);
break;
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
default:
System.out.println(Case Default);
break;
}

Sada: Case Default.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


14

int i = 0;
switch (i) {
case 0:
System.out.println(Case 0);
break;
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
}

Sada: Case 0.
Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

7
08/06/2009

Estrutura de seleo mltipla


15

int i = 1;
switch (i) {
case 0:
System.out.println(Case 0);
break;
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
}

Sada:
Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


16

int i = 15;
switch (i) {
case 0:
System.out.println(Case 0);
break;
default:
System.out.println(Case Default);
break;
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
}

Sada: Case 5, 10 ou 15.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

8
08/06/2009

Estrutura de seleo mltipla


17

int i = 0;
switch (i) {
case 0:
System.out.println(Case 0);
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
default:
System.out.println(Case Default);
}

Sada: Case 0 Case 5, 10 ou 15 Case Default.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


18

int i = 0;
switch (i) {
case 0:
System.out.println(Case 0);
default:
System.out.println(Case Default);
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
}

Sada: Case 0 Case Default Case 5, 10 ou 15.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

9
08/06/2009

Estrutura de seleo mltipla


19

int i = 5;
switch (i) {
case 0:
System.out.println(Case 0);
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
default:
System.out.println(Case Default);
}

Sada: Case 5, 10 ou 15 Case Default.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estrutura de seleo mltipla


20

int i = 0;
switch (i) {
case 0:
System.out.println(Case 0);
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
default:
System.out.println(Case Default);
}

Sada: Case 0 Case 5, 10 ou 15.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

10
08/06/2009

Estrutura de seleo mltipla


21

int i = 0;
switch (i) {
default:
System.out.println(Case Default);
break;
case 0:
System.out.println(Case 0);
case 5: case 10: case 15:
System.out.println(Case 5, 10 ou 15);
break;
}
Sada: Case 0 Case 5, 10 ou 15.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Dvidas
22

 Se eu tiver que repetir um trecho de cdigo 10


vezes, eu tenho que reescrever as 10 vezes?

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

11
08/06/2009

Estruturas de repetio
23

 Existem situaes onde se faz necessrio repetir o


mesmo trecho de cdigo um determinado nmero
de vezes
 Existem trs tipos diferentes de repeties:
 Repetio com teste lgico no incio do loop
 Repetio com teste lgico no fim do loop

 Repetio com uma quantidade iteraes definida

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

While
24

 A condio do lao avaliada antes da execuo


do bloco do lao

while ( < EXPRESSO > ) {


Executa
<BLOCO DE COMANDOS> bloco do-while

}
Avaliar
[falso] expresso lgica [verdadeiro]

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

12
08/06/2009

While
25

 Exemplo:
 Soma de 1 a N ...
int 1, n, s;
n = UtiI.readlnt();
i = 1; s = 0;
while (i < = n) {
s = s + i;
i = i + 1;
}
System.out.println(s);
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Do While
26

 A condio do lao avaliada depois da primeira


execuo do bloco do lao

do {
Executa
<BLOCO DE COMANDOS> bloco do-while

}
while ( < EXPRESSO > ); Avaliar
[falso] expresso lgica [verdadeiro]

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

13
08/06/2009

Do While
27

 Exemplo:
...
 Soma de 1 a N int 1, n, s;
n = UtiI.readlnt();
i = 1; s = 0;
do {
s = s + i;
i = i + 1;
}
while (i < = n);
System.out.println(s);
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

For
28

 Geralmente utilizado para laos controlados de


repetio, onde se sabe antecipadamente o nmero
de iteraes a serem realizadas
for (<INICIALIZAO> ; <CONDIO> ; <ATUALIZAO>) {
<BLOCO DE COMANDOS>
}

Executa Executa expresso


inicializao de incremento

Avaliar Executa
[falso] expresso lgica [verdadeiro] bloco for

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

14
08/06/2009

For
29

 Exemplo

...
int soma = 0;
for ( int i = 1, j = 2; i <= 100; i++, j++) {
soma = soma + i + j;
}
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

For
30

 Exemplo Erro
ErrodedeCompilao
Compilao
Cdigo Errado
Cdigo Errado

...
int soma = 0;
for ( int i = 1, j = 2, System.out.printIn(i); i <= 100; i ++ j ++ ) {
soma = soma + i + j;
}
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

15
08/06/2009

For
31

 Exemplo Erro de Compilao


Erro de Compilao
Cdigo Errado
Cdigo Errado

...
int soma = 0;
Int i,j;
for ( i = 1, j = 2, System.out.printIn(i); i <= 100; i ++ j ++ ) {
soma = soma + i + j;
}
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

For
32

 Exemplo (Lao infinito)

...
int soma = 0;
int i = 1;
for (;;) {
soma = soma + i;
System.out.println(soma);
i++;
}
...

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

16
08/06/2009

Estruturas de Transferncia
33

 break:
 Pode ser usado em blocos com rtulo, laos de
repetio (for, while e do-while), if e switch
 Serve para transferir o fluxo para fora do contexto
corrente, ou seja, para o bloco mais externo
for (int i=0; i<5 ; i++) {
if ( i == 3 ) {
break;
}
System.out.println( "i = " + i );
}

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estruturas de Transferncia
34

 continue:
 Pode ser usado em laos de repetio (for, while e do-
while)
 Serve para interromper prematuramente o fluxo atual,
avanando para a prxima iterao
for (int i=0; i<5 ; i++) {
if ( i == 3 ) {
continue;
}
System.out.println ( "i = " + i );
}

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

17
08/06/2009

Mtodos
35

 Na linguagem Java, procedimentos e funes so


representados por mtodos
 A diferena est no tipo de retorno:
 Se o mtodo no tiver retorno (procedure) ser
representado com a palavra reservada void
 Se houver retorno, um tipo de dados Java vlido
dever ser representado no mtodo
 O mtodo delimitado por { }

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Estruturas de transferncia
36

 return
 usado para parar a execuo do mtodo corrente e
transferir o controle para o mtodo que o chamou
private void calc() { private int func() {
for ( i=0; i<5 ; i++) { for ( i=0; i<5 ; i++) {
if ( i == 3 ) if ( i == 3 )
return; return i;
} }
} return -1;
... }
calc(); ...
int x = func();
Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

18
08/06/2009

37 Exerccios
Lista de Exerccios 03

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Exerccio 01
38

 Ler um nmero e dizer se ele positivo ou negativo.

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

19
08/06/2009

Exerccio 02
39

 Crie um programa que receba um valor de 1 a 3 e


imprima seu valor por extenso. Caso o numero no
seja um dos trs valores imprima Valor invlido

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

Exerccio 03
40

 Implemente um programa que recebe um nmero


de 1 a 7 e imprime o dia da semana
correspondente.
 Altere o programa para ficar recebendo o nmero
dentro de um lao enquanto o nmero for diferente
de 0 (zero).

Introduo Linguagem JAVA - Prof. Andr Negreiros FATENE - 2009

20