===== El paquete siette.quimica =====
Se ha desarrollado un conjunto de clases especifico para [[es:manual:items:generativos
|generar preguntas]] relacionadas con la formulación de química inorgánica. Este conjunto de clases se agrupan en un paquete que puede importarse al escribir una pregunta generativa usando [[es:manual:items:generativos:jsp|JSP]]. Para facilitar la creación de preguntas usando este paquete no es necesario recurrir a la programación que se explica en este apartado, ya que puede utilizarse un [[es:help_items_content_chemistry|editor de preguntas especifico]] en el que se indica entre otros el tipo de compuesto y la nomenclatura a utilizar entre otros parámetros. Este editor generará automáticamente el código JSP necesario para crear la plantilla a partir de la cuál en tiempo de ejecución se instanciarán las preguntas concretas a plantear.
El paquete consta de las siguientes clases:
* [[es:manual:quimica:siette.quimica.TablaPeriodica|TablaPeriodica]]
* [[es:manual:quimica:siette.quimica.Elemento|Elemento]]
* [[es:manual:quimica:siette.quimica.Ion|Ion]]
* [[es:manual:quimica:siette.quimica.Anion|Anion]]
* [[es:manual:quimica:siette.quimica.IonCiano|IonCiano]]
* [[es:manual:quimica:siette.quimica.IonHidroxido|IonHidroxido]]
* [[es:manual:quimica:siette.quimica.Oxoanion|Oxoanion]]
* [[es:manual:quimica:siette.quimica.IonHidracido|IonHidracido]]
* [[es:manual:quimica:siette.quimica.Cation|Cation]]
* [[es:manual:quimica:siette.quimica.IonAmonio|IonAmonio]]
* [[es:manual:quimica:siette.quimica.Compuesto|Compuesto]]
* [[es:manual:quimica:siette.quimica.CompuestoBinario|CompuestoUnario]]
* [[es:manual:quimica:siette.quimica.CompuestoBinario|CompuestoBinario]]
* [[es:manual:quimica:siette.quimica.Oxido|Oxido]]
* [[es:manual:quimica:siette.quimica.Peroxido|Peroxido]]
* [[es:manual:quimica:siette.quimica.Haluro|Haluro]]
* [[es:manual:quimica:siette.quimica.Hidruro|Hidruro]]
* [[es:manual:quimica:siette.quimica.SalBinaria|SalBinaria]]
* [[es:manual:quimica:siette.quimica.Cianuro|Cianuro]]
* [[es:manual:quimica:siette.quimica.SalAcida|SalAcida]]
* [[es:manual:quimica:siette.quimica.Hidroxido|Hidroxido]]
* [[es:manual:quimica:siette.quimica.Oxosal|Oxosal]]
* [[es:manual:quimica:siette.quimica.OxosalPoliatomica|OxosalPoliatomica]]
* [[es:manual:quimica:siette.quimica.Hidroxidos|Hidróxido]]
* [[es:manual:quimica:siette.quimica.Oxoacidos|Oxoácido]]
* [[es:manual:quimica:siette.quimica.Oxosales|Oxosal]]
* [[es:manual:quimica:siette.quimica.SalAcida|SalÁcida]]
* [[es:manual:quimica:siette.quimica.Oxoacido|Oxoacido]]
* [[es:manual:quimica:siette.quimica.Peroxoacido|Peroxoacido]]
* [[es:manual:quimica:siette.quimica.Poliacido|Poliacido]]
* [[es:manual:quimica:siette.quimica.Tioacido|Tioacido]]
* [[es:manual:quimica:siette.quimica.ConjuntoCompuestos|ConjuntoCompuestos]]
* [[es:manual:quimica:siette.quimica.Formula|Formula]]
* [[es:manual:quimica:siette.quimica.Molecula|Molecula]]
* [[es:manual:quimica:siette.quimica.FormulaException|FormulaException]]
* [[es:manual:quimica:siette.quimica.PatronQuimica|PatronQuimica]]
==== Ejemplo 1 ====
Un ejemplo sencillo del uso de estas clases es el siguiente:
<%@page import="siette.quimica.*"%>
<%
TablaPeriodica tablaPeriodica = new TablaPeriodica(new Random());
tablaPeriodica.selectCurso("3ESO");
Oxido ox = Oxido.random(tablaPeriodica);
%>
Escribe la fórmula del siguiente compuesto: <%= ox.nombre() %>
En esta pregunta la variable ''ox'' se instancia a un objeto aleatorio de la clase ''Oxido'', es decir a un compuesto de oxígeno y otro elemento elegido aleatoriamente de entre los elementos de la tabla periódica que se estudian en 3º de ESO (La selección de estos elementos se hace en la sentencia anterior, ver la clase [[es:manual:quimica:siette.quimica.tablaperiodica|TablaPeriodica]]). El método ''nombre()'' escribe el nombre del compuesto seleccionado.
Entre otras muchas instancias, este esquema de generación de preguntas dara origen a la siguiente pregunta de Siette:
{{ :es:manual:quimica:oxidohierro3.png?300 |}}
La respuesta correcta a esta pregunta se obtiene llamando al método ''ox.formula()'' y se introducirá en el campo correspondiente al [[es:manual:items:patrones|patrón de respuesta]], que se comparará con la respuesta dada por el alumno.
==== Ejemplo 2 ====
Se puede forzar la elección de un elemento químico en concreto, por ejemplo:
<%@page import="siette.quimica.*"%>
<%
TablaPeriodica tablaPeriodica = new TablaPeriodica(new Random());
Oxido ox = Oxido.random(tablaPeriodica,TablaPeriodica.selectElemento("H"));
%>
Escribe la fórmula del siguiente compuesto: <%= ox.nombre() %>
Fuerza la elección del compuesto ''H2O''. En este caso no hay mas que una posible valencia, pero en los casos en los que el número de oxidación es múltiple se escogería uno al azar.
==== Ejemplo 3 ====
De forma análoga se puede presentar la formula y solicitar el nombre como respuesta, por ejemplo:
<%@page import="siette.quimica.*"%>
<%
TablaPeriodica tablaPeriodica = new TablaPeriodica(new Random());
Oxido ox = Oxido.random(tablaPeriodica,TablaPeriodica.selectElemento("H"));
%>
Escribe el nombre, en la nomenclatura sistemática
con prefijos del siguiente compuesto: <%= ox.formulaHTML() %>
Fuerza la elección del compuesto ''H2O''. El patrón de respuesta en este caso sería ''ox.patronSistematica()'' que generaría la secuencia ''oxido de {di}hidrógeno'' reconociendo como respuestas válidas ''oxido de dihidrogeno'' y ''oxido de hidrogeno'', pero no ''agua''. En caso de aceptar cualquier nomenclatura, se usaria el patrón ''ox.patron()'', que daria lugar a la secuencia ''{mon}óxido de {di}hidrógeno|óxido de hidrógeno|Agua'', que usada como [[es:manual:items:patron:siette|Patrón de expresiones regulares de Siette]] reconocería todas las posibles respuestas correctas.