Табліца Мендзялеева на школьнай інфарматыцы

(Кіруючыя карты)
(Прысвячаецца Міжнароднаму году Перыядычнай табліцы хімічных элементаў)
(Апошнія дапаўненні зроблены 8 красавіка 2019. Спіс дапаўненняў адразу пад катом)

Табліца Мендзялеева на школьнай інфарматыцы
(Кветка Мендзялеева, Крыніца)

Памятаецца, мы праходзілі качку. Гэта былі адразу тры ўрокі: геаграфія, прыродазнаўства і руская. На ўроку прыродазнаўства качка вывучалася як качка якія ў яе крылцы, якія лапкі, як яна плавае і гэтак далей. На ўроку геаграфіі тая ж качка вывучалася як жыхар зямнога шара: трэба было на карце паказаць, дзе яна жыве і дзе яе няма. На рускай Серафіма Пятроўна вучыла нас пісаць «у-т-к-а» і чытала што-небудзь аб качках з Брэма. Мімаходзь яна паведамляла нам, што па-нямецку качка вось так, а па-французску вось так. Здаецца, гэта называлася тады "комплексным метадам". Увогуле, усё выходзіла "мімаходам".

Веньямін Каверын, два капітаны

У прыведзенай цытаце Веньямін Каверын па-майстэрску паказаў недахопы комплекснага метаду навучання, аднак у некаторых (магчыма, даволі рэдкіх) выпадках элементы гэтага метаду бываюць апраўданыя. Адзін з такіх выпадкаў - гэта Перыядычная табліца Д. І. Мендзялеева на ўроках школьнай інфарматыкі. Задача праграмнай аўтаматызацыі тыпавых дзеянняў з табліцай Мендзялеева наглядная для школьнікаў, якія пачалі вывучаць хімію, і разбіваецца на многія тыпавыя хімічныя задачы. У той жа час у рамках інфарматыкі гэтая задача дазваляе ў простай форме прадэманстраваць спосаб кіраўнікоў карт, які можна аднесці да графічнага праграмавання, які разумеецца ў шырокім сэнсе слова як праграмаванне з дапамогай графічных элементаў.

(8 красавіка 2019 г. зроблены дапаўненні:
Дадатак 1: як працуе хімічны калькулятар
Дадатак 2: прыклады задач для фільтраў)

Пачнём з базавай задачы. У найпростым выпадку на экране ў форме-акне павінна адлюстроўвацца Перыядычная табліца, дзе ў кожнай клетцы будзе хімічнае абазначэнне элемента: H - вадарод, He - гелій і г.д. Калі курсор мышы паказвае на клетку, то ў спецыяльным полі на нашай форме адлюстроўваецца абазначэнне элемента і яго нумар. Калі карыстач пры гэтым націсне ЛКМ, то ў іншым полі формы будзе паказаны пазначэнне і нумар гэтага абранага элемента.

Табліца Мендзялеева на школьнай інфарматыцы

Задачу можна вырашаць на любым універсальным ЯП. Мы возьмем просты стары Delpi-7, зразумелы амаль усім. Але перш чым праграмаваць на ЯП, намалюем дзве карцінкі, напрыклад, у Фотошопе. Па-першае, намалюем Перыядычную табліцу ў тым выглядзе, як мы жадаем яе бачыць у праграме. Захаваем вынік у графічным файле table01.bmp.

Табліца Мендзялеева на школьнай інфарматыцы

Для другога малюнка выкарыстоўваем першы. Будзем паслядоўна заліваць вычышчаныя ад усякай графікі клеткі табліцы ўнікальнымі кветкамі ў каляровай мадэлі RGB. R і G заўсёды будуць 0, а B=1 для вадароду, 2 для гелія і г. д. Гэты малюнак і будзе нашай кіруючай картай, якую мы захаваем у файл пад імем table2.bmp.

Табліца Мендзялеева на школьнай інфарматыцы

Першы этап графічнага праграмавання ў Фотошопе скончаны. Пяройдзем да графічнага праграмавання GUI у IDE Delpi-7. Для гэтага адкрываем новы праект, дзе на галоўную форму змяшчаем кнопку выкліку дыялогу (tableDlg), у якім будзе праходзіць праца з табліцай. Далей працуем з формай tableDlg.

Змяшчаем на форму кампанент класа TImage. Атрымліваем Image1. Адзначым, што ў агульным выпадку для вялікіх праектаў аўтаматычна згенераваныя імёны віду ImageN, Дзе N можа дасягаць некалькіх дзясяткаў і больш - не лепшы стыль праграмавання, і варта даваць больш асэнсаваныя імёны. Але ў нашым маленькім праекце, дзе N не будзе пераўзыходзіць 2, можна пакінуць як згенеравалася.

Ва ўласцівасць Image1.Picture загружаем файл table01.bmp. Ствараем Image2 і загружаем туды нашу кіруючую карту table2.bmp. Пры гэтым файл які робіцца маленькім і нябачным карыстачу, як паказана ў левым ніжнім куце формы. Дадаем дадатковыя элементы кантролю, прызначэнні якіх відавочна. Другі этап графічнага праграмавання GUI у IDE Delpi-7 скончаны.

Табліца Мендзялеева на школьнай інфарматыцы

Пераходзім да трэцяга этапу – напісання кода ў IDE Delpi-7. Модуль складаецца ўсяго з пяці апрацоўшчыкаў падзей: стварэнне формы (FormCreate), руху курсора па Image1 (Image1MouseMove), націск ЛКМ на клетку (Image1Click) і выхаду з дыялогу з дапамогай кнопак OK (OKBtnClick) або Cancel (CancelBtnClick). Загалоўкі гэтых апрацоўшчыкаў генеруюцца стандартным чынам з дапамогай IDE.

Зыходны код модуля:

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.

У нашай версіі мы ўзялі табліцу памерам 104 элемента (канстанта памер). Відавочным чынам гэты памер можа быць павялічаны. Абазначэнні элементаў (хімічныя сімвалы) запісваюцца ў масіў TableSymbols. Аднак па меркаваннях кампактнасці зыходнага кода ўяўляецца мэтазгодным запісаць паслядоўнасць гэтых пазначэнняў у выглядзе радковых канстант. PeriodicTableStr1..., PeriodicTableStr4, Каб пры падзеі стварэння формы праграма сама раскідала гэтыя абазначэнні па элементах масіва. Кожнае абазначэнне элемента складаецца з адной ці дзвюх лацінскіх літар, прычым першая літара вялікая, а другая (калі ёсць) маленькая. Гэтае нескладанае правіла рэалізуецца пры загрузцы масіва. Такім чынам, паслядоўнасць пазначэнняў атрымоўваецца запісаць сціснутай выявай без прабелаў. Разбіўка паслядоўнасці на чатыры часткі (канстанты PeriodicTableStr1..., PeriodicTableStr4) абумоўлена меркаваннем зручнасці чытання зыходнага кода, т.я. занадта доўгі радок можа не змясціцца цалкам на экране.

Пры падзеі перамяшчэння курсора мышы па Image1 апрацоўшчык Image1MouseMove гэтай падзеі вызначае значэнне сіняй кампаненты колеру пікселя кіруючай карты Image2 для бягучых каардынат курсора. Па пабудове Image2 гэтае значэнне роўна нумару элемента, калі курсор знаходзіцца ўсярэдзіне клеткі; нуля, калі на мяжы, і 255 у іншых выпадках. Астатнія дзеянні, якія вырабляюцца праграмай, трывіяльныя і не патрабуюць тлумачэнняў.

У дадатак да адзначаных вышэй стылістычным прыёмам праграмавання варта адзначыць стыль каментароў. Строга кажучы, разгледжаны код настолькі маленькі і просты, што каментары выглядаюць не асоба патрэбнымі. Аднак яны былі дададзены ў тым ліку і па метадычных меркаваннях - кароткі код дазваляе зрабіць навочней некаторыя агульныя высновы. У прадстаўленым кодзе дэклараваны адзін клас (TtableDlg). Метады гэтага класа можна памяняць месцамі і гэта ніяк не адаб'ецца на функцыянаванні праграмы, але можа адбіцца на яе удобочитаемости. Напрыклад, прадставім паслядоўнасць:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Можа, і не вельмі прыкметна, але чытаць і разбірацца стане крыху больш складана. Калі метадаў не пяць, а ў дзясяткі разоў больш і ў секцыі рэалізацыя у іх зусім іншы парадак прытрымлівання, чым у апісаннях класаў, то хаос будзе толькі ўзрастаць. Таму, хоць строга даказаць цяжка і можа быць нават немагчыма, але можна спадзявацца, што навядзенне дадатковага парадку палепшыць чытальнасць кода. Гэтаму дадатковаму парадку садзейнічае лагічная групоўка некалькіх метадаў, якія выконваюць блізкія задачы. Кожнай групе варта даць загаловак, напрыклад:

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

Гэтыя загалоўкі варта скапіяваць у пачатак модуля і аформіць як змест. У некаторых выпадках досыць доўгіх модуляў такія зместы падаюць дадатковыя магчымасці навігацыі. Аналагічна ў доўгім целе аднаго метаду, працэдуры ці функцыі варта, па-першае, адзначыць канец гэтага цела:

end; // FormCreate

а, па-другое, у разбэшчаных аператарах з праграмнымі дужкамі begin – end адзначыць аператар, да якога ставіцца якая зачыняе дужка:

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

Для вылучэння загалоўкаў груп і канцоў цел метадаў можна дадаць радкі, якія перавышаюць даўжыню большасці аператараў і складаюцца, напрыклад, са знакаў «=» і «_» адпаведна.
Ізноў жа трэба абмовіцца: у нас занадта просты прыклад. А калі код метаду не змяшчаецца на адзін экран, у шасці наступных сябар за сябрам end разабрацца, каб вырабіць змены кода, бывае няпроста. У некаторых старых кампілятарах, напрыклад, Pascal 8000 для OS IBM 360/370 у лістынгу злева друкавалася службовая калонка выгляду

B5
…
E5

Гэта азначала, што якая зачыняе праграмная дужка на радку E5 адпавядае адкрывалай дужцы на радку B5.

Вядома, стыль праграмавання вельмі неадназначнае пытанне, таму выказаныя тут ідэі варта ўспрымаць не больш за інфармацыю да разважання. Двум дастаткова вопытным праграмістам, у якіх за многія гады працы склаліся і сталі звыклымі розныя стылі, бывае вельмі цяжка дамовіцца. Іншая справа навучэнец праграмаваць школьнік, у якога яшчэ не было часу здабыць свой уласны стыль. Думаю, што ў гэтым выпадку настаўнік павінен сама меней данесці да сваіх вучняў такую ​​простую, але невідавочную ім думку, што поспех праграмы шмат у чым залежыць ад стылю, на якім напісаны яе зыходны код. Вучань можа не рушыць услед рэкамендуемаму стылю, але хай ён хоць бы задумаецца аб неабходнасці "лішніх" дзеянняў для паляпшэння афармлення зыходнага кода.

Вяртаючыся да нашай базавай задачы па Перыядычнай табліцы: далейшае развіццё можа ісці ў розных кірунках. Адзін з напрамкаў даведачнае: пры навядзенні курсора мышы на клетку табліцы выпадае інфарм-акно, якое змяшчае дадатковыя звесткі па ўказаным элеменце. Далейшае развіццё - фільтры. Напрыклад, у залежнасці ад усталёўкі ў информ-акне будзе толькі: найважнейшыя фіз-хім звесткі, інфармацыя па гісторыі адкрыцця, інфармацыя аб распаўсюджванні ў прыродзе, спіс найважнейшых злучэнняў (куды ўваходзіць дадзены элемент), фізіялагічныя ўласцівасці, назва на замежнай мове і г.д. д. Успамінаючы «качку» Каверына, з якой пачынаецца гэты артыкул, можна сказаць, што пры такім развіцці праграмы атрымаем поўны навучальны комплекс па прыродазнаўчых навуках: акрамя інфарматыкі, фізікі і хіміі - біялогія, эканамічная геаграфія, гісторыя навукі і нават замежныя мовы.

Але лакальная база дадзеных - гэта не мяжа. Праграма натуральным чынам падключаецца да Інтэрнэту. Пры выбары элемента спрацоўвае спасылка, і ў акне web-браўзэра расчыняецца артыкул Вікіпедыі пра дадзены элемент. Вікіпедыя, як вядома, не з'яўляецца аўтарытэтнай крыніцай. Можна задаць спасылкі на аўтарытэтныя крыніцы, напрыклад, хімічную энцыклапедыю, БСЭ, рэфератыўныя часопісы, замовіць запыты ў пошукавых сістэмах на дадзены элемент і г.д. В.а. вучні змогуць выконваць простыя, але змястоўныя заданні па тэмах СКБД і Інтэрнет.

Акрамя запытаў па асобным элеменце, можна зрабіць функцыянал, які будзе адзначаць, напрыклад, рознымі колерамі клеткі ў табліцы, якія адпавядаюць вызначаным крытэрам. Напрыклад, металы і неметалы. Або клеткі, якія злівае ў вадаёмы мясцовы хімзавод.

Можна таксама рэалізаваць функцыі запісной кніжкі-арганайзера. Напрыклад, вылучыць у табліцы элементы, якія ўваходзяць у іспыт. Потым вылучаць элементы, вывучаныя/паўтораныя вучнем пры падрыхтоўцы да іспыту.

А вось, напрыклад, адна з тыпавых задач школьнай хіміі:

Дадзена 10 г мелу. Колькі салянай кіслаты трэба ўзяць, каб растварыць усю гэту крэйду?

Каб рашыць гэтую задачу, трэба, запісаўшы хім. рэакцыю і расставіўшы ў ёй каэфіцыенты, палічыць малекулярныя вагі карбанату кальцыя і хлорыстага вадароду, потым скласці і вырашыць прапорцыю. Палічыць і вырашыць зможа калькулятар на аснове нашай базавай праграмы. Праўда, яшчэ трэба будзе ўлічыць, што кіслату трэба ўзяць з разумнай лішкам і ў разумнай канцэнтрацыі, але гэта ўжо хімія, а не інфарматыка.
Дадатак 1: як працуе хімічны калькулятарРазбярэм працу калькулятара на прыкладзе прыведзенай вышэй задачы мелу і "салянкі". Пачнём з рэакцыі:

CaCO3 + 2HCl = CaCl2 + H2O

Адсюль бачым, што нам будуць патрэбны атамныя вагі наступных элементаў: кальцыю (Ca), вугляроду (С), кіслароду (O), вадароду (H) і хлору (Cl). У найпростым выпадку можам запісаць гэтыя вагі ў аднамерны масіў, вызначаны як

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

дзе азначнік масіва адпавядае нумару элемента. Яшчэ на вольнае месца формы tableDlg змяшчаем два палі. У першым полі першапачаткова напісана: "Першы рэагент дадзена", у другім - "Другі рэагент знайсці х". Абазначым палі reagent1, reagent2 адпаведна. Іншыя дадаткі ў праграму будуць ясныя з наступнага прыкладу працы калькулятара.

Набіраем на клавіятуры кампутара: 10 г. Надпіс у поле reagent1 змяняецца: "Першы рэагент дадзена 10 г". Цяпер уводзім формулу гэтага рэагента, а калькулятар будзе лічыць і паказваць яго малекулярную вагу па меры ўводу.

Націскаем ЛКМ на клетку табліцы з сімвалам Ca. Надпіс у полі reagent1 змяняецца: "Першы рэагент Ca 40.078 дадзена 10 г".

Націскаем ЛКМ на клетку табліцы з сімвалам C. Надпіс у поле reagent1 змяняецца: "Першы рэагент CaC 52.089 дадзена 10 г". Г.зн. калькулятар склаў атамныя вагі кальцыя і вугляроду.

Націскаем ЛКМ на клетку табліцы з сімвалам O. Надпіс у полі reagent1 змяняецца: "Першы рэагент CaCO 68.088 дадзена 10 г". Калькулятар дадаў да сумы атамную вагу кіслароду.

Націскаем ЛКМ на клетку табліцы з сімвалам O. Надпіс у полі reagent1 змяняецца: "Першы рэагент CaCO2 84.087 дадзена 10 г". Калькулятар яшчэ раз дадаў да сумы атамную вагу кіслароду.

Націскаем ЛКМ на клетку табліцы з сімвалам O. Надпіс у полі reagent1 змяняецца: "Першы рэагент CaCO3 100.086 дадзена 10 г". Калькулятар зноў дадаў да сумы атамную вагу кіслароду.

Націскаем Enter на клавіятуры кампутара. Увод першага рэагента скончаны і перамыкаецца на поле reagent2. Адзначым, што ў гэтым прыкладзе мы прыводзім мінімальную версію. Пры жаданні можна лёгка арганізаваць множнікі атамаў аднаго тыпу, каб, напрыклад, не націскаць па сем разоў запар на клетку кіслароду пры ўводзе формулы хромпіку (K2Cr2O7).

Націскаем ЛКМ на клетку табліцы з сімвалам H. Надпіс у полі reagent2 мяняецца: “Другі рэагент H 1.008 знайсці х”.

Націскаем ЛКМ на клетку табліцы з сімвалам Cl. Надпіс у полі reagent2 мяняецца: “Другі рэагент HCl 36.458 знайсці х”. Калькулятар склаў атамныя вагі вадароду і хлору. У прыведзеным вышэй раўнанні рэакцыі перад хлорыстым вадародам варта каэфіцыент 2. Таму націскаем ЛКМ на поле reagent2. Малекулярная вага падвойваецца (пры падвойным націску патройваецца і г.д.). Надпіс у полі reagent2 мяняецца: “Другі рэагент 2HCl 72.916 знайсці х”.

Націскаем Enter на клавіятуры кампутара. Увод другога рэагента скончаны, і калькулятар знаходзіць x з прапорцыі

Табліца Мендзялеева на школьнай інфарматыцы

Што і трэба было знайсці.

Заўвага 1. Сэнс атрыманай прапорцыі: для растварэння 100.086 Da мелу трэба 72.916 Da кіслаты, а для растварэння 10 г мелу трэба х кіслаты.

Заўвага 2. Зборнікі падобных задач:

Хомчанка І. Г., Зборнік задач і практыкаванняў па хіміі 2009 г (8-11 клас).
Хомчанка Г. П., Хомчанка І. Г., Зборнік задач па хіміі для тых, хто паступае ў ВНУ, 2019.

Заўвага 3. Для спрашчэння задачы можна ў пачатковай версіі спрасціць увод формулы і проста дапісваць сімвал элемента ў канец радка формулы. Тады формула карбанату кальцыя будзе мець выгляд:
CaCOOO
Але такі запіс ці наўрад спадабаецца настаўніку хіміі. Правільны запіс зрабіць няцяжка - для гэтага трэба дадаць масіў:

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

дзе індэкс - нумар хімічнага элемента, а значэнне па гэтым індэксе - колькасць атамаў (першапачаткова ўсе элементы масіва абнуляюцца). Трэба ўлічваць парадак запісу атамаў у формуле, прыняты ў хіміі. Напрыклад, O3CaC таксама мала каму спадабаецца. Перакладзем адказнасць на карыстальніка. Які робіцца масіў:

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

куды запісваем нумар хімічнага элемента па азначніку з'яўлення яго ў формуле. Даданне атама currNo у формулу:

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

Запіс формулы ў радок:

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;

Заўвага 4. Мае сэнс забяспечыць магчымасць альтэрнатыўнага ўводу формулы рэагента з клавіятуры. У гэтым выпадку неабходна рэалізаваць просты сінтаксічны аналізатар.

Варта адзначыць, што:

Сёння існуюць некалькі сотняў варыянтаў табліцы, пры гэтым навукоўцы прапануюць усё новыя варыянты. (Вікіпедыя)

Вучні могуць праявіць кемлівасць і ў гэтым напрамку, рэалізуючы які-небудзь з ужо прапанаваных варыянтаў або паспрабаваць зрабіць свой арыгінальны. Можа здацца, што гэты найменш карысны для ўрокаў інфарматыкі напрамак. Аднак у рэалізаванай у гэтым артыкуле форме Перыядычнай табліцы некаторыя вучні могуць не разглядзець адмысловых пераваг кіраўнікоў карт перад альтэрнатыўным рашэннем з дапамогай стандартных кнопак. TBton. Спіральная форма табліцы (дзе клеткі рознай формы) навочней прадэманструе перавагі прапанаванага тут рашэння.

Табліца Мендзялеева на школьнай інфарматыцы
(Альтэрнатыўная сістэма элементаў Тэадора Бэнфея, Крыніца)

Дадамо таксама, што аб шэрагу існуючых на дадзены момант кампутарных праграм для Табліцы Мендзялеева расказана ў нядаўна апублікаванай на Хабре артыкуле.

Дадатак 2: прыклады задач для фільтраўЗ дапамогай фільтраў можна рашаць, напрыклад, такія задачы:

1) Вылучыць у табліцы ўсе элементы, вядомыя ў сярэднія стагоддзі.

2) Вылучыць усе элементы, вядомыя да моманту адкрыцця Перыядычнага закону.

3) Вылучыць сем элементаў, якія алхімікі лічылі металамі.

4) Вылучыць усе элементы, якія знаходзяцца ў газападобным стане пры нармальных умовах (н.у.).

5) Вылучыць усе элементы, якія знаходзяцца ў вадкім стане пры н.у.

6) Вылучыць усе элементы, якія знаходзяцца ў цвёрдым стане пры н.у.

7) Вылучыць усе элементы, якія могуць доўгі час знаходзіцца на паветры без прыкметных змен пры н.у.

8) Вылучыць усе металы, якія раствараюцца ў салянай кіслаце.

9) Вылучыць усе металы, якія раствараюцца ў сернай кіслаце пры н.у.

10) Вылучыць усе металы, якія раствараюцца ў сернай кіслаце пры награванні.

11) Вылучыць усе металы, якія раствараюцца ў азотнай кіслаце.

12) Вылучыць усе металы, якія бурна рэагуюць з вадой пры н.у.

13) Вылучыць усе металы.

14) Вылучыць элементы, шырока распаўсюджаныя ў прыродзе.

15) Вылучыць элементы, якія сустракаюцца ў прыродзе ў вольным стане.

16) Вылучыць элементы, якія адыгрываюць найважнейшую ролю ў арганізме чалавека і жывёл.

17) Вылучыць элементы, якія шырока выкарыстоўваюцца ў побыце (у свабодным выглядзе або ў злучэннях).

18) Вылучыць элементы, працы з якімі найболей небяспечныя і патрабуюць адмысловых мер і сродкаў абароны.

19) Вылучыць элементы, якія ў свабодным выглядзе або ў выглядзе злучэнняў уяўляюць найбольшую пагрозу для экалогіі.

20) Вылучыць каштоўныя металы.

21) Вылучыць элементы, якія каштуюць даражэй за каштоўныя металы.

Заўвагі

1) Мае сэнс забяспечыць працу некалькіх фільтраў. Напрыклад, калі ўключыць фільтр на рашэнне задачы 1(усе элементы, вядомыя ў сярэднія стагоддзі) і 20 (каштоўныя металы), то будуць вылучаныя (напрыклад, колерам) клеткі з каштоўнымі металамі, вядомымі ў сярэднія стагоддзі (не будзе вылучаны, напрыклад, паладый , адкрыты ў 1803 г.).

2) Мае сэнс забяспечыць працу некалькіх фільтраў у такім рэжыме, каб кожны фільтр вылучаў клеткі сваім колерам, але не выдаляў цалкам вылучэнне іншага фільтра (частка клеткі адным колерам, частка іншым). Тады ў выпадку папярэдняга прыкладу будуць бачныя элементы перасячэння мностваў адкрытых у сярэднія вякі і каштоўных металаў, а таксама элементы, прыналежныя толькі першаму і толькі другому мноствам. Г.зн. каштоўныя металы, невядомыя ў сярэднія стагоддзі, і элементы, вядомыя ў сярэднія стагоддзі, але не якія з'яўляюцца каштоўнымі металамі.

3) Мае сэнс пасля ўжывання фільтра забяспечыць магчымасць іншых прац з атрыманымі вынікамі. Напрыклад, вылучыўшы элементы, вядомыя ў сярэднія стагоддзі, карыстач націскае ЛКМ на вылучаны элемент і пападае ў артыкул Вікіпедыі пра гэты элемент.

4) Мае сэнс забяспечыць магчымасць карыстачу здымаць вылучэнне націскам ЛКМ на выдзеленую клетку табліцы. Напрыклад, каб прыбраць ужо прагледжаныя элементы.

5) Мае сэнс забяспечыць захаванне спісу выдзеленых клетак у файле і загрузку такога файла з аўтаматычным вылучэннем клетак. Гэта дасць карыстачу магчымасць зрабіць перапынак у працы.

Мы выкарыстоўвалі статычную наперад зададзеную кіруючую карту, аднак ёсць шмат важных задач, дзе могуць выкарыстоўвацца дынамічныя кіраўнікі карты, якія змяняюцца падчас працы праграмы. Прыкладам можа быць рэдактар ​​графаў, у якім карыстач з дапамогай мышы паказвае ў акне становішча вяршыняў і малюе рэбры паміж імі. Каб выдаліць вяршыню ці рабро, карыстач павінен паказаць на яе. Але калі на вяршыню, пазначаную кружком, паказаць досыць проста, то на рабро, прамаляванае тонкай лініяй, паказаць будзе складаней. Тут дапаможа кіруючая карта, дзе вяршыні і рэбры займаюць наваколлі шырэйшыя, чым на бачным малюнку.

З закранутым метадам комплекснага навучання звязана цікавае пабочнае пытанне: ці можа дадзены метад быць карысны пры навучанні ІІ?

Крыніца: habr.com

Дадаць каментар