Periodensystem zur Schulinformatik

(Kontrollkarten)
(Gewidmet dem Internationalen Jahr des Periodensystems der chemischen Elemente)
(Die letzten Ergänzungen erfolgten am 8. April 2019. Die Liste der Ergänzungen befindet sich direkt unter dem Schnitt.)

Periodensystem zur Schulinformatik
(Mendelejews Blume, Quelle)

Ich erinnere mich, dass wir an der Ente vorbeikamen. Das waren drei Lektionen gleichzeitig: Geographie, Naturwissenschaften und Russisch. In einer naturwissenschaftlichen Lektion wurde untersucht, wie eine Ente eine Ente ist, welche Flügel sie hat, welche Beine sie hat, wie sie schwimmt und so weiter. In einer Geographiestunde wurde dieselbe Ente als Bewohner des Globus untersucht: Es galt, auf einer Karte zu zeigen, wo sie lebt und wo nicht. Auf Russisch brachte uns Serafima Petrovna bei, „u-t-k-a“ zu schreiben und etwas über Enten aus Brem zu lesen. Nebenbei teilte sie uns mit, dass Ente auf Deutsch so und auf Französisch so sei. Ich glaube, man nannte es damals die „komplexe Methode“. Im Allgemeinen kam alles „im Vorbeigehen“ heraus.

Veniamin Kaverin, Zwei Kapitäne

Im obigen Zitat hat Veniamin Kaverin meisterhaft die Mängel der komplexen Lehrmethode aufgezeigt, jedoch sind in einigen (vielleicht recht seltenen) Fällen Elemente dieser Methode gerechtfertigt. Ein solcher Fall ist das Periodensystem von D. I. Mendeleev im Informatikunterricht in der Schule. Die Aufgabe der Software-Automatisierung typischer Aktionen mit dem Periodensystem ist für Schüler, die mit dem Chemiestudium begonnen haben, klar und gliedert sich in viele typische chemische Aufgaben. Gleichzeitig ermöglicht uns diese Aufgabe im Rahmen der Informatik, in einfacher Form die Methode der Steuerkarten zu demonstrieren, die der grafischen Programmierung zuzuordnen ist, die im weitesten Sinne des Wortes als Programmierung mit grafischen Elementen verstanden wird.

(8. April 2019 Ergänzungen vorgenommen:
Anhang 1: So funktioniert der Chemierechner
Anhang 2: Aufgabenbeispiele für Filter)

Beginnen wir mit der Grundaufgabe. Im einfachsten Fall sollte das Periodensystem in Form eines Fensters auf dem Bildschirm angezeigt werden, wobei in jeder Zelle eine chemische Bezeichnung des Elements steht: H – Wasserstoff, He – Helium usw. Wenn der Mauszeiger auf eine Zelle zeigt, werden die Bezeichnung des Elements und seine Nummer in einem speziellen Feld in unserem Formular angezeigt. Wenn der Benutzer LMB drückt, werden die Bezeichnung und die Nummer dieses ausgewählten Elements in einem anderen Feld des Formulars angezeigt.

Periodensystem zur Schulinformatik

Das Problem kann mit jeder universellen Sprache gelöst werden. Wir nehmen den einfachen alten Delpi-7, der für fast jeden verständlich ist. Aber bevor wir in PL programmieren, zeichnen wir zunächst zwei Bilder, zum Beispiel in Photoshop. Zeichnen wir zunächst das Periodensystem in der Form, die wir im Programm sehen möchten. Speichern Sie das Ergebnis in einer Grafikdatei table01.bmp.

Periodensystem zur Schulinformatik

Für die zweite Zeichnung verwenden wir die erste. Wir füllen die von allen Grafiken befreiten Tabellenzellen nacheinander mit eindeutigen Farben im RGB-Farbmodell. R und G sind immer 0 und B=1 für Wasserstoff, 2 für Helium usw. Diese Zeichnung wird unsere Kontrollkarte sein, die wir in einer Datei mit dem Namen speichern table2.bmp.

Periodensystem zur Schulinformatik

Die erste Stufe der Grafikprogrammierung in Photoshop ist abgeschlossen. Kommen wir zur grafischen GUI-Programmierung in der Delpi-7-IDE. Öffnen Sie dazu ein neues Projekt, in dem wir im Hauptformular eine Dialogschaltfläche platzieren (tableDlg), in dem mit der Tabelle gearbeitet wird. Als nächstes arbeiten wir mit dem Formular tableDlg.

Platzieren Sie eine Klassenkomponente im Formular Zeitplan. Wir bekommen Image1. Beachten Sie, dass bei großen Projekten im Allgemeinen automatisch generierte Formularnamen verwendet werden BildNWo N kann mehrere Dutzend oder mehr erreichen – dies ist nicht der beste Programmierstil und es sollten aussagekräftigere Namen vergeben werden. Aber in unserem kleinen Projekt, wo N Wenn der Wert 2 nicht überschreitet, können Sie ihn so belassen, wie er generiert wurde.

Zum Eigentum Bild1.Bild Laden Sie die Datei hoch table01.bmp. Wir erstellen Image2 und laden Sie dort unsere Kontrollkarte table2.bmp. In diesem Fall machen wir die Datei klein und für den Benutzer unsichtbar, wie in der unteren linken Ecke des Formulars gezeigt. Wir fügen zusätzliche Bedienelemente hinzu, deren Zweck offensichtlich ist. Die zweite Stufe der grafischen GUI-Programmierung in der Delpi-7-IDE ist abgeschlossen.

Periodensystem zur Schulinformatik

Fahren wir mit der dritten Stufe fort – dem Schreiben von Code in der Delpi-7-IDE. Das Modul besteht aus nur fünf Event-Handlern: Formularerstellung (Formular erstellen), Cursorbewegung Image1 (Image1MouseMove), indem Sie mit der linken Maustaste auf eine Zelle klicken (Bild1Klicken) und verlassen Sie den Dialog mit den OK-Schaltflächen (OKBtnKlicken) Oder Abbrechen (AbbrechenBtnClick). Die Header dieser Handler werden standardmäßig mithilfe der IDE generiert.

Quellcode des Moduls:

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.

In unserer Version haben wir eine Tabelle mit 104 Elementen (konstant) genommen Größe). Offensichtlich kann diese Größe erhöht werden. Elementbezeichnungen (chemische Symbole) werden in ein Array geschrieben Tabellensymbole. Aus Gründen der Kompaktheit des Quellcodes erscheint es jedoch ratsam, die Reihenfolge dieser Notationen in Form von Stringkonstanten zu schreiben PeriodicTableStr1..., PeriodicTableStr4so dass das Programm beim Erstellen des Formulars diese Bezeichnungen selbst auf die Elemente des Arrays 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 eines Arrays implementiert. Dadurch kann die Reihenfolge der Notationen prägnant und ohne Leerzeichen geschrieben werden. Eine Sequenz in vier Teile aufteilen (Konstanten PeriodicTableStr1..., PeriodicTableStr4) ist auf Überlegungen zur einfachen Lesbarkeit des Quellcodes zurückzuführen, weil Eine zu lange Zeile passt möglicherweise nicht vollständig auf den Bildschirm.

Wenn sich der Mauszeiger über das bewegt Image1 Handler Image1MouseMove Dieses Ereignis bestimmt den Wert der blauen Farbkomponente des Steuerkartenpixels Image2 für die aktuellen Cursorkoordinaten. Durch den Bau Image2 dieser Wert entspricht der Elementnummer, wenn sich der Cursor innerhalb der Zelle befindet; Null, wenn an der Grenze, und 255 in anderen Fällen. Die übrigen vom Programm ausgeführten Aktionen sind trivial und bedürfen keiner Erklärung.

Zusätzlich zu den oben erwähnten stilistischen Programmiertechniken ist der Kommentarstil erwähnenswert. Streng genommen ist der besprochene Code so klein und einfach, dass Kommentare nicht besonders notwendig erscheinen. Sie wurden jedoch auch aus methodischen Gründen hinzugefügt – der Kurzcode ermöglicht es uns, einige allgemeine Schlussfolgerungen klarer zu ziehen. Im vorgestellten Code ist eine Klasse deklariert (TtableDlg). Methoden dieser Klasse können ausgetauscht werden. Dies hat keinerlei Auswirkungen auf die Funktion des Programms, kann jedoch seine Lesbarkeit beeinträchtigen. Stellen Sie sich zum Beispiel die Reihenfolge vor:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Es ist vielleicht nicht sehr auffällig, aber es wird etwas schwieriger zu lesen und zu verstehen sein. Wenn der Abschnitt nicht fünf, sondern zehnmal mehr Methoden enthält Implementierung haben sie eine völlig andere Reihenfolge als in den Klassenbeschreibungen, dann wird das Chaos nur noch größer. Daher kann man hoffen, dass die Einführung zusätzlicher Ordnung die Lesbarkeit des Codes verbessert, obwohl es schwierig und möglicherweise sogar unmöglich ist, einen strengen Beweis zu erbringen. Diese zusätzliche Ordnung wird durch die logische Gruppierung mehrerer Methoden ermöglicht, die verwandte Aufgaben ausführen. Jeder Gruppe sollte ein Titel gegeben werden, zum Beispiel:

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

Diese Überschriften sollten an den Anfang des Moduls kopiert und als Inhaltsverzeichnis formatiert werden. Bei teilweise recht langen Modulen bieten solche Inhaltsverzeichnisse zusätzliche Navigationsmöglichkeiten. Ebenso lohnt es sich, im Langkörper einer Methode, Prozedur oder Funktion zunächst das Ende dieses Körpers zu markieren:

end; // FormCreate

und zweitens markieren Sie in verzweigten Anweisungen mit Programmklammern begin - end die Anweisung, auf die sich die schließende Klammer bezieht:

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

Um Gruppenköpfe und die Enden von Methodenkörpern hervorzuheben, können Sie Zeilen hinzufügen, die länger als die meisten Anweisungen sind und beispielsweise aus den Zeichen „=“ bzw. „_“ bestehen.
Auch hier müssen wir einen Vorbehalt machen: Unser Beispiel ist zu einfach. Und wenn der Code einer Methode nicht auf einen Bildschirm passt, kann es schwierig sein, sechs aufeinanderfolgende Codeänderungen zu verstehen. Bei einigen alten Compilern, zum Beispiel Pascal 8000 für das Betriebssystem IBM 360/370, wurde eine Servicespalte wie diese links in der Auflistung gedruckt

B5
…
E5

Dies bedeutete, dass die schließende Klammer in Zeile E5 der öffnenden Klammer in Zeile B5 entsprach.

Natürlich ist der Programmierstil ein sehr kontroverses Thema, daher sollten die hier geäußerten Ideen lediglich als Denkanstoß verstanden werden. Es kann für zwei ziemlich erfahrene Programmierer, die sich über viele Jahre hinweg unterschiedliche Stile entwickelt und daran gewöhnt haben, sehr schwierig sein, zu einer Einigung zu kommen. Anders verhält es sich mit einem Programmierschüler, der noch keine Zeit hatte, seinen eigenen Stil zu finden. Ich denke, dass der Lehrer in diesem Fall seinen Schülern zumindest eine so einfache, aber für sie nicht offensichtliche Idee vermitteln sollte, dass der Erfolg eines Programms weitgehend vom Stil abhängt, in dem sein Quellcode geschrieben ist. Der Student folgt möglicherweise nicht dem empfohlenen Stil, aber lassen Sie ihn zumindest über die Notwendigkeit „zusätzlicher“ Maßnahmen nachdenken, um das Design des Quellcodes zu verbessern.

Zurück zu unserem Grundproblem im Periodensystem: Die weitere Entwicklung kann in verschiedene Richtungen gehen. Eine der Anweisungen dient als Referenz: Wenn Sie den Mauszeiger über eine Tabellenzelle bewegen, erscheint ein Informationsfenster mit zusätzlichen Informationen zum angegebenen Element. Die Weiterentwicklung sind Filter. Abhängig von der Installation enthält das Informationsfenster beispielsweise nur: die wichtigsten physikalischen und chemischen Informationen, Informationen zur Entdeckungsgeschichte, Informationen zur Verbreitung in der Natur, eine Liste der wichtigsten Verbindungen (einschließlich dieses Elements), physiologische Eigenschaften, Name in einer Fremdsprache usw. e. Wenn wir uns an Kaverins „Ente“ erinnern, mit der dieser Artikel beginnt, können wir sagen, dass wir mit dieser Entwicklung des Programms einen vollständigen Ausbildungskomplex in den Naturwissenschaften erhalten: zusätzlich zum Computer Naturwissenschaften, Physik und Chemie – Biologie, Wirtschaftsgeographie, Wissenschaftsgeschichte und sogar Fremdsprachen.

Aber eine lokale Datenbank ist nicht die Grenze. Das Programm stellt natürlich eine Verbindung zum Internet her. Wenn Sie ein Element auswählen, wird der Link aktiviert und der Wikipedia-Artikel zu diesem Element wird im Webbrowser-Fenster geöffnet. Wie Sie wissen, ist Wikipedia keine maßgebliche Quelle. Sie können Links zu maßgeblichen Quellen festlegen, z. B. chemische Enzyklopädie, TSB, abstrakte Zeitschriften, Bestellabfragen in Suchmaschinen für dieses Element usw. Das. Die Studierenden sind in der Lage, einfache, aber sinnvolle Aufgaben zu DBMS- und Internetthemen zu lösen.

Zusätzlich zu Abfragen für ein einzelnes Element können Sie Funktionen erstellen, die beispielsweise Zellen in der Tabelle, die bestimmte Kriterien erfüllen, mit unterschiedlichen Farben markieren. Zum Beispiel Metalle und Nichtmetalle. Oder Zellen, die von einer örtlichen Chemiefabrik in Gewässer entsorgt werden.

Sie können auch die Funktionen eines Notebook-Organizers implementieren. Markieren Sie beispielsweise in der Tabelle die Elemente, die in der Prüfung enthalten sind. Heben Sie dann die Elemente hervor, die der Student zur Vorbereitung auf die Prüfung gelernt/wiederholt hat.

Und hier ist zum Beispiel eines der typischen Chemieprobleme in der Schule:

Gegeben 10 g Kreide. Wie viel Salzsäure muss man nehmen, um all diese Kreide aufzulösen?

Um dieses Problem zu lösen, ist es notwendig, die Chemikalie aufzuschreiben. Berechnen Sie die Reaktion und setzen Sie die Koeffizienten ein, berechnen Sie die Molekulargewichte von Calciumcarbonat und Chlorwasserstoff, stellen Sie dann das Verhältnis zusammen und lösen Sie es auf. Ein Taschenrechner auf Basis unseres Grundprogramms kann rechnen und lösen. Zwar müssen Sie immer noch berücksichtigen, dass die Säure in einem angemessenen Überschuss und in einer angemessenen Konzentration eingenommen werden muss, aber das ist Chemie, keine Informatik.
Anhang 1: So funktioniert der ChemierechnerLassen Sie uns die Funktionsweise des Rechners am Beispiel des oben genannten Kreide- und Sammelproblems analysieren. Beginnen wir mit der Reaktion:

CaCO3 + 2HCl = CaCl2 + H2O

Daraus sehen wir, dass wir die Atomgewichte der folgenden Elemente benötigen: Kalzium (Ca), Kohlenstoff (C), Sauerstoff (O), Wasserstoff (H) und Chlor (Cl). Im einfachsten Fall können wir diese Gewichte in ein eindimensionales Array schreiben, das als definiert ist

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

wobei der Array-Index der Elementnummer entspricht. Mehr zum Freiraum des Formulars tableDlg zwei Felder setzen. Im ersten Feld steht zunächst: „Das erste Reagenz ist angegeben“, im zweiten – „Das zweite Reagenz soll x finden“. Bezeichnen wir die Felder Reagenz1, Reagenz2 jeweils. Weitere Ergänzungen des Programms werden anhand des folgenden Beispiels des Rechners deutlich.

Wir tippen auf der Computertastatur: 10 g. Beschriftung im Feld Reagenz1 Änderungen: „Das erste Reagenz erhält 10 g.“ Jetzt geben wir die Formel dieses Reagens ein und der Rechner berechnet und zeigt sein Molekulargewicht an, während Sie es eingeben.

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Ca-Symbol. Inschrift im Feld Reagenz1 Änderungen: „Erstes Reagenz Ca 40.078 gegeben 10 g.“

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Symbol C. Beschriftung im Feld Reagenz1 Änderungen: „Erstes Reagenz CaC 52.089 gegeben 10 g.“ Diese. Der Rechner addierte die Atomgewichte von Kalzium und Kohlenstoff.

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Symbol O. Beschriftung im Feld Reagenz1 Änderungen: „Erstes Reagenz CaCO 68.088 gegeben 10 g.“ Der Rechner addierte das Atomgewicht des Sauerstoffs zur Summe.

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Symbol O. Beschriftung im Feld Reagenz1 Änderungen: „Erstes Reagenz CaCO2 84.087 gegeben 10 g.“ Zur Summe addierte der Rechner noch einmal das Atomgewicht des Sauerstoffs.

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Symbol O. Beschriftung im Feld Reagenz1 Änderungen: „Erstes Reagenz CaCO3 100.086 gegeben 10 g.“ Der Rechner addierte erneut das Atomgewicht des Sauerstoffs zur Summe.

Drücken Sie die Eingabetaste auf Ihrer Computertastatur. Die Einführung des ersten Reagenzes ist abgeschlossen und es erfolgt die Umschaltung auf das Feld Reagenz2. Beachten Sie, dass wir in diesem Beispiel eine Minimalversion bereitstellen. Auf Wunsch können Sie ganz einfach Multiplikatoren gleichartiger Atome organisieren, sodass Sie beispielsweise bei der Eingabe der Chromformel (K2Cr2O7) nicht siebenmal hintereinander auf die Sauerstoffzelle klicken müssen.

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Symbol H. Beschriftung im Feld Reagenz2 Änderungen: „Zweites Reagenz H 1.008 finde x.“

Klicken Sie mit der linken Maustaste auf die Tabellenzelle mit dem Cl-Symbol. Inschrift im Feld Reagenz2 Änderungen: „Zweites Reagenz HCl 36.458 finde x.“ Der Rechner addierte die Atomgewichte von Wasserstoff und Chlor. In der obigen Reaktionsgleichung steht vor Chlorwasserstoff ein Koeffizient von 2. Klicken Sie daher mit der linken Maustaste auf das Feld Reagenz2. Das Molekulargewicht verdoppelt sich (verdreifacht sich bei zweimaligem Drücken usw.). Inschrift im Feld Reagenz2 Änderungen: „Zweites Reagenz 2HCl 72.916 finde x.“

Drücken Sie die Eingabetaste auf Ihrer Computertastatur. Die Eingabe des zweiten Reagenzes ist abgeschlossen und der Rechner ermittelt x aus dem Verhältnis

Periodensystem zur Schulinformatik

Das mussten wir finden.

Anmerkung 1. Die Bedeutung des resultierenden Verhältnisses: für die Auflösung 100.086 Da Kreide benötigt 72.916 Da Säure, und um 10 g Kreide aufzulösen, benötigt man x Säure.

Anmerkung 2. Sammlungen ähnlicher Probleme:

Khomchenko I. G., Sammlung von Problemen und Übungen in der Chemie 2009 (Klassen 8-11).
Khomchenko G. P., Khomchenko I. G., Sammlung von Problemen in der Chemie für Studienbewerber, 2019.

Anmerkung 3. Um die Aufgabe zu vereinfachen, können Sie die Eingabe der Formel in der Ausgangsversion vereinfachen und einfach das Elementsymbol am Ende der Formelzeile hinzufügen. Dann lautet die Formel von Calciumcarbonat:
CaCOOO
Aber einem Chemielehrer wird eine solche Aufnahme wahrscheinlich nicht gefallen. Es ist nicht schwer, den richtigen Eintrag vorzunehmen – dazu müssen Sie ein Array hinzufügen:

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

Dabei ist der Index die Nummer des chemischen Elements und der Wert an diesem Index die Anzahl der Atome (zunächst werden alle Elemente des Arrays auf Null zurückgesetzt). Die Reihenfolge, in der Atome in einer Formel geschrieben werden, wie sie in der Chemie üblich ist, sollte berücksichtigt werden. Beispielsweise wird O3CaC auch nur wenigen Menschen gefallen. Lassen Sie uns die Verantwortung auf den Benutzer verlagern. Ein Array erstellen:

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

wobei wir die Nummer des chemischen Elements entsprechend dem Index seines Auftretens in der Formel aufschreiben. Ein Atom hinzufügen aktuelleNr in die Formel:

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

Schreiben Sie die Formel in eine Zeile:

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;

Anmerkung 4. Es ist sinnvoll, die Möglichkeit vorzusehen, die Reagenzformel alternativ über die Tastatur einzugeben. In diesem Fall müssen Sie einen einfachen Parser implementieren.

Es ist erwähnenswert, dass:

Heute gibt es mehrere hundert Versionen der Tabelle und Wissenschaftler bieten ständig neue Optionen an. (Wikipedia)

Die Schüler können ihren Einfallsreichtum in dieser Richtung unter Beweis stellen, indem sie eine der bereits vorgeschlagenen Optionen umsetzen oder versuchen, eine eigene, originelle Option zu entwickeln. Es scheint, dass dies die am wenigsten nützliche Richtung für den Informatikunterricht ist. In der in diesem Artikel implementierten Form des Periodensystems sehen einige Schüler jedoch möglicherweise keinen besonderen Vorteil von Kontrollkarten gegenüber der alternativen Lösung mit Standardtasten TTaste. Die Spiralform der Tabelle (wobei die Zellen unterschiedliche Formen haben) wird die Vorteile der hier vorgeschlagenen Lösung deutlicher veranschaulichen.

Periodensystem zur Schulinformatik
(Alternatives Elementsystem von Theodore Benfey, Quelle)

Wir fügen außerdem hinzu, dass eine Reihe aktuell existierender Computerprogramme für das Periodensystem in der kürzlich veröffentlichten Veröffentlichung auf Habré beschrieben sind Artikel.

Anhang 2: Beispiele für Aufgaben für FilterMithilfe von Filtern können Sie beispielsweise folgende Aufgaben lösen:

1) Wählen Sie in der Tabelle alle im Mittelalter bekannten Elemente aus.

2) Identifizieren Sie alle Elemente, die zum Zeitpunkt der Entdeckung des Periodengesetzes bekannt waren.

3) Identifizieren Sie sieben Elemente, die Alchemisten als Metalle betrachteten.

4) Wählen Sie alle Elemente aus, die unter Normalbedingungen gasförmig sind (n.s.).

5) Wählen Sie alle Elemente aus, die sich bei Nr. im flüssigen Zustand befinden.

6) Wählen Sie alle Elemente aus, die sich bei Nr. in einem festen Zustand befinden.

7) Wählen Sie alle Elemente aus, die unter normalen Bedingungen längere Zeit der Luft ausgesetzt werden können, ohne dass sich spürbare Veränderungen ergeben.

8) Wählen Sie alle Metalle aus, die sich in Salzsäure lösen.

9) Wählen Sie bei Nr. alle Metalle aus, die sich in Schwefelsäure lösen.

10) Wählen Sie alle Metalle aus, die sich beim Erhitzen in Schwefelsäure auflösen.

11) Wählen Sie alle Metalle aus, die sich in Salpetersäure lösen.

12) Isolieren Sie alle Metalle, die bei Umgebungsbedingungen heftig mit Wasser reagieren.

13) Wählen Sie alle Metalle aus.

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

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

16) Identifizieren Sie die Elemente, die im menschlichen und tierischen Körper die wichtigste Rolle spielen.

17) Wählen Sie Elemente aus, die im Alltag häufig verwendet werden (in freier Form oder in Kombinationen).

18) Identifizieren Sie die Elemente, mit denen die Arbeit am gefährlichsten ist und die besondere Maßnahmen und Schutzausrüstung erfordern.

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

20) Wählen Sie Edelmetalle aus.

21) Identifizieren Sie Elemente, die teurer sind als Edelmetalle.

Aufzeichnungen

1) Es ist sinnvoll, mehrere Filter bereitzustellen. Wenn Sie beispielsweise einen Filter aktivieren, um Problem 1 (alle im Mittelalter bekannten Elemente) und 20 (Edelmetalle) zu lösen, werden Zellen mit im Mittelalter bekannten Edelmetallen hervorgehoben (z. B. durch Farbe) ( Palladium wird beispielsweise nicht hervorgehoben (eröffnet 1803).

2) Es ist sinnvoll sicherzustellen, dass mehrere Filter in einem solchen Modus arbeiten, dass jeder Filter Zellen mit seiner eigenen Farbe auswählt, aber die Auswahl eines anderen Filters nicht vollständig aufhebt (ein Teil der Zelle in einer Farbe, ein Teil in einer anderen). Dann werden im Fall des vorherigen Beispiels Elemente der Schnittmenge von im Mittelalter entdeckten Mengen und Edelmetallen sowie Elemente sichtbar, die nur zur ersten und nur zur zweiten Menge gehören. Diese. im Mittelalter unbekannte Edelmetalle und im Mittelalter bekannte Elemente, aber keine Edelmetalle.

3) Es ist sinnvoll, nach der Anwendung des Filters die Möglichkeit einer weiteren Arbeit mit den erzielten Ergebnissen sicherzustellen. Wenn der Benutzer beispielsweise im Mittelalter bekannte Elemente ausgewählt hat, klickt er mit der linken Maustaste auf das ausgewählte Element und wird zum Wikipedia-Artikel über dieses Element weitergeleitet.

4) Es ist sinnvoll, dem Benutzer die Möglichkeit zu geben, die Auswahl aufzuheben, indem er mit der linken Maustaste auf die ausgewählte Tabellenzelle klickt. Zum Beispiel, um bereits angezeigte Artikel zu entfernen.

5) Es ist sinnvoll sicherzustellen, dass die Liste der ausgewählten Zellen in einer Datei gespeichert wird und dass eine solche Datei mit automatischer Zellenauswahl geladen wird. Dies gibt dem Benutzer die Möglichkeit, eine Pause von der Arbeit einzulegen.

Wir haben eine statische, vorgegebene Kontrollkarte verwendet, aber es gibt viele wichtige Aufgaben, bei denen dynamische Kontrollkarten verwendet werden können, die sich während der Programmausführung ändern. Ein Beispiel wäre ein Diagrammeditor, bei dem der Benutzer mit der Maus die Positionen von Eckpunkten in einem Fenster angibt und Kanten zwischen ihnen zeichnet. Um einen Scheitelpunkt oder eine Kante zu löschen, muss der Benutzer darauf zeigen. Wenn es jedoch recht einfach ist, auf einen mit einem Kreis markierten Scheitelpunkt zu zeigen, wird es schwieriger, auf eine mit einer dünnen Linie gezeichnete Kante zu zeigen. Hier hilft eine Kontrollkarte, bei der Scheitelpunkte und Kanten größere Nachbarschaften einnehmen als in der sichtbaren Abbildung.

Eine interessante Nebenfrage im Zusammenhang mit dieser Methode des komplexen Trainings lautet: Kann diese Methode beim Training von KI nützlich sein?

Source: habr.com

Kommentar hinzufügen