Escolar Documentos
Profissional Documentos
Cultura Documentos
16/03/15 - 17/04/15
3. CONTROLO DE FLUXO
A execuo de um programa feita scannando instrues carcter a carcter de
esquerda para direita e de cima para baixa. Porm em muitas situaes depara-se com
situaes em que para se atingir os objectivos do problema em causa o programa deve
desobedecer este princpio.
Para que realmente se contorne princpio podemos obrigar que as instrues do programa
seja executados de forma condicional ou seja repetidas varias vezes, estes mecanismos so
conseguidos com recurso s instrues selectivas ou ciclos.
1
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
LTP-I
16/03/15 - 17/04/15
A estrutura switch verifica uma varivel e age de acordo com seus casem. Os cases so as
possibilidades de resultados que so obtidos por switch. Basicamente, o switch serve para
controlar vrias aces diferentes de acordo com o case definido dentro dele.
Sintaxe:
switch (<valor inteiro>|< expresso>)
{
case <opo 1>: <cdigo 1>[break];
case <opo 2>:< cdigo 2>[break];
...
3
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
LTP-I
16/03/15 - 17/04/15
break;
case 3:
System.out.println("Tera-feira");
break;
case 4:
System.out.println("Quarta-feira");
break;
case 5:
System.out.println("Quinta-feira");
break;
case 6:
System.out.println("Sexta-feira");
break;
case 7:
System.out.println("Sbado");
break;
default:
System.out.println("Este no um dia vlido!");
}
}
}
import javax.swing.JOptionPane;
public class SwitchDemo2 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
String x=JOptionPane.showInputDialog("Enter valor de ano ");
String y=JOptionPane.showInputDialog("nter valor de mes");
year=Integer.parseInt(x);
month=Integer.parseInt(y);
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
numDays = 31;
break;
case 4:
case 6:
5
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
case 9:
case 11:
numDays = 30;
break;
case 2:
if ( ((year % 4 == 0) && !(year % 100 == 0)) || (year %
400 == 0) )
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("Invalid month.");
break;
}
System.out.println(" O ms de " +month+" do ano "+year+"
tem "+ numDays+ " dias");
}
}
Objectivos:
O aluno deve ser capaz de resolver diferentes problemas com recurso as instrues
selectivas;
6
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
3.2. CICLOS
O conceito ciclo ou repetio fundamental em programao, pois para a resoluo de
muitas tarefas comuns implica a utilizao de estruturas repetitivas, ora vejamos, se
pretendssemos registo de acadmico minimamente seria necessrio ler dados de
estudante, que podem consistir em nome, nmero de estudante, afiliao, endereo. Para o
efeito necessrio o nmero de instrues de leitura de dados correspondente ao nmero
de campos de estudante. Supondo que o numero de campo de estudante seja 5 e instituio
tivesse 50 estudantes seriam necessrios 250 instrues de leitura de dados. A maneira
mais eficaz de resolver esta situao passa por utilizar uma estrutura que se encarrega de
repetir as instrues que permitem a entrada de dados de um estudante, tantas vezes
quantas os estudantes envolvidos. Estas estruturas so designadas estruturas repetitivas ou
ciclos;
Neste capitulo abordaremos trs instrues repetitivas, que so while, do-while e for.
7
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
resultado da condio calculada for verdadeiro. Quando o resultado da condio for falso o
ciclo terminar, prosseguindo a execuo normal do programa.
Sintaxe do while:
while(<condio>){
<Instrues>
}
O problema com estruturas de repetio, principalmente com while, o que chamamos de
looping infinito. Damos esse nome ao fato de que o programa fica repetindo a mesma
sequncia de cdigos esperando por um resultado que nunca ir acontecer.
Portanto, imprescindvel que uma determinada varivel seja modificada de acordo com
cada loop, por forma a garantir o termino do ciclo. Veja o exemplo
public class ExemploWhile {
public static void main(String args[]) {
int contador = 0;
while (contador < 50) {
System.out.println("Repetio nr: " + contador);
contador++;
}
}
}
Como podemos ver, existe a varivel contador que iniciada com valor 0, a cada loop
executado (repetio) somado 1 (uma unidade) ao contador. Perceba que o while ir
manter a repetio enquanto a varivel contador for menor que 50.
Outro ponto importante que a varivel contador inicializada antes de chegar ao while,
porque o while ir comparar a sentena e s depois permitir a execuo do bloco.
Se quisermos fazer todo o bloco primeiro e s depois fazer a comparao, devemos utilizar
o comando DO WHILE
8
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
Como se pode ver na figura acima uma instruo executada, em seguida a condio
verificada, se a condio for verdadeira de novo instrues so executadas, depois
condio calculada, este processo iterativo continua at que a condio seja falsa.
Sintaxe do ciclo do-while:
do {
<Instrues>
} while(<condio>)
Neste caso, devemos ter as mesmas precaues quanto while, no que diz respeito a looping
infinito. Mas no necessrio inicializar a varivel antes do bloco de cdigo como
acontece com while, pois a comparao s ser feita aps todo o cdigo ter sido executado.
Exemplo: Fazer um programa que recebe o nome do funcionario e calcule o aumento
salarial. Deve garantir que o valario do salario no seja menor ou igual a zero.
import javax.swing.JOptionPane;
public class AumentoSalarial{
public static void main(String[] args) {
9
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
String funcionario=JOptionPane.showInputDialog("Nome do
Funcionario");
double salInicial,salActual;
do{
String sal=JOptionPane.showInputDialog("Valor do Salario");
salInicial=Double.parseDouble(sal);
}while(salInicial<=0);
salActual=salInicial*1.25;
System.out.println("O salario do(a) funcionario(a)"+funcionario+"
era de "+salInicial+" passa a ser "+salActual);
}
}
inicializa
o
aco
condi
o
V
instrues
10
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
Objectivos:
11
dr. Amrico I. Langa
LTP-I
16/03/15 - 17/04/15
12
dr. Amrico I. Langa