Periodesch Tabell iwwer Schoulinformatik

(Kontrollkaarten)
(Gewidmet dem Internationale Joer vum Periodic Table of Chemical Elements)
(Déi lescht Ergänzunge goufen den 8. Abrëll 2019 gemaach. D'Lëscht vun den Ergänzunge steet direkt ënner dem Schnëtt)

Periodesch Tabell iwwer Schoulinformatik
(Mendeleev seng Blummen, Source)

Ech erënnere mech datt mir d'Inte passéiert hunn. Dëst waren dräi Lektioune gläichzäiteg: Geographie, Naturwëssenschaften a Russesch. An enger Wëssenschaftsstonn gouf eng Int als Int studéiert, wéi eng Flilleken si huet, wéi eng Been et huet, wéi se schwëmmt, asw. An enger Geografie Lektioun gouf déi selwecht Int als Awunner vum Globus studéiert: et war néideg op enger Kaart ze weisen, wou se wunnt a wou net. Op Russesch huet d'Serafima Petrovna eis geléiert "u-t-k-a" ze schreiwen an eppes iwwer Enten aus Brem ze liesen. Am Virgänger huet si eis matgedeelt, datt op Däitsch Inten esou ass, an op Franséisch esou. Ech mengen et gouf deemools déi "komplex Method" genannt. Am Allgemengen ass alles "am laanschtgaangen" erauskomm.

Benjamin Caverin, Zwee Kapitän

Am uewe genannte Zitat huet Veniamin Kaverin d'Mängel vun der komplexer Léiermethod beherrscht gewisen, awer an e puer (vläicht zimlech seelen) Fäll sinn d'Elementer vun dëser Method gerechtfäerdegt. Een esou Fall ass dem D.I. Mendeleev säi periodesche Dësch an de Schoulinformatikcoursen. D'Aufgab vun der Software Automatisatioun vun typesch Aktiounen mat der periodeschen Dësch ass kloer fir Schoulkanner, déi ugefaang Chimie ze studéieren, an ass a vill typesch chemesch Aufgaben opgedeelt. Zur selwechter Zäit, am Kader vun der Informatik, erlaabt dës Aufgab eis an enger einfacher Form d'Method vu Kontrollkaarten ze demonstréieren, déi op grafesch Programméierung zougeschriwwe ginn, am breede Sënn vum Wuert als Programméiere mat grafeschen Elementer verstanen.

(Abrëll 8, 2019 Ergänzunge gemaach:
Addendum 1: Wéi funktionnéiert de Chimierechner
Appendix 2: Beispiller vun Aufgaben fir Filteren)

Loosst d'mat der Basis Aufgab ufänken. Am einfachsten Fall soll de periodesch Dësch um Écran an enger Fënster Form ugewisen ginn, wou an all Zell gëtt et eng chemesch Bezeechnung vum Element: H - Waasserstoff, He - Helium, etc. Wann de Mauscursor op eng Zell weist, da ginn d'Bezeechnung vum Element a seng Zuel an engem speziellen Feld op eiser Form ugewisen. Wann de Benotzer LMB dréckt, da gëtt d'Bezeechnung an d'Zuel vun dësem ausgewielten Element an engem anere Feld vun der Form uginn.

Periodesch Tabell iwwer Schoulinformatik

De Problem kann mat all universell Sprooch geléist ginn. Mir huelen den einfachen alen Delpi-7, dee bal jiddereen verständlech ass. Awer ier Dir am PL programméiert, loosst eis zwee Biller molen, zum Beispill am Photoshop. Als éischt, loosst eis de Periodic Table an der Form zéien, déi mir et am Programm gesinn. Späichert d'Resultat an enger Grafikdatei table01.bmp.

Periodesch Tabell iwwer Schoulinformatik

Fir déi zweet Zeechnung benotze mir déi éischt. Mir fëllen sequentiell d'Tabellenzellen, geläscht vun all Grafiken, mat eenzegaartege Faarwen am RGB Faarfmodell. R an G wäert ëmmer 0, an B = 1 fir Waasserstoff, 2 fir Helium, etc. Dës Zeechnen wäert eis Kontroll Kaart ginn, déi mir an engem Fichier späicheren genannt table2.bmp.

Periodesch Tabell iwwer Schoulinformatik

Déi éischt Stuf vun der Grafikprogramméierung am Photoshop ass ofgeschloss. Loosst eis op grafesch GUI Programméierung an der Delpi-7 IDE goen. Fir dëst ze maachen, öffnen en neie Projet, wou mir op der Haaptform en Dialog Knäppchen setzen (Dësch Dlg), an där Aarbecht mam Dësch stattfënnt. Als nächst schaffe mir mat der Form Dësch Dlg.

Plaz eng Klass Komponent op der Form TI Bild... Mir kréien Image1. Bedenkt datt am Allgemengen, fir grouss Projeten, automatesch Nimm vun der Form generéiert Bild Nwou N kann e puer Dosen oder méi erreechen - dëst ass net dee beschte Programméierungsstil, a méi sënnvoll Nimm solle ginn. Mä an eisem klenge Projet, wou N wäert net däerfte 2, Dir kënnt et als generéiert verloossen.

Zu Immobilien Bild1.Bild lued de Fichier erop table01.bmp. Mir kreéieren Image2 a lued eis Kontrollkaart do table2.bmp. An dësem Fall maache mir d'Datei kleng an onsichtbar fir de Benotzer, wéi an der ënneschter lénkser Ecke vum Formulaire gewisen. Mir addéieren zousätzlech Kontrollelementer, den Zweck vun deem ass evident. Déi zweet Stuf vun der grafescher GUI Programméierung an der Delpi-7 IDE ass ofgeschloss.

Periodesch Tabell iwwer Schoulinformatik

Loosst eis op déi drëtt Stuf goen - Code schreiwen an der Delpi-7 IDE. De Modul besteet aus nëmme fënnef Event Handler: Form Créatioun (FormCreate), Cursorbewegung Image1 (Bild 1 MouseMove), klickt op LMB op eng Zell (Bild 1 Klickt) a gitt den Dialog mat den OK Knäppercher aus (OKBtnKlick) oder annuléieren (OfbriechenBtnClick). D'Header vun dësen Handler ginn op eng Standard Manéier mat der IDE generéiert.

Modul Quellcode:

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.

An eiser Versioun hu mir en Dësch vun 104 Elementer (konstant Gréisst). Natierlech kann dës Gréisst erhéicht ginn. Elementbezeechnungen (chemesch Symboler) ginn op eng Array geschriwwe Dësch Symboler. Wéi och ëmmer, aus Grënn vun der Kompaktheet vum Quellcode, schéngt et unzeroden d'Sequenz vun dësen Notatiounen a Form vu Stringkonstanten ze schreiwen PeriodicTableStr1,… , PeriodicTableStr4sou datt wann d'Form erstallt gëtt, de Programm selwer dës Bezeechnungen ënner den Elementer vun der Array verdeelt. All Elementbezeechnung besteet aus engem oder zwee laténgesche Buschtawen, woubäi den éischte Buschtaf grouss ass an den zweeten (wann iwwerhaapt) kleng Buschtawen. Dës einfach Regel gëtt implementéiert wann Dir en Array luet. Sou kann d'Sequenz vun den Notatioune präzis ouni Raum geschriwwe ginn. Eng Sequenz a véier Deeler briechen (Konstanten PeriodicTableStr1,… , PeriodicTableStr4) ass wéinst Iwwerleeunge vu Liichtegkeet vum Quellcode ze liesen, well Eng Zeil déi ze laang ass, passt vläicht net ganz op den Ecran.

Wann d'Mauscursor iwwer de Image1 Handler Bild 1 MouseMove dëst Evenement bestëmmt de Wäert vun der blo Faarf Komponente vun der Kontroll Kaart Pixel Image2 fir déi aktuell Cursorkoordinaten. Duerch Bau Image2 dëse Wäert ass d'selwecht wéi d'Elementnummer wann de Cursor an der Zell ass; null wann op der Grenz, an 255 an anere Fäll. Déi reschtlech Aktiounen, déi vum Programm gemaach ginn, sinn trivial a erfuerderen keng Erklärung.

Zousätzlech zu de stilistesche Programméierungstechniken, déi uewe bemierkt sinn, ass et derwäert de Kommentarstil ze notéieren. Streng geschwat ass de diskutéierte Code sou kleng an einfach datt Kommentarer net besonnesch noutwendeg schéngen. Si goufen awer och aus methodologesche Grënn bäigefüügt - de Kuerzcode erlaabt eis e puer allgemeng Conclusiounen méi kloer ze maachen. Am presentéiert Code gëtt eng Klass deklaréiert (TableDlg). Methode vun dëser Klass kënnen austauscht ginn an dëst wäert de Fonctionnement vum Programm op iergendeng Manéier beaflossen, awer kann seng Liesbarkeet beaflossen. Stellt Iech zum Beispill d'Sequenz vir:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Et ass vläicht net ganz opfälleg, awer et gëtt e bësse méi schwéier ze liesen a ze verstoen. Wann et net fënnef sinn, awer zéngmol méi Methoden an der Rubrik Ëmsetzung si hunn eng ganz aner Uerdnung wéi an de Klassebeschreiwungen, da wäert de Chaos nëmmen zouhuelen. Dofir, och wann et schwéier ass strikt ze beweisen a vläicht souguer onméiglech ass, kann een hoffen datt d'Aféierung vun zousätzlech Bestellung d'Liesbarkeet vum Code verbessert. Dës zousätzlech Uerdnung gëtt duerch d'logesch Gruppéierung vu verschiddene Methoden erliichtert, déi verbonne Aufgaben ausféieren. All Grupp soll en Titel ginn, zum Beispill:

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

Dës Rubriken sollen un den Ufank vum Modul kopéiert ginn an als Inhaltsverzeechnes formatéiert ginn. An e puer Fäll vun zimlech laang Moduler, esou Inhaltsverzeechnes bidden zousätzlech Navigatioun Optiounen. Ähnlech, am laange Kierper vun enger Method, Prozedur oder Funktioun, ass et derwäert fir d'éischt d'Enn vun dësem Kierper ze markéieren:

end; // FormCreate

an zweetens, an verzweifelte Aussoe mat Programmklammern beginn - Enn, markéiert d'Ausso op déi d'Ofschlossklammer bezitt:

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

Fir d'Gruppheader an d'Enn vu Methodkierper ze markéieren, kënnt Dir Zeilen addéieren déi méi laang si wéi déi meescht Aussoen a besteet zum Beispill aus de Charaktere "=" respektiv "_".
Nach eng Kéier musse mir reservéieren: Eist Beispill ass ze einfach. A wann de Code vun enger Method net op engem Écran passt, kann et schwéier sinn sechs hannereneen Enn ze verstoen fir Code Ännerungen ze maachen. An e puer alen Compiler, zum Beispill, Pascal 8000 fir OS IBM 360/370, gouf eng Servicekolonn wéi dës op der lénker Säit an der Lëscht gedréckt

B5
…
E5

Dëst bedeit datt d'Ofschlossparenthesis op der Linn E5 der Ouverturesparenthesis op der Linn B5 entsprécht.

Natierlech ass de Programméierungsstil e ganz kontroversen Thema, sou datt d'Iddien, déi hei ausgedréckt ginn, als näischt méi wéi Liewensmëttel fir Gedanken geholl ginn. Et ka ganz schwéier sinn fir zwee zimlech erfuerene Programméierer, déi sech iwwer ville Jore vun der Aarbecht u verschiddene Stiler entwéckelt a Gewunnecht hunn, sech eens ze kommen. Et ass eng aner Saach fir e Student ze programméieren deen nach keng Zäit hat fir säin eegene Stil ze fannen. Ech mengen, datt an dësem Fall den Enseignant op d'mannst seng Schüler sou eng einfach, awer net offensichtlech Iddi fir hinnen ze vermëttelen, datt den Erfolleg vun engem Programm haaptsächlech hänkt vum Stil of, an deem säi Quellcode geschriwwen ass. De Schüler kann den empfohlene Stil net verfollegen, awer loosst hien op d'mannst iwwer d'Noutwennegkeet vun "extra" Aktiounen denken fir den Design vum Quellcode ze verbesseren.

Zréck op eise Grondproblem op der Periodic Table: Weiderentwécklung kann a verschiddene Richtungen goen. Ee vun de Richtungen ass fir Referenz: wann Dir de Mauszeiger iwwer eng Tabellzell hovert, erschéngt eng Informatiounsfenster déi zousätzlech Informatioun iwwer dat spezifizéiert Element enthält. Weider Entwécklung ass Filteren. Zum Beispill, ofhängeg vun der Installatioun, enthält d'Informatiounsfenster nëmmen: déi wichtegst physesch a chemesch Informatioun, Informatioun iwwer d'Geschicht vun der Entdeckung, Informatioun iwwer d'Verdeelung an der Natur, eng Lëscht vun de wichtegste Verbindungen (wat dëst Element enthält), physiologesch Eegeschaften, Numm an enger Friemsprooch, etc.. E. Erënnert un dem Kaverin seng "Inte", mat där dësen Artikel ufänkt, kënne mir soen datt mir mat dëser Entwécklung vum Programm e komplette Trainingskomplex an der Naturwëssenschaft kréien: nieft dem Computer Wëssenschaft, Physik a Chimie - Biologie, wirtschaftlech Geographie, Geschicht vun der Wëssenschaft an esouguer Friemsproochen.

Awer eng lokal Datebank ass net d'Limite. De Programm verbënnt natierlech mam Internet. Wann Dir en Element wielt, gëtt de Link aktivéiert, an de Wikipedia Artikel iwwer dëst Element gëtt an der Webbrowserfenster opgemaach. Wikipedia, wéi Dir wësst, ass keng autoritär Quell. Dir kënnt Linken op autoritär Quelle setzen, zum Beispill chemesch Enzyklopedie, TSB, abstrakt Zäitschrëften, Ufroen op Sichmotoren fir dëst Element, etc. Dat. Studente kënnen einfach awer sënnvoll Uerderen iwwer DBMS an Internet Themen ausfëllen.

Zousätzlech zu Ufroen op engem individuellen Element, kënnt Dir Funktionalitéit erstellen, déi zum Beispill Zellen an der Tabell markéieren, déi bestëmmte Critèrë mat verschiddene Faarwen entspriechen. Zum Beispill, Metaller an Net-Metaller. Oder Zellen déi vun enger lokaler chemescher Planz a Waasserkierper gedumpt ginn.

Dir kënnt och d'Funktioune vun engem Notizbuch Organisateur ëmsetzen. Zum Beispill, Highlight an der Tabell d'Elementer déi am Examen abegraff sinn. Dann Highlight d'Elementer studéiert / widderholl vum Student als Virbereedung fir den Examen.

An hei ass zum Beispill ee vun den typesche Schoulchemieproblemer:

Gitt 10 g Kräid. Wéi vill Salzsäure muss geholl ginn fir all dës Kräid opzeléisen?

Fir dëse Problem ze léisen, ass et néideg der Chemikalien ze schreiwen. d'Reaktioun an d'Koeffizienten dran setzen, d'Molekülgewiicht vu Kalziumkarbonat a Waasserstoffchlorid berechent, dann komponéieren a léisen den Undeel. E Rechner baséiert op eisem Basisprogramm kann berechent a léisen. Richteg, Dir musst nach ëmmer Rechnung droen datt d'Säure a vernünfteg Iwwerschoss an enger raisonnabel Konzentratioun geholl muss ginn, awer dëst ass Chimie, net Informatik.
Addendum 1: Wéi funktionnéiert de ChimierechnerLoosst eis d'Operatioun vum Rechner analyséieren andeems Dir d'Beispill vum uewe genannte Problem vu Kräid an "Hodgepodge" benotzt. Fänke mer mat der Reaktioun un:

CaCO3 + 2HCl = CaCl2 + H2O

Doraus gesi mer, datt mir d'Atomgewiicht vun de folgenden Elementer brauchen: Kalzium (Ca), Kuelestoff (C), Sauerstoff (O), Waasserstoff (H) a Chlor (Cl). Am einfachsten Fall kënne mir dës Gewiichter an eng eendimensional Array schreiwen definéiert als

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

wou den Arrayindex der Elementnummer entsprécht. Méi iwwer de fräie Raum vun der Form Dësch Dlg setzen zwee Felder. Am éischte Feld ass et ufanks geschriwwen: "Den éischte Reagens gëtt uginn", am zweeten - "Den zweete Reagens ass fir x ze fannen". Loosst eis d'Felder bezeechnen reagens 1, reagens 2 respektiv. Aner Ergänzunge vum Programm ginn aus dem folgende Beispill vum Rechner kloer.

Mir tippen op der Computertastatur: 10 g. Inscriptioun am Feld reagens 1 Ännerungen: "Den éischte Reagens gëtt 10 g ginn." Elo gitt mir d'Formel vun dësem Reagens an, an de Rechner berechent a weist säi Molekulargewiicht wéi Dir et agitt.

Klickt LMB op der Tabellzelle mam Ca Symbol. Inscriptioun am Feld reagens 1 Ännerungen: "Éischt Reagens Ca 40.078 gëtt 10 g."

Klickt LMB op der Tabellzelle mam Symbol C. Inscriptioun am Feld reagens 1 Ännerungen: "Éischt Reagens CaC 52.089 gëtt 10 g." Déi. De Rechner huet d'Atomgewiicht vu Kalzium a Kuelestoff opgezielt.

Klickt op LMB op der Tabellzelle mam Symbol O. Inscriptioun am Feld reagens 1 Ännerungen: "Éischt Reagens CaCO 68.088 gëtt 10 g." De Rechner huet d'Atomgewiicht vum Sauerstoff op d'Zomm bäigefüügt.

Klickt op LMB op der Tabellzelle mam Symbol O. Inscriptioun am Feld reagens 1 Ännerungen: "Éischt Reagens CaCO2 84.087 gëtt 10 g." De Rechner huet nach eng Kéier d'Atomgewiicht vum Sauerstoff un d'Zomm bäigefüügt.

Klickt op LMB op der Tabellzelle mam Symbol O. Inscriptioun am Feld reagens 1 Ännerungen: "Éischt Reagens CaCO3 100.086 gëtt 10 g." De Rechner huet erëm d'Atomgewiicht vum Sauerstoff op d'Zomm bäigefüügt.

Press Enter op Ärem Computer Keyboard. D'Aféierung vum éischte Reagens ass ofgeschloss a schalt op d'Feld reagens 2. Notéiert datt mir an dësem Beispill eng minimal Versioun ubidden. Wann Dir wëllt, kënnt Dir einfach Multiplikatore vun Atomer vum selwechten Typ organiséieren, sou datt Dir zum Beispill net siwe Mol hannereneen op d'Sauerstoffzell klickt musst wann Dir d'Chromformel (K2Cr2O7) gitt.

Klickt LMB op der Tabellzelle mam Symbol H. Inscriptioun am Feld reagens 2 Ännerungen: "Second reagent H 1.008 find x."

Klickt LMB op der Tabellzelle mam Cl Symbol. Inscriptioun am Feld reagens 2 Ännerungen: "Second reagent HCl 36.458 find x." De Rechner huet d'Atomgewiicht vu Waasserstoff a Chlor opgezielt. An der uewe genannter Reaktiounsgleichung gëtt Waasserstoffchlorid virun engem Koeffizient vun 2. Dofir klickt LMB um Feld reagens 2. D'molekulare Gewiicht verduebelt (dribbelt wann zweemol dréckt, etc.). Inscriptioun am Feld reagens 2 Ännerungen: "Second reagent 2HCl 72.916 find x."

Press Enter op Ärem Computer Keyboard. D'Entrée vum zweete Reagens ass ofgeschloss, an de Rechner fënnt x aus dem Undeel

Periodesch Tabell iwwer Schoulinformatik

Dat ass wat mir brauchen ze fannen.

Notiz 1 D'Bedeitung vun der doraus resultéierend Undeel: fir Opléisung 100.086 Da Kräid brauch 72.916 Da Säure, a fir 10 g Kräid opzeléisen braucht Dir x Säure.

Notiz 2 Sammlung vun ähnlechen Probleemer:

Khomchenko I. G., Sammlung vu Problemer an Übungen an der Chimie 2009 (Grad 8-11).
Khomchenko G. P., Khomchenko I. G., Sammlung vu Problemer an der Chemie fir Bewerberinnen op Universitéiten, 2019.

Notiz 3 Fir d'Aufgab ze vereinfachen, kënnt Dir d'Entrée vun der Formel an der initialer Versioun vereinfachen an einfach d'Elementsymbol um Enn vun der Formellinn addéieren. Dann ass d'Formel vum Kalziumkarbonat:
CaCOOO
Awer e Chimie-Léierpersonal ass onwahrscheinlech sou eng Opnam gär ze hunn. Et ass net schwéier déi richteg Entrée ze maachen - fir dëst ze maachen, musst Dir eng Array derbäisetzen:

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

wou den Index d'Zuel vum chemeschen Element ass, an de Wäert bei dësem Index d'Zuel vun den Atomer ass (ufanks all Elementer vun der Array op Null zréckgesat). D'Uerdnung an där Atomer an enger Formel geschriwwe sinn, wéi an der Chimie ugeholl, sollt berücksichtegt ginn. Zum Beispill, wéineg Leit wäerten O3CaC och gär hunn. Loosst eis d'Verantwortung op de Benotzer réckelen. Eng Array maachen:

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

wou mir d'Zuel vum chemeschen Element no dem Index vu senger Erscheinung an der Formel opschreiwen. En Atom dobäizemaachen currNr an d'Formel:

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

Schreift d'Formel op eng Linn:

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;

Notiz 4 Et mécht Sënn d'Fäegkeet ze bidden fir alternativ d'Reagensformel vun der Tastatur anzeginn. An dësem Fall musst Dir en einfachen Parser implementéieren.

Et ass derwäert ze notéieren datt:

Haut ginn et e puer honnert Versioune vum Dësch, a Wëssenschaftler bidden permanent nei Optiounen. (Wikipedia)

Studente kënnen hir Erfindung an dës Richtung weisen andeems Dir eng vun de scho proposéierten Optiounen ëmsetzt oder probéieren hir eegen originell ze maachen. Et kann schéngen datt dëst déi mannst nëtzlech Richtung fir Informatikcoursen ass. Wéi och ëmmer, a Form vun der Periodic Table implementéiert an dësem Artikel, kënnen e puer Studenten déi besonnesch Virdeeler vu Kontrollkaarten iwwer déi alternativ Léisung mat Standardknäppercher net gesinn TButton. D'Spiralform vum Dësch (wou d'Zellen vu verschiddene Formen sinn) wäert d'Virdeeler vun der Léisung déi hei proposéiert gëtt méi kloer weisen.

