(Beheerskaarten)
(Opgedragen aan het Internationaal Jaar van de Periodieke Tabel der Chemische Elementen)
(Laatste aanvullingen zijn gedaan op 8 april 2019. De lijst van aanvullingen staat direct onder de kat)

(, )
Ik herinner me dat we de eend hebben behandeld. Dit waren meteen drie lessen: geografie, natuurkunde en Russisch. Tijdens de natuurkundeles werd de eend bestudeerd als een eend: hoe haar vleugels zijn, hoe haar poten zijn, hoe ze zwemt, enzovoorts. Tijdens de geografieles werd dezelfde eend bestudeerd als een bewoner van de aarde: we moesten op de kaart laten zien waar ze leeft en waar ze niet is. Tijdens de Russische les leerde Serafima Petrovna ons 'u-t-k-a' schrijven en voor te lezen over eenden uit Brehm. Terloops vertelde ze ons dat de eend in het Duits zo-en-zo heette, en in het Frans zo-en-zo. Het leek erop dat dit toen de 'complexe methode' werd genoemd. Kortom, alles ging 'terloops'.
Veniamin Kaverin, Twee Kapiteins
In de geciteerde passage heeft Veniamin Kaverin meesterlijk de tekortkomingen van de complexe onderwijsmethode aangetoond, echter in sommige (misschien vrij zeldzame) gevallen zijn elementen van deze methode gerechtvaardigd. Een van die gevallen is de Periodieke Tabel van D.I. Mendelejev in lessen informatica op school. De taak van programmatische automatisering van typische handelingen met de tabel van Mendelejev is duidelijk voor leerlingen die net beginnen met chemie, en wordt uitgesplitst in veel typische chemische taken. Tegelijkertijd maakt deze taak binnen informatica het mogelijk om op een eenvoudige manier de methode van beheerskaarten te demonstreren, die kan worden verwezen naar grafisch programmeren, beschouwd in de brede zin van het woord als programmeren met behulp van grafische elementen.
(8 april 2019 zijn aanvullingen gedaan:
Laten we beginnen met de basisopgave. In het eenvoudigste geval moet op het scherm in een venster de Periodieke Tabel worden weergegeven, waarin in elke cel het chemische symbool van het element staat: H — waterstof, He — helium, enzovoorts. Als de muiscursor op een cel wijst, wordt in een speciaal veld op ons formulier het symbool van het element en zijn nummer weergegeven. Als de gebruiker op dat moment met de linkermuisknop klikt, worden het symbool en nummer van dat geselecteerde element in een ander veld van het formulier weergegeven.

De taak kan met elke universele programmeertaal worden opgelost. We nemen de eenvoudige oude Delphi-7, die bijna iedereen begrijpt. Maar voordat we gaan programmeren in de programmeertaal, tekenen we twee afbeeldingen, bijvoorbeeld in Photoshop. Eerst tekenen we het periodiek systeem in de vorm zoals we het in het programma willen zien. We slaan het resultaat op in een grafisch bestand. table01.bmp.

Voor de tweede afbeelding gebruiken we de eerste. We vullen de cellen van de tabel, die van elke grafiek zijn ontdaan, successief met unieke kleuren in het RGB-kleursysteem. R en G zijn altijd 0 en B=1 voor waterstof, 2 voor helium, enzovoort. Deze afbeelding wordt onze controlekaart, die we opslaan in een bestand met de naam. table2.bmp.

De eerste fase van grafisch programmeren in Photoshop is voltooid. Laten we verder gaan met grafisch programmeren van de GUI in de Delphi-7 IDE. Hiervoor openen we een nieuw project, waarin we een knop voor het openen van een dialoogvenster op de hoofdvorm plaatsen (tableDlg), waarin we met de tabel gaan werken. Vervolgens werken we met de vorm. tableDlg.
We plaatsen op de vorm een component van de klasse. TImage. We krijgen. Image1. Laten we opmerken dat, in het algemeen voor grote projecten, automatisch gegenereerde namen zoals. ImageN, waar N kunnen oplopen tot tientallen of meer — niet de beste programmeerstijl, en het is beter om meer betekenisvolle namen te geven. Maar in ons kleine project, waarin. N niet meer dan 2 bedragen, kunnen we het laten zoals het is gegenereerd.
In de eigenschap. Image1.Picture laden we het bestand. table01.bmp. We maken Image2 en laden we daar onze controlekaart in. table2.bmpWe maken het bestand klein en onzichtbaar voor de gebruiker, zoals te zien in de linkerbenedenhoek van de vorm. We voegen aanvullende controle-elementen toe, waarvan de functie duidelijk is. De tweede fase van grafisch programmeren van de GUI in de Delphi-7 IDE is voltooid.

Laten we doorgaan naar de derde fase — het schrijven van de code in de Delphi-7 IDE. De module bestaat uit slechts vijf gebeurtenissen: het maken van de vorm (FormCreate), de beweging van de cursor over. Image1 (Image1MouseMove), klikken met de linkermuisknop op de cel (Image1Click) en het verlaten van het dialoogvenster via de knoppen OK (OKBtnClick) of Annuleren (CancelBtnClick). De koppen van deze gebeurtenissen worden op de standaardmanier gegenereerd met behulp van de IDE.
De broncode van de module:
unit tabelUnit;
// Periodiek systeem van chemische elementen D.I. Mendelejev
//
// third112
// https://habr.com/ru/users/third112/
//
// Inhoudsopgave
// 1) formulier maken
// 2) werken met de tabel: aanwijzing en selectie
// 3) afsluiten van het dialoogvenster
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
const
grootte = 104; // aantal elementen
type
TtableDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Bevel1: TBevel;
Image1: TImage; // tabel van chemische elementen
Label1: TLabel;
Image2: TImage; // controle kaart
Label2: TLabel;
Edit1: TEdit;
procedure FormCreate(Sender: TObject); // formulier maken
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); // aanwijzing van de cel
procedure Image1Click(Sender: TObject); // selectie van de cel
procedure OKBtnClick(Sender: TObject); // OK
procedure CancelBtnClick(Sender: TObject); // Annuleer
private
{ Private declarations }
TableSymbols : array [1..grootte] of string [2]; // array van elementen symbolen
public
{ Public declarations }
selectedElement : string; // geselecteerd element
currNo : integer; // huidige nummer van het element
end;
var
tableDlg: TtableDlg;
implementation
{$R *.dfm}
const
PeriodicTableStr1=
'HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLa';
PeriodicTableStr2='CePrNdPmSmEuGdTbDyHoErTmYbLu';
PeriodicTableStr3='HfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAc';
PeriodicTableStr4='ThPaUNpPuAmCmBkCfEsFmMdNoLrKu ';
// formulier maken ==================================================
procedure TtableDlg.FormCreate(Sender: TObject);
// formulier maken
var
s : string;
i,j : integer;
begin
currNo := 0;
// initialisatie van array van elementen symbolen:
s := PeriodicTableStr1 + PeriodicTableStr2 + PeriodicTableStr3 + PeriodicTableStr4;
j := 1;
for i := 1 to grootte 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 ____________________________________________________
// werken met de tabel: aanwijzing en selectie =========================================
procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
// aanwijzing van de cel
var
sl : integer;
begin
sl := GetBValue(Image2.Canvas.Pixels [x,y]);
if sl in [1..grootte] then
begin
Label1.Caption := intToStr (sl) + ' ' + TableSymbols [sl];
currNo := sl;
end
else
Label1.Caption := 'Selecteer element:';
end; // Image1MouseMove ____________________________________________________
procedure TtableDlg.Image1Click(Sender: TObject);
begin
if currNo 0 then
begin
selectedElement := TableSymbols [currNo];
Label2.Caption := intToStr (currNo) + ' ' + selectedElement + ' geselecteerd';
Edit1.Text := selectedElement;
end;
end; // Image1Click ____________________________________________________
// afsluiten van het dialoogvenster ==================================================
procedure TtableDlg.OKBtnClick(Sender: TObject);
begin
selectedElement := Edit1.Text;
hide;
end; // OKBtnClick ____________________________________________________
procedure TtableDlg.CancelBtnClick(Sender: TObject);
begin
hide;
end; // CancelBtnClick ____________________________________________________
end.In onze versie hebben we een tabel gebruikt van 104 elementen (constante size). Het is duidelijk dat deze grootte kan worden vergroot. De aanduidingen van de elementen (chemische symbolen) worden in een array geschreven TableSymbols. Echter, omwille van de compactheid van de broncode lijkt het zinnig om de reeks van deze aanduidingen als stringconstanten op te schrijven PeriodicTableStr1,…, PeriodicTableStr4, zodat bij het aanmaken van de vorm het programma deze aanduidingen automatisch over de elementen van de array verdeelt. Elke aanduiding van een element bestaat uit een of twee Latijnse letters, waarbij de eerste letter hoofdletter is en de tweede (indien aanwezig) kleine letter. Deze eenvoudige regel wordt geïmplementeerd bij het laden van de array. Op deze manier kan de reeks aanduidingen gecomprimeerd zonder spaties worden opgeschreven. Het splitsen van de reeks in vier delen (constantes PeriodicTableStr1,…, PeriodicTableStr4) is te wijten aan het gemak van het lezen van de broncode, omdat een te lange regel mogelijk niet volledig op het scherm past.
Bij het bewegen van de muiscursor over Image1 de handler Image1MouseMove van dit evenement bepaalt de waarde van de blauwe component van de kleur van de pixel op de controlekaart Image2 voor de huidige coördinaten van de cursor. In feite Image2 is deze waarde gelijk aan het nummer van het element, als de cursor binnen een cel is; nul, als het op de grens is, en 255 in andere gevallen. De andere handelingen uitgevoerd door het programma zijn triviaal en vereisen geen uitleg.
Naast de hierboven genoemde stijlen van programmeren moet de stijl van de opmerkingen worden opgemerkt. Strikt genomen is de besproken code zo klein en eenvoudig dat opmerkingen niet echt nodig lijken. Echter, ze zijn ook toegevoegd om methodische redenen — korte code maakt bepaalde algemene conclusies duidelijker. In de gepresenteerde code is één klasse gedeclareerd (TtableDlg). De methoden van deze klasse kunnen omgewisseld worden en dit heeft geen invloed op de werking van het programma, maar kan de leesbaarheid beïnvloeden. Neem bijvoorbeeld de volgorde:
OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.
Misschien is het niet echt opgemerkt, maar het zal iets moeilijker zijn om te lezen en te begrijpen. Als er niet vijf methoden zijn, maar tientallen meer en in de sectie implementation Hun hebben een geheel andere volgorde dan de beschrijvingen van de klassen, waardoor de chaos alleen maar zal toenemen. Daarom, hoewel het moeilijk en misschien zelfs onmogelijk is om strikt te bewijzen, kunnen we hopen dat het aanbrengen van extra orde de leesbaarheid van de code verbetert. Deze extra orde wordt bevorderd door de logische groepering van meerdere methoden die vergelijkbare taken uitvoeren. Aan elke groep moet een titel worden gegeven, bijvoorbeeld:
// работа с таблицей: указание и выбор
Deze titels moeten aan het begin van de module worden gekopieerd en als een inhoudsopgave worden gepresenteerd. In sommige gevallen, met lange modules, bieden dergelijke inhoudsopgaven extra navigatiemogelijkheden. Evenzo is het in een lange body van een methode, procedure of functie aan te raden om, ten eerste, het einde van deze body aan te geven:
end; // FormCreateen ten tweede, in vertakte instructies met programmeerhaken begin – eind, de instructie aan te geven waaraan de sluitende haak is gekoppeld:
end; // als s [j] in
end; // voor i :=1
end; // FormCreate
Om de titels van groepen en de eindes van methoden te markeren, kunnen er regels worden toegevoegd die langer zijn dan de meeste instructies en bestaan uit bijvoorbeeld de symbolen «=” en «_» respectievelijk.
Nogmaals, het moet worden opgemerkt: we hebben hier een te eenvoudig voorbeeld. En wanneer de code van een methode niet op één scherm past, kan het moeilijk zijn om uit zes achtereenvolgende ends te begrijpen waar wijzigingen in de code moeten worden aangebracht. In sommige oude compilers, zoals Pascal 8000 voor OS IBM 360/370, werd in de linkerkolom een soort hulpcolumn afgedrukt die er als volgt uitzag:
B5
…
E5
Dit betekende dat de sluitende programmeerhaak op regel E5 overeenkwam met de open haak op regel B5.
Natuurlijk is de programmeerstijl een zeer dubbelzinnig onderwerp, dus de ideeën die hier worden gepresenteerd, moeten worden opgevat als informatie ter overweging. Voor twee ervaren programmeurs, die door de jaren heen verschillende stijlen hebben ontwikkeld en gewend zijn geraakt aan hun eigen stijl, kan het erg moeilijk zijn om het eens te worden. Dit is anders voor een leerling die begint te programmeren, die nog geen tijd heeft gehad om zijn eigen stijl te ontwikkelen. Ik denk dat de leraar in dit geval in ieder geval de eenvoudige, maar voor de leerlingen niet voor de hand liggende gedachte moet overbrengen dat het succes van een programma in grote mate afhangt van de stijl waarin de broncode is geschreven. De leerling hoeft de aanbevolen stijl misschien niet te volgen, maar hij kan ten minste nadenken over de noodzaak van 'overbodige' handelingen om de opmaak van de broncode te verbeteren.
Terug naar onze basistaak betreffende het Periodiek Systeem: verdere ontwikkeling kan in verschillende richtingen gaan. Een van de richtingen is informatief: wanneer de cursor op een cel in de tabel wordt geplaatst, verschijnt er een informatievenster met aanvullende informatie over het betreffende element. Een volgende stap is het toevoegen van filters. Bijvoorbeeld, afhankelijk van de instelling in het informatievenster, kunnen er alleen de belangrijkste fysisch-chemische gegevens worden weergegeven, informatie over de geschiedenis van de ontdekking, informatie over de natuurlijke verspreiding, een lijst van belangrijke verbindingen (waar het element in voorkomt), fysiologische eigenschappen, de naam in een vreemde taal, enzovoort. Als we de 'eend' van Kaverin herinneren, waarmee dit artikel begint, kunnen we zeggen dat met deze ontwikkeling van het programma we een complete leeromgeving voor de exacte wetenschappen krijgen: naast informatica, natuurkunde en chemie, ook biologie, economische geografie, geschiedenis van de wetenschap en zelfs vreemde talen.
Maar een lokale database is niet het eindpunt. Het programma maakt vanzelf verbinding met het internet. Wanneer een element wordt geselecteerd, wordt een link geactiveerd en verschijnt er een Wikipedia-artikel over dat element in het venster van de webbrowser. Wikipedia is immers geen gezaghebbende bron. Er kunnen links naar gezaghebbende bronnen worden aangegeven, zoals een chemische encyclopedie, de Grote Sovjet Encyclopedie, referentietijdschriften, en zoekopdrachten naar het element kunnen worden opgegeven, enzovoort. Zo kunnen leerlingen eenvoudige maar inhoudelijke opdrachten uitvoeren over de onderwerpen van DBMS en internet.
Naast verzoeken voor een afzonderlijk element, kan er functionaliteit worden toegevoegd die bijvoorbeeld cellen in een tabel markeert met verschillende kleuren, afhankelijk van bepaalde criteria. Bijvoorbeeld, metalen en niet-metalen. Of cellen die in waterlopen worden geloosd door de lokale chemische fabriek.
Er kunnen ook functie van een notitieboek-organizer worden geïmplementeerd. Bijvoorbeeld, de elementen in de tabel markeren die op het examen voorkomen. Vervolgens de elementen markeren die de leerling heeft bestudeerd/herhaald ter voorbereiding op het examen.
Hier is bijvoorbeeld een typische opdracht uit de schoolchemie:
Gegeven zijn 10 g krijt. Hoeveel zoutzuur is nodig om al dit krijt op te lossen?
Om deze opgave op te lossen, moet je de chemische reactie opschrijven, de coëfficiënten daarin plaatsen en de moleculaire gewichten van calciumcarbonaat en waterstofchloride berekenen, en dan een evenredigheid opstellen en oplossen. Dat kan een calculator doen op basis van ons basisprogramma. Je moet echter wel rekening houden met het feit dat het zuur met een redelijke overmaat en in een redelijke concentratie moet worden genomen, maar dat is al chemie, geen informatica.
Aanvulling 1: hoe de chemische calculator werktLaten we de werking van de calculator bespreken aan de hand van de bovenstaande opgave met krijt en “zoutzuur”. We beginnen met de reactie:
CaCO3 + 2HCl = CaCl2 + H2O
Hieruit blijkt dat we de atoomgewichten van de volgende elementen nodig hebben: calcium (Ca), koolstof (C), zuurstof (O), waterstof (H) en chloor (Cl). In de eenvoudigste gevallen kunnen we deze gewichten in een eendimensionale array weergeven, gedefinieerd als
AtomicMass : array [1..size] of real;waarbij de array-index overeenkomt met het elementnummer. Verder plaatsen we op de vrije ruimte van het formulier tableDlg twee velden. In het eerste veld staat aanvankelijk: “Eerste reagens gegeven”, in het tweede - “Tweede reagens zoeken x”. We noemen de velden reagent1, reagent2 respectievelijk. Andere aanvullingen op het programma zullen duidelijk worden uit het volgende voorbeeld van de werking van de calculator.
We typen op het toetsenbord van de computer: 10 g. De tekst in het veld reagent1 verandert: “Eerste reagens gegeven 10 g”. Nu voeren we de formule van dit reagens in, en de calculator zal de moleculaire massa berekenen en tonen tijdens het invoeren.
We klikken met de linker muisklik op de cel in de tabel met het symbool Ca. De tekst in het veld reagent1 verandert: “Eerste reagens Ca 40.078 gegeven 10 g”.
We klikken met de linker muisklik op de cel in de tabel met het symbool C. De tekst in het veld reagent1 verandert: “Eerste reagens CaC 52.089 gegeven 10 g”. Dat wil zeggen, de calculator heeft de atoomgewichten van calcium en koolstof bij elkaar opgeteld.
Klik met de linkermuisknop op het vak in de tabel met het symbool O. De tekst in het veld reagent1 verandert in: “Eerste reagens CaCO 68.088 gegeven 10 g”. De rekenmachine heeft het atoomgewicht van zuurstof aan de som toegevoegd.
Klik met de linkermuisknop op het vak in de tabel met het symbool O. De tekst in het veld reagent1 verandert in: “Eerste reagens CaCO2 84.087 gegeven 10 g”. De rekenmachine heeft opnieuw het atoomgewicht van zuurstof aan de som toegevoegd.
Klik met de linkermuisknop op het vak in de tabel met het symbool O. De tekst in het veld reagent1 verandert in: “Eerste reagens CaCO3 100.086 gegeven 10 g”. De rekenmachine heeft wederom het atoomgewicht van zuurstof aan de som toegevoegd.
Druk op Enter op het toetsenbord van de computer. De invoer van het eerste reagens is voltooid en schakelt over naar het veld reagent2. Laten we opmerken dat we in dit voorbeeld de minimale versie geven. Indien gewenst, kan men gemakkelijk de factoren van atomen van hetzelfde type organiseren, zodat men bijvoorbeeld niet zeven keer achter elkaar op het zuurstofvak hoeft te drukken bij het invoeren van de formule van chroomdioxide (K2Cr2O7).
Klik met de linkermuisknop op het vak in de tabel met het symbool H. De tekst in het veld reagent2 verandert in: “Tweede reagens H 1.008 vind x”.
Klik met de linkermuisknop op het vak in de tabel met het symbool Cl. De tekst in het veld reagent2 verandert in: “Tweede reagens HCl 36.458 vind x”. De rekenmachine heeft de atoomgewichten van waterstof en chloor bij elkaar opgeteld. In de bovenstaande reactievergelijking staat de coëfficiënt 2 voor waterstofchloride. Daarom klikken we met de linkermuisknop op het veld reagent2. Het moleculaire gewicht wordt verdubbeld (bij dubbele klikken verdrievoudigd, enz.). De tekst in het veld reagent2 verandert in: “Tweede reagens 2HCl 72.916 vind x”.
Druk op Enter op het toetsenbord van de computer. De invoer van het tweede reagens is voltooid, en de rekenmachine vindt x uit de verhouding

