Enquanto ou Para

Off Topic

03/12/2014

Existe alguma diferença significativa entre essas duas instruções?
Gleyton Menezes

Gleyton Menezes

Curtidas 0

Respostas

Eduardo Pessoa

Eduardo Pessoa

03/12/2014

Pelo que percebo a grande diferença do "Enquanto" para o "Para" é que no enquanto sempre uma variavel tem que ser inicializada, eu acho que é só isso.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Depende como vc está utilizando o Enquanto...
Poderia postar um exemplo simples com cada um dos laços de repetição para vermos a sintaxe?
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

ENQUANTO


var
PRODUTO : VETOR[1..8] DE CARACTER
PRECO : VETOR[1..8] DE REAL
CONT : INTEIRO
inicio
// Seção de Comandos
CONT <- 1
ENQUANTO CONT <= 8 FACA
   ESCREVA("INFORME PRODUTO ", CONT, " : ")
   LEIA(PRODUTO[CONT])
   ESCREVA("INFORME PREÇO PRODUTO ", CONT, " : ")
   LEIA(PRECO[CONT])
   CONT <- CONT + 1
FIMENQUANTO
CONT <- 1
ENQUANTO CONT <= 8 FACA
   ESCREVAL("PRODUTO/PREÇO")
   ESCREVAL(" ",PRODUTO[CONT])
   ESCREVAL(" ",PRECO[CONT])
   CONT <- CONT + 1
FIMENQUANTO
fimalgoritmo



PARA


inicio
// Seção de Comandos
PARA CONT DE 1 ATE 5 FACA
   ESCREVA("NOME DO PRODUTO: ", CONT, " : ")
   LEIA(PRODUTO[CONT])
   ESCREVA("QUANTIDADE DE PRODUTOS: ")
   LEIA(QTD[CONT])
   ESCREVA("VALOR DO PRODUTO")
   LEIA(VALOR[CONT])
   VALORTOTALPROD[CONT] <- VALOR[CONT] * QTD[CONT]
   TOTALCOMPRA <- TOTALCOMPRA + VALORTOTALPROD[CONT]
FIMPARA
LIMPATELA
PARA CONT DE 1 ATE 5 FACA
   ESCREVA(PRODUTO[CONT], " ")
   ESCREVA(QTD[CONT], " ")
   ESCREVA(VALOR[CONT], " ")
   ESCREVA(VALORTOTALPROD[CONT], " ")
FIMPARA
ESCREVAL("VALOR TOTAL DA COMPRA", TOTALCOMPRA)

fimalgoritmo

GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Nesses dois casos não vejo diferença, pois ambos os laços apenas serão executado enquanto a condição definida for verdadeira.
Pedi para que postasse os exemplos pois existe o laço de repetição DO WHILE ( FAÇA ENQUANTO )...
Vou utilizar um dos teus códigos apenas para exemplificar:
CONT <- 1

FACA
   ESCREVA("INFORME PRODUTO ", CONT, " : ")
   LEIA(PRODUTO[CONT])
   ESCREVA("INFORME PREÇO PRODUTO ", CONT, " : ")
   LEIA(PRECO[CONT])
   CONT <- CONT + 1
ENQUANTO CONT > 8;



Nesse caso o laço sempre será executado uma vez, pois a condição apenas será executada ao final de cada execução.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Talvez esse links seja úteis para entender a diferença entre eles..
[url:descricao=Estrutura de repetição - WHILE]http://www.tiexpert.net/programacao/c/while.php[/url]

[url:descricao=Estrutura de repetição - FOR]http://www.tiexpert.net/programacao/c/for.php[/url]

[url:descricao=Estrutura de repetição - DO WHILE]http://www.tiexpert.net/programacao/c/do-while.php[/url]
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Um precisa de um contador e outro não Marisiana, vou esses exemplos em C depois. obrigado.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Os dois tem o contador... Apenas muda a sintaxe do laço de repetição.
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

03/12/2014

Existe alguma diferença significativa entre essas duas instruções?


O ENQUANTO (while) é usado quando você tem uma assertiva e deseja que o laço continue enquanto aquela assertiva for verdadeira, por outro lado o PARA (for) é utilizado em conjunto com um contador, ou seja, para situações em que você precisa iterar uma quantidade exata de vezes.
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

03/12/2014

Existe alguma diferença significativa entre essas duas instruções?


O ENQUANTO (while) é usado quando você tem uma assertiva e deseja que o laço continue enquanto aquela assertiva for verdadeira, por outro lado o PARA (for) é utilizado em conjunto com um contador, ou seja, para situações em que você precisa iterar uma quantidade exata de vezes.
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Os dois tem o contador... Apenas muda a sintaxe do laço de repetição.


errei, não é o contador e sim o "inicializar" a variavel. desculpe.
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Existe alguma diferença significativa entre essas duas instruções?


O ENQUANTO (while) é usado quando você tem uma assertiva e deseja que o laço continue enquanto aquela assertiva for verdadeira, por outro lado o PARA (for) é utilizado em conjunto com um contador, ou seja, para situações em que você precisa iterar uma quantidade exata de vezes.


Não é o ENQUANTO que precisa de um contador ou uma variavel inicializavel? calma, calma...hehehe
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

03/12/2014

Existe alguma diferença significativa entre essas duas instruções?


O ENQUANTO (while) é usado quando você tem uma assertiva e deseja que o laço continue enquanto aquela assertiva for verdadeira, por outro lado o PARA (for) é utilizado em conjunto com um contador, ou seja, para situações em que você precisa iterar uma quantidade exata de vezes.


Não é o ENQUANTO que precisa de um contador ou uma variavel inicializavel? calma, calma...hehehe


Bom, ambos você pode usar para o mesmo propósito, isso é fato. Porém, o ENQUANTO é mais utilizado para assertivas e não com contador, mas nada impede que você use o enquanto com um contador.
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

O que mais importa a facilidade para quem está fazendo a lógica ou realmente deve-se testar e tentar com as duas opções, dependendo das perguntas, eu prefiro usar o SE, mesmo que seja mais trabalhoso.
GOSTEI 0
Soeuseijothaz

Soeuseijothaz

03/12/2014

O que mais importa a facilidade para quem está fazendo a lógica ou realmente deve-se testar e tentar com as duas opções, dependendo das perguntas, eu prefiro usar o SE, mesmo que seja mais trabalhoso.


Só completando:

O PARA sempre vai ser executado, pois ele é declarativo,

PARA CONT DE 1 ATE 5 FACA


O ENQUANTO só será executado se atender a condição. No exemplo a seguir o contador não vai satisfazer a condição, então nem irá entrar no laço.

CONT <- 10
ENQUANTO CONT <= 8 FACA
   ESCREVA("INFORME PRODUTO ", CONT, " : ")
   LEIA(PRODUTO[CONT])
   ESCREVA("INFORME PREÇO PRODUTO ", CONT, " : ")
   LEIA(PRECO[CONT])
   CONT <- CONT + 1
FIMENQUANTO
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Não entra por conta dessa declaração?

CONT <- 10
ENQUANTO CONT <= 8 FACA
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Sim Gleyton, pois o valor de CONT é 10 e as instruções que estão no laço só serão executadas enquanto CONT for menor ou igual a 8
GOSTEI 0
Soeuseijothaz

Soeuseijothaz

03/12/2014

Não entra por conta dessa declaração?

CONT <- 10
ENQUANTO CONT <= 8 FACA
Sim Gleyton, pois o valor de CONT é 10 e as instruções que estão no laço só serão executadas enquanto CONT for menor ou igual a 8


O exemplo não foi o melhor.

Só completando as vezes você pode usar um ENQUANTO e a variável usada, por algum motivo ter seu valor alterado durante o processamento e por isso não atender a condição definida não executando o que esta dentro do laço.

Generalizando use o PARA quanto for itera array, matrizes, coleções e sequências numéricas. E você souber com antecedência a quantidade total de elementos.

Para ler aquivos (ou algum tipo de quebra) use ENQUANTO/REPITA pois você não sabe o total de iterações, então você testa se chegou ao fim da do aquivo e sai.

Em teoria você pode usar um ou outro em quase todos os casos, porém sempre um deles será o mais indicado, dependemdo do cenário onde será aplicado.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Ótima contribuição, Jothaz!
Já não lembrava mais dos detalhes que diferenciam eles...
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Mais uma vez obrigado Marisiana por me explicar, entendi, mas no codigo apresentado o cont já recebe um valor -10, então ele vai pegar, -9, -8....até o 8, é isso?

Jothaz, ainda está um pouco dificil de assimiliar, mas vou conseguir! mais uma vez obrigado.
GOSTEI 0
Soeuseijothaz

Soeuseijothaz

03/12/2014

Mais uma vez obrigado Marisiana por me explicar, entendi, mas no codigo apresentado o cont já recebe um valor -10, então ele vai pegar, -9, -8....até o 8, é isso?

Jothaz, ainda está um pouco dificil de assimiliar, mas vou conseguir! mais uma vez obrigado.


No código o cont recebe o valor 10 (não -10) que é maior que o valor mínimo para entrar na condição do ENQUANTO e não roda nada do que esta dentro do laço.

Se recebesse o valor negativo (-10) então executaria o laço e seguiria a lógica até chegar a 8, como você exemplificou acima.

Realmente o começo é confuso, mas o tempo vai aparando as arestas.
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Estou enxergando mal, desculpa! tudo certo.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Esse tipo de dúvida faz parte Gleyton! Com a prática vc vai assimilando...
Ser eu puder deixar uma dica... Uma coisa que me ajudou a aprender a lógica de programação foram os testes de mesa.
Fiz isso até adquirir uma "certeza" mais lógica a ponto de olhar e saber identificar o que podia estar errado.
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Testes de mesa? fazer com papel e caneta, é isso?
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

Isso...
Pra entender lógica de programação tem que aprender a fazer teste de mesa e compreender o porque de cada sinal, de cada comando,...
É como aprender matemática...
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Entendi, um dia o professor demonstrou com uma otia didatica o funcionamento de vetores! gostei bastante. ainda vou fazer uns exercicios sobre essa parte.
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

03/12/2014

É um conhecimento bem válido, pois vai te ajudar sempre...
Bom estudo!
GOSTEI 0
Gleyton Menezes

Gleyton Menezes

03/12/2014

Não tem como comparar um professor com nenhuma forma de estudo, o que chega mais proximo são as video aulas, mas não tem como interagir.
GOSTEI 0
POSTAR