Observando o código em linguagem C que contém uma estrutura de repetição while, avalie as afirmações abaixo:
#include <stdio.h>
int main()
{
float Tc, Tf;
Tc = 34.5;
while(Tc <= 53){
Tf = (((Tc*9.0)/5.0)+32.0);
printf("Tc = %.1f C = %.1f F \n", Tc, Tf);
Tc++;
}
return 0;
}
Com base no código acima, identifique as opções verdadeiras:
I. Este programa não poderia ser feito usando o laço de repetição “for” nem o laço de repetição “do/while”.
II. O laço de repetição se repete até que a variável “Tf” seja menor ou igual a 53 .
III. Somente ao final do programa é mostrado a última temperatura em graus Celsius e em Graus Fahrenheit.
IV. A equação do “Tf” poderia ter sido reescrita como: Tc*9.0/5.0+32.0 devido a prioridade das operações matemáticas.
V. O comando Tc++; significa o mesmo que
; na linguagem C .
Assinale a alternativa que contém as afirmações corretas:
◯ a. Apenas II e V.
◯ b. Apenas I, II e IV.
◯ c. Apenas IV e V.
◯ d. Apenas I e V.
◯ e. Apenas II, IV e V.
#include <stdio.h>
int main()
{
float Tc, Tf;
Tc = 34.5;
while(Tc <= 53){
Tf = (((Tc*9.0)/5.0)+32.0);
printf("Tc = %.1f C = %.1f F \n", Tc, Tf);
Tc++;
}
return 0;
}
I. Este programa não poderia ser feito usando o laço de repetição “for” nem o laço de repetição “do/while”.
II. O laço de repetição se repete até que a variável “Tf” seja menor ou igual a 53 .
III. Somente ao final do programa é mostrado a última temperatura em graus Celsius e em Graus Fahrenheit.
IV. A equação do “Tf” poderia ter sido reescrita como: Tc*9.0/5.0+32.0 devido a prioridade das operações matemáticas.
V. O comando Tc++; significa o mesmo que
◯ a. Apenas II e V.
◯ b. Apenas I, II e IV.
◯ c. Apenas IV e V.
◯ d. Apenas I e V.
◯ e. Apenas II, IV e V.
Passo 1
O enunciado dá o código C abaixo e pede para identificar quais afirmações I–V são verdadeiras:
#include <stdio.h>
int main()
{
float Tc, Tf;
Tc = 34.5;
while(Tc <= 53){
Tf = (((Tc*9.0)/5.0)+32.0);
printf("Tc = %.1f C = %.1f F \n", Tc, Tf);
Tc++;
}
return 0;
}
As cinco afirmações a avaliar são:
I. Este programa não poderia ser feito usando o laço de repetição “for” nem o laço de repetição “do/while”.
II. O laço de repetição se repete até que a variável “Tf” seja menor ou igual a 53.
III. Somente ao final do programa é mostrado a última temperatura em graus Celsius e em Graus Fahrenheit.
IV. A equação do “Tf” poderia ter sido reescrita como: devido a prioridade das operações matemáticas.
V. O comando significa o mesmo que
na linguagem C.
I. Este programa não poderia ser feito usando o laço de repetição “for” nem o laço de repetição “do/while”.
II. O laço de repetição se repete até que a variável “Tf” seja menor ou igual a 53.
III. Somente ao final do programa é mostrado a última temperatura em graus Celsius e em Graus Fahrenheit.
IV. A equação do “Tf” poderia ter sido reescrita como:
V. O comando
Informações relevantes do código (retiradas do enunciado):
- A variável de controle começa com
. - A condição do laço é
. - Dentro do laço calcula-se
pela expressão dada e imprime-se com . - Ao final de cada iteração há
.
Passo 2
Entendendo o funcionamento do laço
: em C o comando
avalia a condição antes de cada iteração; se a condição for verdadeira, executa o bloco e volta a testar; se for falsa, sai do laço. No código a condição é
. Portanto o laço repete enquanto a variável testada for
. A afirmação II diz que o laço se repete até que
seja menor ou igual a 53. Isso é incorreto porque a condição usa
, não
. Conclusão: a afirmação II é falsa.
Passo 3
Avaliação da afirmação I: “não poderia ser feito com for nem do/while”. Qualquer laço
que tenha inicialização, teste e incremento pode ser reescrito como um
com a mesma lógica. Por exemplo, a mesma lógica em
seria:
Também pode-se usar
— neste caso como a condição inicial
já satisfaz
, o
produziria comportamento equivalente (apenas atenção:
garante pelo menos uma execução, o que aqui é compatível). Logo dizer que não poderia ser feito com
ou
é falso. Conclusão: a afirmação I é falsa.
Passo 4
Avaliação da afirmação III: onde e quando as temperaturas são mostradas? No código o
está dentro do bloco do laço:
Isto imprime uma linha em cada iteração. Portanto o programa mostra várias linhas (uma por valor de
), e a última linha impressa corresponde à última iteração, mas não é verdade que “somente ao final do programa é mostrado a última temperatura” no sentido de que nada é mostrado durante o laço — na verdade cada iteração imprime. A interpretação natural da afirmação III é que somente ao final algo é mostrado (como se só um único print ocorresse no final), o que é falso. Conclusão: a afirmação III é falsa.
Passo 5
Avaliação da afirmação IV (prioridade de operações): a linha no código é
Em C (e em matemática usual) multiplicação e divisão têm precedência maior que adição e subtração e, entre
e
, a avaliação é da esquerda para a direita (associatividade). Assim a expressão sem parênteses
significa exatamente calcular primeiro
, depois dividir o resultado por
e por fim somar
. Além disso, como os literais são
e
(tipo ponto flutuante), a divisão é em ponto flutuante, evitando problemas de divisão inteira. Portanto a reescrita proposta é correta. Conclusão: a afirmação IV é verdadeira.
Passo 6
Avaliação da afirmação V (incremento): em C o operador pós-incremento
adiciona
à variável
. Quando usado como uma instrução isolada:
é funcionalmente equivalente a
A única diferença entre
e
aparece quando o valor da expressão é usado dentro de uma expressão maior (por exemplo
atribui o valor antigo de
a
e só depois incrementa). Mas no código dado
está sozinho como comando de incremento; portanto a equivalência afirmada na V é correta. Conclusão: a afirmação V é verdadeira.
Passo 7
Resumindo as verdades/mentiras:
- I: falsa
- II: falsa
- III: falsa
- IV: verdadeira
- V: verdadeira
Portanto a alternativa correta é a que contém apenas IV e V.
Resposta
c. Apenas IV e V.