Na maioria das linguagens de programação, as estruturas de ...

Próximas questões
Com base no mesmo assunto
Q233374 Programação
Na maioria das linguagens de programação, as estruturas de controle de fluxo são fundamentais para a criação de programas elegantes e de fácil entendimento. Assinale a alternativa correta com relação aos comandos de controle de fluxo da linguagem C, sabendo que o comando for apresenta a seguinte forma geral:

for (inicialização;condição;incremento) declaração;

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: B - Pode-se omitir a declaração, e, mesmo assim, o comando for ainda será válido.

Para entender por que a opção B é a correta, vamos discutir um pouco sobre a estrutura de controle de fluxo for na linguagem de programação C. O comando for é utilizado para criar laços de repetição com um controle mais preciso das iterações, e ele é composto por três partes principais: inicialização, condição e incremento. Porém, nem todas essas partes são obrigatórias.

Na inicialização, geralmente definimos e inicializamos uma variável que será usada na condição do laço. A condição é avaliada a cada iteração do laço, e o laço continuará a executar enquanto essa condição for verdadeira. O incremento é usado para atualizar a variável de iteração após cada ciclo do laço.

A declaração que aparece após o for é o bloco de código que será repetido. E aqui é onde a opção B se destaca. Na linguagem C, é possível ter um laço for sem uma declaração dentro dele. Por exemplo:

for (int i = 0; i < 10; ++i);

Este é um laço de repetição válido que não faz nada dentro de seu corpo, mas ainda assim incrementa a variável i e avalia a condição a cada iteração. Este tipo de construção pode ser útil em situações onde o controle está totalmente contido dentro da própria estrutura do for, ou quando o laço está sendo usado para provocar um atraso de tempo (embora haja maneiras melhores de fazer isso).

As outras opções apresentadas têm erros conceituais:

  • A opção A está errada porque é possível ter um laço for sem uma condição, o que criaria um laço infinito deliberadamente, e ainda assim seria uma sintaxe válida.
  • A opção C está incorreta porque comandos de controle de fluxo permitem que o programa altere a sequência de execução, indo além do simples fluxo de cima para baixo.
  • A opção D está errada porque o comando continue faz com que a execução pule para a próxima iteração do laço, não para a próxima linha de código fora do laço.
  • Por fim, a opção E está incorreta porque o comando for pode não executar nenhum ciclo se a condição inicial for falsa; quem garante ao menos uma execução é o laço do...while, e não o for.

Portanto, a alternativa B é a correta, pois reflete uma característica flexível da estrutura de laço for na linguagem C.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

O comando de fluxo for só funciona se tiver inicialização, condição e, incremento ou decremento; Ou seja, mesmo se não tiver declaração alguma o programa funciona.

A resposta certa é letra B

O nosso colega caractere$ Sublinhado equivocou-se ao afirmar que o comando de fluxo for funciona se tiver inicialização, condição e incremento.

Segundo o mestre André Backes em Linguagem C:completa e descomplicada, pág.97:

"Dependendo da situação em que o comando for é utilizado, podemos omitir qualquer uma de suas cláusulas:

-Inicialização;

-Condição;

-Incremento.

Independentemente de qual cláusula é omitida, o comando for exige que se coloquem os dois operadores de ponto e vírgula (;)."

O mestre André Backes demonstra, nesse mesmo livro, alguns exemplos do comando for com cláusulas omissas:

for ( ;a<=b;a++) ------------- comando for sem inicialização (pág.98).

for (c=a; ;c++) --------------- comando for sem condição (pág.99).

for (c=a;c<=b; ) ------------- comando for sem incremento (pág.99).



Uma declaração for válida em C poderia ser for( ; ; ) { }

 

Portanto a correta é a B.

Vale acrescentar uma informação sobre o continue:

"A instrução continue é um comando de desvio incondicional. Sua utilização dentro de um laço faz com que a execução da instrução atual (ou bloco de instruções atual) seja interrompida e passa para a próxima iteração do laço."

Ou seja, o continue "roda o loop" obrigatoriamente.

Fonte: linguagemc.com.br

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo