Tabelul lui Mendeleev la informatica școlară

(Hărți de control)
(Dedicați Anului Internațional al Tabelului Periodic al Elementeelor Chimice)
(Ultimele actualizări au fost efectuate pe 8 aprilie 2019. Lista actualizărilor imediat sub acest paragraf)

Tabelul lui Mendeleev la informatica școlară
(Floarea lui Mendeleev, Sursa)

Îmi amintesc că am studiat rața. Au fost deodată trei lecții: geografie, științe naturale și limba rusă. La lecția de științe naturale, rața a fost studiată ca rață: ce tip de aripi are, ce fel de labe are, cum înoată și așa mai departe. La lecția de geografie, aceeași rață a fost studiată ca locuitor al globului: trebuia să arătăm pe hartă unde trăiește și unde nu este. La limba rusă, Serafima Petrovna ne-a învățat să scriem "r-a-ț-a" și ne citea ceva despre rațe din Brehm. În treacăt, ne spunea că în germană rața se spune așa și în franceză așa. Se pare că aceasta se numea atunci "metoda complexă". În general, totul se desfășura "în treacăt".

Veniamin Kavering, Cei Doi Căpitani

În citatul dat, Veniamin Kavering a demonstrat magistral dezavantajele metodei complexe de predare, însă în unele (poate destul de rare) cazuri, elementele acestei metode sunt justificate. Un astfel de caz este Tabelul Periodic al lui D.I. Mendeleev în lecțiile de informatică din școală. Sarcina de automatizare programatică a acțiunilor standard cu tabelul lui Mendeleev este evidentă pentru elevii care au început studiul chimiei și se împarte în multe sarcini chimice standard. În același timp, în contextul informaticii, această sarcină permite demonstrerea într-o formă simplă a metodei hărților de control, care poate fi considerată ca programare grafică, înțeleasă în sens larg ca programare prin intermediul elementelor grafice.

(Actualizări efectuate pe 8 aprilie 2019:
Actualizare 1: cum funcționează calculatorul chimic
Actualizare 2: exemple de sarcini pentru filtre)

Să începem cu o sarcină de bază. În cel mai simplu caz, pe ecran, într-o fereastră de formă, ar trebui să fie afișat Tabelul Periodic, unde în fiecare celulă va fi semnul chimic al elementului: H - hidrogen, He - heliu etc. Dacă cursorul mouse-ului indică asupra unei celule, atunci într-un câmp special din forma noastră va fi afișat semnul elementului și numărul său. Dacă utilizatorul face clic cu butonul stâng al mouse-ului, atunci într-un alt câmp al formei vor fi indicate semnul și numărul elementului selectat.

Tabelul lui Mendeleev la informatica școlară

Problema poate fi rezolvată în orice limbaj de programare universal. Vom folosi un vechi Delphi-7, ușor de înțeles pentru aproape toată lumea. Dar înainte de a programa în acest limbaj, vom desena două imagini, de exemplu, în Photoshop. În primul rând, vom desena Tabelul Perioadelor așa cum dorim să-l vedem în program. Vom salva rezultatul într-un fișier grafic. table01.bmp.

Tabelul lui Mendeleev la informatica școlară

Pentru a doua imagine, vom folosi prima. Vom umple în mod secvențial celulele curățate de orice grafică din tabel cu culori unice în modelul de culoare RGB. R și G vor fi întotdeauna 0, iar B=1 pentru hidrogen, 2 pentru heliu și așa mai departe. Această imagine va fi harta noastră de control, pe care o vom salva într-un fișier sub numele. table2.bmp.

Tabelul lui Mendeleev la informatica școlară

Primul pas al programării grafice în Photoshop este finalizat. Să trecem la programarea grafică GUI în IDE Delphi-7. Pentru aceasta deschidem un nou proiect, în care plasăm un buton pentru a apela dialogul (tableDlg), în care va avea loc lucrarea cu tabela. Apoi lucrăm cu formularul. tableDlg.

Plasăm pe formular un component de clasă TImage. Obținem Image1. Să menționăm că, în general, pentru proiecte mari, numele generate automat de tipul ImageN, unde N pot ajunge la câteva zeci sau mai mult — nu este cel mai bun stil de programare și ar trebui să le oferim nume mai sensibile. Dar în proiectul nostru mic, unde N nu va depăși 2, putem lăsa așa cum s-a generat.

În proprietatea Image1.Picture încărcăm fișierul table01.bmp. Creăm Image2 și încărcăm acolo harta noastră de control. table2.bmpÎn același timp, facem fișierul mic și invizibil utilizatorului, așa cum este arătat în colțul stâng inferior al formularului. Adăugăm elemente suplimentare de control, ale căror destinații sunt evidente. Al doilea pas al programării grafice GUI în IDE Delphi-7 este finalizat.

Tabelul lui Mendeleev la informatica școlară

Trecem la al treilea pas — scrierea codului în IDE Delphi-7. Modulul constă din doar cinci gestionari de evenimente: crearea formularului (FormCreate), mișcarea cursorului pe Image1 (Image1MouseMove), apăsarea butonului stâng al mouse-ului pe celulă (Image1Click) și ieșirea din dialog cu ajutorul butoanelor OK (OKBtnClick) sau Cancel (CancelBtnClick). Titlurile acestor gestionari sunt generate în mod standard cu ajutorul IDE-ului.

Codul sursă al modulului:

unit tableUnit;
// Tabelă periodică a elementelor chimice D.I. Mendeleev
//
// third112
// https://habr.com/ro/users/third112/
//
// Cuprins
// 1) crearea formei
// 2) lucrul cu tabelul: specificarea și selecția
// 3) ieșirea din dialog

interface

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

const
 size = 104; // numărul de elemente

type
 TtableDlg = class(TForm)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    Image1: TImage;  // tabelul elementelor chimice
    Label1: TLabel;
    Image2: TImage;  // harta de control
    Label2: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject); // crearea formei
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);                        // specificarea celulei
    procedure Image1Click(Sender: TObject); // selecția celulei
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelBtnClick(Sender: TObject); // Anulare
  private
    { Declarații private }
    TableSymbols : array [1..size] of string [2]; // matricea simbolurilor elementelor
  public
    { Declarații public }
    selectedElement : string; // elementul selectat
    currNo : integer;         // numărul curent al elementului
  end;

var
  tableDlg: TtableDlg;

implementation

{$R *.dfm}

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

// crearea formei  ==================================================

procedure TtableDlg.FormCreate(Sender: TObject);
// crearea formei
var
  s : string;
  i,j : integer;
begin
  currNo := 0;
// inițializarea matricei simbolurilor elementelor:
  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 ____________________________________________________

// lucrul cu tabelul: specificarea și selecția =========================================

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// specificarea celulei
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 := 'Selectați elementul:';
end; // Image1MouseMove   ____________________________________________________

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

// ieșirea din dialog  ==================================================

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

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

end.

În versiunea noastră, am folosit o tabelă de dimensiune 104 elemente (constantă dimensiune). Evident, această dimensiune poate fi crescută. Denumirile elementelor (simbolurile chimice) sunt înregistrate într-un array TableSymbols. Totuși, din motive de compactitate a codului sursă, pare mai relevant să înregistrăm secvența acestor denumiri sub formă de constante de tip șir PeriodicTableStr1,…, PeriodicTableStr4, astfel încât, la evenimentul de creare a formularului, programul să distribuie singur aceste denumiri în elementele array-ului. Fiecare denumire de element constă din una sau două litere latine, prima literă fiind mare, iar a doua (dacă există) fiind mică. Această regulă simplă este implementată la încărcarea array-ului. Astfel, secvența de denumiri reușește să fie înregistrată într-o formă comprimată, fără spații. Împărțirea secvenței în patru părți (constante PeriodicTableStr1,…, PeriodicTableStr4) este dictată de considerații de comoditate în citirea codului sursă, deoarece o linie prea lungă ar putea să nu încapă în întregime pe ecran.

La evenimentul de mișcare a cursorului mouse-ului prin Image1 handler Image1MouseMove acestui eveniment determină valoarea componentei albastre a culorii pixelului din harta de control Image2 pentru coordonatele curente ale cursorului. Prin construcție Image2 această valoare este egală cu numărul elementului, dacă cursorul se află în interiorul celulei; zero, dacă este pe margine, și 255 în alte cazuri. Celelalte acțiuni efectuate de program sunt triviale și nu necesită explicații.

În plus față de stilurile de programare menționate mai sus, merită notat stilul comentariilor. Strict vorbind, codul discutat este atât de mic și simplu încât comentariile par a nu fi cu adevărat necesare. Totuși, acestea au fost adăugate și din motive metodologice — codul scurt permite evidențierea mai clară a unor concluzii generale. În codul prezentat este declarat o clasă (TtableDlg). Metodele acestei clase pot fi interschimbate și acest lucru nu va afecta funcționarea programului, dar poate influența lizibilitatea acestuia. De exemplu, să ne imaginăm secvența:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Poate că nu este foarte vizibil, dar va fi puțin mai greu de citit și de înțeles. Dacă metodele nu sunt cinci, ci de zeci de ori mai multe și în secțiunea implementation Ei au un cu totul altă ordine a secvenței comparativ cu descrierile claselor, astfel că haosul va crește doar. Așadar, deși este greu de dovedit strict și poate chiar imposibil, se poate spera că crearea unei ordini suplimentare va îmbunătăți lizibilitatea codului. Această ordine suplimentară este favorizată de gruparea logică a mai multor metode care îndeplinesc sarcini apropiate. Fiecărei grupări ar trebui să-i fie dat un titlu, de exemplu:

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

Aceste titluri ar trebui copiate la începutul modulului și prezentate ca un cuprins. În unele cazuri, în moduluri destul de lungi, aceste cuprinsuri oferă oportunități suplimentare de navigare. De asemenea, în corpul lung al unei metode, unei proceduri sau unei funcții ar trebui, pe de o parte, să se marcheze sfârșitul acestui corp:

end; // FormCreate

iar, pe de altă parte, în operatorii ramificați cu paranteze programatice begin – end, să se marcheze operatorul căruia îi aparține paranteza închisă:

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

Pentru a evidenția titlurile grupurilor și sfârșiturile corpurilor metodelor, se pot adăuga linii care depășesc lungimea majorității operatorilor și sunt compuse, de exemplu, din simboluri «=» și «_» respective.
Din nou, trebuie menționat: avem un exemplu prea simplu. Iar când codul unei metode nu încape pe un singur ecran, devine destul de complicat să te descurci cu șase end-uri consecutive pentru a face modificări în cod. În unele compilatoare mai vechi, de exemplu, Pascal 8000 pentru OS IBM 360/370, în listing era imprimată o coloană de serviciu de acest tip:

B5
…
E5

Aceasta însemna că paranteza programatică închisă de pe linia E5 corespunde parantezei deschise de pe linia B5.

Desigur, stilul de programare este o problemă foarte ambiguă, așa că ideile exprimate aici ar trebui considerate nu mai mult decât informații pentru reflecție. Două programe foarte experimentate, care au dezvoltat stiluri diferite de-a lungul anilor de muncă, pot avea dificultăți serioase în a ajunge la un acord. Este o altă poveste pentru un elev care învață să programeze, care nu a avut încă timp să-și dezvolte propriul stil. Cred că în acest caz profesorul ar trebui să transmită măcar elevilor săi o idee simplă, dar pe care ei încă nu o văd, și anume că succesul unui program depinde în mare măsură de stilul în care este scris codul sursă. Elevul poate alege să nu urmeze stilul recomandat, dar măcar să se gândească la necesitatea unor „acțiuni suplimentare” pentru a îmbunătăți prezentarea codului sursă.

Revenind la sarcina noastră de bază referitoare la Tabelul Perioadelor: dezvoltarea ulterioară poate merge în direcții diferite. Una dintre direcții este cea informativă: când cursorul mouse-ului se află deasupra unei celule din tabel, un pop-up apare cu informații suplimentare despre elementul indicat. O dezvoltare ulterioară - filtre. De exemplu, în funcție de opțiunile din fereastra informativă vor fi afișate doar: date fizico-chimice esențiale, informații despre istoria descoperirii, informații despre răspândirea în natură, un lista a celor mai importante compuși (care includ acel element), proprietăți fiziologice, denumirea în alte limbi etc. Amintindu-ne de „rânda” lui Kaverin, cu care începe acest articol, putem spune că, printr-o astfel de dezvoltare a programului, vom obține un complex educațional complet în științele naturale: pe lângă informatică, fizică și chimie - biologie, geografie economică, istoria științei și chiar limbi străine.

Dar o bază de date locală nu este limita. Programul se conectează natural la Internet. Atunci când selectează un element, se activează un link, iar în fereastra browser-ului web se deschide un articol din Wikipedia despre acel element. Wikipedia, după cum se știe, nu este o sursă de autoritate. Se pot sugera linkuri către surse de autoritate, de exemplu, o enciclopedie chimică, BSE, reviste de referință, solicitări în motoarele de căutare privind acel element etc. Astfel, elevii vor putea efectua sarcini simple, dar substanțiale pe subiectele bazelor de date și Internet.

Pe lângă cererile pentru un singur element, se poate realiza o funcționalitate care va marca, de exemplu, celulele din tabel cu culori diferite, corespunzătoare unor criterii anumite. De exemplu, metale și metaloide. Sau celule care sunt contaminate de o fabrică locală de chimicale.

De asemenea, pot fi implementate funcții de caiet de sarcini-organizator. De exemplu, să evidențiem în tabel elementele care fac parte din examen. Apoi să marcăm elementele studiate/repetate de elev în pregătirea pentru examen.

Iată un exemplu de problemă tipică de chimie de școală:

Se dă 10 g de calcar. Cât de multă acid clorhidric trebuie să luăm pentru a dizolva toată această calcar?

Pentru a rezolva această problemă, trebuie să scriem reacția chimică și să punem coeficientele, apoi să calculăm masele moleculare ale carbonatului de calciu și acidului clorhidric, apoi să formăm și să rezolvăm o proporție. Calculul și soluția pot fi realizate de un calculator, pe baza programului nostru de bază. Totuși, trebuie să avem în vedere că acidul trebuie să fie luat într-o cantitate rezonabilă și la o concentrare adecvată, dar aceasta este chimie, nu informatică.
Actualizare 1: cum funcționează calculatorul chimicSă analizăm funcționarea calculatorului pe exemplul problemei enumerate mai sus cu calcarul și "acidul clorhidric". Să începem cu reacția:

CaCO3 + 2HCl = CaCl2 + H2O

Din aceasta, vedem că avem nevoie de masele atomice ale următoarelor elemente: calciu (Ca), carbon (C), oxigen (O), hidrogen (H) și clor (Cl). În cel mai simplu caz, putem scrie aceste mase într-un array unidimensional, definit ca

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

unde indexul array-ului corespunde numărului elementului. De asemenea, pe un loc liber al formularului tableDlg plasați două câmpuri. În primul câmp este scris inițial: "Primul reactant dat", iar în al doilea - "Al doilea reactant să găsească x". Să denumim câmpurile reagent1, reagent2 corespunzător. Alte completări în program vor fi clare din următorul exemplu de funcționare a calculatorului.

Introduc pe tastatura computerului: 10 g. Textul din câmp reagent1 se schimbă: "Primul reactant dat 10 g". Acum introducem formula acestui reactant, iar calculatorul va calcula și va afișa masa sa moleculară pe măsură ce introducem.

Fac clic stânga pe celula din tabel cu simbolul Ca. Textul din câmp reagent1 se schimbă: "Primul reactant Ca 40.078 dat 10 g".

Fac clic stânga pe celula din tabel cu simbolul C. Textul din câmp reagent1 se schimbă: "Primul reactant CaC 52.089 dat 10 g". Adică, calculatorul a adunat masele atomice ale calciului și carbonului.

Facem clic stânga pe celula din tabel cu simbolul O. Textul din câmp reagent1 se schimbă: “Primul reactiv CaCO 68.088 dat 10 g”. Calculatorul a adăugat la sumă masa atomică a oxigenului.

Facem clic stânga pe celula din tabel cu simbolul O. Textul din câmp reagent1 se schimbă: “Primul reactiv CaCO2 84.087 dat 10 g”. Calculatorul a adăugat din nou la sumă masa atomică a oxigenului.

Facem clic stânga pe celula din tabel cu simbolul O. Textul din câmp reagent1 se schimbă: “Primul reactiv CaCO3 100.086 dat 10 g”. Calculatorul a adăugat din nou la sumă masa atomică a oxigenului.

Apăsăm Enter pe tastatura computerului. Introducerea primului reactiv s-a încheiat și se comută pe câmp reagent2. Să menționăm că în acest exemplu prezentăm versiunea minimă. Dacă doriți, puteți organiza cu ușurință multiplicatori pentru atomii de același tip, astfel încât, de exemplu, să nu trebuiască să apăsați de șapte ori consecutiv pe celula oxigenului în timpul introducerii formulei cromatului (K2Cr2O7).

Facem clic stânga pe celula din tabel cu simbolul H. Textul din câmp reagent2 se schimbă: “Al doilea reactiv H 1.008 găsiți x”.

Facem clic stânga pe celula din tabel cu simbolul Cl. Textul din câmp reagent2 se schimbă: “Al doilea reactiv HCl 36.458 găsiți x”. Calculatorul a adunat masele atomice ale hidrogenului și clorului. În ecuația de reacție de mai sus, în fața acidului clorhidric se află coeficientul 2. Așadar, facem clic stânga pe câmp reagent2. Greutatea moleculară se dublează (la o apăsare dublă se triplează etc.). Textul din câmp reagent2 se schimbă: “Al doilea reactiv 2HCl 72.916 găsiți x”.

Apăsăm Enter pe tastatura computerului. Introducerea celui de-al doilea reactiv s-a încheiat, iar calculatorul găsește x din proporție

Tabelul lui Mendeleev la informatica școlară

Ceea ce era de găsit.

Notă 1. Sensul proporției obținute: pentru dizolvarea a 100.086 Da de cretă este nevoie de 72.916 Da de acid, iar pentru dizolvarea a 10 g de cretă este nevoie de x acid.

Notă 2. Colecții de probleme similare:

Homcenko I. G., Colecție de probleme și exerciții de chimie 2009 (clasele 8-11).
Homcenko G. P., Homcenko I. G., Colecție de probleme de chimie pentru admiterea la universități, 2019.

Notă 3. Pentru simplificarea problemei, în versiunea inițială se poate simplifica introducerea formulei și pur și simplu adăuga simbolul elementului la sfârșitul șirului formulei. Atunci formula carbonatului de calciu va avea următoarea formă:
CaCOOO
Dar o astfel de notare s-ar putea să nu fie pe placul profesorului de chimie. A face o notare corectă nu este dificil — pentru aceasta este necesar să se adauge un array:

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

unde indexul este numărul elementului chimic, iar valoarea la acest index este numărul de atomi (în mod inițial toate elementele din masiv sunt inițializate la zero). Trebuie să avem în vedere ordinea în care sunt scrise atomii în formulă, adoptată în chimie. De exemplu, O3CaC nu va fi pe placul multora. Lăsăm responsabilitatea utilizatorului. Creăm un masiv:

 formulaOrder : array [1..size] of integer; // se poate face mai scurt

unde se va scrie numărul elementului chimic în funcție de indexul său de apariție în formulă. Adăugarea atomului currNo în formulă:

if formula [currNo]=0 then // acest atom s-a întâlnit prima dată
 begin
 orderIndex := orderIndex+1; // la începutul introducerii formulei orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
formula [currNo]:=formula [currNo]+1;

Scrierea formulei sub formă de șir:

s := ''; // șir gol pentru formulă
for i:=1 to  orderIndex do // pentru toate simbolurile chimice din formulă 
 begin
 s:=s+TableSymbols [ formulaOrder[i]]; // adăugăm simbolul chimic
 if formula [formulaOrder[i]]1 then // adăugăm numărul de atomi
  s:=s+ intToStr(formula [formulaOrder[i]]);
 end;

Notă 4. Are sens să oferim posibilitatea introducerii alternative a formulei reactantului de la tastatură. În acest caz, va trebui să implementăm un analizator sintactic simplu.

Merită menționat că:

Astăzi există câteva sute de variante ale tabelului, iar oamenii de știință propun constant noi variante. (Wikipedia)

Elevii pot manifesta creativitate și în această direcție, realizând una dintre variantele deja propuse sau încercând să facă una originală. Poate părea că aceasta este cea mai puțin utilă direcție pentru lecțiile de informatică. Cu toate acestea, în forma implementată a Tabelului Perioadei din acest articol, unii elevi ar putea să nu observe avantajele speciale ale hărților de gestionare față de soluția alternativă cu ajutorul butoanelor standard. TButton. Forma spiralată a tabelului (unde celulele au forme diferite) va ilustra mai clar avantajele soluției propuse aici.

Tabelul lui Mendeleev la informatica școlară
(Sistemul alternativ de elemente al lui Theodore Benfey, Sursa)

De asemenea, este de adăugat că despre unele programe software existente până în prezent pentru Tabelul lui Mendeleev s-a scris într-o recent publicată pe Habr. pe care l-ați citit.

Completar 2: exemple de sarcini pentru filtrePrin intermediul filtrelor se pot rezolva, de exemplu, următoarele sarcini:

1) Asemnarea în tabel a tuturor elementelor cunoscute în Evul Mediu.

2) Asemnarea tuturor elementelor cunoscute până la descoperirea legii periuodice.

3) Evidențiază șapte elemente pe care alchimiștii le considerau metale.

4) Evidențiază toate elementele care se află în stare gazoasă în condiții normale (n.c.).

5) Evidențiază toate elementele care se află în stare lichidă la n.c.

6) Evidențiază toate elementele care se află în stare solidă la n.c.

7) Evidențiază toate elementele care pot rămâne mult timp expuse la aer fără modificări evidente la n.c.

8) Evidențiază toate metalele care se dizolvă în acid clorhidric.

9) Evidențiază toate metalele care se dizolvă în acid sulfuric la n.c.

10) Evidențiază toate metalele care se dizolvă în acid sulfuric când sunt încălzite.

11) Evidențiază toate metalele care se dizolvă în acid nitric.

12) Evidențiază toate metalele care reacționează violent cu apa la n.c.

13) Evidențiază toate metalele.

14) Evidențiază elementele care sunt întâlnite frecvent în natură.

15) Evidențiază elementele care se găsesc în natură în stare liberă.

16) Evidențiază elementele care joacă un rol esențial în organismul uman și animal.

17) Evidențiază elementele care sunt utilizate pe larg în viața de zi cu zi (în stare liberă sau în compuși).

18) Evidențiază elementele cu care lucrul este cel mai periculos și necesită măsuri speciale de protecție.

19) Evidențiază elementele care, fie în stare liberă, fie sub formă de compuși, reprezintă cea mai mare amenințare pentru ecologie.

20) Evidențiază metalele prețioase.

21) Evidențiază elementele care valorează mai mult decât metalele prețioase.

Note

1) Are sens să asiguri funcționarea mai multor filtre. De exemplu, dacă activezi filtrul pentru a rezolva problema 1 (toate elementele cunoscute în Evul Mediu) și 20 (metalele prețioase), vor fi evidențiate (de exemplu, prin culoare) celulele cu metale prețioase cunoscute în Evul Mediu (de exemplu, paladiul, descoperit în 1803, nu va fi evidențiat).

2) Este important să asigurăm funcționarea mai multor filtre în astfel de mod, încât fiecare filtru să evidențieze celulele într-o culoare proprie, dar să nu elimine complet evidențierea altui filtru (partea celulei într-o culoare, partea în alta). Astfel, în cazul exemplului anterior, vor fi vizibile elementele de intersecție între mulțimile de metal prețios și cele deschise în Evul Mediu, precum și elementele care aparțin doar primei și doar celei de-a doua mulțimi. Adică, metale prețioase necunoscute în Evul Mediu și elemente cunoscute în Evul Mediu, dar care nu sunt metale prețioase.

3) Este important, după aplicarea filtrului, să se asigure posibilitatea de a efectua alte lucrări cu rezultatele obținute. De exemplu, evidențiind elementele cunoscute în Evul Mediu, utilizatorul face clic pe elementul evidențiat și ajunge la articolul Wikipedia despre acest element.

4) Este important să se oferă utilizatorului posibilitatea de a elimina evidențierea făcând clic pe celula evidențiată a tablei. De exemplu, pentru a elimina elementele deja vizualizate.

5) Este important să se asigure salvarea listei de celule evidențiate într-un fișier și încărcarea unui astfel de fișier cu evidențierea automată a celulelor. Acest lucru va oferi utilizatorului posibilitatea de a face o pauză în muncă.

Am folosit o hartă de control statică presetată, dar există multe sarcini importante unde se pot utiliza hărți de control dinamice, care se schimbă pe parcursul derulării programului. Un exemplu poate fi un editor de grafuri, în care utilizatorul cu ajutorul mouse-ului indică în fereastra pozițiile vârfurilor și desenează muchii între ele. Pentru a șterge un vârf sau o muchie, utilizatorul trebuie să-și indice atenția asupra acestora. Însă, în timp ce indicarea unui vârf marcat cu un cerc este destul de simplă, a indica o muchie desenată cu o linie subțire va fi mai complicat. Aici va ajuta o hartă de control, unde vârfurile și muchiile ocupă o zonă mai largă decât pe desenul vizibil.

Un aspect interesant legat de metoda menționată a învățării complexe este dacă această metodă ar putea fi utilă în formarea AI-ului.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster