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
contém óleo mineral e o Tanque 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
passe a conter o sintético e o Tanque 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
(ou um sistema de bombas e tubulações que funcione como esse recipiente). - Em programação existe também a atribuição simultânea
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(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
guarda “mineral”, guarda “sintético”, guarda “vazio” no início. - Operação de atribuição/transferência: "transferir
para " significa esvaziar o conteúdo de e colocá-lo em . Em notação simples, escrevemos ou (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:
- Preparação e verificações:
- Identificar claramente os tanques:
(contém mineral), (contém sintético) e preparar um tanque intermediário vazio (capacidade suficiente). - Verificar que as válvulas, bombas e tubulações estão funcionando e que
está limpo e vazio. - Fechar válvulas que ligam
e diretamente para evitar qualquer mistura acidental.
- Identificar claramente os tanques:
- Transferir o conteúdo de
para : - Abrir válvula/pump entre
e e transferir todo o óleo do tanque para . - Ao término, confirmar que
está vazio e contém o óleo mineral. Agora: vazio, sintético, mineral.
- Abrir válvula/pump entre
- Transferir o conteúdo de
para : - Fechar a ligação
para isolar . - Abrir válvula/pump entre
e e transferir todo o óleo sintético de para . - Ao término, confirmar que
está vazio e contém o sintético. Agora: sintético, vazio, mineral.
- Fechar a ligação
- Transferir o conteúdo de
para : - Abrir válvula/pump entre
e e transferir o óleo mineral de para . - Ao término, confirmar que
está vazio e contém o mineral. Agora: sintético, mineral, vazio.
- Abrir válvula/pump entre
- 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:
contém “mineral”, contém “sintético”, está vazio e tem capacidade suficiente. - Operações atômicas: “transferir(X,Y)” significa mover todo o conteúdo de
para sem mistura.
Pseudocódigo:
Explicação de cada linha:
- A primeira linha salva o conteúdo de
em (o “backup”). - A segunda linha move o conteúdo de
para . - A terceira linha move o backup (original de
) de para .
Passo 6
Exemplo prático passo a passo mostrando os conteúdos após cada operação (para fixar):
- Estado inicial:
-
mineral -
sintético -
vazio
-
- Depois de
: -
vazio -
sintético -
mineral
-
- Depois de
: -
sintético -
vazio -
mineral
-
- Depois de
: -
sintético -
mineral -
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:
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
parcialmente em ou vice-versa) — isso viola a condição de não mistura. - Reforce na prova: declare as pré-condições (existência de
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
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.