Programação – Java Um programa em Java é executado

Propaganda
Programação – Java
Um programa em Java é executado sequencialmente. Esse programa pode ser
visto como uma sequência de troços de programa. E esses troços podem por sua vez
estar sujeitos a condições de modo a poderem ou não ser executados, repetidos ou
reutilizados.
if – A sequência de execução de um troço de programa pode ser dirigida
através de uma condição, permitindo assim bifurcar o código e optar por continuar a
sequência por um dos ramos da bifurcação. Após a execução sequencial de um ou
outro ramal a bifurcação fecha novamente e continua a execução sequencial do
programa.
O número de bifurcações é ilimitado como também a sua combinação. Em Java
a instrução que permite bifurcar o código é conhecida como if.
A instrução if está sujeita a uma condição que após avaliação e o resultado for
verdadeiro pode seguir por um ramo específico. Opcionalmente pode seguir por um
outro ramo caso o resultado tenha sido falso. Após a execução do ramo verdadeiro ou
eventualmente o do falso, o if termina e o programa continua na instrução seguinte.
Visualmente obtém-se a seguinte figura:
Um programa a
ser executado
sequencialmente
?
Faz este ramo
caso o
resultado da
condição seja
verdadeiro
As linhas a tracejado na figura acima mostram a sequência de um programa.
Na figura da direita, o ponto de interrogação indica a condição de uma instrução if.
Caso o resultado dessa condição seja verdadeiro, o programa continua a execução no
ramo assinalado. Depois da instrução if, o programa continua sequencialmente como
anteriormente.
Mostra-se de seguida a possibilidade de ter o ramo opcional do if para realizar
caso a condição seja falsa. A presença do ramo condicionado pelo resultado verdadeiro
está sempre presente.
?
Faz este ramo
caso o resultado
da condição seja
falso
Vitor Vaz da Silva – ISEL
Faz este ramo
caso o resultado
da condição seja
verdadeiro
PG-D-1
Programação – Java
Após a execução do if o programa continua sequencialmente na instrução
seguinte.
tipo="nada";
antes=1;
if(tamanho >= 5) tipo="grande";
depois=2;
Exemplo de um troço de código (programa). Se tamanho for maior ou igual a 5, o resultante
da execução desse troço de código é:
tipo contém “grande”, antes contém 1, depois contém 2.
Se tamanho for menor do que 5 então ao executar esse troço de programa:
tipo contém “nada”, antes contém 1, depois contém 2.
No exemplo seguinte adiciona-se o ramo opcional para o caso da condição ser falsa.
tipo="nada";
antes=1;
if(tamanho >= 5) tipo="grande";
else tipo="pequeno";
depois=2;
Se tamanho for maior ou igual a 5, o resultante da execução desse troço de código é:
tipo contém “grande”, antes contém 1, depois contém 2.
Se tamanho for menor do que 5 então ao executar esse troço de programa:
tipo contém “pequeno”, antes contém 1, depois contém 2.
O if só executa uma instrução, em qualquer um dos ramos. Por isso, sempre que se queria
executar mais do que uma instrução, tem de se colocar um bloco. Um bloco é uma sequencia
de uma ou mais instruções intercaladas por chavetas { … } como mostra o exemplo seguinte:
tipo="nada";
antes=1;
if(tamanho >= 5) {
tipo="grande";
totalGrande++;
}
else {
tipo="pequeno";
totalPequeno++;
}
if(totalPequeno + totalGrande >100){
fim=true;
}
depois=2;
Vitor Vaz da Silva – ISEL
PG-D-2
Programação – Java
Os ciclos servem para repetir condicionalmente um troço de programa. Os
ciclos presentes em Java são o while() , for() e do{ }while().
while – Este ciclo em português significa enquanto. Isto indica uma acção que
é repetida até que uma determinada condição deixe de prevalecer. Ou seja, enquanto
a condição for verdadeira faz as instruções que estão dentro do seu corpo.
O while só efectua uma instrução, por isso terá de se colocar um bloco de
instruções caso se queira delimitar as instruções a efectuar.
No while a condição é verificada antes de se efectuar o corpo de instruções.
Para que um while esteja correctamente escrito, é necessário assegurar que a
condição de permanência do while venha a ter o valor false devido à acção das
instruções do seu corpo. Quando ao avaliar a condição o valor for false o while termina.
antes=1;
num=5;
res=1;
while(num>0) {
res= num* res;
num--;
}
depois=2;
No exemplo acima o corpo do while é repetido enquanto num for maior do que 0.
Dentro do corpo do while a variável num está a ser modificada e por isso é possível que a
condição do while venha a ser 0. Entretanto, enquanto a condição for verdadeira, são
executadas as seguintes instruções: res=num*res; num--;.
No fim de executar o troço de código acima, obtém-se:
antes 1, num 0, res 1*5*4*3*2*1 (ou seja 120), depois 2
Outro exemplo:
vezes=4;
num=7;
res=1;
while (num-- >0)
res*=2;
public
class Soma{
vezes++;
Depois de executar o troço de código acima as variáveis têm os valores seguintes:
vezes 5, num -1, res 128 (2 elevado a 7)
Vitor Vaz da Silva – ISEL
PG-D-3
Programação – Java
do{ }while – Este ciclo tem a particularidade de primeiro fazer o corpo de
instruções e só depois avaliar a condição. As chavetas são obrigatórias. A condição
enquanto for verdadeira leva à repetição do corpo de instruções.
Vejamos com um exemplo:
inicio=2;
res=3;
num=0;
do{
res=res+inicio;
}while(num-- >0);
fim=10;
Ao terminar este troço de programa obtemos o seguinte nas diversas variáveis:
inicio 2, res 5, num -1, fim 10
Outro exemplo:
Scanner teclado = new Scanner(System.in);
int num;
do{
System.out.print("Escreva um valor inteiro entre 5 e 12");
num=teclado.nextInt();
}while( ! (num >=5 && num<=12) );
System.out.print("O próximo múltiplo desse valor é: " + (num*2) );
Note que a variável num não precisa de ser inicializada porque obterá sempre o valor
que for digitado no teclado. A mensagem a pedir um número entre 5 e 12 será sempre escrita
enquanto essa condição não se verificar. Depois é escrito um valor vezes 2, ou seja se alguém
digitou 9 o resultado será 18.
Observe a comparação de um while com um do{ }while e como converter um noutro e
vice versa.
antes_igual
antes_igual
corpo_igual
do{
corpo_igual
while(
condição_igual
corpo_igual
}
){
} while(
condição_igual
);
depois_igual
depois_igual
Vitor Vaz da Silva – ISEL
PG-D-4
Programação – Java
for – Ao observarmos os ciclos while que são feitos na maior parte dos
programas encontramos um conjunto de inicializações a efectuar antes do ciclo
começar, depois avalia-se a condição do ciclo e por cada ciclo há um conjunto de
instruções que é feito no fim de cada volta. Isto levou à criação desta instrução para
facilitar a construção de ciclos semelhantes ao acabado de descrever.
A instrução for contém 3 partes separadas por dois ponto-e-virgula. Esses
ponto-e-virgula são obrigatórios e fazem parte integrante do for.
Esta instrução é muito semelhante ao while com alguns pormenores.
Vejamos com um exemplo:
int i=0;
for( ; i < 10 ; ){
System.out.println(i);
i++;
}
int i=0;
while( i < 10 ){
System.out.println(i);
i++;
}
Os dois troços de programa acima executam exactamente do mesmo modo. O
for tal e qual como está escrito é uma tradução exacta do while e vice-versa. Podemos
preencher as duas partes em branco do for para utilizar a forma compacta do for.
for(int i=0 ; i < 10 ; i++ ){
System.out.println(i);
}
A figura seguinte mostra o uso do for
Expressões iniciais.
São executadas uma
for ( vez, antes de começar o
primeiro ciclo. As várias
expressões são
separadas por vírgula.
Expressões finais.
São executadas sempre
;
; no final de cada ciclo
(mesmo no caso de um
continue) e antes da
condição ser avaliada. As
várias expressões são
separadas por vírgula.
public static void main(String [] argumentos){
Condição.
Avaliada no início de cada
ciclo. O ciclo é executado
se o resultado for
verdadeiro
Corpo
{ Instruções que são executadas em cada ciclo. }
Segue-se outro exemplo: O troço de programa escreve os 26 caracteres de á a zê.
int i;
int c;
for(i=0, c='a' ; i<26 ; i++){
System.out.print((char) (i+c));
}
Vitor Vaz da Silva – ISEL
PG-D-5
)
Programação – Java
Os ciclos podem ainda ter o seu fluxo controlado através das instruções break e
continue.
Break – Esta instrução quebra o ciclo. Isto faz com que a próxima instrução a ser
executada seja aquela que está depois do ciclo.
Continue – Esta instrução obriga a que o ciclo seja encurtado e salta para a avaliação
da expressão. A excepção é no for em que as expressões finais que estão na terceira parte do
for são sempre executadas antes da avaliação da expressão.
....
while( . . . . . . ){
.......
break;
.......
continue;
.......
}
....
....
do{
.......
break;
.......
continue;
.......
} while( . . . . . . ) ;
....
....
for( . . . ; . . . ; . . . ){
.......
break;
.......
continue;
.......
}
....
Há ainda duas outras instruções, return ( ); e System.exit(erro); que também afectam o
fluxo de um programa.
System.exit (valor); – Esta instrução termina o programa imediatamente. Só deve ser
usada numa situação de erro irrecuperável. Devolve um valor que depois é apresentado ao
utilizador indicando a causa do erro. Esta não é a forma correcta de terminar um programa.
return (valor); – O return só pode ser utilizado dentro de um método e serve para
terminar o método devolvendo o resultado (valor) do método. Os parênteses não são
obrigatórios e valor pode ser uma expressão cujo resultado seja do mesmo tipo daquele
declarado no método. Caso o método não devolva nada (void) então a instrução tem a forma
de return;
int metodoDevolveInteiro( . . . . ){
while ( . . . .) {
.......
return ( 123 );
.......
}
.......
. . . . . return y + 2;
.......
.......
return y;
}
Vitor Vaz da Silva – ISEL
void metodoDevolveNada ( . . . . ){
while ( . . . .) {
.......
return;
.......
}
.......
. . . . . return;
.......
.......
return;
}
PG-D-6
Download