1.0 problema dos tanques: Existem dois tanques de óleo isolante, Tanque A e Tanque B. O Tanque A contém óleo mineral e o Tanque B contém óleo sintético. Escreva um algoritmo para trocar os conteúdos dos tanques, de modo que o Tanque A fique com o sintético e o Tanque B com o mineral.

Passo 1

O que o enunciado dá e o que pede:
  • Dados: existem dois tanques: o Tanque A contém óleo mineral e o Tanque B contém óleo sintético.
  • Pedido: escrever um algoritmo (sequência de passos) para trocar os conteúdos dos tanques de modo que, ao final, o Tanque A passe a conter o sintético e o Tanque B passe a conter o mineral.
  • Condição prática implícita: os dois óleos não podem ser misturados (isto é, não podemos esvaziar um dentro do outro).
    Observação: a solução precisa garantir que não haja mistura — por isso é provável que seja necessário usar um tanque ou recipiente temporário.

Passo 2

Escolhendo a ideia principal (sem calcular nada ainda):
  • Pensamento central: para trocar duas coisas sem misturá-las, usa-se um terceiro lugar temporário onde guardo a primeira antes de mover a segunda. Em algoritmos isso é chamado de “troca com variável temporária”.
  • No contexto físico: usar um recipiente/tanque intermediário vazio C (ou um sistema de bombas e tubulações que funcione como esse recipiente).
  • Em programação existe também a atribuição simultânea A,B \leftarrow B,A que realiza a troca sem variável explícita; fisicamente isso não existe sem um “buffer”.
    Vou desenvolver o algoritmo com o tanque temporário C (método simples, seguro e aplicável ao caso real).

Passo 3

Conceitos básicos necessários (explicadinho):
  • Variável/recipiente: pense em cada tanque como uma “variável” que guarda um valor (a substância). Aqui A guarda “mineral”, B guarda “sintético”, C guarda “vazio” no início.
  • Operação de atribuição/transferência: "transferir X para Y" significa esvaziar o conteúdo de X e colocá-lo em Y. Em notação simples, escrevemos Y \leftarrow X ou Y = X (mas, no mundo real, significa bombear/verter).
  • Requisito de segurança: antes de transferir, verificar que o recipiente destino tem capacidade suficiente e está vazio (ou apropriado), para evitar mistura ou transbordo.

Passo 4

Passo a passo físico detalhado (procedimento prático que evita mistura) — cada subpasso explicado:
  1. Preparação e verificações:
    • Identificar claramente os tanques: A (contém mineral), B (contém sintético) e preparar um tanque intermediário vazio C (capacidade suficiente).
    • Verificar que as válvulas, bombas e tubulações estão funcionando e que C está limpo e vazio.
    • Fechar válvulas que ligam A e B diretamente para evitar qualquer mistura acidental.
  2. Transferir o conteúdo de A para C:
    • Abrir válvula/pump entre A e C e transferir todo o óleo do tanque A para C.
    • Ao término, confirmar que A está vazio e C contém o óleo mineral. Agora: A= vazio, B= sintético, C= mineral.
  3. Transferir o conteúdo de B para A:
    • Fechar a ligação A\leftrightarrow C para isolar C.
    • Abrir válvula/pump entre B e A e transferir todo o óleo sintético de B para A.
    • Ao término, confirmar que B está vazio e A contém o sintético. Agora: A= sintético, B= vazio, C= mineral.
  4. Transferir o conteúdo de C para B:
    • Abrir válvula/pump entre C e B e transferir o óleo mineral de C para B.
    • Ao término, confirmar que C está vazio e B contém o mineral. Agora: A= sintético, B= mineral, C= vazio.
  5. Finalização:
    • Fechar todas as válvulas e bombas usadas. Fazer inspeção final quanto a vazamentos e confirmar que não houve mistura.
    • Registrar as operações (opcional, para controle de processo).

Passo 5

Pseudocódigo do algoritmo (versão abstrata e limpa, para levar para a prova):
  • Pré-condições: A contém “mineral”, B contém “sintético”, C está vazio e tem capacidade suficiente.
  • Operações atômicas: “transferir(X,Y)” significa mover todo o conteúdo de X para Y sem mistura.
    Pseudocódigo:
\text{transferir}(A,C)
\text{transferir}(B,A)
\text{transferir}(C,B)
Explicação de cada linha:
  • A primeira linha salva o conteúdo de A em C (o “backup”).
  • A segunda linha move o conteúdo de B para A.
  • A terceira linha move o backup (original de A) de C para B.

Passo 6

Exemplo prático passo a passo mostrando os conteúdos após cada operação (para fixar):
  • Estado inicial:
    • A = mineral
    • B = sintético
    • C = vazio
  • Depois de \text{transferir}(A,C):
    • A = vazio
    • B = sintético
    • C = mineral
  • Depois de \text{transferir}(B,A):
    • A = sintético
    • B = vazio
    • C = mineral
  • Depois de \text{transferir}(C,B):
    • A = sintético
    • B = mineral
    • C = vazio
      Resultado alcançado: conteúdos trocados sem mistura.

Passo 7

Observações adicionais, alternativas e dicas de prova:
  • Alternativa em programação (quando o conteúdo é abstrato, não “óleo”): em muitas linguagens pode-se trocar duas variáveis sem variável explícita usando atribuição simultânea:
A, B \leftarrow B, A
Isso funciona no mundo do software, mas não é aplicável fisicamente sem um buffer.
  • Não tente manobras que misturem os líquidos (por exemplo, esvaziar A parcialmente em B ou vice-versa) — isso viola a condição de não mistura.
  • Reforce na prova: declare as pré-condições (existência de C vazio e capacidade suficiente) e escreva o pseudocódigo das três transferências; isso demonstra que você entendeu e cuidou das restrições práticas.
  • Se não houver um tanque C disponível, é preciso um esquema com bombear alternadamente para um reservatório móvel ou esvaziar um dos tanques em outro local temporariamente — todas essas soluções são variações do mesmo princípio: usar um buffer temporário.

Resposta

\text{transferir}(A,C)
\text{transferir}(B,A)
\text{transferir}(C,B)

Exercícios relacionados