Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CURSO: ALGORITMOS
CODIGO: IN220
SECCION: IX-49
INTEGRANTES: HANNA JORGE VELASQUEZ
JOHANNA AVELLANEDA
JOSSELYN MIRANDA
24 DE NOVIEMBRE DE 2016
I. Introducción
Para realizar el trabajo propuesto por el curso, nuestro equipo de trabajo se dispuso a
investigar sobre el tema encomendado, titulado " Simulación de una titulación acido base".
Para desarrollar el tema y hacer los cálculos respectivos es necesario el uso del programa
Excel, y en específico el uso de Visual Basic que está incluido dentro del mencionado
programa.
Para realizar el algoritmo se tiene que hacer un estudio y análisis previo que está detallado
en este informe. Entre lo que se detalla está el pseudocódigo a usar, el análisis de datos de
entrada, salida e intermedios; así como las fórmulas matemáticas a utilizar y problemas de
validación para comprobar que el algoritmo funciona correctamente.
Luego, para codificar en Visual Basic fue necesaria la ayuda de todo el grupo de trabajo
para resolver los problemas de codificación que se presentaban a medida que se
desarrollaba el programa para calcular titulaciones ácido base.
1
II. Marco Teórico:
Una reacción de neutralización o titulación ácido base es aquella en la que un ácido y una
producir sales de alta pureza. Durante la neutralización, los iones H y OH reaccionan entre
sí para producir agua, al tiempo que los iones restantes, es decir, los pares conjugados del
ácido y la base, generan la sal. Sin embargo, por lo general estos iones continúan
disociados en solución acuosa, por lo que la sal, como tal, no se forma sino hasta que el
Esto se logra a través de la adición de pequeños volúmenes de una solución ácida o básica
en la neutralización que se lleva a cabo entre las dos soluciones, ya que una es ácida y la
volumen de solución valorada usado para neutralizarla, pues la H debe ser igual a la .
Cuando esto sucede se dice que se ha alcanzado el punto de equivalencia. En este punto, el
2
Punto de equivalencia: valor del pH
de dicho punto depende de la fuerza relativa del ácido y la base empleados. Para conocer
Un ácido fuerte reacciona con una base fuerte para formar una disolución neutra
(pH = 7).
Un ácido fuerte reacciona con una base débil para formar una disolución ácida (pH
<7).
Un ácido débil reacciona con una base fuerte para formar una disolución básica
(pH> 7).
1
https://es.wikipedia.org/wiki/Valoraci%C3%B3n_%C3%A1cido-base#Punto_de_equivalencia:_valor_del_pH
3
III. Análisis y Diseño de la Solución
a) Análisis de datos de entrada, salida e intermedios:
i. Datos de entrada:
Cantidad de Solución Base: En el aplicativo la variable recibirá el
nombre de Cant_sol_base y de tipo Single. La cantidad ingresada
aquí será en mililitros.
Concentración de Solución Base: En el aplicativo la variable
recibirá el nombre de conc_sol_base y de tipo Single. El valor
ingresado aquí será en moles por litro.
Cantidad Inicial de Disolución En el aplicativo la variable
recibirá el nombre de cant_diso_inicial y de tipo Single. La
cantidad ingresada aquí será en mililitros.
Cantidad de Solución Base: En el aplicativo la variable recibirá el
nombre de sol_base de tipo String Recibirá los valores de débil y
fuerte.
Cantidad de Solución Ácida: En el aplicativo la variable recibirá
el nombre de sol_base de tipo String. Recibirá los valores de débil
y fuerte.
4
Volumen total de Disolución: En el aplicativo la variable recibirá
el nombre de volumen_total_disolución , de tipo Single. La
cantidad ingresada aquí será en mililitros.
5
6
c) Modelo matemático
Valoraciones de ácidos:
donde:
Las siguientes fórmulas fueron extraídas del libro titulado "Química" de Chang Goldsby, aquí
explica detalladamente cada procedimiento a realizar en las simulaciones ácido-base.
7
Fuente: Chang Goldsby (2010). Química.
d) Algoritmo de solución
Pseudocódigo
INICIO
Leer vector_compuesto(100)
Leer vector_valor_disociacion(100)
Leer cantidad_de_solucion_base
Leer concentracion_de_solucion_base
Leer cantidad_de_disolucion_inicial
Leer solucion_base
Leer solucion_acida
Leer valor_acido_fuerte
Leer i
Leer k
Leer acido
Leer base
Leer x
8
Leer valor_acido_debil
Leer cantidad_de_solucion_base
Leer cantidad_de_disolucion_inicial
Leer concentracion_de_solucion_base
Leer solucion_acida
Leer solucion_base
Fin Si
Leer base
Leer acido
Leer compuesto_acido
cantidad_de_moles_de_solucion_acida = (cantidad_de_disolucion_inicial *
cantidad_de_moles_de_solucion_base) / 10
cantidad_de_solucion_acida_postneutralizacion = cantidad_de_moles_de_solucion_acida -
cantidad_de_moles_de_solucion_base
concentracion_de_solucion_acida = ((cantidad_de_solucion_acida_postneutralizacion /
vol_total_de_disolucion) * 1000)
ph = -Log10(concentracion_de_solucion_acida)
Escribir cantidad_de_moles_de_solucion_base
Escribir "ml / " & solucion_base
Escribir = solucion_base & "+" & solucion_acida
Escribir "NaCl + H2O"
Escribir cantidad_de_moles_de_solucion_acida
Escribir "moles de " & solucion_acida
Escribir "cantidad_de_solucion_acida_postneutralizacion
Escribir "Moles"
Escribir concentracion_de_solucion_acida
Escribir "Molar"
Escribir ph
Sino
Si acido = "Débil" And base = "Fuerte" Entonces
cantidad_de_moles_de_solucion_base = (concentracion_de_solucion_base *
(cantidad_de_solucion_base / 1000))
cantidad_de_moles_de_solucion_acida = (cantidad_de_disolucion_inicial *
cantidad_de_moles_de_solucion_base) / 10
cantidad_de_solucion_acida_postneutralizacion =
cantidad_de_moles_de_solucion_acida - cantidad_de_moles_de_solucion_base
11
concentracion_de_solucion_acida =
(((cantidad_de_solucion_acida_postneutralizacion * k) /
cantidad_de_moles_de_solucion_base))
ph = -Log10(concentracion_de_solucion_acida)
Escribir cantidad_de_solucion_acida_postneutralizacion
Escribir "Moles"
Escribir concentracion_de_solucion_acida
Escribir "Molar"
Escribir "PH"
Escribir cantidad_de_moles_de_solucion_base
Escribir "ml / " & solucion_base
Escribir solucion_base & "+" & "2" & solucion_acida
Escribir solucion_acida + "H2O"
Escribir cantidad_de_moles_de_solucion_acida
Escribir "moles de " & solucion_acida
Escribir ph
Sino
Si acido = "Fuerte" And base = "Débil" Entonces
cantidad_de_moles_de_solucion_base = (concentracion_de_solucion_base *
(cantidad_de_solucion_base / 1000))
cantidad_de_moles_de_solucion_acida = (cantidad_de_disolucion_inicial *
cantidad_de_moles_de_solucion_base) / 10
cantidad_de_solucion_acida_postneutralizacion =
(cantidad_de_moles_de_solucion_acida / vol_total_de_disolucion) * 1000
k = 0.00000000056
valor_acido_fuerte = 0.05
x = (k * valor_acido_fuerte) ^ 0.5
concentracion_de_solucion_acida = x
ph = -Log10(concentracion_de_solucion_acida)
Escribir cantidad_de_solucion_acida_postneutralizacion
Escribir "Moles"
Escribir concentracion_de_solucion_acida
Escribir "Molar"
12
Escribir "PH"
Escribir ph
Escribir cantidad_de_moles_de_solucion_base
Escribir "ml / " & solucion_base ' escribe moles/"solucion base"
Escribir solucion_base & "+" & solucion_acida
Escribir "NH4Cl"
Escribir cantidad_de_moles_de_solucion_acida
Escribir "moles de " & solucion_acida
Fin Si
Fin Si
Fin Si
FIN
e) Validación
Para validar todo lo desarrollado en el algoritmo se tiene tres tipos de ejercicios en
la bibliografía utilizada, específicamente del libro de Chang Goldsby, en el que se
relatan tres tipos de titulaciones con ejemplos y datos. A continuación, se dan
estos datos que irán en el aplicativo en botones de juegos de datos 1,2 y 3.
Cantidad de
solución base 10
(ml) ml
Concentració
n de solución 0.1
base (molar) mol/lt
Cantidad de
disolución 25
inicial ml
Solución Base NaOH Fuerte
Solución
HCl
Ácida Fuerte
Volumen
Total de la 35 ml
Disolución
Datos para Simulación de Titulación Base Fuerte - Ácido Débil (Véase
Pag. 737)
13
Cantidad de
solución base 10
(ml) ml
Concentració
n de solución 0.1
base (molar) mol/lt
Cantidad de
disolución 25
inicial ml
Solución Base NaOH Fuerte
Solución
CH3COOH
Ácida Débil
Volumen
Total de la 35 ml
Disolución
Cantidad de
solución base 10
(ml) ml
Concentració
n de solución 0.1
base (molar) mol/lt
Cantidad de
disolución 25
inicial ml
14
IV. Implementación de la Solución:
Option Explicit
15
Do Until acido = "Fuerte" Or acido = "Débil"
acido = InputBox("Ingrese el tipo de ácido : Fuerte o Débil")
Loop
Cells(12, 7) = acido
For i = 1 To 100
vector_compuesto(i) = Cells(5 + i, 19)
'Por ejmplo lee 0.000018
vector_valor_disociacion(i) = Cells(5 + i, 20)
Next i
For i = 1 To 100
16
If solucion_acida = vector_compuesto(i) Then
siestaelacido = True
End If
Next i
base = Cells(11, 7)
acido = Cells(12, 7)
For i = 1 To 100
If compuesto_acido = vector_compuesto(i) Then
k = vector_valor_disociacion(i)
End If
Next i
Range("D8") = "mL"
Range("D9") = "mol/Lt"
Range("D10") = "mL"
17
cantidad_de_moles_de_solucion_acida = (cantidad_de_disolucion_inicial *
cantidad_de_moles_de_solucion_base) / 10
cantidad_de_solucion_acida_postneutralizacion = cantidad_de_moles_de_solucion_acida
- cantidad_de_moles_de_solucion_base
concentracion_de_solucion_acida = ((cantidad_de_solucion_acida_postneutralizacion /
vol_total_de_disolucion) * 1000)
ph = -Application.WorksheetFunction.Log10(concentracion_de_solucion_acida)
Cells(19, 6) = cantidad_de_moles_de_solucion_base
Cells(19, 7) = "ml / " & solucion_base
Cells(20, 6) = solucion_base & "+" & solucion_acida
Cells(20, 7) = "NaCl + H2O"
Cells(21, 6) = cantidad_de_moles_de_solucion_acida
Cells(21, 7) = "moles de " & solucion_acida
Cells(22, 6) = cantidad_de_solucion_acida_postneutralizacion
Cells(22, 7) = "Moles"
Cells(23, 6) = concentracion_de_solucion_acida
Cells(23, 7) = "Molar"
Cells(24, 6) = ph
Else
If acido = "Débil" And base = "Fuerte" Then
cantidad_de_moles_de_solucion_base = (concentracion_de_solucion_base *
(cantidad_de_solucion_base / 1000))
cantidad_de_moles_de_solucion_acida = (cantidad_de_disolucion_inicial *
cantidad_de_moles_de_solucion_base) / 10
cantidad_de_solucion_acida_postneutralizacion =
cantidad_de_moles_de_solucion_acida - cantidad_de_moles_de_solucion_base
concentracion_de_solucion_acida = (((cantidad_de_solucion_acida_postneutralizacion
* k) / cantidad_de_moles_de_solucion_base))
ph = -Application.WorksheetFunction.Log10(concentracion_de_solucion_acida) 'Se
usa este parametro porque en vba LOG es solo logaritmo natural y no admite bases.
Cells(22, 6) = cantidad_de_solucion_acida_postneutralizacion
Cells(22, 7) = "Moles"
Cells(23, 6) = concentracion_de_solucion_acida
Cells(23, 7) = "Molar"
Cells(24, 7) = "PH"
Cells(19, 6) = cantidad_de_moles_de_solucion_base
Cells(19, 7) = "ml / " & solucion_base
Cells(20, 6) = solucion_base & "+" & "2" & solucion_acida
Cells(20, 7) = solucion_acida + "H2O"
Cells(21, 6) = cantidad_de_moles_de_solucion_acida
Cells(21, 7) = "moles de " & solucion_acida
Cells(24, 6) = ph
Else
18
If acido = "Fuerte" And base = "Débil" Then
cantidad_de_moles_de_solucion_base = (concentracion_de_solucion_base *
(cantidad_de_solucion_base / 1000))
cantidad_de_moles_de_solucion_acida = (cantidad_de_disolucion_inicial *
cantidad_de_moles_de_solucion_base) / 10
cantidad_de_solucion_acida_postneutralizacion =
(cantidad_de_moles_de_solucion_acida / vol_total_de_disolucion) * 1000
k = 0.00000000056
valor_acido_fuerte = 0.05
x = (k * valor_acido_fuerte) ^ 0.5
concentracion_de_solucion_acida = x
ph = -Application.WorksheetFunction.Log10(concentracion_de_solucion_acida)
Cells(22, 6) = cantidad_de_solucion_acida_postneutralizacion
Cells(22, 7) = "Moles"
Cells(23, 6) = concentracion_de_solucion_acida
Cells(23, 7) = "Molar"
Cells(24, 7) = "PH"
Cells(24, 6) = ph
Cells(19, 6) = cantidad_de_moles_de_solucion_base
Cells(19, 7) = "ml / " & solucion_base ' escribe moles/"solucion base"
Cells(20, 6) = solucion_base & "+" & solucion_acida
Cells(20, 7) = "NH4Cl"
Cells(21, 6) = cantidad_de_moles_de_solucion_acida
Cells(21, 7) = "moles de " & solucion_acida
End If
End If
End If
End Sub
19
End Sub
20
V. Fuentes de Consulta
21
VI. Anexos
22
23
24
25
26
27
28
29