La tabla periódica en la informática escolar

(Mapas de control)
(Dedicado al Año Internacional de la Tabla Periódica de los Elementos Químicos)
(Las últimas adiciones se hicieron el 8 de abril de 2019. La lista de adiciones está justo debajo del corte)

La tabla periódica en la informática escolar
(La flor de Mendeléyev, Fuente)

Recuerdo que estudiamos el pato. Fueron tres lecciones al mismo tiempo: geografía, ciencias naturales y ruso. En la lección de ciencias naturales, se estudió al pato como pato: cómo son sus alas, cómo son sus patas, cómo nada, etc. En la lección de geografía, el mismo pato se estudió como un habitante del planeta: había que mostrar en el mapa dónde vive y dónde no. En ruso, Serafima Petrovna nos enseñó a escribir "u-t-k-a" y leía algo sobre patos de Brehm. De paso, nos decía que en alemán el pato se dice así, y en francés así. Parece que eso se llamaba entonces "método complejo". En resumen, todo se hacía "de paso".

Veniamin Kaverin, Dos capitanes

En la cita proporcionada, Veniamin Kaverin mostró magistralmente las deficiencias del método de enseñanza complejo, sin embargo, en algunos casos (quizás bastante raros) los elementos de este método pueden estar justificados. Uno de esos casos es la Tabla Periódica de D.I. Mendeléyev en las lecciones de informática escolar. La tarea de automatizar programáticamente acciones típicas con la tabla de Mendeléyev es evidente para los estudiantes que han comenzado a estudiar química y se descompone en muchas tareas químicas típicas. Al mismo tiempo, en el marco de la informática, esta tarea permite demostrar de manera simple el método de mapas de control, que se puede considerar parte de la programación gráfica, entendida en un sentido amplio como programación mediante elementos gráficos.

(8 de abril de 2019 se hicieron adiciones:
Adición 1: cómo funciona la calculadora química
Adición 2: ejemplos de tareas para filtros)

Comencemos con la tarea básica. En el caso más simple, en la pantalla, en la forma-ventana, debe mostrarse la Tabla Periódica, donde en cada celda estará la notación química del elemento: H — hidrógeno, He — helio, etc. Si el cursor del ratón señala una celda, en un campo especial de nuestra forma se mostrará la notación del elemento y su número. Si el usuario hace clic con el botón izquierdo del ratón, se indicarán en otro campo de la forma la notación y el número de ese elemento seleccionado.

La tabla periódica en la informática escolar

El problema se puede resolver en cualquier lenguaje de programación universal. Vamos a utilizar el viejo Delphi-7, comprensible para casi todos. Pero antes de programar en el lenguaje de programación, dibujaremos dos imágenes, por ejemplo, en Photoshop. Primero, dibujaremos la tabla periódica tal como queremos que aparezca en el programa. Guardaremos el resultado en un archivo gráfico. table01.bmp.

La tabla periódica en la informática escolar

Para la segunda imagen utilizaremos la primera. Iremos llenando, de manera secuencial, las celdas de la tabla, limpias de cualquier gráfico, con colores únicos en el modelo de color RGB. R y G siempre serán 0, y B=1 para el hidrógeno, 2 para el helio, etc. Esta imagen será nuestro mapa de control, que guardaremos en un archivo con el nombre. table2.bmp.

La tabla periódica en la informática escolar

La primera etapa de la programación gráfica en Photoshop ha terminado. Pasemos a la programación gráfica de la GUI en el IDE Delphi-7. Para esto, abrimos un nuevo proyecto, donde colocamos un botón en el formulario principal para llamar al diálogo (tableDlg), en el que se llevará a cabo el trabajo con la tabla. A continuación, trabajamos con el formulario. tableDlg.

Colocamos en el formulario un componente de la clase TImage. Obtenemos Image1. Notemos que, en general, para grandes proyectos, los nombres generados automáticamente como ImageN, donde N pueden alcanzar varias decenas o más — que no es el mejor estilo de programación, y se deben dar nombres más significativos. Pero en nuestro pequeño proyecto, donde N no superará 2, podemos dejarlo como se generó.

En la propiedad Image1.Picture cargamos el archivo table01.bmp. Creamos Image2 y cargamos allí nuestro mapa de control table2.bmp. Haciendo que el archivo sea pequeño e invisible para el usuario, como se muestra en la esquina inferior izquierda del formulario. Agregamos elementos de control adicionales, cuya función es obvia. La segunda etapa de la programación gráfica de la GUI en el IDE Delphi-7 ha terminado.

La tabla periódica en la informática escolar

Pasamos a la tercera etapa: la escritura del código en el IDE Delphi-7. El módulo consta de solo cinco manejadores de eventos: creación del formulario (FormCreate), movimiento del cursor sobre Image1 (Image1MouseMove), clic izquierdo en la celda (Image1Click) y salida del diálogo usando los botones OK (OKBtnClick) o Cancelar (CancelBtnClick). Los encabezados de estos manejadores se generan de manera estándar utilizando el IDE.

Código fuente del módulo:

unidad tablaUnit;
// Tabla periódica de elementos químicos de D.I. Mendeleev
//
// third112
// https://habr.com/es/users/third112/
//
// Contenido
// 1) creación de formulario
// 2) trabajo con la tabla: indicación y selección
// 3) salida del diálogo

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ExtCtrls;

const
 tamaño = 104; // número de elementos
 
type
 TtableDlg = class(TForm)
    OKBtn: TButton;
    CancelarBtn: TButton;
    Bevel1: TBevel;
    Image1: TImage;  // tabla de elementos químicos
    Label1: TLabel;
    Image2: TImage;  // mapa de control
    Label2: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject); // creación de formulario
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);                        // indicación de celda
    procedure Image1Click(Sender: TObject); // selección de celda
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelarBtnClick(Sender: TObject); // Cancelar
  private
    { Declaraciones privadas }
    TableSymbols : array [1..tamaño] of string [2]; // matriz de símbolos de elementos
  public
    { Declaraciones públicas }
    elementoSeleccionado : string; // elemento seleccionado
    currNo : integer;         // número actual de elemento
  end;

var
  tableDlg: TtableDlg;

implementation

{$R *.dfm}

const
PeriodicTableStr1=
'HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLa';
PeriodicTableStr2='CePrNdPmSmEuGdTbDyHoErTmYbLu';
PeriodicTableStr3='HfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAc';
PeriodicTableStr4='ThPaUNpPuAmCmBkCfEsFmMdNoLrKu';

// creación de formulario  ==================================================

procedure TtableDlg.FormCreate(Sender: TObject);
// creación de formulario
var
  s : string;
  i,j : integer;
begin
  currNo := 0;
// inicialización de matriz de símbolos de elementos:
  s := PeriodicTableStr1 + PeriodicTableStr2 + PeriodicTableStr3 + PeriodicTableStr4;
  j := 1;
  for i := 1 to tamaño do
   begin
     TableSymbols[i] := s[j];
     inc(j);
     if s[j] in ['a'..'z'] then
      begin
        TableSymbols[i] := TableSymbols[i] + s[j];
        inc(j);
      end; // if s[j] in
   end; // for i := 1
end; // FormCreate ____________________________________________________

// trabajo con la tabla: indicación y selección =========================================

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// indicación de celda
var
  sl : integer;
begin
  sl := GetBValue(Image2.Canvas.Pixels[x,y]);
  if sl in [1..tamaño] then
   begin
    Label1.Caption := intToStr(sl) + ' ' + TableSymbols[sl];
    currNo := sl;
   end
  else
    Label1.Caption := 'Seleccionar elemento:';
end; // Image1MouseMove   ____________________________________________________