Wat gevonden moest worden.
Note 1. De betekenis van de verkregen verhouding: om 100.086 kalk op te lossen is 72.916 Da zuur nodig, en om 10 g kalk op te lossen is x zuur nodig.
Note 2. Verzamelbundels met vergelijkbare taken:
Homchenko I.G., Verzamelbundel met taken en oefeningen in chemie 2009 (klassen 8-11).
Homchenko G.P., Homchenko I.G., Verzamelbundel met taken in chemie voor toelating tot universiteiten, 2019.
Opmerking 3. Om de taak te vereenvoudigen, kan men in de beginversie het invoeren van de formule vereenvoudigen en simpelweg het symbool van het element aan het einde van de formule toevoegen. Dan zal de formule van calciumcarbonaat eruit zien als:
CaCOOO
Maar zo'n notatie zal waarschijnlijk niet in de smaak vallen bij de chemieleraar. De juiste notatie is niet moeilijk te maken — hiervoor moet men een array toevoegen:
formula : array [1..size] of integer;waarbij de index het nummer van het chemische element is en de waarde op deze index het aantal atomen is (aanvankelijk worden alle elementen van de array op nul gezet). Het is belangrijk om de volgorde van de atomen in de formule te respecteren, zoals gebruikelijk in de chemie. Bijvoorbeeld, O3CaC zal ook niet veel mensen aanspreken. Laten we de verantwoordelijkheid bij de gebruiker leggen. We maken een array:
formulaOrder : array [1..size] of integer; // we kunnen het korter makenwaar we het nummer van het chemische element schrijven naar de index van zijn verschijning in de formule. Atomaal toevoegen currNo aan de formule:
if formula [currNo]=0 then // dit atoom kwam voor het eerst voor
begin
orderIndex := orderIndex+1; // aan het begin van het invoeren van de formule is orderIndex=0
formulaOrder [orderIndex] := currNo;
end;
formula [currNo]:=formula [currNo]+1;De formule opschrijven als een string:
s := ''; // lege string voor de formule
for i:=1 to orderIndex do // voor alle chemische symbolen in de formule
begin
s:=s+TableSymbols [ formulaOrder[i]]; // chemisch symbool toevoegen
if formula [formulaOrder[i]]1 then // aantal atomen toevoegen
s:=s+ intToStr(formula [formulaOrder[i]]);
end;
Opmerking 4. Het is zinvol om de mogelijkheid van alternatieve invoer van de reagent-formule via het toetsenbord te waarborgen. In dat geval moet een eenvoudige parser worden geïmplementeerd.
Het is vermeldenswaard dat:
Vandaag de dag zijn er enkele honderden varianten van de tabel, terwijl wetenschappers steeds nieuwe varianten voorstellen. ()
Leerlingen kunnen ook hun vindingrijkheid in deze richting tonen door een van de reeds voorgestelde varianten te implementeren of te proberen hun eigen origineel te maken. Het kan lijken dat dit de minst nuttige richting is voor informatica-lessen. Echter, in de vorm van de Periodieke tabel die in dit artikel is geïmplementeerd, kunnen sommige leerlingen de bijzondere voordelen van de beheerskaarten ten opzichte van de alternatieve oplossing met standaardknoppen niet opmerken. TButton. De spiraalvormige tabel (waarbij de cellen van verschillende vormen zijn) laat de voordelen van de hier voorgestelde oplossing beter zien.

(, )
Laten we ook toevoegen dat een aantal bestaande computerprogramma's voor de Periodieke Tafel recentelijk op Habr is besproken. .
Aanvulling 2: voorbeeldproblemen voor filtersMet filters kunnen bijvoorbeeld zulke problemen worden opgelost:
1) Alle elementen in de tabel markeren die bekend waren in de middeleeuwen.
2) Alle elementen markeren die bekend waren op het moment van de ontdekking van de Periodieke wet.
3) Identificeer zeven elementen die alchemisten als metalen beschouwden.
4) Identificeer alle elementen die bij normale omstandigheden (n.u.) in gasvorm zijn.
5) Identificeer alle elementen die bij n.u. in vloeibare toestand zijn.
6) Identificeer alle elementen die bij n.u. in vaste toestand zijn.
7) Identificeer alle elementen die langdurig aan de lucht kunnen worden blootgesteld zonder merkbare veranderingen bij n.u.
8) Identificeer alle metalen die oplossen in zoutzuur.
9) Identificeer alle metalen die oplossen in zwavelzuur bij n.u.
10) Identificeer alle metalen die oplossen in zwavelzuur bij verhitting.
11) Identificeer alle metalen die oplossen in salpeterzuur.
12) Identificeer alle metalen die heftig reageren met water bij n.u.
13) Identificeer alle metalen.
14) Identificeer elementen die wijdverspreid zijn in de natuur.
15) Identificeer elementen die in de natuur in vrije toestand voorkomen.
16) Identificeer elementen die een cruciale rol spelen in het menselijk lichaam en dat van dieren.
17) Identificeer elementen die veel worden gebruikt in het dagelijks leven (in vrije toestand of in verbindingen).
18) Identificeer elementen waarmee het werken het meest gevaarlijk is en speciale maatregelen en bescherming vereist.
19) Identificeer elementen die in vrije toestand of in verbindingen de grootste bedreiging voor het milieu vormen.
20) Identificeer edele metalen.
21) Identificeer elementen die duurder zijn dan edele metalen.
Opmerkingen
1) Het is zinvol om de werking van verschillende filters te waarborgen. Bijvoorbeeld, als je de filter voor taak 1 (alle elementen bekend in de middeleeuwen) en 20 (edele metalen) inschakelt, zullen (bijvoorbeeld met kleur) de cellen met edele metalen die in de middeleeuwen bekend waren gemarkeerd worden (bijvoorbeeld palladium dat in 1803 werd ontdekt, zal niet worden gemarkeerd).
2) Het is zinvol om ervoor te zorgen dat meerdere filters werken in een modus waarin elk filter cellen in zijn kleur markeert, maar de markering van een ander filter niet volledig verwijdert (een deel van de cel in de ene kleur, een deel in de andere). Dan zullen in het geval van het eerdere voorbeeld de elementen van de intersectie tussen de verzamelingen van de middeleeuwen en edelmetalen zichtbaar zijn, evenals de elementen die alleen tot de eerste of alleen tot de tweede verzameling behoren. Dat is, edelmetalen die onbekend waren in de middeleeuwen, en elementen die bekend waren in de middeleeuwen maar geen edelmetalen zijn.
3) Het is zinvol om na het toepassen van een filter de mogelijkheid te bieden voor andere handelingen met de verkregen resultaten. Bijvoorbeeld, door elementen te markeren die bekend zijn in de middeleeuwen, kan de gebruiker met de linkermuisklik op de gemarkeerde element klikken en in het Wikipedia-artikel over dat element terechtkomen.
4) Het is zinvol om de gebruiker in staat te stellen een markering op te heffen door met de linkermuisklik op de gemarkeerde cel in de tabel te klikken. Bijvoorbeeld, om al bekeken elementen te verwijderen.
5) Het is zinvol om de lijst van gemarkeerde cellen op te slaan in een bestand en dat bestand te laden met automatische markering van de cellen. Dit biedt de gebruiker de mogelijkheid om een pauze in het werk te nemen.
We gebruikten een statische, vooraf gedefinieerde controlemap, maar er zijn veel belangrijke taken waarbij dynamische controlekaarten gebruikt kunnen worden, die wijzigen tijdens de werking van het programma. Een voorbeeld kan een grafeneditor zijn, waarin de gebruiker met de muis de posities van de knooppunten in het venster aangeeft en lijnen tussen deze knooppunten tekent. Om een knooppunt of lijn te verwijderen, moet de gebruiker er naar wijzen. Maar hoewel het vrij eenvoudig is om naar een knooppunt, aangeduid met een cirkel, te wijzen, zal het moeilijker zijn om naar een lijn, getekend met een dunne lijn, te wijzen. Hier komt de controlemap van pas, waar de knooppunten en lijnen een groter bereik innemen dan op de zichtbare tekening.
Een interessante nevenvraag die verband houdt met de aangeroerde methode van complex leren, is of deze methode nuttig kan zijn bij het opleiden van AI.
Bron: habr.com
