Das Periodensystem in der Schul-IT

(Steuerkarten)
(Widmet sich dem 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 unter dem Cut)

Das Periodensystem in der Schul-IT
(Mendeleevs Blumen, Quelle)

Ich erinnere mich, dass wir das Thema Ente behandelt haben. Es waren gleich drei Unterrichtsstunden: Geografie, Naturwissenschaft und Russisch. Im Naturwissenschaftsunterricht wurde die Ente als Ente untersucht, mit welchen Flügeln sie hat, welche Füße sie hat, wie sie schwimmt usw. Im Geografieunterricht wurde die gleiche Ente als Bewohner des Erdballs studiert: Man musste auf der Karte zeigen, wo sie lebt und wo sie nicht lebt. Im Russischunterricht brachte uns Serafima Petrowna bei, „u-t-k-a“ zu schreiben und las etwas über Enten aus Brehm. Im Vorbeigehen teilte sie uns mit, dass die Ente auf Deutsch so heißt und auf Französisch so. Es schien, als ob dies damals als „komplexe Methode“ bezeichnet wurde. Insgesamt ging alles „schleichend“ voran.

Weniamin Kawerin, Zwei Kapitäne

In dem zitierten Text hat Weniamin Kawerin meisterhaft die Mängel der komplexen Lehrmethode aufgezeigt, jedoch gibt es in einigen (vielleicht ziemlich seltenen) Fällen Elemente dieser Methode, die gerechtfertigt sind. Einer dieser Fälle ist das Periodensystem D.I. Mendeleews im Informatikunterricht in der Schule. Die Aufgabe der Programmautomatisierung der typischen Handlungen mit dem Mendeleevschen Tableaus ist für Schüler, die mit Chemie beginnen, anschaulich und wird in viele typische chemische Aufgaben unterteilt. Gleichzeitig ermöglicht diese Aufgabe im Rahmen der Informatik, die Methode der Steuerkarten auf einfache Weise zu demonstrieren, die als grafisches Programmieren verstanden wird, das im weitesten Sinne als Programmierung mit grafischen Elementen bezeichnet werden kann.

(Am 8. April 2019 wurden Ergänzungen vorgenommen:
Ergänzung 1: Wie der chemische Rechner funktioniert
Ergänzung 2: Beispiele für Aufgaben für Filter)

Beginnen wir mit der grundlegenden Aufgabe. Im einfachsten Fall sollte das Periodensystem auf dem Bildschirm in einem Fenster angezeigt werden, wobei in jeder Zelle die chemische Bezeichnung des Elements angezeigt wird: H — Wasserstoff, He — Helium usw. Wenn der Mauszeiger auf eine Zelle zeigt, wird im speziellen Feld auf unserem Formular die Bezeichnung des Elements und seine Nummer angezeigt. Wenn der Benutzer dabei die linke Maustaste drückt, werden in einem anderen Feld des Formulars die Bezeichnung und die Nummer dieses ausgewählten Elements angezeigt.

Das Periodensystem in der Schul-IT

Die Aufgabe kann in jeder universellen Programmiersprache gelöst werden. Wir nehmen das einfache alte Delphi-7, das fast allen verständlich ist. Bevor wir jedoch in der Programmiersprache programmieren, zeichnen wir zwei Bilder, zum Beispiel in Photoshop. Zuerst zeichnen wir das Periodensystem in der Form, wie wir es im Programm sehen möchten. Wir speichern das Ergebnis in einer Grafikdatei. table01.bmp.

Das Periodensystem in der Schul-IT

Für die zweite Zeichnung verwenden wir die erste. Wir werden die von jeglicher Grafik befreiten Zellen der Tabelle nacheinander mit einzigartigen Farben im RGB-Farbmodell füllen. R und G werden immer 0 sein, während B=1 für Wasserstoff, 2 für Helium usw. Dieser Zeichnung wird unsere Steuerkarte darstellen, die wir in einer Datei mit dem Namen speichern werden. table2.bmp.

Das Periodensystem in der Schul-IT

Die erste Phase 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 das wir auf das Hauptformular einen Button zur Dialogaufruf (tableDlg) setzen, in dem wir mit der Tabelle arbeiten werden. Dann arbeiten wir mit dem Formular. tableDlg.

Wir fügen dem Formular eine Komponente der Klasse TImage. Wir erhalten Image1. Wir stellen fest, dass in großen Projekten automatisch generierte Namen wie ImageN

N several dozens and more erreichen können — dies ist kein guter Programmierstil, und es sollten sinnvollere Namen vergeben werden. Aber in unserem kleinen Projekt, wo N nicht mehr als 2 sein wird, kann es so belassen werden, wie es generiert wurde.

Im Property Image1.Picture laden wir die Datei table01.bmpdas offizielle Docker Composer-Image Image2 und laden dort unsere Steuerkarte. table2.bmpDabei machen wir die Datei klein und für den Benutzer unsichtbar, wie in der linken unteren Ecke 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.

Das Periodensystem in der Schul-IT

Wir gehen zur dritten Phase über — dem Schreiben des Codes in der IDE Delphi-7. Das Modul besteht aus nur fünf Ereignis-Handlern: Erstellen des Formulars (FormCreate), Bewegungen des Cursors über Image1 (Image1MouseMove), Klicken mit der linken Maustaste auf die Zelle (Image1Click) und Schließen des Dialogs über die Schaltflächen OK (OKBtnClick) oder Abbrechen (CancelBtnClick). Die Überschriften dieser Handler werden standardmäßig über die IDE generiert.

Der Quellcode des Moduls:

unit tableUnit;
// Periodensystem der chemischen Elemente von D.I. Mendeleev
//
// third112
// https://habr.com/ru/users/third112/
//
// Inhaltsverzeichnis
// 1) Formular erstellen
// 2) Arbeiten mit der Tabelle: Auswahl und Angabe
// 3) Dialog schließen

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);                        // Angabe der Zelle
    procedure Image1Click(Sender: TObject); // Auswahl der Zelle
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelBtnClick(Sender: TObject); // Abbrechen
  private
    { Private declarations }
    TableSymbols : array [1..size] of string [2]; // Array der Symbolbezeichnungen
  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 Symbolbezeichnungen:
  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: Auswahl und Angabe =========================

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// Angabe der Zelle
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 schließen ==================================================

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 erscheint es jedoch sinnvoll, die Sequenz dieser Bezeichnungen als Zeichenkonstanten zu speichern PeriodicTableStr1,…, PeriodicTableStr4, damit die Anwendung bei Ereignis der Formenerstellung diese Bezeichnungen automatisch im Array verteilt. Jede Bezeichnung eines Elements besteht aus einem oder zwei lateinischen Buchstaben, wobei der erste Buchstabe groß und der zweite (falls vorhanden) klein geschrieben wird. Diese einfache Regel wird beim Laden des Arrays implementiert. Somit gelingt es, die Sequenz der Bezeichnungen kompakt 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 den Bildschirm passt.

Beim Ereignis der Mauszeigerbewegung über Image1 bestimmt der Image1MouseMove Handler Image2 dieses Ereignisses den Wert der blauen Komponente der Pixel-Farbe des Steuerungskarten Image2 für die aktuellen Koordinaten des Cursors. Per Definition

ist dieser Wert die Nummer des Elements, wenn der Cursor sich innerhalb der Zelle befindet; null, wenn er sich an der Grenze befindet, und 255 in anderen Fällen. Die anderen von der Anwendung ausgeführten Aktionen sind trivial und erfordern keine Erläuterungen.Neben den oben erwähnten stilistischen Mitteln der Programmierung sollte der Stil der Kommentare hervorgehoben werden. Streng genommen ist der betrachtete Code so klein und einfach, dass Kommentare nicht besonders notwendig erscheinen. Dennoch wurden sie auch aus methodischen Gründen hinzugefügt — kurzer Code erlaubt es, einige allgemeine Schlussfolgerungen anschaulicher zu machen. Im vorgelegten Code wurde eine Klasse deklariert (TtableDlg

). Die Methoden dieser Klasse können vertauscht werden, was die Funktionalität der Anwendung nicht beeinträchtigt, jedoch die Lesbarkeit beeinflussen kann. Beispielsweise stellen wir uns die Reihenfolge vor:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick. Es mag nicht sehr auffällig sein, aber das Lesen und Verstehen wird etwas schwieriger. Wenn es nicht fünf Methoden sind, sondern in mehreren zehnfach höherer Anzahl und im Abschnitt Sie haben eine völlig andere Reihenfolge als in den Klassendefinitionen, weshalb das Chaos nur zunehmen wird. Daher, obwohl es schwer und vielleicht sogar unmöglich ist, dies strikt zu beweisen, kann man hoffen, dass die Schaffung zusätzlicher Ordnung die Lesbarkeit des Codes verbessert. Diese zusätzliche Ordnung wird durch die logische Gruppierung mehrerer Methoden gefördert, die ähnliche Aufgaben ausführen. 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 ausreichend langen Modulen, bieten solche Inhaltsverzeichnisse zusätzliche Navigationsmöglichkeiten. Analog dazu sollte man im langen Körper einer Methode, Prozedur oder Funktion zunächst das Ende dieses Körpers markieren:

end; // FormCreate

und zweitens, in verzweigten Anweisungen mit programmatischen Klammern begin – end, die Anweisung kennzeichnen, zu der die schließende Klammer gehört:

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

Um die Überschriften der Gruppen und die Enden der Methodenkörper hervorzuheben, können Zeilen hinzugefügt werden, die die Länge der meisten Anweisungen überschreiten und beispielsweise aus den Zeichen «=” und «_” bestehen.
Es muss jedoch angemerkt werden: Wir haben ein zu einfaches Beispiel. Wenn der Code einer Methode nicht auf einen Bildschirm passt, kann es schwierig sein, bei sechs nacheinander folgenden end die Übersicht zu behalten, um Änderungen am Code vorzunehmen. In einigen alten Compilern, wie zum Beispiel Pascal 8000 für das OS IBM 360/370, wurde in der linken Spalte des Listings eine Hilfsspalte in der Art von

B5
…
E5

ausgedruckt, was bedeutete, dass die schließende programmatische Klammer in der Zeile E5 der öffnenden Klammer in der Zeile B5 entspricht.

Natürlich ist der Programmierstil eine sehr vieldeutige Frage, daher sollten die hier geäußerten Ideen als nichts mehr als Denkanstöße betrachtet werden. Für zwei erfahrene Programmierer, deren Stile sich im Laufe vieler Jahre etabliert und normalisiert haben, kann es sehr schwierig sein, sich zu einigen. Ganz anders ist die Situation bei einem Schülerin oder Schüler, der gerade das Programmieren lernt und noch nicht die Zeit hatte, seinen eigenen Stil zu entwickeln. Ich denke, dass der Lehrer in diesem Fall mindestens die einfache, aber für die Schüler nicht offensichtliche Botschaft vermitteln sollte, dass der Erfolg eines Programms stark von dem Stil abhängt, in dem der Quellcode verfasst ist. Der Schüler mag sich nicht an den empfohlenen Stil halten, aber zumindest sollte er darüber nachdenken, dass „überflüssige“ Maßnahmen zur Verbesserung der Gestaltung des Quellcodes notwendig sind.

Zurück zu unserer Grundaufgabe mit dem Periodensystem: Die weitere Entwicklung kann in verschiedene Richtungen verlaufen. Eine Richtung ist die Informationsbereitstellung: Wenn der Mauszeiger über eine Zelle der Tabelle bewegt wird, erscheint ein Informationsfenster mit zusätzlichen Informationen über das angegebene Element. Eine weitere Entwicklungsrichtung sind Filter. Je nach Konfiguration im Informationsfenster könnten nur folgende Informationen angezeigt werden: die wichtigsten physikalisch-chemischen Daten, Informationen zur Geschichte der Entdeckung, Informationen über die natürliche Verbreitung, eine Liste der wichtigsten Verbindungen (in denen das betreffende Element enthalten ist), physiologische Eigenschaften, der Name in einer Fremdsprache usw. Erinnernd an die „Ente“ von Kaverin, mit der dieser Artikel beginnt, kann man sagen, dass wir mit einer solchen Programmweiterentwicklung ein vollständiges Lehrkonzept für die Naturwissenschaften erhalten: neben Informatik, Physik und Chemie auch Biologie, Wirtschafts-geografie, Wissenschaftsgeschichte und sogar Fremdsprachen.

Aber eine lokale Datenbank ist nicht das Ende. Das Programm verbindet sich ganz natürlich mit dem Internet. Wenn ein Element ausgewählt wird, wird ein Link aktiviert, und im Fenster des Webbrowsers öffnet sich ein Artikel aus der Wikipedia über dieses Element. Wikipedia ist bekanntlich keine autoritative Quelle. Es könnten Links zu autoritativen Quellen angegeben werden, wie z.B. eine chemische Enzyklopädie, die Große Sowjetische Enzyklopädie, Referatezeitschriften, Anfragen bei Suchmaschinen zu diesem Element usw. So können die Schüler einfache, aber inhaltlich wertvolle Aufgaben zu den Themen Datenbankmanagementsysteme und Internet ausführen.

Neben den Anfragen zu einem einzelnen Element kann eine Funktion implementiert werden, die beispielsweise Zellen in einer Tabelle, die bestimmten Kriterien entsprechen, in verschiedenen Farben markiert. Zum Beispiel Metalle und Nichtmetalle. Oder Zellen, die von der örtlichen Chemiefabrik in Gewässer geleitet werden.

Es können auch Funktionen für ein Notizbuch-Organizer realisiert werden. Zum Beispiel können in der Tabelle Elemente hervorgehoben werden, die Teil der Prüfung sind. Dann können die Elemente hervorgehoben werden, die der Schüler zur Vorbereitung auf die Prüfung gelernt oder wiederholt hat.

Hier ist zum Beispiel eine der typischen Aufgaben der Schulchemie:

Gegeben sind 10 g Kalk. Wie viel Salzsäure muss man nehmen, um diesen Kalk vollständig aufzulösen?

Um diese Aufgabe zu lösen, muss man die chemische Reaktion aufschreiben und die Koeffizienten festlegen, die Molekulargewichte von Calciumcarbonat und Salzsäure berechnen und dann eine Proportion aufstellen und lösen. Ein Taschenrechner auf der Basis unseres Grundprogramms kann dies berechnen. Man muss jedoch auch berücksichtigen, dass die Säure mit einem angemessenen Überschuss und in einer angemessenen Konzentration genommen werden muss, aber das gehört bereits zur Chemie und nicht zur Informatik.
Ergänzung 1: Wie der chemische Rechner funktioniertWir untersuchen die Arbeit des Rechners am Beispiel der oben genannten Aufgabe mit Kalk und "Salzsäure". Beginnen wir mit der Reaktion:

CaCO3 + 2HCl = CaCl2 + H2O

Daraus sehen wir, dass wir die Atomgewichte 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 aufzeichnen, das wie folgt definiert ist:

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

wobei der Index des Arrays der Nummer des Elements entspricht. Außerdem fügen wir an den freien Platz des Formulars tableDlg zwei Felder ein. Im ersten Feld steht anfangs: "Erster Reagenz gegeben", im zweiten - "Zweiter Reagenz finden x". Bezeichnen wir die Felder reagent1, reagent2 entsprechend. Andere Ergänzungen des Programms werden aus dem folgenden Beispiel der Rechnerarbeit ersichtlich sein.

Wir geben auf der Computertastatur ein: 10 g. Die Beschriftung im Feld reagent1 ändert sich: "Erster Reagenz gegeben 10 g". Jetzt geben wir die Formel dieses Reagenz ein, und der Rechner wird das Molekulargewicht während der Eingabe berechnen und anzeigen.

Wir klicken mit der linken Maustaste auf die Zelle in der Tabelle mit dem Symbol Ca. Die Beschriftung im Feld reagent1 ändert sich: "Erster Reagenz Ca 40.078 gegeben 10 g".

Wir klicken mit der linken Maustaste auf die Zelle in der Tabelle mit dem Symbol C. Die Beschriftung im Feld reagent1 ändert sich: "Erster Reagenz CaC 52.089 gegeben 10 g". Das heißt, der Rechner hat die Atomgewichte von Calcium und Kohlenstoff addiert.

Wir klicken mit der linken Maustaste auf das Feld der Tabelle mit dem Symbol O. Der Text im Feld reagent1 ändert sich: “Erster Reagenz CaCO 68,088 gegeben 10 g”. Der Rechner hat das atomare Gewicht des Sauerstoffs zur Summe hinzugefügt.

Wir klicken mit der linken Maustaste auf das Feld der Tabelle mit dem Symbol O. Der Text im Feld reagent1 ändert sich: “Erster Reagenz CaCO2 84,087 gegeben 10 g”. Der Rechner hat erneut das atomare Gewicht des Sauerstoffs zur Summe hinzugefügt.

Wir klicken mit der linken Maustaste auf das Feld der Tabelle mit dem Symbol O. Der Text im Feld reagent1 ändert sich: “Erster Reagenz CaCO3 100,086 gegeben 10 g”. Der Rechner hat wieder das atomare Gewicht des Sauerstoffs zur Summe hinzugefügt.

Wir drücken Enter auf der Computertastatur. Die Eingabe des ersten Reagenz ist abgeschlossen und wechselt zu dem Feld reagent2. Wir stellen fest, dass wir in diesem Beispiel die minimale Version angeben. Bei Bedarf kann man leicht Atommultiplikatoren eines Typs organisieren, um beispielsweise nicht siebenmal hintereinander auf das Feld für Sauerstoff zu klicken, wenn man die Formel von Chromat (K2Cr2O7) eingibt.

Wir klicken mit der linken Maustaste auf das Feld der Tabelle mit dem Symbol H. Der Text im Feld reagent2 ändert sich: “Zweiter Reagenz H 1,008 finde x”.

Wir klicken mit der linken Maustaste auf das Feld der Tabelle mit dem Symbol Cl. Der Text im Feld reagent2 ändert sich: “Zweiter Reagenz HCl 36,458 finde x”. Der Rechner hat die atomaren Gewichte von Wasserstoff und Chlor addiert. In der oben genannten Reaktionsgleichung steht vor Chlorwasserstoff der Koeffizient 2. Daher klicken wir mit der linken Maustaste auf das Feld reagent2. Das Molekulargewicht verdoppelt sich (beim doppelten Klicken verdreifacht es sich usw.). Der Text im Feld reagent2 ändert sich: “Zweiter Reagenz 2HCl 72,916 finde x”.

Wir drücken Enter auf der Computertastatur. Die Eingabe des zweiten Reagenz ist abgeschlossen, und der Rechner findet x aus dem Verhältnis

Das Periodensystem in der Schul-IT

Was gefunden werden sollte.

Hinweis 1. Die Bedeutung des erhaltenen Verhältnisses: Zum Auflösen von 100,086 Da Gips benötigt man 72,916 Da Säure, und zum Auflösen von 10 g Gips benötigt man x Säure.

Hinweis 2. Sammlungen ähnlicher Aufgaben:

Chomchenko I. G., Sammlung von Aufgaben und Übungen zur Chemie 2009 (Klassen 8-11).
Chomchenko G. P., Chomchenko I. G., Sammlung von Aufgaben zur Chemie für Hochschulbewerber, 2019.

Hinweis 3. Zur Vereinfachung der Aufgabe kann man in der Anfangsversion die Eingabe der Formel vereinfachen und einfach das Elementsymbol ans Ende der Formel anhängen. Dann hätte die Formel des Calciumcarbonats die Form:
CaCOOO
Aber eine solche Darstellung wird dem Chemielehrer kaum gefallen. Die korrekte Darstellung ist nicht schwierig — dafür muss ein Array hinzugefügt werden:

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

wo der Index – die Nummer des chemischen Elements ist, und der Wert an diesem Index – die Anzahl der Atome (zunächst werden alle Elemente im Array auf null gesetzt). Es sollte die Reihenfolge der Atome in der Formel beachtet werden, die in der Chemie festgelegt ist. Zum Beispiel wird O3CaC auch nur wenigen gefallen. Übertragen wir die Verantwortung auf den Benutzer. Wir erstellen ein Array:

 formulaOrder : array [1..size] of integer; // kann kürzer gefasst werden

wo wir die Nummer des chemischen Elements nach dem Index seiner Erscheinung in der Formel speichern. Hinzufügen eines Atoms currNo in die Formel:

if formula [currNo]=0 then // dieses Atom ist zum ersten Mal aufgetreten
 begin
 orderIndex := orderIndex+1; // am Anfang der Eingabe der Formel ist orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
 formula [currNo]:=formula [currNo]+1;

Aufzeichnung der Formel in einen String:

s := ''; // leerer String für die Formel
for i:=1 to  orderIndex do // für alle chemischen Symbole in der Formel
 begin
 s:=s+TableSymbols [ formulaOrder[i]]; // fügt das chemische Symbol hinzu
 if formula [formulaOrder[i]]1 then // fügt die Anzahl der Atome hinzu
  s:=s+ intToStr(formula [formulaOrder[i]]);
 end;

Hinweis 4. Es macht Sinn, die Möglichkeit der alternativen Eingabe der Reagenzformel über die Tastatur zu gewährleisten. In diesem Fall muss ein einfacher Parser implementiert werden.

Es ist erwähnenswert, dass:

Es gibt heute mehrere Hundert Varianten der Tabelle, und Wissenschaftler schlagen immer wieder neue Varianten vor. (Wikipedia)

Die Schüler können auch in dieser Richtung einfallsreich sein, indem sie eine der bereits vorgeschlagenen Varianten umsetzen oder versuchen, eine eigene originale zu erstellen. Es mag scheinen, dass dies die wenigsten nützliche Richtung für den Informatikunterricht ist. Doch in der in diesem Artikel vorgestellten Form der Periodischen Tabelle könnten einige Schüler die besonderen Vorteile von Kontrollkarten im Vergleich zu einer alternativen Lösung mit Standardtasten nicht erkennen. TButton. Die spiralförmige Anordnung der Tabelle (wo die Felder unterschiedliche Formen haben) wird die Vorteile der hier vorgeschlagenen Lösung anschaulicher demonstrieren.

Das Periodensystem in der Schul-IT
(Alternatives Elementesystem von Theodor Benfey, Quelle)

Außerdem sei darauf hingewiesen, dass über einige der aktuellen Computerprogramme für das Periodensystem kürzlich auf Habr berichtet wurde. Artikel.

Zusatz 2: Beispiele für Aufgaben für FilterMit Hilfe von Filtern können beispielsweise solche Aufgaben gelöst werden:

1) Alle Elemente in der Tabelle hervorheben, die im Mittelalter bekannt waren.

2) Alle Elemente hervorheben, die zu dem Zeitpunkt bekannt waren, als das Periodengesetz entdeckt wurde.

3) Sieben Elemente hervorheben, die Alchemisten als Metalle betrachteten.

4) Alle Elemente hervorheben, die unter Normalbedingungen (n.u.) gasförmig sind.

5) Alle Elemente hervorheben, die unter n.u. flüssig sind.

6) Alle Elemente hervorheben, die unter n.u. fest sind.

7) Alle Elemente hervorheben, die unter n.u. längere Zeit an der Luft ohne nennenswerte Veränderungen bleiben können.

8) Alle Metalle hervorheben, die in Salzsäure löslich sind.

9) Alle Metalle hervorheben, die unter n.u. in Schwefelsäure löslich sind.

10) Alle Metalle hervorheben, die bei Erwärmung in Schwefelsäure löslich sind.

11) Alle Metalle hervorheben, die in Salpetersäure löslich sind.

12) Alle Metalle hervorheben, die unter n.u. heftig mit Wasser reagieren.

13) Alle Metalle hervorheben.

14) Elemente hervorheben, die in der Natur weit verbreitet sind.

15) Elemente hervorheben, die in der Natur in freier Form vorkommen.

16) Elemente hervorheben, die eine wichtige Rolle im Körper von Menschen und Tieren spielen.

17) Elemente hervorheben, die im Alltag häufig verwendet werden (in freier Form oder in Verbindungen).

18) Elemente hervorheben, deren Handhabung am gefährlichsten ist und besondere Vorsichtsmaßnahmen und Schutzmittel erfordert.

19) Elemente hervorheben, die in freier Form oder in Form von Verbindungen die größte Bedrohung für die Umwelt darstellen.

20) Edelmetalle hervorheben.

21) Elemente hervorheben, die wertvoller sind als Edelmetalle.

Anmerkungen

1) Es macht Sinn, mehrere Filter zu aktivieren. Beispielsweise, wenn man den Filter für die Lösung der Aufgabe 1 (alle Elemente, die im Mittelalter bekannt waren) und 20 (Edelmetalle) einschaltet, werden (zum Beispiel farblich) die Zellen mit den im Mittelalter bekannten Edelmetallen hervorgehoben (zum Beispiel Palladium, das 1803 entdeckt wurde, wird nicht hervorgehoben).

2) Es ist sinnvoll, mehrere Filter so zu konfigurieren, dass jeder Filter Zellen in seiner eigenen Farbe hervorhebt, aber die Hervorhebung eines anderen Filters nicht vollständig entfernt (ein Teil der Zelle in einer Farbe, der andere Teil in einer anderen). Im Falle des vorherigen Beispiels werden die Elemente der Schnittmenge der im Mittelalter bekannten und der vorher nicht bekannten Edelmetalle sichtbar sein, sowie die Elemente, die nur der ersten oder nur der zweiten Menge angehören. D.h. die Edelmetalle, die im Mittelalter unbekannt waren, und die im Mittelalter bekannten Elemente, die jedoch keine Edelmetalle sind.

3) Es ist sinnvoll, nach der Anwendung eines Filters die Möglichkeit zu gewährleisten, andere Arbeiten mit den erhaltenen Ergebnissen durchzuführen. Zum Beispiel, nachdem er Elemente hervorgehoben hat, die im Mittelalter bekannt waren, klickt der Benutzer mit der linken Maustaste auf das hervorgehobene Element und gelangt zu dem Wikipedia-Artikel über dieses Element.

4) Es ist sinnvoll, dem Benutzer die Möglichkeit zu geben, die Hervorhebung durch Klicken mit der linken Maustaste auf die hervorgehobene Zelle der Tabelle zu entfernen. Zum Beispiel, um bereits betrachtete Elemente zu entfernen.

5) Es ist sinnvoll, die Liste der hervorgehobenen Zellen in einer Datei zu speichern und eine solche Datei mit automatischer Hervorhebung der Zellen zu laden. Dies gibt dem Benutzer die Möglichkeit, bei der Arbeit eine Pause einzulegen.

Wir haben eine statische, im Voraus festgelegte Steuerkarte verwendet, jedoch gibt es viele wichtige Aufgaben, bei denen dynamische Steuerkarten, die sich im Laufe der Programmausführung ändern, verwendet werden können. Ein Beispiel könnte ein Graph-Editor sein, in dem der Benutzer mithilfe der Maus die Positionen der Knoten im Fenster angibt und Kanten zwischen ihnen zeichnet. Um einen Knoten oder eine Kante zu löschen, muss der Benutzer darauf zeigen. Während es einfach ist, auf einen Knoten, der durch einen Kreis gekennzeichnet ist, zu zeigen, ist es schwieriger, auf eine Kante, die durch eine dünne Linie gezeichnet ist, zu zeigen. Hier kann eine Steuerkarte helfen, bei der die Knoten und Kanten größere Bereiche einnehmen als im sichtbaren Bild.

Eine interessante Nebenfrage, die mit der erwähnten Methode des komplexen Lernens verbunden ist: Kann diese Methode beim Training von KI nützlich sein?

Quelle: habr.com

60GB SSD 8Gb DDR4