SóProvas


ID
204715
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, relativos à lógica de programação e
construção de algoritmos.

Na construção de um algoritmo, é sempre possível substituir uma estrutura do tipo enquanto por uma estrutura do tipo para.

Alternativas
Comentários
  • ERRADO. Mas por que? Será que o CESPE está considerando a prática ou a teoria? Na teoria é possível sim substituir while por for.

    Ex.:

    Loop infinito:while(1) = for(;;)
     

  • Toda estrutura do tipo para pode ser representada por uma estrutura do tipo enquanto. Entretanto o oposto não é verdadeiro.

    Por exemplo, como representaria numa estrutura do tipo para a condição "ENQUANTO NÓ != NULL FAÇA"?

  • Eu errei esta questão, mas o comentário do colega Bruno Migowski, foi perfeita!

  • Bruno,

    nesse seu exemplo, usando o comando for não ficaria assim:

    for ( ; NO != NULL ; )
  • Na estrutura enquanto, pode-se GARANTIR que ele SEMPRE será executada PELO MENOS UMA VEZ (do... while).
  • Danilo, a estrutura que pode garantir que será realizado pelo menos uma vez é a estrutura faça ... enquanto e não a estrutura enquanto. São estruturas diferentes.
    Eu acho que a banca quer dizer por estrutura para não é um comando for e sim é uma estrutura do tipo:
    Para X de xi até xf Faça
       [bloco de instruções]
    Fim Para


    Só vejo essa explicação, vi essa estrutura na wikipedia.
  • Gabarito "E". Minha linha de raciocíno para responder essa questão foi: 
    "Na construção de um algortimo, só é possível substituir uma estrutura do tipo enquanto por uma estrutura do tipo para quando sabemos exatamente a quantidade de vezes que esse laço irá executar." 
  • É uma questão que depende do autor adotado. Ela é certa se considerarmos a prática e errada se considerarmos a teoria. Vejamos porque:
    Na prática: Como já dito acima, muitas linguagens de programação aceitam a construção for(ini;cond;valor). Essas estruturas podem, sem sombra de dúvidas, substituir sempre, em qualquer ocasião, uma estrutura while(cond). Para isso, basta que a ini seja ou nula ou igual à condição antes do while; cond seja a mesma condição e valor seja igual ao passo dentro da estrutura. Nessa ótica: certo.
    Na teoria: a estrutura para é definida da seguinte forma: para var  de ini até fim passo valor faça. Essa estrutura exige que se conheça o início ini e a condição de fim de antemão, enquanto a estrutura enquanto cond faça, não. Assim, loops que têm o fim incerto baseado em condições que não sejam iterativas (como citado, e.g. NÓ = NULO) não encontram descrição no modelo do para.
    Essa foi a solução que eu encontrei, depende do autor adotado. A notação do modelo teórico que citei encontra-se em :http://www.dca.ufrn.br/~xamd/dca0800/Cap06.pdf
  • Em CASOS GERAIS/NORMAL/PADRÃO, você não pode substituir o enquanto pelo para porque o enquanto possui um número indefinido de repetições, já o para possui um número definido, em CASOS EXCEPCIONAIS você pode substituir um pelo outro, como exemplificou o colega do primeiro comentário. A questão não especifica, então é no caso geral.

    ERRADO

  • me dê um while que eu não consiga substituir por for, cespe, desafio você a achar um while que não dê para substituir por for, PQP viu