Periodesch Tabell iwwer Schoulinformatik
(Alternativ System vun Elementer vum Theodore Benfey, Source)

Loosst eis och addéieren datt eng Rei vun aktuell existéierend Computerprogrammer fir de Periodic Table am kierzlech publizéierten Habré beschriwwe ginn Artikel.

Appendix 2: Beispiller vun Aufgaben fir FilterenMat Filtere kënnt Dir zum Beispill déi folgend Aufgaben léisen:

1) Wielt an der Tabell all Elementer déi am Mëttelalter bekannt sinn.

2) Identifizéieren all d'Elementer bekannt an der Zäit vun der Entdeckung vum Periodesche Gesetz.

3) Identifizéieren siwen Elementer déi Alchemisten als Metaller ugesinn hunn.

4) Wielt all Elementer déi an engem gasformen Zoustand ënner normalen Konditiounen sinn (n.s.).

5) Wielt all Elementer déi an engem flëssege Staat op Nr.

6) Wielt all Elementer déi an engem festen Zoustand op Nr.

7) Wielt all Elementer, déi laang Zäit ouni bemierkenswäert Ännerunge bei normalen Konditiounen an der Loft ausgesat kënne ginn.

8) Wielt all Metaller déi an Salzsäure opléisen.

9) Wielt all Metaller déi sech an der Schwefelsäure opléisen op Nr.

10) Wielt all Metaller déi sech a Schwefelsäure opléisen wann se erhëtzt ginn.

11) Wielt all Metaller déi an Salpetersäure opléisen.

12) Isoléiert all Metaller déi gewalteg mat Waasser reagéieren bei Ëmfeldbedéngungen.

13) Wielt all Metaller.

14) Identifizéieren Elementer déi an der Natur verbreet sinn.

15) Identifizéieren Elementer déi an der Natur an engem fräie Staat fonnt ginn.

16) Identifizéieren d'Elementer déi déi wichtegst Roll am Mënsch an Déier Kierper spillen.

17) Wielt Elementer déi wäit am Alldag benotzt ginn (a fräier Form oder a Kombinatiounen).

18) Identifizéieren Elementer déi am meeschte geféierlech sinn fir mat ze schaffen a speziell Moossnamen a Schutzausrüstung erfuerderen.

19) Identifizéieren d'Elementer déi a fräier Form oder a Form vu Verbindungen déi gréisste Bedrohung fir d'Ëmwelt duerstellen.

20) Wielt wäertvollt Metaller.

21) Identifizéieren Elementer déi méi deier sinn wéi Edelmetaller.

Notizen

1) Et mécht Sënn fir verschidde Filteren ze bidden. Zum Beispill, wann Dir e Filter ausschalt fir Problem 1 ze léisen (all Elementer bekannt am Mëttelalter) an 20 (Edelmetaller), da ginn Zellen mat Edelmetaller bekannt am Mëttelalter markéiert (zum Beispill duerch Faarf) ( zum Beispill, Palladium wäert net beliicht ginn, opgemaach an 1803).

2) Et mécht Sënn fir sécherzestellen datt verschidde Filteren an esou engem Modus funktionnéieren datt all Filter Zellen mat senger eegener Faarf auswielt, awer d'Auswiel vun engem anere Filter net komplett ewechhuelen (Deel vun der Zell an enger Faarf, Deel an enger anerer). Dann, am Fall vun der viregter Beispill, Elementer vun der Kräizung vu Sätze, déi am Mëttelalter entdeckt goufen an Edelmetaller, wéi och Elementer, déi nëmmen zum éischten an nëmmen déi zweet Sätze gehéieren, sichtbar sinn. Déi. Edelmetaller onbekannt am Mëttelalter, an Elementer bekannt am Mëttelalter awer net Edelmetaller.

3) Et mécht Sënn no der Uwendung vum Filter fir d'Méiglechkeet vun enger anerer Aarbecht mat de Resultater ze garantéieren. Zum Beispill, mat ausgewielten Elementer déi am Mëttelalter bekannt waren, klickt de Benotzer op LMB op dat ausgewielt Element a gëtt an de Wikipedia Artikel iwwer dëst Element geholl.

4) Et mécht Sënn fir de Benotzer d'Fähegkeet ze deselectéieren andeems Dir op LMB op der gewielter Tabellzell klickt. Zum Beispill, scho gekuckt Elementer ze läschen.

5) Et mécht Sënn fir sécherzestellen datt d'Lëscht vun ausgewielten Zellen an enger Datei gespäichert gëtt an datt sou eng Datei mat automatescher Selektioun vun Zellen gelueden gëtt. Dëst gëtt de Benotzer d'Méiglechkeet eng Paus vun der Aarbecht ze huelen.

Mir hunn eng statesch, virbestëmmten Kontrollkaart benotzt, awer et gi vill wichteg Aufgaben wou dynamesch Kontrollkaarten déi änneren wéi de Programm leeft benotzt kënne ginn. E Beispill wier e Grafikeditor, an deem de Benotzer d'Maus benotzt fir d'Positioune vun de Wirbelen an enger Fënster unzeweisen an d'Kanten tëscht hinnen ze zéien. Fir e Vertex oder Rand ze läschen, muss de Benotzer drop hiweisen. Awer wann et zimmlech einfach ass op e Vertex ze weisen, dee mat engem Krees markéiert ass, da wäert et méi schwéier sinn op e Rand ze weisen, deen mat enger dënnter Linn gezeechent ass. Eng Kontrollkaart hëlleft hei, wou Wirbelen a Kanten méi breet Quartiere besetzen wéi an der sichtbarer Figur.

Eng interessant Säit Fro am Zesummenhang mat dëser Method vun komplex Training ass: kann dës Method nëtzlech sinn am Training AI?

Source: will.com

Setzt e Commentaire