procedure TtableDlg.Image1Click(Sender: TObject);
begin
  if currNo  0 then
   begin
    elementoSeleccionado := TableSymbols[currNo];
    Label2.Caption := intToStr(currNo) + ' ' + elementoSeleccionado + ' seleccionado';
    Edit1.Text := elementoSeleccionado;
   end;
end; // Image1Click  ____________________________________________________

// salida del diálogo  ==================================================

procedure TtableDlg.OKBtnClick(Sender: TObject);
begin
    elementoSeleccionado := Edit1.Text;
    hide;
end;  // OKBtnClick ____________________________________________________

procedure TtableDlg.CancelarBtnClick(Sender: TObject);
begin
  hide;
end;  // CancelarBtnClick ____________________________________________________

end.

En nuestra versión hemos tomado una tabla de 104 elementos (constante tamaño). Obviamente, este tamaño puede ser aumentado. Las designaciones de los elementos (símbolos químicos) se registran en un array TableSymbols. Sin embargo, por razones de compactación del código fuente, parece apropiado registrar la secuencia de estas designaciones como constantes de cadena PeriodicTableStr1,…, PeriodicTableStr4, para que, al crear el formulario, el programa se encargue de distribuir automáticamente estas designaciones entre los elementos del array. Cada designación de elemento consiste en una o dos letras latinas, donde la primera letra es mayúscula y la segunda (si existe) es minúscula. Esta regla simple se implementa al cargar el array. De este modo, la secuencia de designaciones se puede registrar de manera compacta, sin espacios. La división de la secuencia en cuatro partes (constantes PeriodicTableStr1,…, PeriodicTableStr4) se debe a consideraciones de legibilidad del código fuente, ya que una línea demasiado larga puede no caber completamente en la pantalla.

Al mover el cursor del ratón sobre Image1 el manejador Image1MouseMove de este evento determina el valor del componente azul del color del píxel en el mapa de control Image2 para las coordenadas actuales del cursor. Por construcción Image2 este valor es igual al número del elemento si el cursor está dentro de la celda; cero si está en el borde, y 255 en otros casos. Las demás acciones que realiza el programa son triviales y no requieren explicaciones.

Además de los estilos de programación mencionados anteriormente, vale la pena señalar el estilo de los comentarios. Estrictamente hablando, el código examinado es tan pequeño y simple que los comentarios no parecen especialmente necesarios. Sin embargo, se han agregado también por consideraciones metodológicas: un código corto permite hacer más evidentes ciertas conclusiones generales. En el código presentado se declara una clase (TtableDlg). Los métodos de esta clase se pueden intercambiar y esto no afectará el funcionamiento del programa, pero sí puede influir en su legibilidad. Por ejemplo, imaginemos la secuencia:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Puede que no sea muy evidente, pero leer y entender se volverá un poco más complicado. Si no son cinco métodos, sino decenas más, en la sección implementation Tienen un orden de secuencia completamente diferente al de las descripciones de clases, por lo que el caos solo aumentará. Por lo tanto, aunque es difícil y puede que incluso imposible probarlo estrictamente, se puede esperar que la implementación de un orden adicional mejore la legibilidad del código. Este orden adicional se favorece mediante la agrupación lógica de varios métodos que realizan tareas similares. A cada grupo se le debe dar un título, por ejemplo:

// работа с таблицей: указание и выбор

Estos títulos deben copiarse al inicio del módulo y formatearse como un índice. En algunos casos de módulos lo suficientemente largos, estos índices proporcionan oportunidades adicionales de navegación. De manera similar, en el cuerpo largo de un método, procedimiento o función, se debe, en primer lugar, marcar el final de este cuerpo:

end; // FormCreate

y, en segundo lugar, en los operadores ramificados con paréntesis programáticos begin – end, marcar el operador al que pertenece el paréntesis de cierre:

      end; // if s [j] in
   end; // for i :=1
end; // FormCreate

Para resaltar los encabezados de grupos y los finales de cuerpos de métodos, se pueden agregar líneas que superen la longitud de la mayoría de los operadores y que consistan, por ejemplo, en los caracteres «=» y «_», respectivamente.
Nuevamente, se debe señalar: tenemos un ejemplo demasiado simple. Y cuando el código de un método no cabe en una pantalla, a veces es complicado lidiar con seis end consecutivos para realizar cambios en el código. En algunos compiladores antiguos, por ejemplo, Pascal 8000 para OS IBM 360/370, en el listado se imprimía una columna de servicio a la izquierda que mostraba

B5
…
E5

Esto significaba que el paréntesis programático de cierre en la línea E5 correspondía al paréntesis de apertura en la línea B5.

Por supuesto, el estilo de programación es una cuestión muy ambigua, por lo que las ideas expresadas aquí deben considerarse como información para la reflexión. A dos programadores bastante experimentados, cuyas diferentes estilos se han arraigado y se han vuelto familiares a lo largo de muchos años de trabajo, a veces les resulta muy difícil llegar a un acuerdo. Por otro lado, un estudiante que está aprendiendo a programar, que aún no ha tenido tiempo de desarrollar su propio estilo, se encuentra en una situación diferente. Creo que en este caso, el profesor debe al menos transmitir a sus alumnos la sencilla, pero no del todo obvia, idea de que el éxito de un programa depende en gran medida del estilo en el que se ha escrito su código fuente. El estudiante puede no seguir el estilo recomendado, pero al menos debería reflexionar sobre la necesidad de realizar "acciones adicionales" para mejorar la presentación del código fuente.

Regresando a nuestra tarea básica sobre la Tabla Periódica: el desarrollo posterior puede ir en diferentes direcciones. Una de estas direcciones es informativa: al pasar el cursor del ratón sobre una celda de la tabla, aparece una ventana informativa que contiene información adicional sobre el elemento indicado. Un desarrollo posterior serían los filtros. Por ejemplo, dependiendo de la configuración en la ventana informativa se podría mostrar solo: datos físico-químicos importantes, información sobre la historia del descubrimiento, información sobre su distribución en la naturaleza, una lista de compuestos importantes (que contienen el elemento indicado), propiedades fisiológicas, nombre en un idioma extranjero, etc. Recordando la "pata" de Kaverin, que comienza este artículo, se podría decir que con este desarrollo del programa obtendremos un completo conjunto educativo sobre ciencias naturales: además de informática, física y química, biología, geografía económica, historia de la ciencia e incluso idiomas extranjeros.

Pero la base de datos local no es el límite. El programa se conecta naturalmente a Internet. Al seleccionar un elemento, se activa un enlace y en la ventana del navegador web se abre un artículo de Wikipedia sobre el elemento en cuestión. Como se sabe, Wikipedia no es una fuente autorizada. Se pueden establecer enlaces a fuentes autorizadas, como una enciclopedia química, la Gran Enciclopedia Soviética, revistas de referencias, realizar búsquedas en motores de búsqueda sobre dicho elemento, etc. Así, los estudiantes podrán realizar tareas simples pero significativas sobre los temas de SGBD e Internet.

Además de las consultas sobre un elemento específico, se puede implementar una funcionalidad que marque, por ejemplo, diferentes celdas en la tabla con colores, dependiendo de ciertos criterios. Por ejemplo, metales y no metales. O celdas que un vertedero local vierte en cuerpos de agua.

También se pueden implementar funciones de cuaderno organizador. Por ejemplo, destacar en la tabla los elementos que aparecen en el examen. Luego resaltar los elementos que el estudiante ha estudiado/revisado durante la preparación para el examen.

Aquí tenemos, por ejemplo, uno de los problemas típicos de la química escolar:

Se tienen 10 g de tiza. ¿Cuánta ácido clorhídrico se necesita para disolver toda esta tiza?

