(Řídící karty)
(Věnováno Mezinárodnímu roku Periodické tabulky chemických prvků)
(Poslední aktualizace byla provedena 8. dubna 2019. Seznam aktualizací ihned pod článkem)

(, )
Pamatuji si, že jsme probírali kachnu. Byly to hned tři hodiny: geografie, přírodopis a ruština. Na hodině přírodopisu se kachna zkoumala jako kachna — jaké má křídla, jaké má nohy, jak plave a tak dále. Na hodině zeměpisu se ta stejná kachna zkoumala jako obyvatel zeměkoule: bylo třeba na mapě ukázat, kde žije a kde ji není. V ruštině nás Serafima Petrovna učila psát „k-a-c-h-n-a“ a četla něco o kachnách z Břema. Mimochodem nám sdělovala, že v němčině se kachna říká tak a tak, a ve francouzštině tak a tak. Zdá se, že se tomu tehdy říkalo „komplexní metodou“. Obecně, všechno vyšlo „mimochodem“.
Veniamin Kaverin, Dva kapitáni
Ve zmíněné citaci Veniamin Kaverin mistrovsky ukázal nedostatky komplexního metody výuky, nicméně v některých (možná poměrně vzácných) případech mohou být prvky této metody odůvodněny. Jeden z takových případů je Periodická tabulka D. I. Mendělejeva na hodinách školní informatiky. Úkol programové automatizace typických činností s Mendělejevovou tabulkou je názorný pro školáky, kteří začínají studovat chemii, a dělí se na mnoho typických chemických úloh. Zároveň v rámci informatiky tento úkol umožňuje jednoduše demonstrovat způsob řídících karet, který lze považovat za grafické programování, chápáno v širokém smyslu slova jako programování s pomocí grafických prvků.
(8. dubna 2019 byly provedeny aktualizace:
Začneme s základním úkolem. V nejjednodušším případě by se na obrazovce ve formulářovém okně měla zobrazit Periodická tabulka, kde v každé buňce bude chemické označení prvku: H — vodík, He — helium atd. Pokud kurzor myši ukáže na buňku, speciální pole na našem formuláři zobrazí označení prvku a jeho číslo. Když v tu chvíli uživatel klikne levým tlačítkem myši, v jiném poli formuláře se zobrazí označení a číslo vybraného prvku.

Úkol lze řešit v jakémkoli univerzálním programovacím jazyce. Vezmeme si jednoduchý starý Delphi-7, který je jasný skoro všem. Ale než začneme programovat v jazyce, nakreslíme dvě obrázky, například ve Photoshopu. Nejprve nakreslíme Periodickou tabulku tak, jak ji chceme vidět v programu. Výsledek uložíme do grafického souboru table01.bmp.

Pro druhý obrázek použijeme první. Postupně naplníme buňky tabulky, očištěné od veškeré grafiky, unikátními barvami ve barevném modelu RGB. R a G budou vždy 0, zatímco B=1 pro vodík, 2 pro helium atd. Tento obrázek bude naší řídící mapou, kterou uložíme do souboru pod názvem table2.bmp.

První fáze grafického programování ve Photoshopu je u konce. Přecházíme k grafickému programování GUI v IDE Delphi-7. K tomu otevřeme nový projekt, kde na hlavní formu umístíme tlačítko pro vyvolání dialogu (tableDlg), ve kterém proběhne práce s tabulkou. Dále pracujeme s formou tableDlg.
Umístíme na formu komponentu třídy TImage. Získáme Image1. Upozorněme, že v obecném případě pro větší projekty automaticky generovaná jména ve formátu ImageN, kde N mohou dosahovat několika desítek a více — není to nejlepší styl programování, a mělo by se dávat smysluplnější názvy. Ale v našem malém projektu, kde N nepřekročí 2, to můžeme nechat, jak se vygenerovalo.
Do vlastnosti Image1.Picture nahráváme soubor table01.bmp. Vytvoříme Image2 a nahrajeme tam naši řídící mapu table2.bmp. Přičemž soubor uděláme malým a neviditelným pro uživatele, jak je znázorněno v levém dolním rohu formy. Přidáváme další kontrolní prvky, jejichž účel je zřejmý. Druhá fáze grafického programování GUI v IDE Delphi-7 je u konce.

Přecházíme k třetí fázi — psaní kódu v IDE Delphi-7. Modul se skládá pouze z pěti zpracovatelů událostí: vytvoření formy (FormCreate), pohyb kurzoru po Image1 (Image1MouseMove), stisknutí LKM na buňku (Image1Click) a odchodu z dialogu pomocí tlačítek OK (OKBtnClick) nebo Cancel (CancelBtnClick). Záhlaví těchto zpracovatelů se generují standardním způsobem pomocí IDE.
Zdrojový kód modulu:
unit tableUnit;
// Periodická tabulka chemických prvků D.I. Mendělejeva
//
// third112
// https://habr.com/ru/users/third112/
//
// Obsah
// 1) vytvoření formuláře
// 2) práce s tabulkou: označení a výběr
// 3) odchod z dialogu
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
const
size = 104; // počet prvků
type
TtableDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Bevel1: TBevel;
Image1: TImage; // tabulka chemických prvků
Label1: TLabel;
Image2: TImage; // ovládací mapa
Label2: TLabel;
Edit1: TEdit;
procedure FormCreate(Sender: TObject); // vytvoření formuláře
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); // označení buňky
procedure Image1Click(Sender: TObject); // výběr buňky
procedure OKBtnClick(Sender: TObject); // OK
procedure CancelBtnClick(Sender: TObject); // Zrušit
private
{ Soukromé deklarace }
TableSymbols : array [1..size] of string [2]; // pole označení prvků
public
{ Veřejné deklarace }
selectedElement : string; // vybraný prvek
currNo : integer; // aktuální číslo prvku
end;
var
tableDlg: TtableDlg;
implementation
{$R *.dfm}
const
PeriodicTableStr1=
'HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLa';
PeriodicTableStr2='CePrNdPmSmEuGdTbDyHoErTmYbLu';
PeriodicTableStr3='HfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAc';
PeriodicTableStr4='ThPaUNpPuAmCmBkCfEsFmMdNoLrKu ';
// vytvoření formuláře ==================================================
procedure TtableDlg.FormCreate(Sender: TObject);
// vytvoření formuláře
var
s : string;
i,j : integer;
begin
currNo := 0;
// inicializace pole označení prvků:
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 ____________________________________________________
// práce s tabulkou: označení a výběr =========================================
procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
// označení buňky
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 := 'Vyberte prvek:';
end; // Image1MouseMove ____________________________________________________
procedure TtableDlg.Image1Click(Sender: TObject);
begin
if currNo 0 then
begin
selectedElement := TableSymbols [currNo];
Label2.Caption := intToStr (currNo)+ ' '+selectedElement+ ' vybráno';
Edit1.Text := selectedElement;
end;
end; // Image1Click ____________________________________________________
// odchod z dialogu ==================================================
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 o velikosti 104 prvků (konstanta size). Zřejmým způsobem může být tato velikost zvýšena. Označení prvků (chemické symboly) se zapisují do pole TableSymbols. Avšak z důvodu kompaktnosti zdrojového kódu se zdá vhodné zapsat sekvenci těchto označení ve formě řetězcových konstant PeriodicTableStr1,…, PeriodicTableStr4, aby při události vytvoření formuláře program sám rozložil tato označení podle prvků pole. Každé označení prvku se skládá z jedné nebo dvou latinských písmen, přičemž první písmeno je velké a druhé (pokud je) malé. Toto jednoduché pravidlo je realizováno při načítání pole. Tímto způsobem lze sekvenci označení zapsat kompaktním způsobem bez mezer. Rozdělení sekvence na čtyři části (konstanty PeriodicTableStr1,…, PeriodicTableStr4) je dáno ohledem na pohodlí čtení zdrojového kódu, protože příliš dlouhý řetězec se nemusí celistvě vejít na obrazovku.
Při události pohybu kurzoru myši Image1 zpracovatel Image1MouseMove této události určuje hodnotu modré složky barvy pixelu ovládacího panelu Image2 pro aktuální souřadnice kurzoru. Na základě konstrukce Image2 tato hodnota je rovna číslu prvku, pokud se kurzor nachází uvnitř buňky; nule, pokud je na hranici, a 255 v jiných případech. Ostatní akce, které program provádí, jsou banální a nevyžadují vysvětlení.
Kromě uvedených stylistických prostředků programování stojí za zmínku styl komentářů. Striktně vzato, projednávaný kód je natolik malý a jednoduchý, že komentáře nevypadají příliš potřebně. Nicméně byly přidány i z metodických důvodů – krátký kód umožňuje lépe ilustrovat některé obecné závěry. V předloženém kódu byl deklarován jeden třída (TtableDlg). Metody této třídy lze zaměnit a to nijak neodráží na fungování programu, ale může to ovlivnit jeho čitelnost. Například, představme si sekvenci:
OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.
Možná to není příliš patrné, ale číst a pochopit to bude o něco složitější. Pokud metod není pět, ale mnohem více, a v sekci implementation Mají zcela jiný pořádek než popisy tříd, takže chaos se bude pouze zvyšovat. Proto, i když je těžké to striktně dokázat a může to být dokonce nemožné, můžeme doufat, že zavedení dodatečného pořádku zlepší čitelnost kódu. Tomu dodatečnému pořádku napomáhá logická skupina několika metod, které vykonávají blízké úkoly. Každé skupině by měl být dán název, například:
// работа с таблицей: указание и выбор
Tyto názvy by měly být zkopírovány na začátek modulu a formátovány jako obsah. V případě některých dost dlouhých modulů poskytují takové obsahy další možnosti navigace. Podobně v dlouhém těle jedné metody, procedury nebo funkce je prvním krokem označení konce tohoto těla:
end; // FormCreatea za druhé, v podmínkových operátorech se programovými závorkami begin – end označit příkaz, k němuž se vztahuje uzavírací závorka:
end; // if s [j] in
end; // for i :=1
end; // FormCreate
Pro zvýraznění názvů skupin a konců těles metod lze přidat řádky, které přesahují délku většiny příkazů a skládají se například ze znaků „=“ a „_“ odpovídajícím způsobem.
Je třeba opět zmínit: máme příliš jednoduchý příklad. A když se kód metody nevejde na jeden displej, je těžké se v šesti za sebou jdoucích end vyznat, abychom provedli změny kódu. V některých starých kompilátorech, například Pascal 8000 pro OS IBM 360/370, se na výtiskové levé straně tiskla služební sloupce ve formátu
B5
…
E5
To znamenalo, že uzavírací programová závorka na řádku E5 odpovídá otevírací závorke na řádku B5.
Samozřejmě, styl programování je velmi nejednoznačné téma, proto by myšlenky uvedené zde měly být chápány jako informace k zamyšlení. Dvě dostatečně zkušené programátory, kteří si během mnoha let práce osvojili různé styly, se někdy těžko domluví. Jiná situace je u školáka, který teprve začíná programovat a neměl zatím čas vytvořit si vlastní styl. Myslím, že učitel by v tomto případě měl alespoň předat svým studentům jednoduchou, ale pro ně ne zcela zřejmou myšlenku, že úspěch programu do značné míry závisí na stylu, jakým je napsán jeho zdrojový kód. Student nemusí následovat doporučený styl, ale ať si aspoň uvědomí nutnost „dalších“ kroků pro zlepšení vzhledu zdrojového kódu.
Vrátíme-li se k našemu základnímu úkolu týkajícímu se Periodické tabulky: další vývoj může směřovat různými směry. Jedním z těchto směrů je informativní: při najetí kurzoru myši na buňku tabulky se zobrazí okno s informacemi, které obsahuje dodatečné údaje o daném prvku. Další vývoj — filtry. Například v závislosti na nastavení v informačním okně budou pouze: nejdůležitější fyzikálně-chemické informace, údaje o historii objevu, informace o výskytu v přírodě, seznam nejdůležitějších sloučenin (do kterých tento prvek patří), fyziologické vlastnosti, název v cizím jazyce atd. Vzpomínajíc na „kachnu“ Kaverina, s níž tento článek začíná, můžeme říci, že při takovém vývoji programu získáme komplexní učební materiál o přírodních vědách: kromě informatiky, fyziky a chemie — také biologii, ekonomickou geografii, historii vědy a dokonce cizí jazyky.
Ale lokální databáze není limit. Program se přirozeně připojuje k Internetu. Při výběru prvku se aktivuje odkaz a v okně webového prohlížeče se otevře článek z Wikipedie o daném prvku. Jak je známo, Wikipedie není autoritativní zdroj. Je možné uvádět odkazy na autoritativní zdroje, například chemickou encyklopedii, BSE, referenční časopisy, objednat dotazy ve vyhledávačích na daný prvek atd. Tím pádem studenti budou moci vykonávat jednoduché, ale výživné úkoly na témata DBMS a Internet.
Kromě požadavků na jednotlivé prvky lze vytvořit funkci, která například označí buňky v tabulce různými barvami podle určitých kritérií. Například kovy a nekovy. Nebo buňky, které místní chemická továrna vypouští do vodních toků.
Můžeme také implementovat funkce zápisníku-organizéru. Například zvýraznit v tabulce prvky, které budou na zkoušce. Poté zvýraznit prvky, které student studoval nebo zopakoval při přípravě na zkoušku.
A tady je například jedna z typických úloh školní chemie:
Dáno 10 g vápenného prášku. Kolik chlorovodíkové kyseliny je potřeba k rozpuštění tohoto vápna?
Abychom tuto úlohu vyřešili, musíme napsat chemickou reakci a určit koeficienty, spočítat molekulové hmotnosti uhličitanu vápenatého a chlorovodíku a pak sestavit a vyřešit poměr. Spočítat a vyřešit to dokáže kalkulačka založená na našem základním programu. Je však třeba mít na paměti, že kyselinu je třeba vzít v rozumném přebytku a v rozumné koncentraci, ale to už je chemie, nikoli informatika.
Aktualizace 1: jak funguje chemický kalkulátorAnalyzujme práci kalkulačky na příkladu výše uvedené úlohy s vápnem a „solným kyselinou“. Začneme reakcí:
CaCO3 + 2HCl = CaCl2 + H2O
Odtud vidíme, že budeme potřebovat atomové hmotnosti následujících prvků: vápníku (Ca), uhlíku (C), kyslíku (O), vodíku (H) a chlóru (Cl). V nejjednodušším případě můžeme tyto hmotnosti zapsat v jednorozměrném poli, definovaném jako
AtomicMass : array [1..size] of real;kde index pole odpovídá číslu prvku. Dále na volném místě formuláře tableDlg umístíme dvě pole. V prvním poli je zpočátku napsáno: „První reaktant dán“, ve druhém — „Druhý reaktant najdi x“. Označíme pole reagent1, reagent2 odpovídajícím způsobem. Další doplňky do programu budou jasné z následujícího příkladu práce kalkulačky.
Píšeme na klávesnici počítače: 10 g. Nápis v poli reagent1 se mění: „První reaktant dán 10 g“. Nyní zadáváme vzorec tohoto reaktantu, a kalkulačka začne počítat a zobrazovat jeho molekulovou hmotnost během zadávání.
Klepněte levým tlačítkem myši na buňku tabulky se symbolem Ca. Nápis v poli reagent1 se mění: „První reaktant Ca 40.078 dán 10 g“.
Klepněte levým tlačítkem myši na buňku tabulky se symbolem C. Nápis v poli reagent1 se mění: „První reaktant CaC 52.089 dán 10 g“. Tímto způsobem kalkulačka sečítá atomové hmotnosti vápníku a uhlíku.
Klikneme na buňku tabulky se symbolem O. Text v poli reagent1 se změní: „První reagent CaCO 68.088 dáno 10 g“. Kalkulátor přidal k součtu atomovou hmotnost kyslíku.
Klikneme na buňku tabulky se symbolem O. Text v poli reagent1 se změní: „První reagent CaCO2 84.087 dáno 10 g“. Kalkulátor znovu přidal k součtu atomovou hmotnost kyslíku.
Klikneme na buňku tabulky se symbolem O. Text v poli reagent1 se změní: „První reagent CaCO3 100.086 dáno 10 g“. Kalkulátor opět přidal k součtu atomovou hmotnost kyslíku.
Stiskneme Enter na klávesnici počítače. Vstup prvního reagenta je ukončen a přepíná se na pole reagent2. Upozorníme, že v tomto příkladu poskytujeme minimální verzi. Pokud si přejete, můžete snadno uspořádat násobitele atomů jednoho typu, abyste například nemuseli sedmkrát stisknout buňku kyslíku při zadávání vzorce chromanu (K2Cr2O7).
Klikneme na buňku tabulky se symbolem H. Text v poli reagent2 se změní: „Druhý reagent H 1.008 najít x“.
Klikneme na buňku tabulky se symbolem Cl. Text v poli reagent2 se změní: „Druhý reagent HCl 36.458 najít x“. Kalkulátor sčítá atomové hmotnosti vodíku a chloru. Na výše uvedené reakční rovnici je před chlorovodíkem koeficient 2. Proto klikneme na pole reagent2. Molekulová hmotnost se zdvojuje (při dvojitém stisknutí se ztrojuje atd.). Text v poli reagent2 se změní: „Druhý reagent 2HCl 72.916 najít x“.
Stiskneme Enter na klávesnici počítače. Vstup druhého reagenta je ukončen a kalkulátor hledá x z poměru

Což bylo třeba nalézt.
Poznámka 1. Smysl získaného poměru: pro rozpuštění 100.086 sádry je potřeba 72.916 Da kyseliny, a pro rozpuštění 10 g sádry je potřeba x kyseliny.
Poznámka 2. Sbírky podobných úloh:
Chomčenko I. G., Sbírka úloh a cvičení z chemie 2009 (8-11 třída).
Chomčenko G. P., Chomčenko I. G., Sbírka úloh z chemie pro uchazeče na vysoké školy, 2019.
Poznámka 3. Pro zjednodušení úlohy lze ve výchozí verzi zjednodušit zadávání vzorce a jednoduše přidat symbol prvku na konec řetězce vzorce. Potom bude forma uhličitanu vápenatého vypadat jako:
CaCOOO
Ale takový zápis se učiteli chemie pravděpodobně nebude líbit. Opravit zápis není obtížné — k tomu je potřeba přidat pole:
formula : array [1..size] of integer;kde index je číslo chemického prvku a hodnota na tomto indexu představuje počet atomů (nejprve jsou všechny prvky pole inicializovány na nulu). Je nutné zohlednit pořadí zápisu atomů ve vzorci, které je v chemii běžné. Například O3CaC také nebylo příliš populární. Přenášíme odpovědnost na uživatele. Vytváříme pole:
formulaOrder : array [1..size] of integer; // lze to zkrátitkam zapisujeme číslo chemického prvku podle indexu jeho výskytu ve vzorci. Přidání atomu currNo do vzorce:
if formula [currNo]=0 then // tento atom se vyskytl poprvé
begin
orderIndex := orderIndex+1; // na začátku zadávání vzorce orderIndex=0
formulaOrder [orderIndex] := currNo;
end;
formula [currNo]:=formula [currNo]+1;Zápis vzorce do řetězce:
s := ''; // prázdný řetězec pro vzorec
for i:=1 to orderIndex do // pro všechny chem. symboly ve vzorci
begin
s:=s+TableSymbols [ formulaOrder[i]]; // přidáváme chem. symbol
if formula [formulaOrder[i]]1 then // přidáváme počet atomů
s:=s+ intToStr(formula [formulaOrder[i]]);
end;
Poznámka 4. Má smysl zajistit možnost alternativního zadání vzorce reagentu z klávesnice. V tomto případě bude nutné implementovat jednoduchý syntaktický analyzátor.
Je třeba poznamenat, že:
Dnes existuje několik stovek variant tabulky, přičemž vědci navrhují stále nové varianty. ()
Žáci mohou projevit důvtip i v tomto směru, realizováním některého z již navržených variant nebo se pokusit vytvořit svůj originální. Může se zdát, že je to nejméně užitečný směr pro hodiny informatiky. Nicméně v realizované podobě Periodické tabulky, o které se v tomto článku diskutuje, někteří žáci nemusí postřehnout zvláštní výhody řídících map před alternativním řešením pomocí běžných tlačítek TButton. Spiralní forma tabulky (kde buňky mají různé tvary) názorně demonstruje výhody zde navrhovaného řešení.

(, )
Dále bychom měli zmínit, že o řadě existujících počítačových programů pro Periodickou tabulku bylo nedávno napsáno na Habru .
Dodatek 2: příklady úloh pro filtryPomocí filtrů lze řešit například takové úkoly:
1) Vymezit v tabulce všechny prvky známé ve středověku.
2) Vymezit všechny prvky známé v době objevení Periodického zákona.
3) Vyberte sedm prvků, které alchymisté považovali za kovy.
4) Vyberte všechny prvky, které jsou v plynném stavu za normálních podmínek (n.p.).
5) Vyberte všechny prvky, které jsou v kapalném stavu za n.p.
6) Vyberte všechny prvky, které jsou v pevném stavu za n.p.
7) Vyberte všechny prvky, které mohou dlouho zůstat na vzduchu bez znatelných změn za n.p.
8) Vyberte všechny kovy, které se rozpouštějí v solné kyselině.
9) Vyberte všechny kovy, které se rozpouštějí v sírové kyselině za n.p.
10) Vyberte všechny kovy, které se rozpouštějí v sírové kyselině při zahřívání.
11) Vyberte všechny kovy, které se rozpouštějí v dusičné kyselině.
12) Vyberte všechny kovy, které bouřlivě reagují s vodou za n.p.
13) Vyberte všechny kovy.
14) Vyberte prvky, které jsou široce rozšířené v přírodě.
15) Vyberte prvky, které se v přírodě vyskytují ve volném stavu.
16) Vyberte prvky, které hrají zásadní roli v organismu člověka a zvířat.
17) Vyberte prvky, které se široce používají v domácnosti (ve volném stavu nebo v sloučeninách).
18) Vyberte prvky, jejichž práce je nejnebezpečnější a vyžaduje zvláštní opatření a ochranné prostředky.
19) Vyberte prvky, které představují největší hrozbu pro ekologii ve volném stavu nebo ve formě sloučenin.
20) Vyberte drahé kovy.
21) Vyberte prvky, které jsou dražší než drahé kovy.
Poznámky
1) Má smysl zajistit provoz několika filtrů. Například, pokud zapnete filtr na řešení úlohy 1 (všechny prvky známé ve středověku) a 20 (drahé kovy), budou vybrány (například barevně) buňky s drahými kovy známými ve středověku (například palladium, které bylo objeveno v roce 1803, nebude vybráno).
2) Mělo by smysl zajistit, aby několik filtrů fungovalo tak, že každý filtr zvýrazní buněk svou barvou, ale neodstraní úplně zvýraznění jiného filtru (část buňky jednou barvou, část druhou). V takovém případě budou viditelné prvky průniků množin z období středověku a vzácných kovů, jakož i prvky náležející pouze prvnímu a pouze druhému množství. Tedy vzácné kovy, které byly ve středověku neznámé, a prvky, které byly ve středověku známé, ale nejsou vzácnými kovy.
3) Mělo by smysl po aplikaci filtru umožnit další práce s výsledky. Například, vyznačením prvků známých ve středověku, uživatel klikne levým tlačítkem myši na vyznačený prvek a dostane se na článek v encyklopedii o tomto prvku.
4) Mělo by smysl umožnit uživateli odstranit zvýraznění kliknutím levým tlačítkem myši na vyznačenou buňku tabulky. Například, aby odstranil již prozkoumané prvky.
5) Mělo by smysl zajistit uložení seznamu vyznačených buněk do souboru a načtení takového souboru s automatickým zvýrazněním buněk. To uživateli umožní udělat si pauzu v práci.
Použili jsme statickou předem definovanou řídící mapu, avšak existuje mnoho důležitých úkolů, kde lze použít dynamické řídící mapy, které se mění v průběhu práce programu. Příkladem může být editor grafů, kde uživatel pomocí myši označuje v okně pozice vrcholů a kreslí mezi nimi hrany. Aby odstranil vrchol nebo hranu, musí na ně ukázat. Ale pokud je jednoduše ukázat na vrchol označený kruhem, ukázat na hranu nakreslenou tenkou čarou bude obtížnější. Zde pomůže řídící mapa, kde vrcholy a hrany zaujímají okolí širší, než je viditelný obrázek.
S dotyčnou metodou komplexního učení souvisí zajímavá vedlejší otázka: Může být tato metoda užitečná při učení AI?
Zdroj: habr.com
