Na maioria das linguagens de programação, as estruturas de ...
for (inicialização;condição;incremento) declaração;
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 só 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