Para resolver este problema, hay que escribir la reacción química y balancear los coeficientes, calcular los pesos moleculares del carbonato de calcio y del cloruro de hidrógeno, luego establecer y resolver la proporción. Un calculador basado en nuestro programa básico podrá calcular y resolver esto. Sin embargo, también hay que considerar que se debe tomar un exceso razonable de ácido y en una concentración adecuada, pero eso ya es química, no informática.
Adición 1: cómo funciona la calculadora químicaAnalicemos el funcionamiento del calculador utilizando el ejemplo del problema mencionado de la tiza y el 'ácido'. Comencemos con la reacción:

CaCO3 + 2HCl = CaCl2 + H2O

De aquí vemos que necesitaremos los pesos atómicos de los siguientes elementos: calcio (Ca), carbono (C), oxígeno (O), hidrógeno (H) y cloro (Cl). En el caso más simple, podemos escribir estos pesos en un arreglo unidimensional, definido como

AtomicMass : array [1..size] of real;

donde el índice del arreglo corresponde al número del elemento. También reservamos un espacio libre en el formulario tableDlg para colocar dos campos. En el primer campo se escribe inicialmente: 'Primer reactivo dado', en el segundo — 'Segundo reactivo encontrar x'. Denotaremos los campos reagent1, reagent2 respectivamente. Otras adiciones al programa serán evidentes en el siguiente ejemplo de funcionamiento del calculador.

Teclamos en el teclado de la computadora: 10 g. La inscripción en el campo reagent1 cambia: 'Primer reactivo dado 10 g'. Ahora ingresamos la fórmula de este reactivo, y el calculador calculará y mostrará su peso molecular a medida que se ingresa.

Hacemos clic con el botón izquierdo en la celda de la tabla con el símbolo Ca. La inscripción en el campo reagent1 cambia: 'Primer reactivo Ca 40.078 dado 10 g'.

Hacemos clic con el botón izquierdo en la celda de la tabla con el símbolo C. La inscripción en el campo reagent1 cambia: 'Primer reactivo CaC 52.089 dado 10 g'. Es decir, el calculador ha sumado los pesos atómicos de calcio y carbono.

Hacemos clic izquierdo en la celda de la tabla con el símbolo O. El texto en el campo reagent1 cambia: “Primer reactivo CaCO 68.088 dado 10 g”. La calculadora ha sumado el peso atómico del oxígeno.

Hacemos clic izquierdo en la celda de la tabla con el símbolo O. El texto en el campo reagent1 cambia: “Primer reactivo CaCO2 84.087 dado 10 g”. La calculadora ha sumado nuevamente el peso atómico del oxígeno.

Hacemos clic izquierdo en la celda de la tabla con el símbolo O. El texto en el campo reagent1 cambia: “Primer reactivo CaCO3 100.086 dado 10 g”. La calculadora ha sumado de nuevo el peso atómico del oxígeno.

Presionamos Enter en el teclado de la computadora. La entrada del primer reactivo ha terminado y se cambia al campo reagent2. Cabe destacar que en este ejemplo presentamos la versión mínima. Si lo desea, se pueden organizar fácilmente multiplicadores de átomos de un mismo tipo, para que, por ejemplo, no se tenga que hacer clic siete veces en la celda de oxígeno al introducir la fórmula del cromato (K2Cr2O7).

Hacemos clic izquierdo en la celda de la tabla con el símbolo H. El texto en el campo reagent2 cambia: “Segundo reactivo H 1.008 encontrar x”.

Hacemos clic izquierdo en la celda de la tabla con el símbolo Cl. El texto en el campo reagent2 cambia: “Segundo reactivo HCl 36.458 encontrar x”. La calculadora sumó los pesos atómicos del hidrógeno y del cloro. En la ecuación de reacción anterior, hay un coeficiente 2 delante del cloruro de hidrógeno. Por lo tanto, hacemos clic izquierdo en el campo reagent2. El peso molecular se duplica (si se hace clic dos veces se triplica, etc.). El texto en el campo reagent2 cambia: “Segundo reactivo 2HCl 72.916 encontrar x”.

Presionamos Enter en el teclado de la computadora. La entrada del segundo reactivo ha terminado y la calculadora encuentra x a partir de la proporción

La tabla periódica en la informática escolar

Lo que se requería encontrar.

Nota 1. El sentido de la proporción obtenida: para disolver 100.086 Da de yeso se necesitan 72.916 Da de ácido, y para disolver 10 g de yeso se necesita x de ácido.

Nota 2. Colecciones de problemas similares:

Jomchenko I. G., Colección de problemas y ejercicios de química 2009 (8-11 grados).
Jomchenko G. P., Jomchenko I. G., Colección de problemas de química para quienes ingresan a universidades, 2019.

Nota 3. Para simplificar el problema, en la versión inicial se puede simplificar la entrada de la fórmula y simplemente agregar el símbolo del elemento al final de la cadena de la fórmula. Entonces, la fórmula del carbonato de calcio será:
CaCOOO
Pero tal notación probablemente no le agradará al profesor de química. Es fácil hacer la notación correcta; para ello se necesita agregar un arreglo:

formula : array [1..size] of integer;

donde el índice es el número del elemento químico, y el valor de este índice es la cantidad de átomos (inicialmente todos los elementos del array se inicializan en cero). Se debe tener en cuenta el orden de los átomos en la fórmula, que es el que se acepta en química. Por ejemplo, a O3CaC tampoco le gustará a mucha gente. Depositemos la responsabilidad en el usuario. Creamos un array:

 formulaOrder : array [1..size] of integer; // se puede hacer más corto

donde escribimos el número del elemento químico según el índice de su aparición en la fórmula. Añadiendo un átomo currNo en la fórmula:

if formula [currNo]=0 then // este átomo aparece por primera vez
 begin
 orderIndex := orderIndex+1; // al inicio de la entrada de la fórmula orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
formula [currNo]:=formula [currNo]+1;

Grabando la fórmula en una cadena:

s := ''; // cadena vacía para la fórmula
for i:=1 to  orderIndex do // para todos los símbolos químicos en la fórmula 
 begin
 s:=s+TableSymbols [ formulaOrder[i]]; // añadimos el símbolo químico
 if formula [formulaOrder[i]]1 then // añadimos la cantidad de átomos
  s:=s+ intToStr(formula [formulaOrder[i]]);
 end;

Nota 4. Tiene sentido proporcionar la posibilidad de una entrada alternativa de la fórmula del reactivo desde el teclado. En este caso, será necesario implementar un simple analizador sintáctico.

Cabe señalar que:

Hoy existen varios cientos de variantes de la tabla, mientras que los científicos proponen cada vez más opciones. (Wikipedia)

Los estudiantes pueden mostrar ingenio en este sentido, implementando alguna de las variantes ya propuestas o intentar crear la suya propia. Puede parecer que esta es la dirección menos útil para las clases de informática. Sin embargo, en la forma de la tabla periódica implementada en este artículo, algunos estudiantes pueden no ver ventajas significativas de las tarjetas de control en comparación con una solución alternativa utilizando botones estándar TButton. La forma espiral de la tabla (donde las celdas tienen formas diferentes) demostrará de manera más clara las ventajas de la solución propuesta aquí.

La tabla periódica en la informática escolar
(Sistema alternativo de elementos de Teodoro Benfey, Fuente)

También añadamos que se ha hablado de varios programas informáticos existentes para la Tabla de Mendeleiev en una publicación reciente en Habr el artículo.

Adición 2: ejemplos de tareas para filtrosCon los filtros se pueden resolver, por ejemplo, las siguientes tareas:

1) Seleccionar en la tabla todos los elementos conocidos en la Edad Media.

2) Seleccionar todos los elementos conocidos en el momento del descubrimiento de la Ley Periódica.

3) Identificar siete elementos que los alquimistas consideraban metales.

4) Identificar todos los elementos que se encuentran en estado gaseoso bajo condiciones normales (cn).

5) Identificar todos los elementos que se encuentran en estado líquido bajo cn.

6) Identificar todos los elementos que se encuentran en estado sólido bajo cn.

7) Identificar todos los elementos que pueden estar al aire durante un largo tiempo sin cambios notables bajo cn.

8) Identificar todos los metales que se disuelven en ácido clorhídrico.

9) Identificar todos los metales que se disuelven en ácido sulfúrico bajo cn.

10) Identificar todos los metales que se disuelven en ácido sulfúrico al calentarse.

11) Identificar todos los metales que se disuelven en ácido nítrico.

12) Identificar todos los metales que reaccionan violentamente con agua bajo cn.

13) Identificar todos los metales.

14) Identificar elementos que son abundantes en la naturaleza.

15) Identificar elementos que se encuentran en la naturaleza en estado libre.

16) Identificar elementos que juegan un papel crucial en el organismo humano y animal.

17) Identificar elementos que se utilizan ampliamente en la vida cotidiana (en estado libre o en compuestos).

18) Identificar elementos con los que trabajar es más peligroso y requieren medidas y medios de protección especiales.

19) Identificar elementos que representan la mayor amenaza para la ecología, ya sea en estado libre o en forma de compuestos.

20) Identificar metales preciosos.

21) Identificar elementos que son más caros que los metales preciosos.

Notas

1) Tiene sentido asegurar el funcionamiento de varios filtros. Por ejemplo, si se activa un filtro para resolver la tarea 1 (todos los elementos conocidos en la Edad Media) y 20 (metales preciosos), se resaltarán (por ejemplo, con color) las celdas con metales preciosos conocidos en la Edad Media (no se resaltará, por ejemplo, el paladio, descubierto en 1803).

2) Tiene sentido asegurar el funcionamiento de varios filtros de tal manera que cada filtro resalte las celdas con su color, pero sin eliminar completamente la selección de otro filtro (parte de la celda de un color, parte de otro). Entonces, en el caso del ejemplo anterior, serán visibles los elementos de intersección de los conjuntos de metales preciosos abiertos en la Edad Media, así como los elementos que pertenecen solamente al primer y al segundo conjunto. Es decir, metales preciosos que no eran conocidos en la Edad Media y elementos conocidos en la Edad Media, pero que no son metales preciosos.

3) Tiene sentido, después de aplicar el filtro, permitir otras acciones con los resultados obtenidos. Por ejemplo, al resaltar elementos conocidos en la Edad Media, el usuario hace clic izquierdo en el elemento resaltado y accede al artículo de Wikipedia sobre ese elemento.

4) Tiene sentido permitir que el usuario desactive la selección haciendo clic izquierdo en la celda resaltada de la tabla. Por ejemplo, para eliminar elementos que ya han sido revisados.

5) Tiene sentido asegurar la posibilidad de guardar la lista de celdas seleccionadas en un archivo y cargar dicho archivo con la selección automática de celdas. Esto dará al usuario la oportunidad de hacer una pausa en su trabajo.

Hemos utilizado un mapa de control estático predefinido, sin embargo, hay muchas tareas importantes donde se pueden utilizar mapas de control dinámicos, que cambian a lo largo del trabajo del programa. Un ejemplo puede ser un editor de gráficos, en el que el usuario indica con el ratón la posición de los nodos y dibuja los bordes entre ellos. Para eliminar un nodo o un borde, el usuario debe apuntar a él. Pero si señalar un nodo, marcado con un círculo, es bastante simple, señalar un borde, dibujado con una línea delgada, será más complicado. Aquí ayudará un mapa de control, donde los nodos y bordes ocupan áreas más amplias que las del dibujo visible.

El método de aprendizaje profundo involucrado plantea una interesante cuestión secundaria: ¿puede este método ser útil en el entrenamiento de IA?

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster