Pular para o conteúdo principal

Questão de Arquitetura de Software — Software — FUNDATEC 2023

Arquitetura de SoftwareSoftware
Código
qq890417
Banca
FUNDATEC
Órgão
CAU-RS
Ano
2023
Nível
Médio
Cargo
Técnico em Microinformática

Analise o algoritmo Teste apresentado a seguir:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

Algoritmo“Teste”


Var

Res, X, Y: real


Inicio


procedimento ENTRADA()

Inicio

escreval(“”)

escreva(“X: “)

leia(X)

escreva(“Y: “)

leia(Y)

fimprocedimento


procedimento SAIDA()

inicio

escreval(“”)

se X > Y então

RES <- X – Y

senão

RES <- Y – X

fimse

escreval (“RES: “,RES)

escreval (“”)

fimprocedimento


repita

ENTRADA()

SAIDA()

Até X=Y


Fimalgoritmo


Ao executar esse algoritmo, o que acontece quando se lê o mesmo valor 10 para as variáveis X e Y?

  1. AÉ exibido o valor 0 (zero) como resultado da operação X – Y e o algoritmo termina.
  2. BÉ exibido o valor 0 (zero) como resultado da operação X – Y e o procedimento ENTRADA() é chamado novamente.
  3. CNão é exibido valor algum porque X não é nem maior e nem menor do que Y e o algoritmo termina.
  4. DNão é exibido valor algum porque X não é nem maior e nem menor do que Y e o procedimento ENTRADA() é chamado novamente.
  5. EO algoritmo não pode ser executado porque X=Y não satisfaz a condição do comando de desvio condicional.
Revelar gabarito e comentário

GabaritoA — É exibido o valor 0 (zero) como resultado da operação X – Y e o algoritmo termina.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Análise do algoritmo Teste

Gabarito: letra A. Quando X e Y recebem o mesmo valor (10), o procedimento SAIDA() é executado, e como X não é maior que Y, o comando senão é acionado, calculando RES <- Y - X, ou seja, 10 - 10 = 0. O valor 0 é exibido e, em seguida, a condição Até X=Y é avaliada como verdadeira, encerrando o laço de repetição e, portanto, o algoritmo termina.

O algoritmo apresentado é um exemplo clássico de estrutura de repetição com teste no final (repita...até), que garante que o bloco de comandos seja executado pelo menos uma vez antes de verificar a condição de parada. Dentro desse laço, dois procedimentos são chamados: ENTRADA(), que lê os valores de X e Y, e SAIDA(), que calcula e exibe o resultado.

O procedimento SAIDA() contém um desvio condicional simples (se...senão). A lógica é: se X for maior que Y, calcula X - Y; caso contrário (ou seja, se X for menor OU igual a Y), calcula Y - X. Essa estrutura é comumente usada para garantir que o resultado seja sempre um valor não negativo, representando a diferença absoluta entre os dois números.

A pegadinha da questão está em interpretar corretamente o fluxo de execução quando os valores são iguais. Muitos candidatos podem pensar que, como X não é maior que Y, o comando senão não seria executado ou que nenhum valor seria exibido. No entanto, a condição se X > Y é falsa, então o bloco senão é executado, realizando a subtração Y - X, que resulta em 0. Além disso, a condição de parada Até X=Y é imediatamente satisfeita, pois X e Y são iguais, encerrando o laço.

Alternativa A — ✅ Correta ⟵ GABARITO

Esta alternativa descreve exatamente o que acontece. Com X = 10 e Y = 10, a condição X > Y é falsa, então o comando senão é executado, calculando RES <- Y - X, que resulta em 10 - 10 = 0. O valor 0 é exibido. Em seguida, a condição Até X=Y é avaliada como verdadeira (10 = 10), o que encerra o laço repita...até e, consequentemente, o algoritmo termina. A alternativa está correta em todos os aspectos.

Alternativa B — ❌ Incorreta

O erro desta alternativa está na segunda parte: "o procedimento ENTRADA() é chamado novamente". Após exibir o valor 0, a condição Até X=Y é verdadeira, o que faz o laço terminar imediatamente. O procedimento ENTRADA() não é chamado novamente, pois a repetição é interrompida. A primeira parte (exibir 0) está correta, mas a consequência está errada.

Alternativa C — ❌ Incorreta

Esta alternativa afirma que "não é exibido valor algum" porque X não é nem maior nem menor que Y. Isso está incorreto. No comando se...senão, quando a condição X > Y é falsa, o bloco senão é executado. Não existe uma terceira possibilidade de "não fazer nada" quando os valores são iguais. O comando senão cobre todos os casos em que X não é maior que Y, incluindo quando são iguais. Portanto, o valor 0 é exibido, e não "nenhum valor".

Alternativa D — ❌ Incorreta

Esta alternativa combina dois erros: afirma que não é exibido valor algum (incorreto, como explicado na alternativa C) e que o procedimento ENTRADA() é chamado novamente (incorreto, pois a condição Até X=Y é verdadeira e o laço termina). Ambos os pontos estão errados, tornando a alternativa completamente falsa.

Alternativa E — ❌ Incorreta

Esta alternativa afirma que o algoritmo não pode ser executado porque X=Y não satisfaz a condição do comando de desvio condicional. Isso é um equívoco. O comando se X > Y é uma condição válida, e quando ela é falsa, o bloco senão é executado. Não há nenhum impedimento para a execução do algoritmo quando X = Y. O algoritmo é perfeitamente executável e produzirá o resultado 0. A condição Até X=Y é justamente a condição de parada do laço, que é satisfeita, encerrando o algoritmo normalmente.

NÃO CAIA NESSA!

A banca explora a confusão entre a condição do se e a condição do repita. O candidato pode pensar que, como X não é maior que Y, o senão não seria executado ou que o algoritmo entraria em loop. Na verdade, o senão cobre o caso de igualdade, e a condição Até X=Y é justamente a que encerra o laço. Fique atento: em um se...senão, a condição se define apenas o primeiro bloco; todo o resto (incluindo a igualdade) vai para o senão.

PEGA ESSA DICA!

Para resolver questões de interpretação de algoritmos, trace a execução passo a passo com os valores fornecidos. Anote o valor de cada variável em cada linha e verifique as condições. No caso de repita...até, lembre-se de que o bloco é executado pelo menos uma vez, e a condição é verificada ao final. Essa técnica evita erros de interpretação e garante a resposta correta.

Gabarito: letra A

Link permanente: /questoes/qq890417