Tabella Periodica in informatica scolastica

(Schede di gestione)
(Dedicate all'Anno Internazionale della Tavola Periodica degli Elementi Chimici)
(Ultimi aggiornamenti effettuati l'8 aprile 2019. Elenco degli aggiornamenti immediatamente sotto il tag)

Tabella Periodica in informatica scolastica
(Fiore di Mendeléev, Fonte)

Ricordo che abbiamo studiato l'anatra. Sono state ben tre lezioni: geografia, scienze naturali e russo. Nella lezione di scienze naturali, l'anatra veniva studiata come un'anatra: quali sono le sue ali, quali le zampe, come nuota e così via. Nella lezione di geografia, la stessa anatra veniva studiata come abitante del pianeta: doveva essere mostrato sulla mappa dove vive e dove non si trova. In russo, Serafima Petrovna ci insegnava a scrivere «у-т-к-а» e leggeva qualcosa sulle anatre da Brehm. Passando, ci comunicava che in tedesco l'anatra si dice in un modo e in francese in un altro. Sembra che questo fosse chiamato allora «metodo complesso». In generale, tutto avveniva «in passaggio».

Veniamin Kaverin, Due capitani

Nella citazione fornita, Veniamin Kaverin ha sapientemente evidenziato i difetti del metodo complessivo di apprendimento; tuttavia, in alcuni (forse piuttosto rari) casi, gli elementi di questo metodo sono giustificati. Uno di questi casi è la Tavola Periodica di D.I. Mendeleev nelle lezioni di informatica scolastica. Il compito di automatizzare programmaticamente le azioni standard con la tavola di Mendeleev è chiaro per gli studenti che hanno iniziato a studiare chimica e si scompone in molte tipiche problematiche chimiche. Allo stesso tempo, nell'ambito dell'informatica, questo compito permette di dimostrare in modo semplice il metodo delle mappe di controllo, che può essere associato alla programmazione grafica, intesa nel senso ampio del termine come programmazione tramite elementi grafici.

(8 aprile 2019 sono state aggiunte integrazioni:
Integrazione 1: come funziona il calcolatore chimico
Integrazione 2: esempi di compiti per i filtri)

Iniziamo con un compito di base. Nel caso più semplice, deve essere visualizzata sullo schermo una Tabella Periodica, dove in ciascuna cella sarà presente il simbolo chimico dell'elemento: H - idrogeno, He - elio, e così via. Se il cursore del mouse si posiziona su una cella, il simbolo dell'elemento e il suo numero vengono mostrati in un campo speciale del nostro modulo. Se l'utente fa clic con il tasto sinistro del mouse, il simbolo e il numero di questo elemento selezionato verranno indicati in un altro campo del modulo.

Tabella Periodica in informatica scolastica

Il compito può essere risolto in qualsiasi linguaggio di programmazione universale. Useremo il semplice e vecchio Delphi-7, comprensibile a quasi tutti. Ma prima di programmare in un linguaggio di programmazione, disegniamo due immagini, ad esempio in Photoshop. Per prima cosa, disegneremo la Tabella Periodica così come vogliamo che appaia nel programma. Salveremo il risultato in un file grafico. table01.bmp.

Tabella Periodica in informatica scolastica

Per il secondo disegno utilizzeremo il primo. Riempiremo progressivamente le celle della tabella, ripulite da qualsiasi grafica, con colori unici nel modello di colore RGB. R e G saranno sempre 0, mentre B=1 per l'idrogeno, 2 per l'elio, e così via. Questo disegno sarà la nostra mappa di controllo, che salveremo in un file con il nome table2.bmp.

Tabella Periodica in informatica scolastica

Il primo passo della programmazione grafica in Photoshop è completato. Passiamo alla programmazione grafica GUI nell'IDE Delphi-7. Per fare ciò, apriamo un nuovo progetto, dove sulla forma principale posizioniamo un pulsante per aprire la finestra di dialogo (tableDlg). Qui avverrà il lavoro con la tabella. Proseguiamo con la forma tableDlg.

Posizioniamo sulla forma il componente della classe TImage. Otteniamo Image1. È importante notare che, in generale, per progetti di grandi dimensioni, i nomi generati automaticamente come ImageN, dove N possono arrivare a essere decine o più — non è il miglior stile di programmazione, ed è consigliabile dare nomi più significativi. Tuttavia, nel nostro piccolo progetto, dove N non supererà 2, possiamo mantenerlo come generato.

Nella proprietà Image1.Picture carichiamo il file table01.bmp. Creiamo Image2 e carichiamo qui la nostra mappa di controllo table2.bmp. Rendiamo quindi il file piccolo e invisibile all'utente, come mostrato nell'angolo in basso a sinistra della forma. Aggiungiamo ulteriori elementi di controllo il cui scopo è ovvio. Il secondo passo della programmazione grafica GUI nell'IDE Delphi-7 è completato.

Tabella Periodica in informatica scolastica

Passiamo alla terza fase: la scrittura del codice nell'IDE Delphi-7. Il modulo è composto da cinque gestori di eventi: creazione del modulo (FormCreate), movimento del cursore su ( Image1 (Image1MouseMove), clic con il tasto sinistro del mouse su una cella (Image1Click) e uscita dalla finestra di dialogo tramite i pulsanti OK (OKBtnClick) o Annulla (CancelBtnClick). I titoli di questi gestori sono generati in modo standard attraverso l'IDE.

Codice sorgente del modulo:

unit tableUnit;
// Tabella periodica degli elementi chimici di D.I. Mendeleev
//
// third112
// https://habr.com/ru/users/third112/
//
// Indice
// 1) creazione del modulo
// 2) lavoro con la tabella: indicazione e selezione
// 3) uscita dal dialogo

interface

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

const
 size = 104; // numero di elementi
 
type
 TtableDlg = class(TForm)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    Image1: TImage;  // tabella degli elementi chimici
    Label1: TLabel;
    Image2: TImage;  // mappa di controllo
    Label2: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject); // creazione del modulo
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);                        // indicazione della cella
    procedure Image1Click(Sender: TObject); // selezione della cella
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelBtnClick(Sender: TObject); // Annulla
  private
    { Dichiarazioni private }
    TableSymbols : array [1..size] of string [2]; // array di simboli degli elementi
  public
    { Dichiarazioni pubbliche }
    selectedElement : string; // elemento selezionato
    currNo : integer;         // numero attuale dell'elemento
  end;

var
  tableDlg: TtableDlg;

implementation

{$R *.dfm}

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

// creazione del modulo  ==================================================

procedure TtableDlg.FormCreate(Sender: TObject);
// creazione del modulo
var
  s : string;
  i,j : integer;
begin
  currNo := 0;
// inizializzazione dell'array di simboli:
  s := PeriodicTableStr1+ PeriodicTableStr2+PeriodicTableStr3+PeriodicTableStr4;
  j := 1;
  for i :=1 to size 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 ____________________________________________________

// lavoro con la tabella: indicazione e selezione =========================================

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// indicazione della cella
var
  sl : integer;
begin
  sl := GetBValue(Image2.Canvas.Pixels [x,y]);
  if sl in [1..size] then
   begin
    Label1.Caption := intToStr (sl)+ ' '+TableSymbols [sl];
    currNo := sl;
   end
  else
    Label1.Caption := 'Seleziona elemento:';
end; // Image1MouseMove   ____________________________________________________

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

// uscita dal dialogo  ==================================================

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

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

end.

Nella nostra versione, abbiamo preso una tabella con 104 elementi (costante dimensione). Ovviamente, questa dimensione può essere aumentata. Le designazioni degli elementi (simboli chimici) sono scritte in un array TableSymbols. Tuttavia, per motivi di compattezza del codice sorgente, sembra opportuno scrivere la sequenza di queste designazioni come costanti di stringa PeriodicTableStr1,…, PeriodicTableStr4, in modo che, al momento della creazione della forma, il programma possa automaticamente distribuire queste designazioni negli elementi dell'array. Ogni designazione consiste in una o due lettere latine, con la prima lettera maiuscola e la seconda (se presente) minuscola. Questa semplice regola viene implementata durante il caricamento dell'array. Così, la sequenza di designazioni può essere registrata in modo compatto senza spazi. La suddivisione della sequenza in quattro parti (costanti PeriodicTableStr1,…, PeriodicTableStr4) è motivata dalla leggibilità del codice sorgente, poiché una stringa troppo lunga potrebbe non adattarsi interamente allo schermo.

Al momento dell'evento di spostamento del cursore del mouse Image1 il gestore Image1MouseMove di questo evento determina il valore del componente blu del colore del pixel nella mappa di controllo Image2 per le coordinate attuali del cursore. In base alla costruzione Image2 questo valore è uguale al numero dell'elemento, se il cursore si trova all'interno della cella; a zero, se si trova al confine, e 255 in altri casi. Le altre azioni effettuate dal programma sono banali e non richiedono ulteriori spiegazioni.

Oltre agli stili di programmazione menzionati sopra, vale la pena notare lo stile dei commenti. A rigor di termini, il codice considerato è così piccolo e semplice che i commenti non sembrano particolarmente necessari. Tuttavia, sono stati aggiunti anche per motivi didattici — un codice breve consente di rendere più chiari alcuni punti generali. Nel codice presentato è dichiarata una classe (TtableDlg). I metodi di questa classe possono essere scambiati tra loro e ciò non influirà sul funzionamento del programma, ma potrebbe incidere sulla sua leggibilità. Ad esempio, immaginiamo la sequenza:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Potrebbe non essere molto evidente, ma leggere e capire diventerà un po' più difficile. Se i metodi non sono cinque, ma di dieci volte di più e nella sezione implementation hanno un ordine completamente diverso rispetto alle descrizioni delle classi, quindi il caos aumenterà solo. Pertanto, sebbene sia difficile e forse persino impossibile dimostrarlo rigorosamente, possiamo sperare che l'introduzione di un ordine supplementare migliorerà la leggibilità del codice. Questo ordine supplementare è facilitato dalla raggruppamento logico di più metodi che eseguono compiti affini. A ciascun gruppo dovrebbe essere dato un titolo, per esempio:

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

Questi titoli dovrebbero essere copiati all'inizio del modulo e formattati come un sommario. In alcuni casi di moduli sufficientemente lunghi, questi sommari offrono opportunità di navigazione aggiuntive. Analogamente, nel corpo lungo di un singolo metodo, procedura o funzione, dovremmo, in primo luogo, segnare la fine di questo corpo:

end; // FormCreate

e, in secondo luogo, nei costrutti ramificati con parentesi software begin – end, segnare l'operatore a cui si riferisce la parentesi di chiusura:

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

Per evidenziare i titoli dei gruppi e le conclusioni dei corpi dei metodi, possiamo aggiungere righe più lunghe della maggior parte degli operatori, composte ad esempio dai caratteri «=» e «_» rispettivamente.
È necessario precisare ancora una volta: abbiamo un esempio troppo semplice. Quando il codice di un metodo non sta in un solo schermo, può essere complicato districarsi tra sei successive chiusure per apportare modifiche al codice. In alcuni compilatori più vecchi, ad esempio, Pascal 8000 per OS IBM 360/370, nel listing a sinistra veniva stampata una colonna di servizio con il formato

B5
…
E5

Questo significava che il carattere di chiusura della parentesi programmata nella riga E5 corrisponde alla parentesi di apertura nella riga B5.

Certo, lo stile di programmazione è una questione molto ambigua, quindi le idee espresse qui dovrebbero essere considerate come informazioni da riflettere. Due programmatori abbastanza esperti, con anni di esperienza alle spalle e abituati a stili diversi, possono avere molte difficoltà a trovare un accordo. Diverso è il caso di uno studente che inizia a programmare e che non ha ancora avuto il tempo di sviluppare il proprio stile. Credo che in questo caso l'insegnante debba almeno far comprendere ai propri alunni un concetto semplice, ma non ovvio per loro: il successo di un programma dipende in gran parte dallo stile con cui è scritto il suo codice sorgente. Lo studente potrebbe non seguire lo stile consigliato, ma è importante che si fermi a riflettere sulla necessità di compiere «azioni superflue» per migliorare la formattazione del codice sorgente.

Tornando al nostro compito di base sulla Tavola Periodica: lo sviluppo futuro può seguire varie direzioni. Una delle direzioni è quella informativa: passando il cursore del mouse su una cella della tabella, appare una finestra informativa contenente ulteriori dettagli sull'elemento specificato. Un ulteriore sviluppo potrebbero essere i filtri. Per esempio, a seconda delle impostazioni, nella finestra informativa potrebbe essere inclusa solo: le principali informazioni fisico-chimiche, informazioni sulla storia della scoperta, informazioni sulla diffusione in natura, un elenco delle principali combinazioni (che includono questo elemento), le proprietà fisiologiche, il nome in una lingua straniera, ecc. Ricordando il «papero» di Kaverin, con cui inizia questo articolo, si può dire che con tale sviluppo del programma otterremmo un complesso formativo completo nelle scienze naturali: oltre all'informatica, alla fisica e alla chimica — biologia, geografia economica, storia della scienza e persino lingue straniere.

