Química Programada - Pré-seleção de solventes por temperatura de ebulição usando pesquisa linear em JavaScript

Seções

1. Introdução

Algoritmos de pesquisa ou de busca são algoritmos fundamentais em ciência da computação que se propõem a procurar um valor em uma estrutura de dados. O mais básico desses algoritmos é a pesquisa linear, na qual se faz a iteração sobre uma estrutura de dados, um valor por vez, e cada valor é comparado com o valor que estamos procurando. Esse método é aplicável a uma busca numa lista de valores que não esteja ordenada, segundo podemos ler em Manual de introdução aos algoritmos.

Na Figura 1, temos um array de números chamado arr. O objetivo do algoritmo é, através de uma função chamada procura, receber um número qualquer de entrada e procurar a posição desse número no array arr, fazendo a iteração por cada posição. Ao percorrer cada posição do array, o algoritmo faz a comparação num === arr[i], que compara o número de entrada da função com o valor da posição i do array. Se a expressão for verdadeira, é impressa a posição encontrada no array e o valor. Se, ao percorrer todo array, não for verificada a expressão como verdadeira para nenhuma posição, é impresso "Nao encontrado". Na Figura 2 são apresentadas as saídas da função procura.

Algoritmo pesquisa linear
Figura 1: Algoritmo da pesquisa linear.
Saída pesquisa linear
Figura 2: Saída do algoritmo da pesquisa linear.

2 Apresentação do problema

Imagine que você trabalha em uma empresa que comercializa diferentes solventes orgânicos. Abaixo na Tabela 1 está a lista dos produtos comercializados com seus pontos de ebulição. Você recebe várias vezes ao dia contato de algum cliente que precisa fazer uma pré-seleção de solventes que possam ser utilizados em uma dada aplicação com uma temperatura específica. A cada nova demanda e nova temperatura, você precisa escolher manualmente a lista de solventes pré-selecionados para a aplicação e enviá-la para o cliente em questão.

Na seção seguinte, Química Programada propõe uma versão modificada do algoritmo de pesquisa linear para que essa busca de solventes com temperatura de ebulição acima da temperatura de aplicação de determinado cliente possa ser feita de forma programável.

Tabela 1. Temperatura de ebulição de solventes orgânicos
Solvente Temperatura de ebulição (°C)
Acetona 56,1
Diisobutil cetona 169,3
Metanol 64,5
Tolueno 110,5
Xileno 140,0
Hexano 68,7
Nafta aromática C-9 165,9
Aguarrás mineral 148,0
Butilglicol 171,2
Butildiglicol 230,6
Etilenoglicol 197,6
Dietilenoglicol 245,8
Acetato de n-butila 126,1
Acetato de etila 77,2
Acetato de isopentila 142,0
n-Butanol 117,7
Isopentanol 131,4
Isopropanol 82,4
n-Propanol 97,2
Metiletilcetona 79,6

3. Adaptação do algoritmo de pesquisa linear ao problema proposto

Para resolver o problema proposto na seção 2, Química Programada fez uma modificação no algoritmo de pesquisa linear tradicional apresentado na seção 1. O novo algoritmo terá que executar as seguintes tarefas : percorrer uma estrutura de dados do tipo dicionário na qual a chave seja o nome dos solventes e o valor seja a temperatura de ebulição; fazer a comparação do tipo " > (maior) " entre a temperatura de ebulição de cada solvente do dicionário e a temperatura da aplicação do cliente; gerar como saída não apenas o nome de um solvente, mas um array de strings com todos os solventes cuja temperatura de ebulição seja superior à temperatura requerida para a aplicação.

Na Figura 3 é apresentado o dicionário de todos os solventes e suas respectivas temperaturas de ebulição apresentados na Tabela 1. Nesse tipo de estrutura de dados, temos a chave, que é uma string com nome dos solventes comercializados pela empresa e o valor, que é um float que representa a temperatura de ebulição do solvente em graus Celsius.

Dicionario de temperatura bulição
Figura 3: Dicionário com temperatura de ebulição de solventes.

Na Figura 4 é apresentado o algoritmo da pesquisa linear modificado. Para armazenar a lista de strings que representam os solventes pré-selecionados pela temperatura de ebulição, foi criado um array inicializado vazio chamado resultado. Depois foi feito um laço for(let chave in solventes) que percorre todas as posições do dicionário. Se a temperatura de ebulição de uma dada chave atende à condição if(solventes[chave] > valor), a chave desse solventes é armazenada no array resultado.

Na segunda parte do algoritmo é verificado se o comprimento do array resultado é igual a 0. Caso positivo, é impresso que nenhum solvente foi encontrado. Caso negativo, é impresso o array resultado com a lista dos solventes que podem ser pré-selecionados para a aplicação.

Pesquisa linear modificado
Figura 4: Algoritmo de pesquisa linear modificado.

Na Figura 5 são apresentadas as saídas do algoritmo para as temperaturas de aplicação de 120, 170 e 200°C. Este algoritmo não substitui uma análise completa de compatibilidade, segurança ou toxicidade. Ele serve como ferramenta de pré-seleção apenas por critério de temperatura de ebulição, devendo sempre ser considerados critérios adicionais. É um exemplo simples de como automatizar decisões preliminares de engenharia de processo.

Saída pesquisa linear modificado
Figura 5: Saída da busca para temperaturas de 120, 170 e 200°C.

4. Referências

logo2
Imagem gerada a partir de fotos do desenvolvedor do site modificadas com o Copilot e ChatGPT.

Desenvolvimento : Química Programada