Ciclos DO FOR e do WHILE

6 respostas
H

Viva galera,

Podem-me dizer onde posso pegar uma apostila sobre ciclos DO FOR e DO WHILE.
O meu exercicio no exame é transformar um ciclo DO WHILE em DO FOR ou o contrario.

Agradeço ajudam brigado.

6 Respostas

F

Meu caro colega, acabei de ler esse fim de semana no livro do Deitel (Java Como Programar) a respeito das estruturas de repetição e controle e posso afirmar com convicção que não existe nenhuma estrutura DO FOR em java, a do while tem sim

do{

}while(condição);

for(expressão1; expressão2;expressão3){

}

onde expressão3 é o incremento, tipo cont = cont + 1
a expressão2 é até quando esse for será executado, tipo x < 10
expressão1 é o início, ou seja, a partir de onde o for começará, tipo x = 0

Você pode pegar a especificação da linguagem java, que é em inglês, mas é um excelente material no link: ftp://ftp.javasoft.com/docs/specs/langspec-2.0.pdf

Qualquer dúvida poste aí

H

Algoritmo:

"…

DO WHILE X <> V[I]
I <- I + 1


"

"…

DO FOR I = 1 TO LENGTH (ALFA)
IF MATCH (DOMINIO, SUB (ALFA, I, 1)) <> 0
THEN N <- N + 1
ALFA <- SUB (ALFA, 1, I - 1) + ‘#’ + SUB (ALFA, I + 1)


"

M
se vc entender exatamente como funcionam as estruturas for(esse 'do for' nao existe em java[e eu nunca vi em nenhuma outra linguagem]) e 'do while', vc pode converter de um pra outro brincando(quando a conversão for possível.. acho que tem casos que nao é possível) for:
for (inicializacao; condição; incremento) {
 ações
}

for (int i = 0; i < 10; ++i) {
 System.out.println(i);
}
do while:
do {
 ações
} while (condição);

int i = 0;
do {
 System.out.println(i);
 ++i;
} while (i < 10);

Explicando:
No laço for, antes de ele iniciar a sua primeira iteração, é executado o bloco de inicialização. Após isso, o bloco de condição é avaliado.. se o resultado dele for um valor true, as ações do for são executadas. Após serem executadas, o bloco de incremento é executado. Após isso, a condição é novamente avaliada.. se ela produzir true denovo, as ações são novamente executadas, e o bloco de incremento é novamente executado, e esse ciclo continua, assim:
INICIALIZAÇÃO
CONDIÇÃO
AÇÕES
INCREMENTO
CONDIÇÃO
AÇÕES
INCREMENTO
CONDIÇÃO
AÇÕES
INCREMENTO
CONDIÇÃO
Isso continua até que a condição produza um valor false.. daí o for para de ser executado e a execução do sistema prossegue para a primeira linha de código após o laço for.

O do-while é assim:
Quando a execução chega no do-while, o bloco de ações é executado.
Após isso, a condição é avaliada.. se ela produzir true, as ações são novamente executadas, e a condição é novamente avaliada, e assim continua, dessa forma:
AÇÕES
CONDIÇÃO
AÇÕES
CONDIÇÃO
AÇÕES
CONDIÇÃO
Até que condição produza o valor false.. Daí a execução prossegue para a primeira linha após o seu do-while.

Obs: Só para vc seguiar..... aqueles dois exemplos que eu escrevi acima, produzem exatamente o mesmo resultado.

H

Oi mmpaulo, obrigado pela dica, mas esse exemplo que voce deu, aplica-se em Java, mas o que eu falo mesmo, é em ALGORITMOS. E por isso é que existe o DO WHILE e o DO FOR. A minha dificuldade é converter um no outro, atraves dos exemplos que eu dei em cima :frowning:

Se voce souber, tenta converter para mim. Brigado pela ajuda.

A

Pelo que entendi, basicamente vc terá de colocar oe comandos na frente da condição (o que vc chama de do for ou do while). Como já falaram em outros posts o algoritmo, a estrutura de programação é a mesma independente da linguagem… Como vc está fazendo em pseudocódigo(acredito eu) vc seguirá a seguinte estrura…

faça {

.

.

.

Bloco de comados

.

.

}enquanto(condição booleana);

Enquanto no for (esse do for é muito esquisito, sinceramente nunca houvi falar mesmo nem em algoritmos) :???:

para (inicialização ; condição booleana ; incremento) {
.
.
.
Bloco de comados
.
.
}repita

Espero ter ajudado :wink:

T++++;

H

Galera brigado pela ajuda, mas essa teoria eu ja sabia, eu queria era transformar o exemplo que eu dei na pratica.

Passar este ciclo para o DO FOR:

DO WHILE X <> V[I]
I <- I + 1

Passar este ciclo para o DO WHILE:

DO FOR I = 1 TO LENGTH (ALFA)
IF MATCH (DOMINIO, SUB (ALFA, I, 1)) <> 0
THEN N <- N + 1
ALFA <- SUB (ALFA, 1, I - 1) + ‘#’ + SUB (ALFA, I + 1)

Isto é em pseudocodigo sim, quem souber fazer a passagem que me diga por favor. Obrigado!!

Criado 24 de janeiro de 2005
Ultima resposta 25 de jan. de 2005
Respostas 6
Participantes 4