(Steuerkarten)
(Widmung zum Internationalen Jahr des Periodensystems der chemischen Elemente)
(Die letzten Ergänzungen wurden am 8. April 2019 vorgenommen. Die Liste der Ergänzungen befindet sich direkt unterhalb.)

(, )
Ich erinnere mich, dass wir die Ente behandelt haben. Das waren gleich drei Unterrichtsstunden: Geographie, Naturwissenschaften und Russisch. Im Naturwissenschaftsunterricht wurde die Ente als Ente behandelt – welche Flügel sie hat, welche Füße, wie sie schwimmt und so weiter. Im Geographieunterricht wurde dieselbe Ente als Bewohnerin des Erdballs behandelt: Man musste auf der Karte zeigen, wo sie lebt und wo nicht. Im Russischunterricht brachte uns Serafima Petrovna bei, wie man 'u-t-k-a' schreibt und las irgendeinen Text über Enten von Brehm. Nebenbei teilte sie uns mit, dass die Ente auf Deutsch so heißt, und auf Französisch so. Das nannte man damals 'komplexe Methode'. Insgesamt lief alles 'nebenbei'.
Weniamin Kaverin, Zwei Kapitäne
In dem zitierten Abschnitt hat Weniamin Kawerin meisterhaft die Schwächen des komplexen Lehransatzes aufgezeigt. Dennoch gibt es in einigen (vielleicht eher seltenen) Fällen Elemente dieses Ansatzes, die gerechtfertigt sind. Ein solcher Fall ist das Periodensystem von D.I. Mendelejew im Informatikunterricht. Die Aufgabe der programmatischen Automatisierung typischer Handlungen mit dem Periodensystem ist für Schüler, die Chemie zu lernen begonnen haben, anschaulich und lässt sich in viele typische chemische Aufgaben gliedern. Gleichzeitig ermöglicht diese Aufgabe im Rahmen der Informatik auf einfache Weise, die Methode der Steuerkarten zu demonstrieren, die im weitesten Sinne als grafisches Programmieren verstanden wird, also Programmierung mittels grafischer Elemente.
(8. April 2019 wurden Ergänzungen vorgenommen:
Lassen Sie uns mit einer grundlegenden Aufgabe beginnen. Im einfachsten Fall soll auf dem Bildschirm in einem Fenster das Periodensystem angezeigt werden, wobei in jedem Feld die chemische Bezeichnung des Elements steht: H – Wasserstoff, He – Helium usw. Wenn der Mauszeiger über ein Feld zeigt, werden die Bezeichnung des Elements und seine Nummer in einem speziellen Feld unseres Formulars angezeigt. Wenn der Benutzer dabei die linke Maustaste klickt, werden die Bezeichnung und die Nummer dieses gewählten Elements in einem anderen Feld des Formulars angezeigt.

Die Aufgabe kann in jeder universellen Programmiersprache (YAP) gelöst werden. Wir nehmen das einfache, alte Delphi-7, das fast jedem verständlich ist. Aber bevor wir in YAP programmieren, erstellen wir zwei Bilder, zum Beispiel in Photoshop. Zuerst zeichnen wir das Periodensystem so, wie wir es in der Anwendung sehen möchten. Wir speichern das Ergebnis in einer Grafikdatei. table01.bmp.

Für die zweite Zeichnung verwenden wir die erste. Wir werden nacheinander die von jeglicher Grafik befreiten Felder des Tabellenrasters mit einzigartigen Farben im RGB-Farbmodell füllen. R und G sind immer 0, während B=1 für Wasserstoff, 2 für Helium usw. sein wird. Diese Zeichnung wird unsere Steuerkarte sein, die wir unter dem Namen speichern. table2.bmp.

Der erste Schritt der grafischen Programmierung in Photoshop ist abgeschlossen. Lassen Sie uns zur grafischen Programmierung der GUI in der IDE Delphi-7 übergehen. Dazu öffnen wir ein neues Projekt, in dem wir auf die Hauptform einen Button zur Dialogaufruf platzieren (tableDlg), in dem die Arbeit mit der Tabelle stattfinden wird. Danach arbeiten wir mit der Form. tableDlg.
Wir fügen der Form eine Komponente der Klasse TImagehinzu. Wir erhalten Image1. Es ist anzumerken, dass in der Regel für größere Projekte automatisch generierte Namen wie ImageN, wobei N dutzende Male erreicht werden können – das ist kein optimaler Programmierstil, und es ist ratsam, sinnvollere Namen zu vergeben. In unserem kleinen Projekt, wo N es 2 nicht überschreiten wird, kann man jedoch die generierten Namen belassen.
Wir laden die Datei in die Eigenschaft Image1.Picture . Wir erstellen table01.bmpImage2 und laden dort unsere Steuerkarte hoch. Dabei machen wir die Datei klein und unsichtbar für den Benutzer, wie im unteren linken Eck der Form dargestellt. Wir fügen zusätzliche Steuerelemente hinzu, deren Zweck offensichtlich ist. Der zweite Schritt der grafischen Programmierung GUI in der IDE Delphi-7 ist abgeschlossen. table2.bmp. Dabei erstellen wir die Datei klein und für den Nutzer unsichtbar, wie im linken unteren Bereich des Formulars dargestellt. Wir fügen zusätzliche Steuerelemente hinzu, deren Funktionen offensichtlich sind. Die zweite Phase der grafischen Programmierung der GUI in der IDE Delphi-7 ist abgeschlossen.

Wir kommen zum dritten Schritt – dem Schreiben des Codes in der IDE Delphi 7. Das Modul besteht aus insgesamt fünf Ereignisbehandlern: das Erstellen des Formulars (FormCreate), die Bewegung des Cursors über Image1 (Image1MouseMove), das Klicken der linken Maustaste auf das Feld (Image1Click) und das Schließen des Dialogs mittels der Schaltflächen OK (OKBtnClick) oder Abbrechen (CancelBtnClick). Die Überschriften dieser Behandler werden standardmäßig mithilfe der IDE generiert.
Der Quellcode des Moduls:
unit tableUnit;
// Periodensystem der chemischen Elemente D.I. Mendelejew
//
// third112
// https://habr.com/ru/users/third112/
//
// Inhaltsverzeichnis
// 1) Formular erstellen
// 2) Arbeiten mit der Tabelle: Angabe und Auswahl
// 3) Dialog verlassen
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
const
size = 104; // Anzahl der Elemente
type
TtableDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
Bevel1: TBevel;
Image1: TImage; // Tabelle der chemischen Elemente
Label1: TLabel;
Image2: TImage; // Steuerkarte
Label2: TLabel;
Edit1: TEdit;
procedure FormCreate(Sender: TObject); // Formular erstellen
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); // Zelle angeben
procedure Image1Click(Sender: TObject); // Zelle auswählen
procedure OKBtnClick(Sender: TObject); // OK
procedure CancelBtnClick(Sender: TObject); // Abbrechen
private
{ Private declarations }
TableSymbols : array [1..size] of string [2]; // Array der Elementbezeichnungen
public
{ Public declarations }
selectedElement : string; // Ausgewähltes Element
currNo : integer; // Aktuelle Elementnummer
end;
var
tableDlg: TtableDlg;
implementation
{$R *.dfm}
const
PeriodicTableStr1=
'HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLa';
PeriodicTableStr2='CePrNdPmSmEuGdTbDyHoErTmYbLu';
PeriodicTableStr3='HfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAc';
PeriodicTableStr4='ThPaUNpPuAmCmBkCfEsFmMdNoLrKu ';
// Formular erstellen ==================================================
procedure TtableDlg.FormCreate(Sender: TObject);
// Formular erstellen
var
s : string;
i,j : integer;
begin
currNo := 0;
// Initialisierung des Arrays der Elementbezeichnungen:
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 ____________________________________________________
// Arbeiten mit der Tabelle: Angabe und Auswahl =========================================
procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
// Zelle angeben
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 := 'Element auswählen:';
end; // Image1MouseMove ____________________________________________________
procedure TtableDlg.Image1Click(Sender: TObject);
begin
if currNo <> 0 then
begin
selectedElement := TableSymbols [currNo];
Label2.Caption := intToStr (currNo)+ ' '+selectedElement+ ' ausgewählt';
Edit1.Text := selectedElement;
end;
end; // Image1Click ____________________________________________________
// Dialog verlassen ==================================================
procedure TtableDlg.OKBtnClick(Sender: TObject);
begin
selectedElement := Edit1.Text;
hide;
end; // OKBtnClick ____________________________________________________
procedure TtableDlg.CancelBtnClick(Sender: TObject);
begin
hide;
end; // CancelBtnClick ____________________________________________________
end.In unserer Version haben wir eine Tabelle mit 104 Elementen (Konstante Größe). Offensichtlich kann diese Größe erhöht werden. Die Bezeichnungen der Elemente (chemische Symbole) werden in einem Array gespeichert, TableSymbols. Aus Gründen der Kompaktheit des Quellcodes ist es jedoch sinnvoll, die Sequenz dieser Bezeichnungen als stringkonstanten PeriodicTableStr1,…, PeriodicTableStr4, zu notieren, damit das Programm bei der Erstellung des Formulars diese Bezeichnungen automatisch im Array verteilt. Jede Elementbezeichnung besteht aus einem oder zwei lateinischen Buchstaben, wobei der erste Buchstabe groß und der zweite (sofern vorhanden) klein geschrieben ist. Diese einfache Regel wird beim Laden des Arrays umgesetzt. Dadurch gelingt es, die Sequenz der Bezeichnungen kompakt und ohne Leerzeichen zu speichern. Die Aufteilung der Sequenz in vier Teile (Konstanten PeriodicTableStr1,…, PeriodicTableStr4) erfolgt aus Gründen der Lesbarkeit des Quellcodes, da eine zu lange Zeile möglicherweise nicht vollständig auf dem Bildschirm darstellbar ist.
Bei der Bewegung des Mauszeigers über Image1 der Handler Image1MouseMove dieses Ereignisses bestimmt den Wert der blauen Komponente der Farbe des Pixels auf der Steuerkarte. und laden dort unsere Steuerkarte hoch. für die aktuellen Cursor-Koordinaten. Bei der Berechnung und laden dort unsere Steuerkarte hoch. ist dieser Wert die Elementnummer, wenn sich der Cursor innerhalb einer Zelle befindet; null, wenn er am Rand ist, und 255 in anderen Fällen. Die anderen vom Programm ausgeführten Aktionen sind trivial und benötigen keine weiteren Erklärungen.
Zusätzlich zu den oben genannten stilistischen Programmiertechniken sollte der Stil der Kommentare erwähnt werden. Streng genommen ist der betrachtete Code so klein und einfach, dass Kommentare nicht wirklich notwendig erscheinen. Sie wurden jedoch auch aus didaktischen Gründen hinzugefügt – kurzer Code ermöglicht es, einige allgemeine Schlussfolgerungen deutlicher zu machen. Im bereitgestellten Code wird eine Klasse deklariert (TtableDlg). Die Methoden dieser Klasse können vertauscht werden, ohne dass dies Auswirkungen auf die Funktionalität des Programms hat, was sich jedoch auf die Lesbarkeit auswirken kann. Stellen wir uns beispielsweise die Reihenfolge vor:
OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.
Vielleicht nicht sehr auffällig, aber das Lesen und Verstehen wird ein wenig schwieriger. Wenn es nicht fünf, sondern zehn Mal mehr Methoden gibt und im Abschnitt implementation Sie haben eine völlig andere Reihenfolge als in den Klassendefinitionen, was nur zu weiterem Chaos führen wird. Daher ist es zwar schwer und möglicherweise sogar unmöglich, dies strikt zu beweisen, doch kann die Hoffnung bestehen, dass das Schaffen zusätzlicher Ordnung die Lesbarkeit des Codes verbessert. Eine logische Gruppierung mehrerer Methoden, die ähnliche Aufgaben ausführen, unterstützt diese zusätzliche Ordnung. Jeder Gruppe sollte ein Titel gegeben werden, zum Beispiel:
// работа с таблицей: указание и выбор
Diese Titel sollten an den Anfang des Moduls kopiert und als Inhaltsverzeichnis formatiert werden. In einigen Fällen, bei besonders langen Modulen, bieten solche Inhaltsverzeichnisse zusätzliche Navigationsmöglichkeiten. Ebenso sollte im langen Körper einer Methode, Prozedur oder Funktion zunächst das Ende dieses Körpers gekennzeichnet werden:
end; // FormCreateund zweitens sollte in verzweigten Anweisungen mit programmatischen Klammern begin – end die Anweisung markiert werden, auf die die schließende Klammer verweist:
end; // if s [j] in
end; // for i :=1
end; // FormCreate
Um die Überschriften der Gruppen und die Enden der Methoden zu kennzeichnen, können Zeilen hinzugefügt werden, die die Länge der meisten Anweisungen überschreiten und aus Beispielsweise den Zeichen «=» und «_» bestehen.
Es muss erneut betont werden: Wir haben hier ein zu einfaches Beispiel. Wenn der Methoden-Code nicht auf einen Bildschirm passt, kann es schwierig sein, die notwendigen Änderungen vorzunehmen, insbesondere wenn sechs schließende Klammern hintereinander auftreten. In einigen älteren Compilern, wie zum Beispiel Pascal 8000 für OS IBM 360/370, wurde in der linken Spalte des Listings eine Hilfsspalte gedruckt, die wie folgt aussah:
B5
…
E5
Das bedeutete, dass die schließende Klammer in Zeile E5 der öffnenden Klammer in Zeile B5 entspricht.
Natürlich ist der Programmierstil ein äußerst vielschichtiges Thema, weshalb die hier geäußerten Ideen eher als Denkanstoß betrachtet werden sollten. Zwei erfahrene Programmierer, die im Laufe ihrer Karriere unterschiedliche Stile entwickelt und verinnerlicht haben, können oft Schwierigkeiten haben, einen gemeinsamen Nenner zu finden. Bei einem Schüler, der gerade das Programmieren lernt und noch nicht genug Zeit hatte, um einen eigenen Stil zu entwickeln, sieht die Lage jedoch anders aus. Ich denke, dass der Lehrer in diesem Fall zumindest die grundlegende, oft nicht offensichtliche Botschaft vermitteln sollte, dass der Erfolg eines Programms stark vom Stil abhängt, in dem der Quellcode verfasst ist. Der Schüler muss möglicherweise nicht unbedingt den empfohlenen Stil übernehmen, aber er sollte zumindest über die Notwendigkeit nachdenken, „überflüssige“ Maßnahmen zu ergreifen, um die Qualität des Quellcodes zu verbessern.
Zurück zu unserer grundlegenden Aufgabe bezüglich des Periodensystems: Die weitere Entwicklung kann in verschiedene Richtungen gehen. Eine Richtung ist die Informationsanzeige: Wenn der Mauszeiger über eine Zelle des Tischs bewegt wird, erscheint ein Informationsfenster, das zusätzliche Informationen zum angegebenen Element enthält. Eine weitere Ausbaustufe sind Filter. Beispielsweise werden je nach Einstellung im Informationsfenster nur die wichtigsten physikochemischen Informationen, die Geschichte der Entdeckung, Informationen zur Vorkommen in der Natur, eine Liste der bedeutendsten Verbindungen (in denen das Element enthalten ist), physiologische Eigenschaften, der Name in einer Fremdsprache usw. angezeigt. In Anlehnung an die „Enten“-Metapher von Kawerin, mit der dieser Artikel beginnt, lässt sich sagen, dass wir bei einer solchen Programmweiterentwicklung ein umfassendes Ausbildungsmodul für die Naturwissenschaften erhalten werden: neben Informatik, Physik und Chemie auch Biologie, Wirtschaftsgeographie, Wissenschaftsgeschichte und sogar Fremdsprachen.
Eine lokale Datenbank ist jedoch nicht das Ende. Die Anwendung verbindet sich natürlich mit dem Internet. Wenn ein Element ausgewählt wird, öffnet sich im Webbrowser ein Artikel aus Wikipedia über dieses Element. Wie bekannt, ist Wikipedia keine vertrauenswürdige Quelle. Links zu anerkannten Quellen können beispielsweise auf chemische Enzyklopädien, die Brockhaus Enzyklopädie, Referenzzeitschriften sowie Anfragen in Suchmaschinen zu diesem Element verweisen. So können Schüler einfache, aber inhaltlich wertvolle Aufgaben zu den Themen Datenbanksysteme und Internet erfüllen.
Neben Anfragen zu einzelnen Elementen kann auch eine Funktion implementiert werden, welche beispielsweise die entsprechenden Zellen in der Tabelle farblich markiert, die bestimmten Kriterien entsprechen. Zum Beispiel Metalle und Nichtmetalle. Oder Zellen, die von einem lokalen Chemiewerk in Gewässer eingeleitet werden.
Es können auch Funktionen eines Notizbuchs/Organizers umgesetzt werden. Beispielsweise die Hervorhebung von Elementen in der Tabelle, die Teil der Prüfung sind. Dann können Elemente gekennzeichnet werden, die der Schüler bei der Prüfungsvorbereitung gelernt oder wiederholt hat.
Hier ist beispielsweise eine der typischen Aufgaben aus dem Schulchemieunterricht:
Gegeben sind 10 g Gips. Wie viel Salzsäure benötigt man, um diesen Gips vollständig aufzulösen?
Um diese Aufgabe zu lösen, müssen wir die chemische Reaktion aufschreiben und die Koeffizienten bestimmen, die molekularen Gewichte von Calciumcarbonat und Salzsäure berechnen, danach eine Proportionsrechnung aufstellen und lösen. Dies kann mithilfe des Rechners, basierend auf unserem grundlegenden Programm, erfolgen. Es ist jedoch wichtig, auch zu berücksichtigen, dass die Säure in vernünftiger Menge und Konzentration zugeführt werden sollte, was bereits zur Chemie und nicht zur Informatik gehört.
Ergänzung 1: Wie der chemische Rechner funktioniertLassen Sie uns die Funktionsweise des Rechners anhand des oben genannten Beispiels mit Gips und 'Salzsäure' erklären. Beginnen wir mit der Reaktion:
CaCO3 + 2HCl = CaCl2 + H2O
Daraus sehen wir, dass wir die atomaren Gewichte der folgenden Elemente benötigen: Calcium (Ca), Kohlenstoff (C), Sauerstoff (O), Wasserstoff (H) und Chlor (Cl). Im einfachsten Fall können wir diese Gewichte in einem eindimensionalen Array aufschreiben, definiert als
AtomicMass : array [1..size] of real;wobei der Index des Arrays der Nummer des Elements entspricht. Außerdem platzieren wir an einem freien Platz im Formular zwei Felder. tableDlg Im ersten Feld steht anfänglich: „Erster Reaktant gegeben“, im zweiten – „Zweiter Reaktant finden x“. Bezeichnen wir die Felder reagent1, reagent2 entsprechend. Weitere Ergänzungen zum Programm werden aus dem folgenden Beispiel der Kalkulatorarbeit klar.
Geben Sie auf der Computertastatur ein: 10 g. Die Anzeige im Feld reagent1 ändert sich: “Erster Reagenz 10 g angegeben”. Jetzt geben wir die Formel dieses Reagenz ein, und der Kalkulator wird das molekulare Gewicht während der Eingabe berechnen und anzeigen.
Klicken Sie mit der linken Maustaste auf die Zelle der Tabelle mit dem Symbol Ca. Die Anzeige im Feld reagent1 ändert sich: “Erster Reagenz Ca 40,078 angegeben 10 g”.
Klicken Sie mit der linken Maustaste auf die Zelle der Tabelle mit dem Symbol C. Die Anzeige im Feld reagent1 ändert sich: “Erster Reagenz CaC 52,089 angegeben 10 g”. Das heißt, der Kalkulator hat die Atomgewichte von Calcium und Kohlenstoff addiert.
Klicken Sie mit der linken Maustaste auf die Zelle der Tabelle mit dem Symbol O. Die Anzeige im Feld reagent1 ändert sich: “Erster Reagenz CaCO 68,088 angegeben 10 g”. Der Kalkulator hat das Atomgewicht von Sauerstoff zur Summe hinzugefügt.
Klicken Sie mit der linken Maustaste auf die Zelle der Tabelle mit dem Symbol O. Die Anzeige im Feld reagent1 ändert sich: “Erster Reagenz CaCO2 84,087 angegeben 10 g”. Der Kalkulator hat erneut das Atomgewicht von Sauerstoff zur Summe hinzugefügt.
Klicken Sie mit der linken Maustaste auf die Zelle der Tabelle mit dem Symbol O. Die Anzeige im Feld reagent1 ändert sich: “Erster Reagenz CaCO3 100,086 angegeben 10 g”. Der Kalkulator hat wieder das Atomgewicht von Sauerstoff zur Summe hinzugefügt.
Drücken Sie Enter auf der Computertastatur. Die Eingabe des ersten Reagenz ist beendet und wechselt zum Feld reagent2. Es ist zu beachten, dass wir in diesem Beispiel die Minimalversion angeben. Bei Bedarf können leicht Atommultiplikatoren eines Typs organisiert werden, um beispielsweise nicht siebenmal hintereinander auf das Sauerstofffeld zu klicken, wenn die Formel für Chrom(VI)-oxid (K2Cr2O7) eingegeben wird.
Wir klicken mit der linken Maustaste auf das Feld in der Tabelle mit dem Symbol H. Der Text im Feld reagent2 ändert sich zu: „Zweiter Reagent H 1,008 finde x“.
Wir klicken mit der linken Maustaste auf das Feld in der Tabelle mit dem Symbol Cl. Der Text im Feld reagent2 ändert sich zu: „Zweiter Reagent HCl 36,458 finde x“. Der Rechner hat die Atomgewichte von Wasserstoff und Chlor addiert. Im oben genannten Reaktionsgleichung steht vor dem Chlorwasserstoff der Koeffizient 2. Daher klicken wir mit der linken Maustaste auf das Feld reagent2. Das Molekulargewicht wird verdoppelt (bei doppeltem Klicken verdreifacht usw.). Der Text im Feld reagent2 ändert sich zu: „Zweiter Reagent 2HCl 72,916 finde x“.
Wir drücken die Eingabetaste auf der Computertastatur. Die Eingabe des zweiten Reagenz ist abgeschlossen, und der Rechner findet x aus dem Verhältnis

Was gefunden werden sollte.
Hinweis 1. Die Bedeutung des erhaltenen Verhältnisses: Zum Lösen von 100,086 Gips sind 72,916 Da Säure erforderlich, und um 10 g Gips zu lösen, sind x Säure erforderlich.
Hinweis 2. Sammlungen ähnlicher Aufgaben:
Homchenko I.G., Sammlung von Aufgaben und Übungen zur Chemie 2009 (8-11 Klasse).
Homchenko G. P., Homchenko I. G., Aufgaben zur Chemie für Studienanfänger, 2019.
Hinweis 3. Um die Aufgabe zu vereinfachen, kann in der ursprünglichen Version die Eingabe der Formel vereinfacht werden, indem einfach das Elementsymbol ans Ende der Formel angehängt wird. Die Formel für Calciumcarbonat sieht dann folgendermaßen aus:
CaCOOO
Aber eine solche Schreibweise wird wohl kaum einem Chemielehrer gefallen. Eine korrekte Darstellung ist einfach — dazu muss ein Array hinzugefügt werden:
formula : array [1..size] of integer;wobei der Index die Nummer des chemischen Elements darstellt, und der Wert an diesem Index die Anzahl der Atome (anfangs werden alle Elemente des Arrays auf null gesetzt). Der Reihenfolge der Atome in der Formel, wie sie in der Chemie üblich ist, sollte Rechnung getragen werden. Zum Beispiel wird O3CaC auch kaum jemanden beeindrucken. Übertragen wir die Verantwortung auf den Benutzer. Erstellen wir ein Array:
formulaOrder : array [1..size] of integer; // kürzere Bezeichnung wäre möglichin das wir die Nummer des chemischen Elements entsprechend dem Index seiner Erscheinung in der Formel schreiben. Das Hinzufügen eines Atoms currNo zu der Formel:
if formula [currNo]=0 then // dieses Atom ist zum ersten Mal aufgetreten
begin
orderIndex := orderIndex+1; // zu Beginn der Formel ist orderIndex=0
formulaOrder [orderIndex] := currNo;
end;
formula [currNo]:=formula [currNo]+1;Die Formel in eine Zeichenkette schreiben:
s := ''; // leere Zeichenkette für die Formel
for i:=1 to orderIndex do // für alle chem. Symbole in der Formel
begin
s:=s+TableSymbols[formulaOrder[i]]; // fügen Sie chem. Symbol hinzu
if formula[formulaOrder[i]]1 then // fügen Sie die Anzahl der Atome hinzu
s:=s+intToStr(formula[formulaOrder[i]]);
end;
Hinweis 4. Es macht Sinn, die Möglichkeit eines alternativen Eingangs der Reagenzformel über die Tastatur zu gewährleisten. In diesem Fall muss ein einfacher Parser implementiert werden.
Es ist erwähnenswert, dass:
Heute gibt es mehrere Hundert Varianten der Tabelle, wobei Wissenschaftler immer neue Vorschläge machen. ()
Die Schüler können auch in diese Richtung Kreativität zeigen, indem sie eine der bereits vorgeschlagenen Varianten umsetzen oder versuchen, ihre eigene originale zu erstellen. Es mag scheinen, dass dies für den Informatikunterricht die am wenigsten nützliche Richtung ist. Dennoch könnten einige Schüler in der in diesem Artikel umgesetzten Form der Periodentabelle besondere Vorteile von Steuerkarten im Vergleich zur alternativen Lösung mit Standardtasten nicht erkennen. TButton. Die spiralige Form der Tabelle (in der Zellen unterschiedlicher Form sind) zeigt die Vorteile der hier vorgeschlagenen Lösung anschaulicher.

(, )
Zusätzlich sei erwähnt, dass in einem kürzlich veröffentlichten Artikel auf Habré über einige der derzeit existierenden Computerprogramme für das Periodensystem der Elemente berichtet wird. .
Ergänzung 2: Beispielaufgaben für FilterFilter können beispielsweise zur Lösung folgender Aufgaben verwendet werden:
1) Alle Elemente in der Tabelle hervorheben, die im Mittelalter bekannt waren.
2) Alle Elemente hervorheben, die zum Zeitpunkt der Entdeckung des Periodengesetzes bekannt waren.
3) Sieben Elemente hervorheben, die Alchemisten als Metalle betrachteten.
4) Alle Elemente hervorheben, die bei normalen Bedingungen (n.B.) gasförmig sind.
5) Alle Elemente hervorheben, die bei n.B. flüssig sind.
6) Alle Elemente hervorheben, die bei n.B. fest sind.
7) Alle Elemente hervorheben, die längere Zeit in der Luft ohne merkliche Veränderungen bei n.B. bleiben können.
8) Alle Metalle hervorheben, die sich in Salzsäure lösen.
9) Alle Metalle hervorheben, die sich bei n.B. in Schwefelsäure lösen.
10) Alle Metalle hervorheben, die sich bei Erwärmung in Schwefelsäure lösen.
11) Alle Metalle herausfiltern, die in Salpetersäure löslich sind.
12) Alle Metalle herausfiltern, die unter Normalbedingungen heftig mit Wasser reagieren.
13) Alle Metalle herausfiltern.
14) Elemente herausfiltern, die in der Natur weit verbreitet sind.
15) Elemente herausfiltern, die in der Natur in freier Form vorkommen.
16) Elemente herausfiltern, die eine wesentliche Rolle im menschlichen und tierischen Organismus spielen.
17) Elemente herausfiltern, die im Alltag weit verwendet werden (in freier Form oder in Verbindungen).
18) Elemente herausfiltern, deren Bearbeitung am gefährlichsten ist und spezielle Maßnahmen und Schutzmittel erfordert.
19) Elemente herausfiltern, die in freier Form oder in Verbindungen die größte Bedrohung für die Umwelt darstellen.
20) Edelmetalle herausfiltern.
21) Elemente herausfiltern, die teurer sind als Edelmetalle.
Hinweise
1) Es ist sinnvoll, mehrere Filter anzuwenden. Wenn Sie beispielsweise den Filter für Aufgabe 1 (alle in der Mittelalter bekannten Elemente) und 20 (Edelmetalle) aktivieren, werden (z. B. farblich) die Zellen mit den im Mittelalter bekannten Edelmetallen hervorgehoben (zum Beispiel wird Palladium, das 1803 entdeckt wurde, nicht hervorgehoben).
2) Es ist sinnvoll, mehrere Filter so zu konfigurieren, dass jeder Filter Zellen in einer eigenen Farbe hervorhebt, jedoch die Markierung einer anderen Filterfarbe nicht vollständig entfernt (ein Teil der Zelle in einer Farbe, ein anderer Teil in einer anderen). In diesem Fall werden beispielsweise die Elemente sichtbar, die sowohl den im Mittelalter vorhandenen als auch den für das Gold und die Edelmetalle spezifischen Mengen angehören. Das bedeutet, dass die Edelmetalle, die im Mittelalter unbekannt waren, sowie die Elemente, die im Mittelalter bekannt, jedoch keine Edelmetalle sind, sichtbar sind.
3) Es ist sinnvoll, nach der Anwendung eines Filters die Möglichkeit zu bieten, weitere Arbeiten mit den erhaltenen Ergebnissen durchzuführen. Beispielsweise kann der Benutzer, indem er die Elemente auswählt, die im Mittelalter bekannt sind, mit der linken Maustaste auf ein hervorgehobenes Element klicken und landet so auf dem Wikipedia-Artikel zu diesem Element.
4) Es ist sinnvoll, dem Benutzer die Möglichkeit zu geben, die Markierung durch einen Klick mit der linken Maustaste auf die markierte Zelle in der Tabelle aufzuheben. Beispielsweise um bereits angesehene Elemente zu entfernen.
5) Es ist sinnvoll, die Liste der markierten Zellen in einer Datei zu speichern und eine solche Datei mit automatischer Hervorhebung der Zellen zu laden. Dies gibt dem Benutzer die Möglichkeit, eine Arbeitspause einzulegen.
Wir haben eine statische, im Voraus festgelegte Steuerkarte verwendet, jedoch gibt es viele wichtige Aufgaben, bei denen dynamische Steuerkarten, die sich während der Programmausführung ändern, eingesetzt werden können. Ein Beispiel dafür ist ein Graph-Editor, in dem der Benutzer mit der Maus im Fenster die Positionen der Knoten angibt und Kanten zwischen ihnen zeichnet. Um einen Knoten oder eine Kante zu entfernen, muss der Benutzer darauf zeigen. Während es relativ einfach ist, auf einen Knoten, der mit einem Kreis markiert ist, zu zeigen, ist es schwieriger, auf eine Kante, die mit einer dünnen Linie gezeichnet ist, zu zeigen. Hier kann die Steuerkarte helfen, in der Knoten und Kanten in einem größeren Bereich als im sichtbaren Bild dargestellt werden.
Ein interessantes Nebenthema, das mit der betroffenen Methode des umfassenden Lernens verbunden ist: Kann diese Methode auch beim Training von KI hilfreich sein?
Quelle: habr.com
