Det periodiske system i skole-informatik

(Styringskort)
(Viet til den Internationale Dag for det Periodiske System af Kemi Elementer)
(De seneste opdateringer blev lavet den 8. april 2019. Listen over opdateringer lige under indholdet)

Det periodiske system i skole-informatik
(Mendeleevs Blomst, Kilde)

Jeg husker, at vi gennemgik en and. Det var tre lektioner på én gang: geografi, naturvidenskab og dansk. I naturvidenskab blev anden studeret som and — hvordan dens vinger ser ud, hvilke ben den har, hvordan den svømmer osv. I geografi blev den samme and analyseret som indbygger på kloden: vi skulle vise på kortet, hvor den lever, og hvor den ikke lever. På dansk lærte Serafiga Petrovna os at skrive "a-n-d" og læste noget om ænder fra Bremen. I forbifarten fortalte hun os, at på tysk hedder and sådan, og på fransk sådan. Det føltes som, at det dengang blev kaldt "den komplekse metode". I det hele taget kom alt "forbi".

Veniamin Kavерин, To kaptajner

I det citerede udsagn viste Veniamin Kavерин mesterligt manglerne ved den komplekse læringsmetode, men i nogle (måske sjældne) tilfælde kan elementer af denne metode være berettigede. Et af disse tilfælde er D.I. Mendeleevs Periodiske Tabel i grundskolens undervisning i informatik. Opgaven med automatisk programlægning af standardhandlinger med Mendeleevs tabel er åbenlys for elever, der er begyndt at studere kemi, og er opdelt i mange standard kemiske opgaver. Samtidig giver denne opgave inden for informatik en enkel måde at demonstrere metoden med styringskort, som kan betragtes som grafisk programmering, forstået i bred forstand som programmering ved hjælp af grafiske elementer.

(Opdateringer lavet den 8. april 2019:
Opdatering 1: hvordan kemisk lommeregner fungerer
Opdatering 2: eksempler på opgaver til filtre)

Lad os starte med en grundopgave. I den enkleste form skal det Periodiske System vises på skærmen i et vindue, hvor hvert felt viser den kemiske betegnelse for elementet: H - hydrogens, He - helium osv. Hvis musens cursor peger på feltet, vises elementets betegnelse og nummer i et særligt felt i vores vindue. Hvis brugeren klikker med venstre museknap, vises betegnelsen og nummeret på det valgte element i et andet felt i vinduet.

Det periodiske system i skole-informatik

Opgaven kan løses ved hjælp af ethvert universelt programmeringssprog. Vi tager den gammeldags Delphi-7, som næsten alle forstår. Men før vi programmerer i programmeringssproget, skal vi tegne to billeder, for eksempel i Photoshop. Først tegner vi det Periodiske System i den form, som vi ønsker at se det i programmet. Vi gemmer resultatet i en grafisk fil. table01.bmp.

Det periodiske system i skole-informatik

Til det andet billede bruger vi det første. Vi vil gradvist farvelægge de områder af tabellen, der er renset for diverse grafikker, med unikke farver i RGB-farvemodellen. R og G vil altid være 0, mens B=1 for hydrogen, 2 for helium osv. Dette billede bliver vores kontrolkort, som vi gemmer i filen med navnet. table2.bmp.

Det periodiske system i skole-informatik

Den første fase af grafisk programmering i Photoshop er afsluttet. Lad os gå videre til grafisk programmering af GUI i Delphi-7 IDE. For dette åbner vi et nyt projekt, hvor vi placerer en knap til at åbne dialogboksen (tableDlg), hvor arbejdet med tabellen vil finde sted. Vi arbejder derefter med formularen. tableDlg.

På formularen placerer vi en komponent af klassen TImage. Vi får Image1. Bemærk, at det generelt set for større projekter er auto-genererede navne af typen ImageN, hvor N kan nå op på flere titalls og derover — det er ikke den bedste programmeringsstil, og man bør give mere meningsfulde navne. Men i vores lille projekt, hvor N ikke vil overstige 2, kan vi lade det være som det er genereret.

I egenskaben Image1.Picture indlæser vi filen table01.bmp. Opretter Image2 og indlæser vores kontrolkort der. table2.bmpVi gør filen lille og usynlig for brugeren, som vist i nederste venstre hjørne af formularen. Vi tilføjer yderligere kontrolelementer, hvis funktioner er åbenlyse. Den anden fase af grafisk programmering af GUI i Delphi-7 IDE er afsluttet.

Det periodiske system i skole-informatik

Vi går videre til den tredje fase — kodning i Delphi-7 IDE. Modulet består kun af fem hændelsesbehandlere: oprettelse af formularen (FormCreate), musebevægelser over Image1 (Image1MouseMove), venstreklik på feltet (Image1Click) og afslutning af dialogboksen ved hjælp af knapperne OK (OKBtnClick) eller Annuller (CancelBtnClick). Overskrifterne for disse behandlere genereres på standard måde ved hjælp af IDE.

Kildekoden for modulet:

unit tableUnit;
// Det Periodiske System af Kemiske Elementer D.I. Mendelejev
//
// third112
// https://habr.com/ru/users/third112/
//
// Indholdsfortegnelse
// 1) Oprettelse af formular
// 2) Arbejde med tabellen: angivelse og valg
// 3) Afslutning af dialog

interface

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

const
 size = 104; // antal elementer
 
type
 TtableDlg = class(TForm)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    Image1: TImage;  // tabel over kemiske elementer
    Label1: TLabel;
    Image2: TImage;  // styremappe
    Label2: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject); // oprettelse af formular
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);                        // angivelse af celle
    procedure Image1Click(Sender: TObject); // valg af celle
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelBtnClick(Sender: TObject); // Annuller
  private
    { Private declarations }
    TableSymbols : array [1..size] of string [2]; // array til symboler for elementer
  public
    { Public declarations }
    selectedElement : string; // valgte element
    currNo : integer;         // nuværende nummer for element
  end;

var
  tableDlg: TtableDlg;

implementation

{$R *.dfm}

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

// oprettelse af formular  ==================================================

procedure TtableDlg.FormCreate(Sender: TObject);
// oprettelse af formular
var
  s : string;
  i,j : integer;
begin
  currNo := 0;
// initialisering af array til symbols for elementer:
  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 ____________________________________________________

// arbejde med tabellen: angivelse og valg =========================================

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// angivelse af celle
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 := 'Vælg element:';
end; // Image1MouseMove   ____________________________________________________

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

// afslutning af dialog  ==================================================

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

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

end.

I vores version har vi taget en tabel med 104 elementer (konstant størrelse). Det er åbenlyst, at denne størrelse kan øges. Betegnelserne for elementerne (kemi symboler) skrives i en array TableSymbols. Men af hensyn til kompakthed i kildekoden synes det fornuftigt at skrive sekvensen af disse betegnelser som strengekonstanter PeriodicTableStr1,…, PeriodicTableStr4, så programmet selv ved oprettelsen af formularen kan fordele disse betegnelser i elementerne i arrayet. Hver betegnelse for et element består af en eller to latinske bogstaver, hvor den første bogstav er stort, og den anden (hvis den findes) er lille. Denne enkle regel implementeres ved indlæsningen af arrayet. Således kan sekvensen af betegnelser skrives komprimeret uden mellemrum. Opdelingen af sekvensen i fire dele (konstanter PeriodicTableStr1,…, PeriodicTableStr4) er baseret på hensynet til læsbarhed af kildekoden, da en for lang streng muligvis ikke kan vises fuldt ud på skærmen.

Ved begivenheden for, at musens cursor bevæger sig over Image1 behandler Image1MouseMove denne begivenhed bestemmer værdien af den blå komponent af farven på pixelkortet Image2 for de aktuelle koordinater for cursoren. Som konstrueret Image2 er denne værdi lig med elementnummeret, hvis cursoren er inden for cellen; nul, hvis den er på grænsen, og 255 i andre tilfælde. De øvrige handlinger, som programmet udfører, er trivielle og kræver ingen forklaring.

Ud over de nævnte stilistiske greb i programmering er det værd at bemærke stilarten af kommentarer. Strengt taget er den betragtede kode så lille og simpel, at kommentarer ikke virker særlig nødvendige. Men de blev tilføjet også af metodiske grunde - kort kode muliggør nogle generelle konklusioner. I den præsenterede kode er der erklæret en klasse (TtableDlg). Metoderne i denne klasse kan flyttes rundt, og det vil ikke påvirke programmets funktionalitet, men kan have indflydelse på læsbarheden. For eksempel, forestil dig sekvensen:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Det er måske ikke særlig mærkbart, men det bliver en smule sværere at læse og forstå. Hvis der ikke er fem metoder, men ti gange så mange, og i sektionen implementation De har en helt anden rækkefølge end i beskrivelsen af klasserne, så kaosset vil kun blive større. Derfor, selvom det er svært at bevise strengt og måske endda umuligt, kan man håbe, at tilføjelsen af yderligere orden vil forbedre læsbarheden af koden. Denne ekstra orden fremmes af den logiske gruppering af flere metoder, der udfører nært beslægtede opgaver. Hver gruppe bør gives en overskrift, for eksempel:

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

Disse overskrifter bør kopieres til starten af modulet og formateres som et indholdsfortegnelse. I nogle tilfælde med lange moduler giver sådanne indholdsfortegnelser ekstra navigationsmuligheder. Ligeledes i en lang krop af en metode, procedure eller funktion bør man, for det første, markere slutningen af denne krop:

end; // FormCreate

og, for det andet, i forgreninger med programmeringsklammerne begin – end skal man markere den sætning, som den lukkende klamme tilhører:

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

For at fremhæve overskrifterne for grupper og slutningerne af metodernes kroppe kan man tilføje linjer, der overstiger længden af de fleste sætninger og består for eksempel af tegnene «=» og «_» henholdsvis.
Endnu en gang skal det bemærkes: vi har et alt for simpelt eksempel. Og når koden for metoden ikke kan vises på én skærm, kan det være vanskeligt at finde ud af de seks efterfølgende end for at lave ændringer i koden. I nogle gamle compilere, for eksempel Pascal 8000 til OS IBM 360/370, blev der trykt en servicekolonne til venstre i opstillingen, der så således ud

B5
…
E5

Dette betød, at den lukket programmeringsklamme på række E5 svarer til den åbne klamme på række B5.

Selvfølgelig er programmeringsstil et meget tvetydigt spørgsmål, så de ideer, der fremlægges her, bør betragtes som information til eftertænksomhed. To erfarne programmører, der gennem mange års arbejde har udviklet og vænnet sig til forskellige stilarter, kan have svært ved at blive enige. En anden sag er den studerende, der lærer at programmere, og som endnu ikke har haft tid til at udvikle sin egen stil. Jeg mener, at underviseren i dette tilfælde bør formidle den enkle, men for dem ikke åbenlyse tanke, at succesen med et program i høj grad afhænger af den stil, som kildekoden er skrevet i. Eleven kan vælge ikke at følge den anbefalede stil, men lad dem i det mindste overveje nødvendigheden af "unødvendige" handlinger for at forbedre udformningen af kildekoden.

Når vi vender tilbage til vores grundlæggende opgave med det Periodiske System: den videre udvikling kan tage forskellige retninger. En af retningerne er funktionalitet: ved at føre musen over feltet i tabellen vises en informationsboks, der indeholder yderligere oplysninger om det nævnte element. En videre udvikling - filtre. For eksempel vil der afhængigt af indstillingen i informationsboksen kun være: de vigtigste fysik-kemiske oplysninger, information om opdagelseshistorikken, information om naturlig forekomst, en liste over de vigtigste forbindelser (som dette element indgår i), fysiologiske egenskaber, navnet på fremmedsprog osv. Hvis vi husker Kaverins "and", som denne artikel begynder med, kan vi sige, at med en sådan udvikling af programmet får vi et komplet undervisningskompleks inden for naturvidenskaberne: udover informatik, fysik og kemi - biologi, økonomisk geografi, videnskabshistorie og endda fremmedsprog.

Men en lokal database er ikke grænsen. Programmet tilslutter sig naturligt internettet. Ved valg af element aktiveres et link, og en artikel fra Wikipedia om det pågældende element åbnes i webbrowseren. Wikipedia er, som bekendt, ikke en autoritativ kilde. Man kan henvise til autoritative kilder, såsom en kemisk encyklopædi, BSE, referencetidsskrifter, bestille søgninger i søgemaskiner om dette element osv. På denne måde kan eleverne udføre enkle, men indholdsrige opgaver om emner som DBMS og internettet.

Udover forespørgsler om en enkelt komponent kan vi lave en funktion, der f.eks. vil markere celler i tabellen med forskellige farver, der svarer til bestemte kriterier. For eksempel, metaller og ikke-metaller. Eller celler, som et lokalt kemisk fabrik spilder i vandområder.

Det er også muligt at implementere funktioner til en notesbog-organisator. For eksempel at fremhæve i tabellen de elementer, der indgår i eksamen. Derefter markere elementer, som eleven har studeret/repetert i forberedelsen til eksamen.

Her er et eksempel på en typisk opgave i skolekemi:

Givet 10 g kridt. Hvor meget saltsyre skal der bruges for at opløse alt dette kridt?

For at løse denne opgave skal vi skrive den kemiske reaktion og placere koefficienterne korrekt, beregne de molekylære vægte af calciumcarbonat og saltsyre, og derefter oprette og løse en proportion. En calculator baseret på vores grundlæggende program vil kunne beregne og løse det. Det er dog også vigtigt at tage højde for, at syren skal tages med en rimelig overskud og i en rimelig koncentration, men det er kemi og ikke informatik.
Opdatering 1: hvordan kemisk lommeregner fungererLad os gennemgå calculatorens arbejde ved hjælp af det ovenfor nævnte eksempel med kridt og 'saltsyre'. Vi starter med reaktionen:

CaCO3 + 2HCl = CaCl2 + H2O

Her ser vi, at vi har brug for de atomare vægte af følgende elementer: calcium (Ca), carbon (C), oxygen (O), hydrogen (H) og chlorine (Cl). I den simpleste form kan vi skrive disse vægte i et en-dimensionelt array, som er defineret som

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

hvor array-indekset svarer til elementets nummer. Derudover placerer vi i det frie område af formularen tableDlg to felter. I det første felt står der oprindeligt: 'Første reaktant givet', i det andet — 'Anden reaktant find x'. Vi betegner felterne reagent1, reagent2 henholdsvis. Andre tilføjelser til programmet vil blive tydelige fra det næste eksempel på calculatorens arbejde.

Vi skriver på computerens tastatur: 10 g. Teksten i feltet reagent1 ændres: 'Første reaktant givet 10 g'. Nu indtaster vi formlen for denne reaktant, og calculatoren vil beregne og vise dens molekylære vægt i takt med indtastningen.

Vi klikker med venstre museknap på cellen i tabellen med symbolet Ca. Teksten i feltet reagent1 ændres: 'Første reaktant Ca 40.078 givet 10 g'.

Vi klikker med venstre museknap på cellen i tabellen med symbolet C. Teksten i feltet reagent1 ændres: 'Første reaktant CaC 52.089 givet 10 g'. Det vil sige, at calculatoren har lagt de atomare vægte af calcium og carbon sammen.

Klik på cellen i tabellen med symbolet O. Teksten i feltet reagent1 ændres til: "Første reaktant CaCO 68.088 givet 10 g". Lommeregneren har tilføjet atomvægten for ilt til summen.

Klik på cellen i tabellen med symbolet O. Teksten i feltet reagent1 ændres til: "Første reaktant CaCO2 84.087 givet 10 g". Lommeregneren har igen tilføjet atomvægten for ilt til summen.

Klik på cellen i tabellen med symbolet O. Teksten i feltet reagent1 ændres til: "Første reaktant CaCO3 100.086 givet 10 g". Lommeregneren har endnu en gang tilføjet atomvægten for ilt til summen.

Tryk på Enter-tasten på computertastaturet. Indtastningen af den første reaktant er afsluttet, og der skiftes til feltet reagent2. Det skal bemærkes, at vi i dette eksempel præsenterer en minimalt version. Hvis ønskes, kan man nemt organisere multiplikatorer for atomer af én type, så man for eksempel ikke behøver at klikke syv gange på iltcellen ved indtastning af formlen for chromater (K2Cr2O7).

Klik på cellen i tabellen med symbolet H. Teksten i feltet reagent2 ændres til: "Anden reaktant H 1.008 find x".

Klik på cellen i tabellen med symbolet Cl. Teksten i feltet reagent2 ændres til: "Anden reaktant HCl 36.458 find x". Lommeregneren har lagt atomvægtene for hydrogen og klor sammen. I den tidligere nævnte reaktionsligning står der en koefficient 2 før hydrogenchlorid. Derfor klikker vi på feltet reagent2. Molekylvægten fordobles (ved dobbeltklik tredobles osv.). Teksten i feltet reagent2 ændres til: "Anden reaktant 2HCl 72.916 find x".

Tryk på Enter-tasten på computertastaturet. Indtastningen af den anden reaktant er afsluttet, og lommeregneren finder x fra proportionen

Det periodiske system i skole-informatik

Som var nødvendigt at finde.

Bemærk 1. Meningen med den opnåede proportion: for at opløse 100.086 Da gips er der behov for 72.916 Da syre, og for at opløse 10 g gips er der behov for x syre.

Bemærk 2. Samlinger af lignende opgaver:

Khomenko I. G., Opgavesamling og øvelser i kemi 2009 (8-11 klasse).
Khomenko G. P., Khomenko I. G., Opgavesamling i kemi til studerende, der ansøger om optagelse på universiteter, 2019.

Note 3. For at forenkle opgaven kan man i den indledende version forenkle indtastningen af formlen og blot tilføje elementets symbol til slutningen af formellinjen. Så ville formlen for calciumkarbonat være:
CaCOOO
Men en sådan notation vil næppe glæde kemiunderviseren. At lave den korrekte notation er ikke svært — det kræver blot at tilføje et array:

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

hvor indekset – er nummeret på det kemiske element, og værdien ved dette indeks – er antallet af atomer (oprindeligt nulstilles alle elementer i arrayet). Det er vigtigt at tage hensyn til rækkefølgen af atomerne i formelen, som den er fastsat i kemien. For eksempel vil O3CaC også næppe have bred appel. Lad os overføre ansvaret til brugeren. Vi laver et array:

 formulaOrder : array [1..size] of integer; // det kan gøres kortere

hvor vi skriver nummeret på det kemiske element efter dets indeks i formelen. Tilføjelse af atom currNo til formelen:

if formula [currNo]=0 then // dette atom er set første gang
 begin
 orderIndex := orderIndex+1; // i starten af indtastningen af formelen er orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
formula [currNo]:=formula [currNo]+1;

Registrering af formelen i en streng:

s := ''; // tom streng til formelen
for i:=1 to  orderIndex do // for alle kemiske symboler i formelen 
 begin
 s:=s+TableSymbols [ formulaOrder[i]]; // tilføjer kemisk symbol
 if formula [formulaOrder[i]]1 then //tilføj antal atomer
  s:=s+ intToStr(formula [formulaOrder[i]]);
 end;

Bemærkning 4. Det giver mening at sikre muligheden for alternativt input af reagents formel via tastaturet. I så fald skal der implementeres en simpel syntaktisk analysator.

Det er værd at bemærke, at:

I dag findes der flere hundrede varianter af tabellen, og forskere foreslår hele tiden nye varianter. (Wikipedia)

Eleverne kan vise opfindsomhed i denne retning ved at implementere en af de allerede foreslåede varianter eller prøve at lave deres originale. Det kan synes, at dette er den mindst nyttige retning for informatiklektioner. Men i den form for den Periodiske tabel, der er præsenteret i denne artikel, kan nogle elever ikke se de særlige fordele ved styringskort i forhold til en alternativ løsning ved hjælp af standard knapper TButton. Den spiralformede tabel (hvor cellerne har forskellige former) vil mere tydeligt demonstrere fordelene ved den løsning, der her foreslås.

Det periodiske system i skole-informatik
(Den alternative element system af Theodore Benfey, Kilde)

Vi skal også tilføje, at der for et antal eksisterende computerprogrammer til Periodisk Tabel er blevet skrevet om i en nylig offentliggjort artikel på Habré artikel.

Tillæg 2: eksempler på opgaver for filtreMed filtre kan man løse for eksempel sådanne opgaver:

1) Udspecificere i tabellen alle elementer, der var kendt i middelalderen.

2) Udspecificere alle elementer, der var kendt på tidspunktet for opdagelsen af den Periodiske lov.

3) Identificer de syv grundstoffer, som alkymisterne betragtede som metaller.

4) Identificer alle grundstoffer, der er i gasform ved normale forhold (n.u.).

5) Identificer alle grundstoffer, der er i flydende tilstand ved n.u.

6) Identificer alle grundstoffer, der er i fast tilstand ved n.u.

7) Identificer alle grundstoffer, der kan forblive eksponeret for luft i lang tid uden mærkbare ændringer ved n.u.

8) Identificer alle metaller, der opløses i saltsyre.

9) Identificer alle metaller, der opløses i svovlsyre ved n.u.

10) Identificer alle metaller, der opløses i svovlsyre ved opvarmning.

11) Identificer alle metaller, der opløses i salpetersyre.

12) Identificer alle metaller, der reagerer kraftigt med vand ved n.u.

13) Identificer alle metaller.

14) Identificer grundstoffer, der er almindeligt forekommende i naturen.

15) Identificer grundstoffer, der findes i naturen i fri tilstand.

16) Identificer grundstoffer, der spiller en vigtig rolle i menneskets og dyrs organisme.

17) Identificer grundstoffer, der bruges bredt i husholdningen (i fri form eller i forbindelser).

18) Identificer grundstoffer, hvis arbejde er mest farligt og kræver særlige sikkerhedsforanstaltninger.

19) Identificer grundstoffer, der i fri form eller i form af forbindelser udgør den største trussel mod miljøet.

20) Identificer ædelmetaller.

21) Identificer grundstoffer, der koster mere end ædelmetaller.

Noter

1) Det giver mening at sikre drift af flere filtre. For eksempel, hvis man aktiverer filteret til løsning af opgave 1 (alle grundstoffer kendt i middelalderen) og 20 (ædelmetaller), vil celler med ædelmetaller kendt i middelalderen blive markeret (for eksempel med farve) (palladium, der blev opdaget i 1803, vil ikke blive markeret).

2) Det giver mening at muliggøre, at flere filtre fungerer på en sådan måde, at hvert filter markerer celler med sin egen farve, men ikke fuldstændigt fjerner markeringen fra et andet filter (en del af cellen med en farve, en del med en anden). Så i tilfældet med det tidligere eksempel vil elementerne i skæringspunktet mellem de åbne mængder i middelalderen og ædle metaller være synlige, samt elementer, der kun tilhører den første og kun den anden mængde. Dvs. ædle metaller, der ikke var kendt i middelalderen, og elementer, der var kendt i middelalderen, men ikke var ædle metaller.

3) Det giver mening efter anvendelse af filteret at muliggøre andre handlinger med de opnåede resultater. For eksempel, når man har markeret elementer, der var kendt i middelalderen, kan brugeren klikke med venstre museknap på det markerede element og blive sendt til artiklen på Wikipedia om dette element.

4) Det giver mening at muliggøre for brugeren at fjerne markeringen ved at klikke med venstre museknap på den markerede celle i tabellen. For eksempel for at fjerne allerede gennemgåede elementer.

5) Det giver mening at sikre, at listen over markerede celler gemmes i en fil, og at en sådan fil kan indlæses med automatisk markering af cellerne. Dette vil give brugeren mulighed for at tage en pause fra arbejdet.

Vi har brugt et statisk foruddefineret kontrolkort, men der er mange vigtige opgaver, hvor dynamiske kontrolkort, der ændrer sig under programmets drift, kan anvendes. Et eksempel kan være en grafredigerer, hvor brugeren med musen angiver placeringen af noderne i vinduet og tegner kanter mellem dem. For at slette en node eller en kant, skal brugeren pege på den. Men hvis det er relativt let at pege på en node, der er markeret med en cirkel, er det vanskeligere at pege på en kant, der er tegnet med en tynd linje. Her kan et kontrolkort hjælpe, hvor noder og kanter dækker et område, der er bredere end det, der ses i tegningen.

Det berørte metode for kompleks læring rejser et interessant biproduktsspørgsmål: Kan denne metode være nyttig ved træning af AI?

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster