SóProvas


ID
81550
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação à construção de algoritmo, considere:

I. Na estrutura de repetição Enquanto / Faça o bloco de repetição pode ser executado várias vezes ou até nenhuma vez. A condição é testada antes de entrar na estrutura de repetição.

II. A estrutura de repetição Repita / Até efetua um teste lógico no fim do laço, garantindo que pelo menos uma vez as instruções deste são executadas.

III. Toda repetição condicional pode ser representada por uma estrutura do tipo Enquanto / Faça ou Repita / Até, sendo que a primeira repete somente quando a condição é falsa e a segunda somente quando a condição é verdadeira.

IV. Para se impedir a situação conhecida como loop infinito é necessário que, nos laços condicionais, a variável que é testada esteja sempre associada a uma instrução que a atualize no interior do laço.

É correto o que se afirma APENAS em

Alternativas
Comentários
  • Esta questão cabe recurso.No que se refere à afirmação do item IV, não necessariamente a variável testada deve estar SEMPRE associada a uma instrução interna ao laço. A variável pode estar apenas na própria condição, e, de fato, é muito comum.Exemplo: while (++a <10){...}
  • O item IV é um absurdo. obivamente não é "NECESSÁRIO". Existem vários casos nos queais não ocorre loop infinito ainda que a variável testada não seja modificada no corpo do laço...
  • O item IV é falso. Exemplos:-while(false){}-while(database.connectec()){...}-while(i > 0){ i++ }
  • I - Verdade. É o caso do while(teste) {bloco de execução}. A condição é testada no início e o número de execuções é >= 0 pois o teste será avaliado antes de entrar no laço.II - Verdade. É o caso do do {bloco de execução}/ while(teste). A condição é testada no final e por isso o bloco é executado pelo menos uma vez.III - ERRADO. É verdade que toda a repetição condicional pode ser representada por estrutura de Enquanto / Faça ou Repita / Até, mas se representar por enquanto faça a condição deve ser VERDADEIRA, ao passo que se representar por Repita até tem que ser FALSA.IV - CORRETO. Se existe um teste com uma variável este teste visa fornecer uma condição de quebra. Se esta variável não é alterada ao longo do laço esta condiçào de quebra nunca irá ocorrer.OBS: Não confundir um loop infinito tradicional com um loop infinito que vem por conta de uma recursão. Com recursão existe uma forma de se limitar o número máximo de recursãoes.
  • Perdoe-me Humberto.Seu exemplo é while (++a <10){...}Perceba a estrutura da instruçãowhile(teste){bloco de execução}A opção fala sobre o escopo do laço (dentro do laço) e não sobre dentro do bloco de execução. Este while tem sua instrução de incremento de variável de teste dentro do escopo do laço. O laço começa com a declaração do while.A opção IV estaria errada ou melhor, passível de recurso, se falasse sobre dentro da estrutura de bloco de comando. Ainda assim, como é metalinguagem, alguns compiladores poderiam traduzir while (++a <10){...} para while (a<10){++a;...}. Seria dúbio ainda...Mas da forma elaborada não vejo como estar errada.
  • Atente para a interpretação de texto para o item IV:

    "IV- Para se impedir a situação conhecida como loop infinito......" Caso o programador queira forçar o loop, logo deve usar o while(true){}

    Logo, corretíssimo!