Geral Múltipla Escolha

Considere o código em C: Dado o código em C, qual das alternativas abaixo apresenta a lógica correta para a atribuição dos valores de x e y, considerando que z é maior que w?

Considere o código em C:

#include <iostream>
using namespace std;

int main() {
  int x, y, z, w;
  if (z > w) {
    x = z;
  } else {
    y = w;
  }
  cout << x << " " << y << endl;
  return 0;
}

Dado o código em C, qual das alternativas abaixo apresenta a lógica correta para a atribuição dos valores de x e y, considerando que z é maior que w?

  1. Se z for maior que w, x recebe o valor de z, caso contrário, y recebe o valor de w.
  2. Se z for maior que w, y recebe o valor de z, caso contrário, x recebe o valor de w.
  3. Se z for menor que w, x recebe o valor de z, caso contrário, y recebe o valor de w.
  4. Se z for maior que w, x recebe o valor de w, caso contrário, y recebe o valor de z.
  5. Se z for igual a w, x recebe o valor de z, caso contrário, y recebe o valor de w.

Resolução completa

Explicação passo a passo

B
Alternativa B

Com base na imagem fornecida, identifiquei quatro questões distintas de Tecnologia da Informação, abordando Lógica de Programação, C++, Sistemas Operacionais e Manipulação de Arquivos. Abaixo, apresento a análise detalhada de cada uma.

Análise das Questões

1. Lógica de Programação (C)

Enunciado: A questão pede para identificar a expressão em linguagem C que implementa a lógica: "se z for maior que w, o valor de z será atribuído a x, do contrário, w será atribuído a $y$".

Desenvolvimento:
A estrutura condicional básica em C utiliza a sintaxe if (condição) { bloco_verdade } else { bloco_falso }.

  • Condição: z > w (z maior que w).
  • Ação Verdadeira: x = z (atribui z a x).
  • Ação Falsa (Else): y = w (atribui w a y).

Comparando com as alternativas:

  • A) Compara x com z, o que não é o pedido.
  • B) if(z > w) x = z; else y = w; -> Segue exatamente a lógica descrita.
  • C) Inverte a condição (w > z) e as ações.
  • D) Usa x < z e troca as ações.
  • E) Usa y > w na condição.

Alternativa B


2. Estrutura de Controle e Argumentos (C++)

Enunciado: Analisa um trecho de código C++ que verifica o número de argumentos (argc) e executa um switch baseado no argumento passado. O objetivo é identificar o comportamento correto da função.

Desenvolvimento:
O código apresenta uma validação inicial:
\text{if } (argc \neq 2)
Isso significa que o programa espera exatamente um argumento além do nome do próprio programa (total de 2). Se houver mais ou menos argumentos, ele imprime "1" e retorna.

Os casos (case) mostram comportamentos para chaves como -c, -p, -h.

  • Alternativa A: Incorreta. return não cria loops.
  • Alternativa B: "A função retorna sem executar para algum argumento de entrada do tipo string". Esta opção refere-se ao if (argc != 2). Se o usuário rodar o programa sem argumentos ou com muitos, a função retorna imediatamente (sem executar o switch). Isso é um comportamento esperado de validação.
  • Alternativa C: printf é uma função de saída, não uma diretiva de compilação (como #include).
  • Alternativa D: switch não calcula módulos de bibliotecas.
  • Alternativa E: Falta de precisão técnica sobre "referência de variável no lado".

A alternativa B é a que melhor descreve a lógica de validação de entrada mostrada no if.

Alternativa B


3. Sistemas Operacionais (Linux)

Enunciado: Trata sobre a entrada e saída padrão (stdin, stdout, stderr) e o comportamento de comandos no Linux.

Desenvolvimento:
No Linux, os fluxos de entrada e saída podem ser manipulados e encadeados.

  • stdin: Entrada padrão (geralmente teclado).
  • stdout: Saída padrão (geralmente terminal).
  • stderr: Saída de erros (geralmente terminal).

Ao analisar as opções:

  • A) Incorreta. stdin não é um arquivo destino para dados escritos.
  • B e C) Conceitos incorretos sobre classificação de comandos.
  • D) "Quando um comando padrão é executado, o comando é encadeado e o fluxo de controle passa para o próximo comando..." Esta descrição remete ao conceito de Pipe (|), onde a saída de um comando é enviada como entrada para o próximo, permitindo o encadeamento de processos.
  • E) Incorreta. É possível redirecionar streams.

Alternativa D


4. Manipulação de Arquivos (C++)

Enunciado: Apresenta um trecho de código que manipula um arquivo usando a biblioteca <fstream>. Pede para identificar os erros na sequência de operações.

Desenvolvimento:
Vamos analisar a sequência lógica:

  1. f.open(..., ios::out): Abre para escrita (cria o arquivo). OK.
  2. f.close(): Fecha o arquivo. OK.
  3. f.open(..., ios::in | ios::binary): Abre para leitura e binário.
  4. f.read(...): Lê o arquivo. OK.
  5. f.close(): Fecha. OK.
  6. f.seekg(0, ios::beg): Move o cursor para o início.
  7. Ponto Crítico (Item X): f.write(...).

O erro reside no passo X. Após abrir o arquivo no passo III com a flag ios::in (somente leitura), não é possível realizar uma operação de escrita (write) naquele mesmo fluxo sem fechar e reabrir com a flag ios::out ou abrir com flags combinadas (ios::in | ios::out). Tentar escrever em um stream aberto apenas para leitura causa um erro lógico de acesso.

As outras linhas (I, XI) são operações válidas de abrir e fechar arquivos.

Alternativa D

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Geral

Ver mais Geral resolvidas

Tem outra questão de Geral?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.