Ma un database locale non ha limiti. Il programma si connette naturalmente a Internet. Se si seleziona un elemento, si attiva un link e si apre nel browser web un articolo di Wikipedia su quell'elemento. Wikipedia, come sappiamo, non è una fonte autorevole. È possibile fornire link a fonti autorevoli, come enciclopedie chimiche, il Grande Dizionario Enciclopedico, riviste di riferimento, fare richieste nei motori di ricerca su quell'elemento, ecc. In questo modo, gli studenti potranno svolgere compiti semplici ma significativi riguardanti i database e Internet.

Oltre alle richieste su un singolo elemento, è possibile implementare una funzionalità che evidenzi, ad esempio, con colori diversi le celle in una tabella che corrispondono a determinati criteri. Ad esempio, metalli e non metalli. O celle che sono inquinati dagli scarichi di una fabbrica chimica locale.

È anche possibile realizzare funzioni di un'agenda-organizzatore. Ad esempio, evidenziare nella tabella gli elementi che sono inclusi nell'esame. Poi evidenziare gli elementi studiati/ripetuti dallo studente durante la preparazione per l'esame.

Ecco, ad esempio, uno dei compiti standard di chimica scolastica:

Dato 10 g di gesso. Quanta acido cloridrico è necessario prendere per sciogliere completamente questo gesso?

Per risolvere questo problema, è necessario scrivere la reazione chimica e collocare i coefficienti, calcolare le masse molecolari del carbonato di calcio e dell'acido cloridrico, quindi formare e risolvere una proporzione. Il calcolatore basato sul nostro programma di base può calcolare e risolvere. Tuttavia, è necessario considerare che l'acido deve essere preso in un ragionevole eccesso e in una concentrazione adeguata, ma questo è chimica e non informatica.
Integrazione 1: come funziona il calcolatore chimicoAnalizziamo il lavoro del calcolatore prendendo come esempio il problema sopra citato del gesso e dell'acido cloridrico. Iniziamo con la reazione:

CaCO3 + 2HCl = CaCl2 + H2O

Da qui vediamo che avremo bisogno dei pesi atomici dei seguenti elementi: calcio (Ca), carbonio (C), ossigeno (O), idrogeno (H) e cloro (Cl). Nel caso più semplice, possiamo scrivere questi pesi in un array unidimensionale, definito come

MassaAtomica : array [1..size] di real;

dove l'indice dell'array corrisponde al numero dell'elemento. Inoltre, nello spazio libero del modulo tableDlg posizioniamo due campi. Nel primo campo è inizialmente scritto: “Primo reagente dato”, nel secondo — “Secondo reagente trovare x”. Indichiamo i campi reagente1, reagente2 di conseguenza. Altri aggiustamenti nel programma saranno chiari dal seguente esempio di funzionamento del calcolatore.

Digitiamo sulla tastiera del computer: 10 g. La scritta nel campo reagente1 cambia: “Primo reagente dato 10 g”. Ora inseriamo la formula di questo reagente, e il calcolatore calcolerà e mostrerà il suo peso molecolare man mano che lo inseriamo.

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo Ca. La scritta nel campo reagente1 cambia: “Primo reagente Ca 40.078 dato 10 g”.

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo C. La scritta nel campo reagente1 cambia: “Primo reagente CaC 52.089 dato 10 g”. Cioè, il calcolatore ha sommato i pesi atomici del calcio e del carbonio.

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo O. La scritta nel campo reagente1 cambia: “Primo reagente CaCO 68.088 dato 10 g”. Il calcolatore ha aggiunto alla somma il peso atomico dell'ossigeno.

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo O. La scritta nel campo reagente1 cambia: “Primo reagente CaCO2 84.087 dato 10 g”. Il calcolatore ha aggiunto di nuovo alla somma il peso atomico dell'ossigeno.

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo O. La scritta nel campo reagente1 cambia: “Primo reagente CaCO3 100.086 dato 10 g”. Il calcolatore ha nuovamente aggiunto alla somma il peso atomico dell'ossigeno.

Premiamo Invio sulla tastiera del computer. L'inserimento del primo reagente è completato e si passa al campo reagente2. Notiamo che in questo esempio presentiamo la versione minima. Se lo desideri, è possibile organizzare facilmente i moltiplicatori di atomi dello stesso tipo, ad esempio, evitando di cliccare sette volte consecutive sulla cella dell'ossigeno durante l'inserimento della formula del cromato di potassio (K2Cr2O7).

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo H. La scritta nel campo reagente2 cambia: “Secondo reagente H 1.008 trovare x”.

Clicchiamo con il tasto sinistro del mouse sulla cella della tabella con il simbolo Cl. La scritta nel campo reagente2 cambia: “Secondo reagente HCl 36.458 trovare x”. Il calcolatore ha sommato i pesi atomici dell'idrogeno e del cloro. Nell'equazione della reazione sopra riportata, davanti all'acido cloridrico c'è il coefficiente 2. Pertanto clicchiamo con il tasto sinistro del mouse sul campo reagente2. Il peso molecolare raddoppia (premendo due volte si triplica, e così via). La scritta nel campo reagente2 cambia: “Secondo reagente 2HCl 72.916 trovare x”.

Premiamo Invio sulla tastiera del computer. L'inserimento del secondo reagente è completato, e il calcolatore trova x dalla proporzione

Tabella Periodica in informatica scolastica

Cosa si voleva trovare.

Nota 1. Il significato della proporzione ottenuta: per dissolvere 100.086 Da gesso servono 72.916 Da di acido, mentre per dissolvere 10 g di gesso servono x di acido.

Nota 2. Raccolte di problemi simili:

Homchenko I. G., Raccolta di problemi ed esercizi di chimica 2009 (classi 8-11).
Khomenko G. P., Khomenko I. G., Raccolta di problemi di chimica per l'ammissione alle università, 2019.

Nota 3. Per semplificare il compito, nella versione iniziale, è possibile semplificare l'inserimento della formula e semplicemente aggiungere il simbolo dell'elemento alla fine della stringa della formula. Così, la formula del carbonato di calcio risulterà:
CaCOOO
Tuttavia, tale scrittura difficilmente piacerà all'insegnante di chimica. Non è difficile fare una scrittura corretta — per farlo è necessario aggiungere un array:

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

dove l'indice è il numero dell'elemento chimico e il valore a questo indice rappresenta il numero di atomi (inizialmente tutti gli elementi dell'array sono impostati a zero). Occorre considerare l'ordine di scrittura degli atomi nella formula, adottato in chimica. Ad esempio, O3CaC non piacerà a molti. Trasferiamo la responsabilità all'utente. Creiamo un array:

 formulaOrder : array [1..size] of integer; // si può anche abbreviare

dove registriamo il numero dell'elemento chimico secondo l'indice della sua apparizione nella formula. L'aggiunta di un atomo currNo nella formula:

if formula [currNo]=0 then // questo atomo è apparso per la prima volta
 begin
 orderIndex := orderIndex+1; // all'inizio dell'inserimento della formula orderIndex=0
 formulaOrder [orderIndex] := currNo;
 end;
 formula [currNo]:=formula [currNo]+1;

Scrittura della formula nella stringa:

s := ''; // stringa vuota per la formula
for i:=1 to orderIndex do // per tutti i simboli chimici nella formula
 begin
 s:=s+TableSymbols[formulaOrder[i]]; // aggiungiamo il simbolo chimico
 if formula[formulaOrder[i]]1 then // aggiungiamo il numero di atomi
  s:=s+intToStr(formula[formulaOrder[i]]);
 end;

Nota 4. Ha senso garantire la possibilità di un input alternativo della formula del reagente tramite tastiera. In questo caso sarà necessario implementare un semplice analizzatore sintattico.

Vale la pena notare che:

Oggi esistono diverse centinaia di varianti della tabella, con gli scienziati che propongono sempre nuove versioni. (Wikipedia)

Gli studenti possono mostrare ingegno anche in questa direzione, realizzando una delle varianti già proposte o provare a fare la loro originale. Potrebbe sembrare che questo sia il meno utile per le lezioni di informatica. Tuttavia, nella forma della Tavola Periodica realizzata in questo articolo, alcuni studenti potrebbero non riconoscere i vantaggi particolari delle schede di controllo rispetto a una soluzione alternativa tramite i pulsanti standard. TButton. La forma spiralica della tabella (dove le celle hanno forma diversa) dimostrerà più chiaramente i vantaggi della soluzione proposta qui.

Tabella Periodica in informatica scolastica
(Sistema alternativo di elementi di Teodoro Benfey, Fonte)

Aggiungiamo anche che esistono diversi programmi informatici per la Tavola Periodica, di cui si è parlato in un recente articolo su Habr articolo.

Supplemento 2: esempi di compiti per i filtriCon i filtri è possibile risolvere, ad esempio, i seguenti problemi:

1) Evidenziare nella tabella tutti gli elementi conosciuti nel Medioevo.

2) Evidenziare tutti gli elementi noti al momento della scoperta della Legge Periodica.

3) Evidenziare sette elementi che gli alchimisti consideravano metalli.

4) Evidenziare tutti gli elementi che sono gassosi a condizioni normali (n.c.).

5) Evidenziare tutti gli elementi che sono liquidi a n.c.

6) Evidenziare tutti gli elementi che sono solidi a n.c.

7) Evidenziare tutti gli elementi che possono rimanere a lungo all'aria senza cambiamenti evidenti a n.c.

8) Evidenziare tutti i metalli che si dissolvono nell'acido cloridrico.

9) Evidenziare tutti i metalli che si dissolvono nell'acido solforico a n.c.

10) Evidenziare tutti i metalli che si dissolvono nell'acido solforico sotto riscaldamento.

11) Seleziona tutti i metalli che si dissolvono in acido nitrico.

12) Seleziona tutti i metalli che reagiscono violentemente con l'acqua a condizioni normali.

13) Seleziona tutti i metalli.

14) Seleziona gli elementi che sono ampiamente diffusi in natura.

15) Seleziona gli elementi che si trovano in natura in stato libero.

16) Seleziona gli elementi che svolgono un ruolo fondamentale nell'organismo umano e animale.

17) Seleziona gli elementi che sono ampiamente utilizzati nella vita quotidiana (in forma libera o in composti).

18) Seleziona gli elementi con cui lavorare è più pericoloso e richiede misure e attrezzature di protezione speciali.

19) Seleziona gli elementi che in forma libera o come composti rappresentano la maggiore minaccia per l'ecologia.

20) Seleziona i metalliPreziosi.

21) Seleziona gli elementi che costano più dei metalli preziosi.

Note

1) Ha senso assicurare il funzionamento di più filtri. Ad esempio, se si attiva il filtro per la risoluzione del problema 1 (tutti gli elementi conosciuti nel Medioevo) e 20 (metalli preziosi), verranno evidenziate (ad esempio, colorandole) le celle con i metalli preziosi conosciuti nel Medioevo (non sarà evidenziato, ad esempio, il palladio, scoperto nel 1803).

2) È utile garantire il funzionamento di più filtri in modo tale che ciascun filtro evidenzi le celle con il proprio colore, senza rimuovere completamente l'evidenziazione di un altro filtro (parte della cella in un colore, parte in un altro). In questo modo, nel caso dell'esempio precedente, saranno visibili gli elementi delle intersezioni tra i set di metalli preziosi e quelli noti nel medioevo, oltre agli elementi appartenenti solo al primo e solo al secondo insieme. Ovvero, metalli preziosi sconosciuti nel medioevo ed elementi conosciuti nel medioevo, ma che non sono metalli preziosi.

3) È utile, dopo l'applicazione del filtro, garantire la possibilità di ulteriori operazioni con i risultati ottenuti. Ad esempio, evidenziando gli elementi noti nel medioevo, l'utente può fare clic con il tasto sinistro del mouse su un elemento evidenziato e accedere all'articolo di Wikipedia su quel elemento.

4) È utile permettere all'utente di rimuovere l'evidenziazione facendo clic con il tasto sinistro del mouse sulla cella evidenziata della tabella. Ad esempio, per rimuovere gli elementi già visualizzati.

5) È utile assicurarsi di salvare l'elenco delle celle selezionate in un file e di caricare tale file per evidenziare automaticamente le celle. Questo darà all'utente la possibilità di prendersi una pausa dal lavoro.

Abbiamo utilizzato una mappa di controllo statica predeterminata, tuttavia ci sono molte importanti applicazioni in cui possono essere utilizzate mappe di controllo dinamiche, che cambiano durante l'esecuzione del programma. Un esempio può essere un editor di grafi, in cui l'utente utilizza il mouse per indicare le posizioni dei vertici e disegnare i bordi tra di essi. Per eliminare un vertice o un bordo, l'utente deve puntare su di esso. Ma mentre è piuttosto semplice puntare su un vertice contrassegnato da un cerchio, sarà più difficile puntare su un bordo tracciato da una linea sottile. Qui una mappa di controllo può aiutare, dove i vertici e i bordi occupano aree più ampie rispetto a quelle visibili nel disegno.

Un'interessante domanda secondaria è legata al metodo di apprendimento complesso: questo metodo potrebbe essere utile nell'addestramento dell'IA?

Fonte: habr.com

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster