Periodiek systeem voor computerwetenschappen op scholen

(Controlekaarten)
(Opgedragen aan het Internationale Jaar van het Periodiek Systeem van Chemische Elementen)
(De laatste toevoegingen zijn gedaan op 8 april 2019. De lijst met toevoegingen staat direct onder de snit)

Periodiek systeem voor computerwetenschappen op scholen
(De bloem van Mendelejev, Bron)

Ik herinner me dat we de eend passeerden. Dit waren drie lessen tegelijk: aardrijkskunde, natuurwetenschappen en Russisch. In een wetenschapsles werd een eend bestudeerd als een eend, welke vleugels hij heeft, welke poten hij heeft, hoe hij zwemt, enzovoort. In een aardrijkskundeles werd dezelfde eend bestudeerd als een inwoner van de wereld: het was nodig om op een kaart te laten zien waar hij leeft en waar niet. In het Russisch leerde Serafima Petrovna ons “u-t-k-a” te schrijven en iets te lezen over eenden uit Brem. Terloops vertelde ze ons dat eend in het Duits zo is, en in het Frans zo. Ik denk dat het destijds de ‘complexe methode’ werd genoemd. Over het algemeen kwam alles ‘terloops’ uit.

Veniamin Kaverin, Twee kapiteins

In het bovenstaande citaat liet Veniamin Kaverin op meesterlijke wijze de tekortkomingen van de complexe lesmethode zien, maar in sommige (misschien vrij zeldzame) gevallen zijn elementen van deze methode gerechtvaardigd. Een voorbeeld van zo'n geval is het periodiek systeem van D.I. Mendelejev in computerwetenschappenlessen op school. De taak van software-automatisering van typische acties met het periodiek systeem is duidelijk voor schoolkinderen die scheikunde zijn gaan studeren, en is onderverdeeld in veel typische chemische problemen. Tegelijkertijd stelt deze taak ons ​​in het kader van de informatica in staat om in een eenvoudige vorm de methode van controlekaarten te demonstreren, die kan worden toegeschreven aan grafische programmering, opgevat in de brede zin van het woord als programmeren met behulp van grafische elementen.

(8 april 2019 toevoegingen gemaakt:
Addendum 1: Hoe de scheikundecalculator werkt
Bijlage 2: voorbeelden van taken voor filters)

Laten we beginnen met de basistaak. In het eenvoudigste geval moet het periodiek systeem in een venstervorm op het scherm worden weergegeven, waarbij in elke cel een chemische aanduiding van het element staat: H - waterstof, He - helium, enz. Als de muiscursor naar een cel wijst, worden de aanduiding van het element en het nummer ervan weergegeven in een speciaal veld op ons formulier. Als de gebruiker op LMB drukt, worden de aanduiding en het nummer van dit geselecteerde element weergegeven in een ander veld van het formulier.

Periodiek systeem voor computerwetenschappen op scholen

Het probleem kan worden opgelost met behulp van elke universele taal. We nemen de eenvoudige oude Delpi-7, die voor bijna iedereen begrijpelijk is. Maar laten we, voordat we in PL gaan programmeren, twee afbeeldingen maken, bijvoorbeeld in Photoshop. Laten we eerst het periodiek systeem tekenen in de vorm die we in het programma willen zien. Sla het resultaat op in een grafisch bestand tabel01.bmp.

Periodiek systeem voor computerwetenschappen op scholen

Voor de tweede tekening gebruiken we de eerste. We zullen de tabelcellen opeenvolgend vullen, ontdaan van alle afbeeldingen, met unieke kleuren in het RGB-kleurmodel. R en G zullen altijd 0 zijn, en B=1 voor waterstof, 2 voor helium, enz. Deze tekening zal onze controlekaart zijn, die we zullen opslaan in een bestand met de naam tabel2.bmp.

Periodiek systeem voor computerwetenschappen op scholen

De eerste fase van grafisch programmeren in Photoshop is voltooid. Laten we verder gaan met grafische GUI-programmering in de Delpi-7 IDE. Om dit te doen, opent u een nieuw project, waar we op het hoofdformulier een dialoogknop plaatsen (tabelDlg), waarin met de tafel wordt gewerkt. Vervolgens werken we met het formulier tabelDlg.

Plaats een klassecomponent op het formulier TAfbeelding... We krijgen Image1. Merk op dat over het algemeen voor grote projecten automatisch gegenereerde namen van het formulier worden gegenereerd AfbeeldingNWaar N kan enkele tientallen of meer bereiken - dit is niet de beste programmeerstijl en er moeten betekenisvollere namen worden gegeven. Maar in ons kleine project, waar N zal niet groter zijn dan 2, u kunt het laten zoals gegenereerd.

Naar eigendom Afbeelding 1. Afbeelding upload het bestand tabel01.bmp. We creëren Image2 en laad daar onze controlekaart tabel2.bmp. In dit geval maken we het bestand klein en onzichtbaar voor de gebruiker, zoals weergegeven in de linkerbenedenhoek van het formulier. We voegen extra bedieningselementen toe, waarvan het doel duidelijk is. De tweede fase van grafische GUI-programmering in de Delpi-7 IDE is voltooid.

Periodiek systeem voor computerwetenschappen op scholen

Laten we verder gaan met de derde fase: code schrijven in de Delpi-7 IDE. De module bestaat uit slechts vijf gebeurtenishandlers: formuliercreatie (FormulierCreëren), cursorbeweging Image1 (Image1MuisVerplaatsen), klik op LMB in een cel (Afbeelding1Klik) en verlaat het dialoogvenster met de OK-knoppen (OKBtnKlik) of Annuleren (AnnulerenBtnClick). De headers van deze handlers worden op een standaard manier gegenereerd met behulp van de IDE.

Modulebroncode:

unit tableUnit;
// Периодическая таблица химических элементов Д.И.Менделеева
//
// third112
// https://habr.com/ru/users/third112/
//
// Оглавление
// 1) создание формы
// 2) работа с таблицей: указание и выбор
// 3) выход из диалога

interface

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

const
 size = 104; // число элементов
 
type
 TtableDlg = class(TForm)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    Image1: TImage;  //таблица химических элементов
    Label1: TLabel;
    Image2: TImage;  //управляющая карта
    Label2: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject); // создание формы
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);                        // указание клетки
    procedure Image1Click(Sender: TObject); // выбор клетки
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelBtnClick(Sender: TObject); // Cancel
  private
    { Private declarations }
    TableSymbols : array [1..size] of string [2]; // массив обозначений элементов
  public
    { Public declarations }
    selectedElement : string; // выбранный элемент
    currNo : integer;         // текущий номер элемента
  end;

var
  tableDlg: TtableDlg;

implementation

{$R *.dfm}

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

// создание формы  ==================================================

procedure TtableDlg.FormCreate(Sender: TObject);
// создание формы
var
  s : string;
  i,j : integer;
begin
  currNo := 0;
// инициализация массива обозначений элементов:
  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 ____________________________________________________

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

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// указание клетки
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 := 'Select element:';
end; // Image1MouseMove   ____________________________________________________

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

// выход из диалога  ==================================================

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 met 104 elementen (constant grootte). Uiteraard kan deze maat vergroot worden. Elementaanduidingen (chemische symbolen) worden naar een array geschreven TabelSymbolen. Om redenen van compactheid van de broncode lijkt het echter raadzaam om de volgorde van deze notaties in de vorm van stringconstanten te schrijven PeriodiekTabelStr1, ..., PeriodiekTabelStr4zodat wanneer het formulier wordt gemaakt, het programma zelf deze aanduidingen over de elementen van de array verspreidt. Elke elementaanduiding bestaat uit een of twee Latijnse letters, waarbij de eerste letter een hoofdletter is en de tweede (indien aanwezig) een kleine letter. Deze eenvoudige regel wordt geïmplementeerd bij het laden van een array. Zo kan de reeks notaties op een beknopte manier zonder spaties worden geschreven. Een reeks opsplitsen in vier delen (constanten PeriodiekTabelStr1, ..., PeriodiekTabelStr4) is te wijten aan overwegingen van het gemak van het lezen van de broncode, omdat Een lijn die te lang is, past mogelijk niet helemaal op het scherm.

Wanneer de muiscursor over de Image1 behandelaar Image1MuisVerplaatsen deze gebeurtenis bepaalt de waarde van de blauwe kleurcomponent van de stuurkaartpixel Image2 voor de huidige cursorcoördinaten. Door constructie Image2 deze waarde is gelijk aan het elementnummer als de cursor zich in de cel bevindt; nul indien op de grens, en 255 in andere gevallen. De overige acties die door het programma worden uitgevoerd, zijn triviaal en behoeven geen uitleg.

Naast de hierboven genoemde stilistische programmeertechnieken, is het de moeite waard om de commentaarstijl te vermelden. Strikt genomen is de besproken code zo klein en eenvoudig dat commentaar niet bijzonder noodzakelijk lijkt. Ze zijn echter ook om methodologische redenen toegevoegd: de korte code stelt ons in staat enkele algemene conclusies duidelijker te maken. In de gepresenteerde code wordt één klasse gedeclareerd (TtabelDlg). Methoden van deze klasse kunnen worden uitgewisseld en dit heeft op geen enkele manier invloed op de werking van het programma, maar kan wel de leesbaarheid ervan beïnvloeden. Stel je bijvoorbeeld de reeks voor:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Het valt misschien niet erg op, maar het zal iets moeilijker worden om te lezen en te begrijpen. Als er niet vijf, maar tientallen keren meer methoden in de sectie zijn uitvoering hebben ze een heel andere volgorde dan in de klassenbeschrijvingen, dan wordt de chaos alleen maar groter. Hoewel het moeilijk is om dit strikt te bewijzen en misschien zelfs onmogelijk is, mag men daarom hopen dat het introduceren van extra orde de leesbaarheid van de code zal verbeteren. Deze extra volgorde wordt mogelijk gemaakt door de logische groepering van verschillende methoden die gerelateerde taken uitvoeren. Elke groep moet een titel krijgen, bijvoorbeeld:

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

Deze kopjes moeten naar het begin van de module worden gekopieerd en opgemaakt als een inhoudsopgave. In sommige gevallen van vrij lange modules bieden dergelijke inhoudsopgaven extra navigatiemogelijkheden. Op dezelfde manier is het in het lange lichaam van een methode, procedure of functie de moeite waard om eerst het einde van dit lichaam te markeren:

end; // FormCreate

en, ten tweede, markeer in vertakte instructies met programmahaakjes begin - end de instructie waarnaar de sluithaakje verwijst:

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

Om groepskoppen en de uiteinden van de methodeteksten te markeren, kunt u regels toevoegen die de lengte van de meeste operatoren overschrijden en bijvoorbeeld bestaan ​​uit respectievelijk de tekens “=” en “_”.
Opnieuw moeten we een voorbehoud maken: ons voorbeeld is te simpel. En wanneer de code van een methode niet op één scherm past, kan het moeilijk zijn om zes opeenvolgende wijzigingen in de code door te voeren. In sommige oude compilers, bijvoorbeeld Pascal 8000 voor OS IBM 360/370, werd een servicekolom zoals deze links in de lijst afgedrukt

B5
…
E5

Dit betekende dat het haakje sluiten op regel E5 overeenkwam met het haakje openen op regel B5.

Natuurlijk is de programmeerstijl een zeer controversieel onderwerp, dus de hier geuite ideeën moeten worden opgevat als niets meer dan stof tot nadenken. Het kan erg moeilijk zijn voor twee redelijk ervaren programmeurs, die gedurende vele jaren van werken verschillende stijlen hebben ontwikkeld en eraan gewend zijn geraakt, om tot overeenstemming te komen. Voor een leerling die leert programmeren en nog geen tijd heeft gehad om zijn eigen stijl te vinden, ligt dat anders. Ik denk dat de leraar in dit geval op zijn minst zo'n eenvoudig, maar niet voor de hand liggend idee aan zijn studenten moet overbrengen dat het succes van een programma grotendeels afhangt van de stijl waarin de broncode is geschreven. De student mag niet de aanbevolen stijl volgen, maar laat hem op zijn minst nadenken over de noodzaak van “extra” acties om het ontwerp van de broncode te verbeteren.

Terugkerend naar ons basisprobleem met betrekking tot het periodiek systeem: verdere ontwikkeling kan in verschillende richtingen gaan. Eén van de aanwijzingen is ter referentie: wanneer u de muiscursor over een tabelcel beweegt, verschijnt er een informatievenster met aanvullende informatie over het opgegeven element. Verdere ontwikkeling zijn filters. Afhankelijk van de installatie bevat het informatievenster bijvoorbeeld alleen: de belangrijkste fysische en chemische informatie, informatie over de geschiedenis van de ontdekking, informatie over de verspreiding in de natuur, een lijst met de belangrijkste verbindingen (waarin dit element is opgenomen), fysiologische eigenschappen, naam in een vreemde taal, enz. e. Als we de "eend" van Kaverin onthouden waarmee dit artikel begint, kunnen we zeggen dat we met deze ontwikkeling van het programma een compleet trainingscomplex in de natuurwetenschappen zullen krijgen: naast computer wetenschap, natuurkunde en scheikunde - biologie, economische geografie, geschiedenis van de wetenschap en zelfs vreemde talen.

Maar een lokale database is niet de limiet. Het programma maakt uiteraard verbinding met internet. Wanneer u een element selecteert, wordt de link geactiveerd en wordt het Wikipedia-artikel over dit element geopend in het webbrowservenster. Wikipedia is, zoals u weet, geen gezaghebbende bron. U kunt links instellen naar gezaghebbende bronnen, bijvoorbeeld chemische encyclopedie, TSB, abstracte tijdschriften, zoekopdrachten in zoekmachines voor dit element, enz. Dat. Studenten kunnen eenvoudige maar betekenisvolle opdrachten uitvoeren over DBMS- en internetonderwerpen.

Naast zoekopdrachten op een afzonderlijk element kunt u functionaliteit creëren waarmee u bijvoorbeeld cellen in de tabel die aan bepaalde criteria voldoen, met verschillende kleuren markeert. Bijvoorbeeld metalen en niet-metalen. Of cellen die door een plaatselijke chemische fabriek in waterlichamen worden gedumpt.

U kunt ook de functies van een notebook-organizer implementeren. Markeer in de tabel bijvoorbeeld de elementen die in het examen zijn opgenomen. Markeer vervolgens de elementen die de student heeft bestudeerd/herhaald ter voorbereiding op het examen.

En hier is bijvoorbeeld een van de typische scheikundeproblemen op school:

Gegeven 10 g krijt. Hoeveel zoutzuur moet er worden ingenomen om al dit krijt op te lossen?

Om dit probleem op te lossen, is het noodzakelijk om de chem op te schrijven. reactie en plaats de coëfficiënten erin, bereken de molecuulgewichten van calciumcarbonaat en waterstofchloride, stel vervolgens de verhouding samen en los deze op. Een rekenmachine gebaseerd op ons basisprogramma kan berekenen en oplossen. Het is waar dat je er nog steeds rekening mee moet houden dat het zuur in een redelijke overmaat en in een redelijke concentratie moet worden ingenomen, maar dit is scheikunde, geen informatica.
Addendum 1: Hoe de scheikundecalculator werktLaten we de werking van de rekenmachine analyseren aan de hand van het voorbeeld van het bovenstaande probleem van krijt en “mengelmoes”. Laten we beginnen met de reactie:

CaCO3 + 2HCl = CaCl2 + H2O

Hieruit zien we dat we de atoomgewichten van de volgende elementen nodig hebben: calcium (Ca), koolstof (C), zuurstof (O), waterstof (H) en chloor (Cl). In het eenvoudigste geval kunnen we deze gewichten in een eendimensionale array schrijven die is gedefinieerd als

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

waarbij de array-index overeenkomt met het elementnummer. Meer over de vrije ruimte van het formulier tabelDlg plaats twee velden. In het eerste veld staat aanvankelijk geschreven: "Het eerste reagens wordt gegeven", in het tweede - "Het tweede reagens is om x te vinden". Laten we de velden aanduiden reagens1, reagens2 respectievelijk. Andere toevoegingen aan het programma zullen duidelijk worden uit het volgende voorbeeld van de rekenmachine.

We typen op het toetsenbord van de computer: 10 g Inscriptie in het veld reagens1 verandert: “Het eerste reagens krijgt 10 g.” Nu voeren we de formule van dit reagens in, en de rekenmachine berekent en toont het molecuulgewicht terwijl u het invoert.

Klik op LMB in de tabelcel met het Ca-symbool. Inscriptie in het veld reagens1 wijzigingen: “Eerste reagens Ca 40.078 gegeven 10 g.”

Klik op LMB in de tabelcel met het symbool C. Inscriptie in het veld reagens1 wijzigingen: “Eerste reagens CaC 52.089 gegeven 10 g.” Die. De rekenmachine telde de atoomgewichten van calcium en koolstof bij elkaar op.

Klik op LMB in de tabelcel met het symbool O. Inscriptie in het veld reagens1 wijzigingen: “Eerste reagens CaCO 68.088 gegeven 10 g.” De rekenmachine voegde het atoomgewicht van zuurstof toe aan de som.

Klik op LMB in de tabelcel met het symbool O. Inscriptie in het veld reagens1 wijzigingen: “Eerste reagens CaCO2 84.087 gegeven 10 g.” De rekenmachine voegde opnieuw het atoomgewicht van zuurstof toe aan de som.

Klik op LMB in de tabelcel met het symbool O. Inscriptie in het veld reagens1 wijzigingen: “Eerste reagens CaCO3 100.086 gegeven 10 g.” De rekenmachine voegde opnieuw het atoomgewicht van zuurstof toe aan de som.

Druk op Enter op het toetsenbord van uw computer. De introductie van het eerste reagens is voltooid en gaat over naar het veld reagens2. Houd er rekening mee dat we in dit voorbeeld een minimale versie aanbieden. Indien gewenst kun je eenvoudig vermenigvuldigers van atomen van hetzelfde type organiseren, zodat je bijvoorbeeld niet zeven keer achter elkaar op de zuurstofcel hoeft te klikken bij het invoeren van de chroomformule (K2Cr2O7).

Klik op LMB in de tabelcel met het symbool H. Inscriptie in het veld reagens2 wijzigingen: “Tweede reagens H 1.008 vind x.”

Klik op LMB in de tabelcel met het Cl-symbool. Inscriptie in het veld reagens2 wijzigingen: “Tweede reagens HCl 36.458 vind x.” De rekenmachine telde de atoomgewichten van waterstof en chloor bij elkaar op. In de bovenstaande reactievergelijking wordt waterstofchloride voorafgegaan door een coëfficiënt van 2. Klik daarom op LMB in het veld reagens2. Het molecuulgewicht verdubbelt (verdrievoudigt bij tweemaal drukken, enz.). Inscriptie in het veld reagens2 wijzigingen: “Tweede reagens 2HCl 72.916 vind x.”

Druk op Enter op het toetsenbord van uw computer. De invoer van het tweede reagens is voltooid en de rekenmachine vindt x uit de verhouding

Periodiek systeem voor computerwetenschappen op scholen

Dat is wat we moesten vinden.

Opmerking 1. De betekenis van de resulterende verhouding: voor ontbinding 100.086 Da Voor krijt is 72.916 Da zuur nodig, en om 10 g krijt op te lossen heb je x zuur nodig.

Opmerking 2. Verzamelingen van soortgelijke problemen:

Khomchenko I.G., Verzameling van problemen en oefeningen in de scheikunde 2009 (klas 8-11).
Khomchenko G.P., Khomchenko I.G., Verzameling van problemen in de chemie voor aanvragers van universiteiten, 2019.

Opmerking 3. Om de taak te vereenvoudigen, kunt u de invoer van de formule in de eerste versie vereenvoudigen en eenvoudigweg het elementsymbool aan het einde van de formuleregel toevoegen. Dan is de formule van calciumcarbonaat:
CaCOOO
Maar het is onwaarschijnlijk dat een scheikundeleraar zo'n opname leuk zal vinden. Het is niet moeilijk om de juiste invoer in te voeren - hiervoor moet u een array toevoegen:

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

waarbij de index het nummer van het chemische element is, en de waarde bij deze index het aantal atomen is (aanvankelijk worden alle elementen van de array op nul gezet). Er moet rekening worden gehouden met de volgorde waarin atomen in een formule worden geschreven, zoals aangenomen in de scheikunde. Er zullen bijvoorbeeld ook maar weinig mensen van O3CaC houden. Laten we de verantwoordelijkheid verschuiven naar de gebruiker. Een array maken:

 formulaOrder : array [1..size] of integer; // можно взять покороче

waar we het nummer van het chemische element noteren volgens de index van zijn verschijning in de formule. Een atoom toevoegen huidigenr in de formule:

if formula [currNo]=0 then //этот атом встретился первый раз
 begin
 orderIndex := orderIndex+1;//в начале ввода формулы orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
formula [currNo]:=formula [currNo]+1;

De formule naar een regel schrijven:

s := ''; // пустая строка для формулы
for i:=1 to  orderIndex do // для всех хим.символов в формуле 
 begin
 s:=s+TableSymbols [ formulaOrder[i]];// добавляем хим.символ
 if formula [formulaOrder[i]]<>1 then //добавляем кол-во атомов
  s:=s+ intToStr(formula [formulaOrder[i]]);
 end;

Opmerking 4. Het is zinvol om de mogelijkheid te bieden om de reagensformule alternatief via het toetsenbord in te voeren. In dit geval moet u een eenvoudige parser implementeren.

Het is vermeldenswaard dat:

Tegenwoordig zijn er honderden versies van de tafel en wetenschappers bieden voortdurend nieuwe opties aan. (Wikipedia)

Studenten kunnen hun vindingrijkheid in deze richting tonen door een van de reeds voorgestelde opties te implementeren of proberen hun eigen originele optie te maken. Het lijkt misschien dat dit de minst bruikbare richting is voor lessen informatica. In de vorm van het periodiek systeem dat in dit artikel wordt geïmplementeerd, zien sommige leerlingen echter mogelijk niet de specifieke voordelen van controlekaarten ten opzichte van de alternatieve oplossing met behulp van standaardknoppen TKnop. De spiraalvorm van de tafel (waar de cellen verschillende vormen hebben) zal de voordelen van de hier voorgestelde oplossing duidelijker demonstreren.

Periodiek systeem voor computerwetenschappen op scholen
(Alternatief systeem van elementen door Theodore Benfey, Bron)

Laten we er ook aan toevoegen dat een aantal momenteel bestaande computerprogramma's voor het periodiek systeem worden beschreven in het onlangs gepubliceerde op Habré статье.

Bijlage 2: voorbeelden van taken voor filtersMet behulp van filters kunt u bijvoorbeeld de volgende taken oplossen:

1) Selecteer in de tabel alle elementen die bekend waren in de Middeleeuwen.

2) Identificeer alle elementen die bekend waren op het moment van de ontdekking van de Periodieke Wet.

3) Identificeer zeven elementen die alchemisten als metalen beschouwden.

4) Selecteer alle elementen die zich onder normale omstandigheden in een gasvormige toestand bevinden (n.s.).

5) Selecteer alle elementen die zich in vloeibare toestand bevinden op nr.

6) Selecteer alle elementen die zich in een vaste toestand bevinden op nr.

7) Selecteer alle elementen die onder normale omstandigheden langdurig aan de lucht kunnen worden blootgesteld zonder merkbare veranderingen.

8) Selecteer alle metalen die oplossen in zoutzuur.

9) Selecteer alle metalen die oplossen in zwavelzuur bij nr.

10) Selecteer alle metalen die bij verhitting in zwavelzuur oplossen.

11) Selecteer alle metalen die oplossen in salpeterzuur.

12) Isoleer alle metalen die onder omgevingsomstandigheden heftig met water reageren.

13) Selecteer alle metalen.

14) Identificeer elementen die wijdverspreid van aard zijn.

15) Identificeer elementen die in vrije staat in de natuur voorkomen.

16) Identificeer de elementen die de belangrijkste rol spelen in het menselijk en dierlijk lichaam.

17) Selecteer elementen die veel worden gebruikt in het dagelijks leven (in vrije vorm of in combinaties).

18) Identificeer elementen die het gevaarlijkst zijn om mee te werken en die speciale maatregelen en beschermende uitrusting vereisen.

19) Identificeer de elementen die, in vrije vorm of in de vorm van verbindingen, de grootste bedreiging vormen voor het milieu.

20) Selecteer edele metalen.

21) Identificeer elementen die duurder zijn dan edele metalen.

Opmerkingen

1) Het is zinvol om meerdere filters aan te bieden. Als u bijvoorbeeld een filter inschakelt om probleem 1 (alle elementen bekend in de middeleeuwen) en 20 (edelmetalen) op te lossen, worden cellen met in de middeleeuwen bekende edelmetalen gemarkeerd (bijvoorbeeld op kleur) ( palladium wordt bijvoorbeeld niet gemarkeerd, geopend in 1803).

2) Het is zinvol om ervoor te zorgen dat meerdere filters in een zodanige modus werken dat elk filter cellen met zijn eigen kleur selecteert, maar de selectie van een ander filter niet volledig verwijdert (een deel van de cel in de ene kleur, een deel in een andere). In het geval van het vorige voorbeeld zullen dan elementen zichtbaar zijn van de kruising van verzamelingen die in de Middeleeuwen zijn ontdekt en edelmetalen, evenals elementen die alleen tot de eerste en alleen tot de tweede verzameling behoren. Die. edele metalen die in de Middeleeuwen onbekend waren, en elementen die in de Middeleeuwen bekend waren maar geen edele metalen.

3) Het is zinvol om na het toepassen van het filter de mogelijkheid van ander werk met de verkregen resultaten te garanderen. Nadat de gebruiker bijvoorbeeld elementen heeft geselecteerd die bekend waren uit de Middeleeuwen, klikt hij op LMB op het geselecteerde element en wordt hij naar het Wikipedia-artikel over dit element geleid.

4) Het is zinvol om de gebruiker de mogelijkheid te bieden om te deselecteren door op LMB op de geselecteerde tabelcel te klikken. Bijvoorbeeld om reeds bekeken items te verwijderen.

5) Het is zinvol om ervoor te zorgen dat de lijst met geselecteerde cellen in een bestand wordt opgeslagen en dat een dergelijk bestand wordt geladen met automatische selectie van cellen. Dit geeft de gebruiker de mogelijkheid om een ​​pauze te nemen van het werk.

We gebruikten een statische, vooraf bepaalde controlekaart, maar er zijn veel belangrijke taken waarbij dynamische controlekaarten kunnen worden gebruikt die veranderen naarmate het programma wordt uitgevoerd. Een voorbeeld hiervan is een grafiekeditor, waarbij de gebruiker de muis gebruikt om de posities van hoekpunten in een venster aan te geven en randen daartussen te tekenen. Om een ​​hoekpunt of rand te verwijderen, moet de gebruiker ernaar wijzen. Maar als het heel gemakkelijk is om naar een hoekpunt te wijzen dat met een cirkel is gemarkeerd, dan zal het moeilijker zijn om naar een rand te wijzen die met een dunne lijn is getekend. Een controlekaart zal hier helpen, waar hoekpunten en randen bredere buurten beslaan dan in de zichtbare figuur.

Een interessante bijvraag bij deze methode van complex trainen is: kan deze methode bruikbaar zijn bij het trainen van AI?

Bron: www.habr.com

Voeg een reactie