Periodická tabulka na školní informatice

(kontrolní karty)
(Věnováno Mezinárodnímu roku periodické tabulky chemických prvků)
(Nejnovější přírůstky byly provedeny 8. dubna 2019. Seznam přírůstků je hned pod sestřihem)

Periodická tabulka na školní informatice
(Mendělejevova květina, Zdroj)

Pamatuji si, že jsme míjeli kachnu. Byly to tři hodiny najednou: zeměpis, přírodopis a ruština. V hodině přírodopisu se kachna zkoumala jako kachna, jaká má křídla, nohy, jak plave a tak dále. V hodině zeměpisu byla stejná kachna studována jako obyvatel zeměkoule: bylo nutné na mapě ukázat, kde žije a kde ne. Serafima Petrovna nás v ruštině naučila psát „u-t-k-a“ a přečíst si něco o kachnách z Brema. Mezitím nás informovala, že v němčině je kachna takhle a ve francouzštině takhle. Myslím, že se tomu tehdy říkalo „komplexní metoda“. Všeobecně vše vyšlo „mimochodem“.

Veniamin Kaverin, Dva kapitáni

Veniamin Kaverin ve výše uvedeném citátu mistrně ukázal nedostatky komplexní vyučovací metody, nicméně v některých (možná dosti vzácných) případech jsou prvky této metody opodstatněné. Jedním z takových případů je periodická tabulka D. I. Mendělejeva ve školních hodinách informatiky. Úkol softwarové automatizace typických akcí s periodickou tabulkou je pro školáky, kteří začali studovat chemii, jasný a je rozdělen do mnoha typických chemických problémů. Zároveň nám tato úloha v rámci informatiky umožňuje jednoduchou formou demonstrovat metodu ovládacích karet, kterou lze přiřadit ke grafickému programování, chápanému v širokém slova smyslu jako programování pomocí grafických prvků.

(8. dubna 2019 přidány:
Dodatek 1: Jak funguje kalkulačka chemie
Příloha 2: příklady úloh pro filtry)

Začněme základním úkolem. V nejjednodušším případě by měla být periodická tabulka zobrazena na obrazovce ve formě okna, kde v každé buňce bude chemické označení prvku: H - vodík, He - helium atd. Pokud kurzor myši ukazuje na buňku, pak se označení prvku a jeho číslo zobrazí ve speciálním poli našeho formuláře. Pokud uživatel stiskne LMB, pak se v jiném poli formuláře uvede označení a číslo tohoto vybraného prvku.

Periodická tabulka na školní informatice

Problém lze vyřešit pomocí jakéhokoli univerzálního jazyka. Vezmeme jednoduchý starý Delpi-7, který je srozumitelný téměř každému. Před programováním v PL si ale nakreslíme dva obrázky, například ve Photoshopu. Nejprve si nakreslíme periodickou tabulku v podobě, v jaké ji chceme vidět v programu. Výsledek uložte do grafického souboru tabulka01.bmp.

Periodická tabulka na školní informatice

Pro druhý výkres použijeme první. Buňky tabulky, zbavené veškeré grafiky, postupně vyplníme jedinečnými barvami v barevném modelu RGB. R a G budou vždy 0 a B=1 pro vodík, 2 pro helium atd. Tento výkres bude naší kontrolní kartou, kterou si uložíme do souboru tzv. tabulka2.bmp.

Periodická tabulka na školní informatice

První fáze grafického programování ve Photoshopu je dokončena. Přejděme ke grafickému programování GUI v IDE Delpi-7. Chcete-li to provést, otevřete nový projekt, kde na hlavní formulář umístíme dialogové tlačítko (tabulkaDlg), ve kterém bude práce s tabulkou probíhat. Dále pracujeme s formulářem tabulkaDlg.

Umístěte komponentu třídy na formulář TImage. Dostaneme Image1. Všimněte si, že obecně pro velké projekty automaticky generované názvy formuláře ObrázekNKde N může dosáhnout několika desítek nebo více - to není nejlepší styl programování a měly by být uvedeny smysluplnější názvy. Ale v našem malém projektu, kde N nepřekročí 2, můžete jej ponechat jako vygenerovaný.

K majetku Obrázek1.Obrázek nahrajte soubor tabulka01.bmp. tvoříme Image2 a nahrajte tam naši kontrolní kartu tabulka2.bmp. V tomto případě uděláme soubor malý a pro uživatele neviditelný, jak je znázorněno v levém dolním rohu formuláře. Přidáváme další ovládací prvky, jejichž účel je zřejmý. Druhá fáze programování grafického GUI v IDE Delpi-7 je dokončena.

Periodická tabulka na školní informatice

Přejděme ke třetí fázi – psaní kódu v IDE Delpi-7. Modul se skládá pouze z pěti obslužných rutin událostí: vytvoření formuláře (FormCreate), pohyb kurzoru Image1 (Image1MouseMove), kliknutím LMB na buňku (Obrázek1Klikněte) a opusťte dialog pomocí tlačítek OK (OKBtnClick) nebo Zrušit (CancelBtnClick). Hlavičky těchto handlerů jsou generovány standardním způsobem pomocí IDE.

Zdrojový kód modulu:

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.

V naší verzi jsme vzali tabulku 104 prvků (konstant velikost). Tuto velikost lze samozřejmě zvětšit. Označení prvků (chemické symboly) se zapisují do pole TableSymbols. Z důvodu kompaktnosti zdrojového kódu se však jeví jako vhodné zapsat posloupnost těchto zápisů ve formě řetězcových konstant PeriodicTableStr1..., PeriodicTableStr4takže při vytvoření formuláře program sám rozhází tato označení mezi prvky pole. Každé označení prvku se skládá z jednoho nebo dvou latinských písmen, přičemž první písmeno je velké a druhé (pokud existuje) malé. Toto jednoduché pravidlo je implementováno při načítání pole. Posloupnost zápisů lze tedy zapsat stručně bez mezer. Rozdělení sekvence na čtyři části (konstanty PeriodicTableStr1..., PeriodicTableStr4) je způsobeno úvahami o snadném čtení zdrojového kódu, protože Příliš dlouhý řádek se nemusí celý vejít na obrazovku.

Když se kurzor myši přesune nad Image1 psovod Image1MouseMove tato událost určuje hodnotu modré složky pixelu kontrolní karty Image2 pro aktuální souřadnice kurzoru. Podle konstrukce Image2 tato hodnota je rovna číslu prvku, pokud je kurzor uvnitř buňky; nula, pokud je na hranici, a 255 v ostatních případech. Zbývající akce prováděné programem jsou triviální a nevyžadují vysvětlení.

Kromě výše uvedených stylistických programovacích technik stojí za zmínku styl komentáře. Přísně vzato, diskutovaný kód je tak malý a jednoduchý, že komentáře nejsou nijak zvlášť nutné. Byly však přidány i z metodických důvodů - krátký kód nám umožňuje jasněji vyvodit některé obecné závěry. V prezentovaném kódu je deklarována jedna třída (TtableDlg). Metody této třídy lze zaměnit a to nijak neovlivní fungování programu, může to však ovlivnit jeho čitelnost. Představte si například sekvenci:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Možná to nebude moc nápadné, ale bude to trochu obtížnější na čtení a pochopení. Pokud v oddíle není pět, ale desetkrát více metod uskutečnění mají úplně jiné pořadí než v popisech tříd, pak bude chaos jen narůstat. Proto, i když je to obtížné striktně prokázat a může to být dokonce nemožné, lze doufat, že zavedení dodatečného řádu zlepší čitelnost kódu. Toto dodatečné pořadí je usnadněno logickým seskupením několika metod, které provádějí související úkoly. Každá skupina by měla mít název, například:

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

Tyto nadpisy by měly být zkopírovány na začátek modulu a zformátovány jako obsah. V některých případech poměrně dlouhých modulů poskytují tyto obsahy další možnosti navigace. Podobně v dlouhém těle jedné metody, postupu nebo funkce stojí za to nejprve označit konec tohoto těla:

end; // FormCreate

a za druhé, ve větvených příkazech s programovými závorkami begin - end označte příkaz, na který se vztahuje uzavírací závorka:

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

Chcete-li zvýraznit záhlaví skupin a konce těl metod, můžete přidat řádky, které jsou delší než většina příkazů a skládají se například ze znaků „=“ a „_“.
Opět musíme provést rezervaci: náš příklad je příliš jednoduchý. A když se kód metody nevejde na jednu obrazovku, může být obtížné porozumět šesti po sobě jdoucím koncovým změnám kódu. V některých starých kompilátorech, například Pascal 8000 pro OS IBM 360/370, byl sloupec služeb, jako je tento, vytištěn vlevo ve výpisu

B5
…
E5

To znamenalo, že uzavírací závorka na řádku E5 odpovídala uzavírací závorce na řádku B5.

Styl programování je samozřejmě velmi kontroverzní záležitost, takže myšlenky zde vyjádřené by neměly být brány jako nic víc než jen podnět k zamyšlení. Pro dva docela zkušené programátory, kteří se za mnoho let práce vyvinuli a zvykli si na různé styly, může být velmi obtížné se dohodnout. Něco jiného je student učící se programovat, který si ještě nestihl najít svůj vlastní styl. Domnívám se, že v tomto případě by učitel měl svým studentům alespoň zprostředkovat tak jednoduchou, ale ne samozřejmou myšlenku, že úspěch programu do značné míry závisí na stylu, jakým je jeho zdrojový kód napsán. Student se nemusí držet doporučeného stylu, ale ať se alespoň zamyslí nad nutností „extra“ akcí pro vylepšení designu zdrojového kódu.

Vraťme se k našemu základnímu problému o periodické tabulce: další vývoj se může ubírat různými směry. Jeden z pokynů je orientační: když najedete kurzorem myši na buňku tabulky, zobrazí se informační okno obsahující další informace o zadaném prvku. Dalším vývojem jsou filtry. Například v závislosti na instalaci bude informační okno obsahovat pouze: nejdůležitější fyzikální a chemické informace, informace o historii objevů, informace o rozšíření v přírodě, seznam nejdůležitějších sloučenin (který obsahuje tento prvek), fyziologické vlastnosti, jméno v cizím jazyce atd. e. Při vzpomínce na Kaverinovu „kachnu“, kterou tento článek začíná, můžeme říci, že tímto vývojem programu získáme kompletní tréninkový komplex v přírodních vědách: kromě počítačů věda, fyzika a chemie - biologie, ekonomická geografie, dějiny vědy a dokonce i cizí jazyky.

Ale lokální databáze není limit. Program se přirozeně připojuje k internetu. Když vyberete prvek, aktivuje se odkaz a v okně webového prohlížeče se otevře článek Wikipedie o tomto prvku. Wikipedie, jak víte, není autoritativní zdroj. Můžete nastavit odkazy na autoritativní zdroje, například chemickou encyklopedii, TSB, abstraktní časopisy, objednávat dotazy ve vyhledávačích pro tento prvek atd. Že. Studenti budou schopni dokončit jednoduché, ale smysluplné úkoly na téma DBMS a internet.

Kromě dotazů na jednotlivý prvek můžete vytvořit funkcionalitu, která například označí buňky v tabulce, které splňují určitá kritéria, různými barvami. Například kovy a nekovy. Nebo buňky, které do vodních ploch vysype místní chemická továrna.

Můžete také implementovat funkce organizéru notebooku. Například v tabulce zvýrazněte prvky, které jsou součástí zkoušky. Poté zvýrazněte prvky, které student studoval/opakoval při přípravě na zkoušku.

A zde je například jeden z typických problémů školní chemie:

Dáno 10 g křídy. Kolik kyseliny chlorovodíkové je třeba vzít, aby se všechna tato křída rozpustila?

K vyřešení tohoto problému je nutné zapsat chem. reakce a umístění koeficientů do ní, vypočítejte molekulové hmotnosti uhličitanu vápenatého a chlorovodíku, poté složte a vyřešte podíl. Kalkulačka založená na našem základním programu umí počítat a řešit. Pravda, ještě bude potřeba počítat s tím, že kyselina se musí brát v rozumném přebytku a v rozumné koncentraci, ale to je chemie, ne informatika.
Dodatek 1: Jak funguje kalkulačka chemieAnalyzujme fungování kalkulačky na příkladu výše uvedeného problému křídy a „miška“. Začněme reakcí:

CaC3 + 2HCl = CaCl2 + H2O

Z toho vidíme, že budeme potřebovat atomové hmotnosti následujících prvků: vápník (Ca), uhlík (C), kyslík (O), vodík (H) a chlór (Cl). V nejjednodušším případě můžeme tyto váhy zapsat do jednorozměrného pole definovaného jako

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

kde index pole odpovídá číslu prvku. Více o volném prostoru formuláře tabulkaDlg dát dvě pole. V prvním poli je zpočátku napsáno: „Je dáno první činidlo“, ve druhém „Druhé činidlo má najít x“. Označme pole činidlo 1, činidlo 2 respektive. Další doplňky programu budou zřejmé z následujícího příkladu kalkulačky.

Na klávesnici počítače píšeme: 10 g. Nápis v poli činidlo 1 se mění: "První činidlo je podáno 10 g." Nyní zadáme vzorec tohoto činidla a kalkulačka spočítá a zobrazí jeho molekulovou hmotnost, když ji zadáte.

Klikněte na LMB na buňku tabulky se symbolem Ca. Nápis v poli činidlo 1 změny: "První činidlo Ca 40.078 podáno 10 g."

Klikněte LMB na buňku tabulky se symbolem C. Nápis v poli činidlo 1 změny: "První činidlo CaC 52.089 podáno 10 g." Tito. Kalkulačka sečetla atomové hmotnosti vápníku a uhlíku.

Klikněte LMB na buňku tabulky se symbolem O. Nápis v poli činidlo 1 změny: "První činidlo CaCO 68.088 podáno 10 g." Kalkulačka k součtu přidala atomovou hmotnost kyslíku.

Klikněte LMB na buňku tabulky se symbolem O. Nápis v poli činidlo 1 změny: "První činidlo CaCO2 84.087 podáno 10 g." Kalkulačka k součtu ještě jednou přidala atomovou hmotnost kyslíku.

Klikněte LMB na buňku tabulky se symbolem O. Nápis v poli činidlo 1 změny: "První činidlo CaCO3 100.086 podáno 10 g." Kalkulačka k součtu opět přidala atomovou hmotnost kyslíku.

Stiskněte klávesu Enter na klávesnici počítače. Zavedení prvního činidla je dokončeno a přepne se do pole činidlo 2. Všimněte si, že v tomto příkladu poskytujeme minimální verzi. Na přání lze snadno uspořádat násobiče atomů stejného typu, takže například při zadávání vzorce chrómu (K2Cr2O7) nemusíte sedmkrát za sebou klikat na kyslíkový článek.

Klikněte LMB na buňku tabulky se symbolem H. Nápis v poli činidlo 2 změny: "Druhé činidlo H 1.008 najděte x."

Klikněte na LMB na buňku tabulky se symbolem Cl. Nápis v poli činidlo 2 změny: "Druhé činidlo HCl 36.458 najít x." Kalkulačka sečetla atomové hmotnosti vodíku a chlóru. Ve výše uvedené reakční rovnici předchází chlorovodíku koeficient 2. Klikněte proto na pole LMB činidlo 2. Molekulová hmotnost se zdvojnásobí (při dvojím stisknutí se ztrojnásobí atd.). Nápis v poli činidlo 2 změny: "Druhé činidlo 2HCl 72.916 najít x."

Stiskněte klávesu Enter na klávesnici počítače. Zadání druhého činidla je dokončeno a kalkulačka zjistí x z podílu

Periodická tabulka na školní informatice

To jsme potřebovali najít.

Poznámka: 1. Význam výsledného podílu: pro rozpuštění 100.086 Da křída vyžaduje 72.916 Da kyseliny a k rozpuštění 10 g křídy potřebujete x kyselin.

Poznámka: 2. Sbírky podobných problémů:

Khomchenko I. G., Sbírka úloh a cvičení z chemie 2009 (ročníky 8-11).
Khomchenko G. P., Khomchenko I. G., Sbírka problémů z chemie pro uchazeče o studium na vysokých školách, 2019.

Poznámka: 3. Pro zjednodušení úkolu můžete zjednodušit zadávání vzorce v počáteční verzi a jednoduše přidat symbol prvku na konec řádku vzorce. Pak vzorec uhličitanu vápenatého bude:
CaCOOO
Učiteli chemie se ale taková nahrávka pravděpodobně nebude líbit. Není těžké udělat správný záznam - k tomu musíte přidat pole:

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

kde index je číslo chemického prvku a hodnota tohoto indexu je počet atomů (zpočátku jsou všechny prvky pole vynulovány). Je třeba vzít v úvahu pořadí, ve kterém jsou atomy zapsány ve vzorci, jak je přijato v chemii. Například O3CaC se bude líbit také málokomu. Přenesme zodpovědnost na uživatele. Vytvoření pole:

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

kde zapíšeme číslo chemického prvku podle indexu jeho výskytu ve vzorci. Přidání atomu currNo do vzorce:

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

Zápis vzorce na řádek:

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;

Poznámka: 4. Má smysl poskytnout možnost alternativního zadávání vzorce činidla z klávesnice. V tomto případě budete muset implementovat jednoduchý parser.

Stojí za zmínku, že:

Dnes existuje několik stovek verzí tabulky a vědci neustále nabízejí nové možnosti. (Wikipedia)

Studenti mohou v tomto směru projevit svou vynalézavost realizací jedné z již navržených možností nebo si zkusit vyrobit vlastní originální. Může se zdát, že je to nejméně užitečný směr pro hodiny informatiky. Ve formě periodické tabulky implementované v tomto článku však někteří studenti nemusí vidět konkrétní výhody ovládacích karet oproti alternativnímu řešení pomocí standardních tlačítek TButton. Spirálový tvar stolu (kde jsou buňky různých tvarů) jasněji demonstruje výhody zde navrženého řešení.

Periodická tabulka na školní informatice
(Alternativní systém prvků Theodore Benfey, Zdroj)

Dodejme také, že řada aktuálně existujících počítačových programů pro periodickou tabulku je popsána v nedávno publikovaném na Habré článek.

Příloha 2: příklady úloh pro filtryPomocí filtrů můžete řešit například následující úlohy:

1) Vyberte v tabulce všechny prvky známé ve středověku.

2) Určete všechny prvky známé v době objevu periodického zákona.

3) Určete sedm prvků, které alchymisté považovali za kovy.

4) Vyberte všechny prvky, které jsou za normálních podmínek v plynném stavu (n.s.).

5) Vyberte všechny prvky, které jsou v kapalném stavu na č.p.

6) Vyberte všechny prvky, které jsou v pevném stavu na č.p.

7) Vyberte všechny prvky, které mohou být za normálních podmínek dlouhodobě vystaveny vzduchu bez znatelných změn.

8) Vyberte všechny kovy, které se rozpouštějí v kyselině chlorovodíkové.

9) Vyberte všechny kovy, které se rozpouštějí v kyselině sírové na č.p.

10) Vyberte všechny kovy, které se při zahřívání rozpouštějí v kyselině sírové.

11) Vyberte všechny kovy, které se rozpouštějí v kyselině dusičné.

12) Izolujte všechny kovy, které při okolních podmínkách prudce reagují s vodou.

13) Vyberte všechny kovy.

14) Určete prvky, které jsou v přírodě rozšířené.

15) Určete prvky, které se nacházejí v přírodě ve volném stavu.

16) Určete prvky, které hrají nejdůležitější roli v lidském a zvířecím těle.

17) Vyberte prvky, které jsou široce používány v každodenním životě (ve volné formě nebo v kombinacích).

18) Identifikujte prvky, se kterými je práce nejnebezpečnější a vyžadují zvláštní opatření a ochranné prostředky.

19) Určete prvky, které ve volné formě nebo ve formě sloučenin představují největší hrozbu pro životní prostředí.

20) Vyberte drahé kovy.

21) Identifikujte prvky, které jsou dražší než drahé kovy.

Poznámky

1) Má smysl poskytovat více filtrů. Pokud například zapnete filtr pro vyřešení problému 1 (všechny prvky známé ve středověku) a 20 (vzácné kovy), pak se buňky s drahými kovy známými ve středověku zvýrazní (například barvou) ( například palladium nebude zvýrazněno, otevřeno v roce 1803).

2) Má smysl zajistit, aby několik filtrů fungovalo v takovém režimu, že každý filtr vybere buňky s vlastní barvou, ale zcela neodstraní výběr jiného filtru (část buňky v jedné barvě, část v jiné). Pak budou v případě předchozího příkladu viditelné prvky průniku množin objevených ve středověku a drahých kovů i prvky patřící pouze do první a pouze do druhé množiny. Tito. drahé kovy neznámé ve středověku a prvky známé ve středověku, ale nikoli drahé kovy.

3) Má smysl po aplikaci filtru zajistit možnost další práce se získanými výsledky. Například po výběru prvků známých ve středověku uživatel klikne LMB na vybraný prvek a je přesměrován na článek Wikipedie o tomto prvku.

4) Má smysl poskytnout uživateli možnost zrušit výběr kliknutím LMB na vybranou buňku tabulky. Například k odstranění již prohlížených položek.

5) Má smysl zajistit uložení seznamu vybraných buněk do souboru a načtení takového souboru s automatickým výběrem buněk. Uživatel tak získá příležitost odpočinout si od práce.

Použili jsme statickou, předem určenou mapu řízení, ale existuje mnoho důležitých úloh, kde lze použít dynamické mapy řízení, které se mění během běhu programu. Příkladem může být editor grafů, ve kterém uživatel pomocí myši označuje polohy vrcholů v okně a kreslí mezi nimi hrany. Chcete-li odstranit vrchol nebo hranu, musí na ně uživatel ukázat. Ale pokud je docela snadné ukázat na vrchol označený kružnicí, pak bude obtížnější ukázat na hranu nakreslenou tenkou čarou. Zde pomůže kontrolní mapa, kde vrcholy a hrany zabírají širší okolí než na viditelném obrázku.

Zajímavá vedlejší otázka související s touto metodou komplexního tréninku zní: může být tato metoda užitečná při tréninku AI?

Zdroj: www.habr.com

Přidat komentář