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

(Керуючі карти)
(Присвячується Міжнародному року Періодичної таблиці хімічних елементів)
(Останні доповнення зроблено 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. Має сенс забезпечити можливість альтернативного введення формули реагенту з клавіатури. І тут потрібно буде продати простий синтаксичний аналізатор.

Варто відмітити що:

Сьогодні є кілька сотень варіантів таблиці, у своїй вчені пропонують нові варіанти. (Вікіпедія)

Учні можуть виявити кмітливість і в цьому напрямку, реалізуючи якийсь із вже запропонованих варіантів або спробувати зробити свій оригінальний. Може здатися, що це найменш корисний для уроків інформатики напрямок. Однак у реалізованій у цій статті формі Періодичної таблиці деякі учні можуть не розглянути особливих переваг карт, що управляють, перед альтернативним рішенням за допомогою стандартних кнопок TButton. Спіральна форма таблиці (де клітини різної форми) наочно продемонструє переваги запропонованого рішення.

Таблиця Менделєєва на шкільній інформатиці
(Альтернативна система елементів Теодора Бенфея, Джерело)

Додамо також, що про низку існуючих на даний момент комп'ютерних програм для Таблиці Менделєєва розказано в нещодавно опублікованій на Хабрі статті.

Додаток 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

Додати коментар або відгук