Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών

(Κάρτες ελέγχου)
(Αφιερωμένο στο Διεθνές Έτος του Περιοδικού Πίνακα Χημικών Στοιχείων)
(Οι τελευταίες προσθήκες έγιναν στις 8 Απριλίου 2019. Η λίστα με τις προσθήκες βρίσκεται αμέσως κάτω από την περικοπή)

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών
(Το λουλούδι του Μεντελέεφ, Πηγή)

Θυμάμαι περάσαμε την πάπια. Αυτά ήταν τρία μαθήματα ταυτόχρονα: γεωγραφία, φυσικές επιστήμες και ρωσικά. Σε ένα μάθημα επιστήμης, μια πάπια μελετήθηκε ως πάπια, τι φτερά έχει, τι πόδια έχει, πώς κολυμπά κ.λπ. Σε ένα μάθημα γεωγραφίας, η ίδια πάπια μελετήθηκε ως κάτοικος του πλανήτη: ήταν απαραίτητο να δείξει σε έναν χάρτη πού ζει και πού όχι. Στα ρωσικά, η Serafima Petrovna μας έμαθε να γράφουμε "u-t-k-a" και να διαβάζουμε κάτι για τις πάπιες από το Brem. Παρεμπιπτόντως, μας ενημέρωσε ότι στα γερμανικά η πάπια είναι έτσι και στα γαλλικά έτσι. Νομίζω ότι τότε ονομαζόταν «σύνθετη μέθοδος». Σε γενικές γραμμές, όλα βγήκαν "παρεμπιπτόντως".

Βενιαμίν Καβερίν, Δύο καπετάνιοι

Στο παραπάνω απόσπασμα, ο Veniamin Kaverin έδειξε με μαεστρία τις ελλείψεις της σύνθετης μεθόδου διδασκαλίας, ωστόσο, σε ορισμένες (ίσως αρκετά σπάνιες) περιπτώσεις, στοιχεία αυτής της μεθόδου δικαιολογούνται. Μια τέτοια περίπτωση είναι ο περιοδικός πίνακας του D.I. Mendeleev στα σχολικά μαθήματα πληροφορικής. Το έργο της αυτοματοποίησης λογισμικού τυπικών ενεργειών με τον περιοδικό πίνακα είναι σαφές για τους μαθητές που έχουν αρχίσει να σπουδάζουν χημεία και χωρίζεται σε πολλά τυπικά χημικά προβλήματα. Ταυτόχρονα, στο πλαίσιο της επιστήμης των υπολογιστών, αυτή η εργασία μας επιτρέπει να δείξουμε με απλή μορφή τη μέθοδο των καρτών ελέγχου, η οποία μπορεί να αποδοθεί στον γραφικό προγραμματισμό, κατανοητή με την ευρεία έννοια της λέξης ως προγραμματισμός με χρήση γραφικών στοιχείων.

(8 Απριλίου 2019 έγιναν προσθήκες:
Προσθήκη 1: Πώς λειτουργεί ο Υπολογιστής Χημείας
Παράρτημα 2: παραδείγματα εργασιών για φίλτρα)

Ας ξεκινήσουμε με τη βασική εργασία. Στην απλούστερη περίπτωση, ο περιοδικός πίνακας θα πρέπει να εμφανίζεται στην οθόνη σε μορφή παραθύρου, όπου σε κάθε κελί θα υπάρχει ένας χημικός προσδιορισμός του στοιχείου: H - υδρογόνο, He - ήλιο κ.λπ. Εάν ο κέρσορας του ποντικιού δείχνει σε ένα κελί, τότε ο χαρακτηρισμός του στοιχείου και ο αριθμός του εμφανίζονται σε ειδικό πεδίο στη φόρμα μας. Εάν ο χρήστης πατήσει LMB, τότε η ονομασία και ο αριθμός αυτού του επιλεγμένου στοιχείου θα υποδεικνύονται σε άλλο πεδίο της φόρμας.

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών

Το πρόβλημα μπορεί να λυθεί χρησιμοποιώντας οποιαδήποτε καθολική γλώσσα. Θα πάρουμε το απλό παλιό Delpi-7, το οποίο είναι κατανοητό σχεδόν σε όλους. Αλλά πριν προγραμματίσουμε σε PL, ας σχεδιάσουμε δύο εικόνες, για παράδειγμα, στο Photoshop. Αρχικά, ας σχεδιάσουμε τον Περιοδικό Πίνακα με τη μορφή που θέλουμε να τον δούμε στο πρόγραμμα. Αποθηκεύστε το αποτέλεσμα σε ένα αρχείο γραφικών πίνακας01.bmp.

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών

Για το δεύτερο σχέδιο χρησιμοποιούμε το πρώτο. Θα γεμίσουμε διαδοχικά τα κελιά του πίνακα, απαλλαγμένα από όλα τα γραφικά, με μοναδικά χρώματα στο χρωματικό μοντέλο RGB. Τα R και G θα είναι πάντα 0, και B=1 για το υδρογόνο, 2 για το ήλιο κ.λπ. Αυτό το σχέδιο θα είναι η κάρτα ελέγχου μας, την οποία θα αποθηκεύσουμε σε ένα αρχείο που ονομάζεται πίνακας2.bmp.

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών

Ολοκληρώθηκε το πρώτο στάδιο γραφικού προγραμματισμού στο Photoshop. Ας προχωρήσουμε στον προγραμματισμό γραφικών GUI στο Delpi-7 IDE. Για να το κάνετε αυτό, ανοίξτε ένα νέο έργο, όπου στην κύρια φόρμα τοποθετούμε ένα κουμπί διαλόγου (τραπέζιDlg), στο οποίο θα γίνει εργασία με τον πίνακα. Στη συνέχεια δουλεύουμε με τη φόρμα τραπέζιDlg.

Τοποθετήστε ένα στοιχείο κλάσης στη φόρμα ΤΙΜΕ. Παίρνουμε Image1. Σημειώστε ότι γενικά, για μεγάλα έργα, τα ονόματα της φόρμας δημιουργούνται αυτόματα ΕικόναNΌπου N μπορεί να φτάσει αρκετές δεκάδες ή περισσότερες - αυτό δεν είναι το καλύτερο στυλ προγραμματισμού και θα πρέπει να δοθούν πιο ουσιαστικά ονόματα. Αλλά στο μικρό μας έργο, όπου N δεν θα υπερβαίνει το 2, μπορείτε να το αφήσετε ως δημιουργήθηκε.

Στην ιδιοκτησία Εικόνα 1.Εικόνα ανεβάσετε το αρχείο πίνακας01.bmp. Δημιουργούμε Image2 και φορτώστε την κάρτα ελέγχου μας εκεί πίνακας2.bmp. Σε αυτή την περίπτωση, κάνουμε το αρχείο μικρό και αόρατο στο χρήστη, όπως φαίνεται στην κάτω αριστερή γωνία της φόρμας. Προσθέτουμε επιπλέον στοιχεία ελέγχου, ο σκοπός των οποίων είναι προφανής. Ολοκληρώθηκε το δεύτερο στάδιο προγραμματισμού γραφικού GUI στο Delpi-7 IDE.

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών

Ας προχωρήσουμε στο τρίτο στάδιο - τη σύνταξη κώδικα στο Delpi-7 IDE. Η ενότητα αποτελείται από μόνο πέντε χειριστές συμβάντων: δημιουργία φόρμας (FormCreate), κίνηση του δρομέα Image1 (Image1MouseMove), κάνοντας κλικ στο LMB σε ένα κελί (Εικόνα 1 Κάντε κλικ) και βγείτε από το παράθυρο διαλόγου χρησιμοποιώντας τα κουμπιά ΟΚ (OKBtnΚάντε κλικ) ή Ακύρωση (CancelBtnΚάντε κλικ). Οι κεφαλίδες αυτών των εργαλείων χειρισμού δημιουργούνται με τυπικό τρόπο χρησιμοποιώντας το IDE.

Πηγαίος κώδικας ενότητας:

unit tableUnit;
// Периодическая таблица химических элементов Д.И.Менделеева
//
// third112
// https://habr.com/ru/users/third112/
//
// Оглавление
// 1) создание формы
// 2) работа с таблицей: указание и выбор
// 3) выход из диалога

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
  Buttons, ExtCtrls;

const
 size = 104; // число элементов
 
type
 TtableDlg = class(TForm)
    OKBtn: TButton;
    CancelBtn: TButton;
    Bevel1: TBevel;
    Image1: TImage;  //таблица химических элементов
    Label1: TLabel;
    Image2: TImage;  //управляющая карта
    Label2: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject); // создание формы
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);                        // указание клетки
    procedure Image1Click(Sender: TObject); // выбор клетки
    procedure OKBtnClick(Sender: TObject);  // OK
    procedure CancelBtnClick(Sender: TObject); // Cancel
  private
    { Private declarations }
    TableSymbols : array [1..size] of string [2]; // массив обозначений элементов
  public
    { Public declarations }
    selectedElement : string; // выбранный элемент
    currNo : integer;         // текущий номер элемента
  end;

var
  tableDlg: TtableDlg;

implementation

{$R *.dfm}

const
PeriodicTableStr1=
'HHeLiBeBCNOFNeNaMgAlSiPSClArKCaScTiVCrMnFeCoNiCuZnGaGeAsSeBrKrRbSrYZrNbMoTcRuRhPdAgCdInSnSbTeIXeCsBaLa';
PeriodicTableStr2='CePrNdPmSmEuGdTbDyHoErTmYbLu';
PeriodicTableStr3='HfTaWReOsIrPtAuHgTlPbBiPoAtRnFrRaAc';
PeriodicTableStr4='ThPaUNpPuAmCmBkCfEsFmMdNoLrKu ';

// создание формы  ==================================================

procedure TtableDlg.FormCreate(Sender: TObject);
// создание формы
var
  s : string;
  i,j : integer;
begin
  currNo := 0;
// инициализация массива обозначений элементов:
  s := PeriodicTableStr1+ PeriodicTableStr2+PeriodicTableStr3+PeriodicTableStr4;
  j := 1;
  for i :=1 to size do
   begin
     TableSymbols [i] := s[j];
     inc (j);
     if s [j] in ['a'..'z'] then
      begin
        TableSymbols [i] := TableSymbols [i]+ s [j];
        inc (j);
      end; // if s [j] in
   end; // for i :=1
end; // FormCreate ____________________________________________________

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

procedure TtableDlg.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
// указание клетки
var
  sl : integer;
begin
  sl := GetBValue(Image2.Canvas.Pixels [x,y]);
  if sl in [1..size] then
   begin
    Label1.Caption := intToStr (sl)+ ' '+TableSymbols [sl];
    currNo := sl;
   end
  else
    Label1.Caption := 'Select element:';
end; // Image1MouseMove   ____________________________________________________

procedure TtableDlg.Image1Click(Sender: TObject);
begin
  if currNo <> 0 then
   begin
    selectedElement := TableSymbols [currNo];
    Label2.Caption := intToStr (currNo)+ ' '+selectedElement+ ' selected';
    Edit1.Text := selectedElement;
   end;
end; // Image1Click  ____________________________________________________

// выход из диалога  ==================================================

procedure TtableDlg.OKBtnClick(Sender: TObject);
begin
    selectedElement := Edit1.Text;
    hide;
end;  // OKBtnClick ____________________________________________________

procedure TtableDlg.CancelBtnClick(Sender: TObject);
begin
  hide;
end;  // CancelBtnClick ____________________________________________________

end.

Στην έκδοσή μας, πήραμε έναν πίνακα 104 στοιχείων (σταθερ μέγεθος). Προφανώς αυτό το μέγεθος μπορεί να αυξηθεί. Οι χαρακτηρισμοί στοιχείων (χημικά σύμβολα) γράφονται σε έναν πίνακα Πίνακας σύμβολα. Ωστόσο, για λόγους συμπαγούς του πηγαίου κώδικα, φαίνεται σκόπιμο να γραφεί η ακολουθία αυτών των σημειώσεων με τη μορφή σταθερών συμβολοσειρών PeriodicTableStr1..., PeriodicTableStr4έτσι ώστε όταν δημιουργείται η φόρμα, το ίδιο το πρόγραμμα διασκορπίζει αυτούς τους χαρακτηρισμούς στα στοιχεία του πίνακα. Κάθε χαρακτηρισμός στοιχείου αποτελείται από ένα ή δύο λατινικά γράμματα, με το πρώτο γράμμα να είναι κεφαλαίο και το δεύτερο (εάν υπάρχει) πεζό. Αυτός ο απλός κανόνας εφαρμόζεται κατά τη φόρτωση ενός πίνακα. Έτσι, η ακολουθία σημειώσεων μπορεί να γραφτεί με συνοπτικό τρόπο χωρίς κενά. Σπάζοντας μια ακολουθία σε τέσσερα μέρη (σταθερές PeriodicTableStr1..., PeriodicTableStr4) οφείλεται σε λόγους ευκολίας ανάγνωσης του πηγαίου κώδικα, επειδή Μια πολύ μεγάλη γραμμή μπορεί να μην χωράει εντελώς στην οθόνη.

Όταν ο κέρσορας του ποντικιού μετακινηθεί πάνω από το Image1 χειριστής Image1MouseMove Αυτό το συμβάν καθορίζει την τιμή του στοιχείου μπλε χρώματος του εικονοστοιχείου της κάρτας ελέγχου Image2 για τις τρέχουσες συντεταγμένες του δρομέα. Με κατασκευή Image2 αυτή η τιμή είναι ίση με τον αριθμό του στοιχείου εάν ο δρομέας βρίσκεται μέσα στο κελί. μηδέν εάν στα σύνορα, και 255 σε άλλες περιπτώσεις. Οι υπόλοιπες ενέργειες που εκτελούνται από το πρόγραμμα είναι ασήμαντες και δεν απαιτούν εξήγηση.

Εκτός από τις τεχνικές στυλιστικού προγραμματισμού που σημειώθηκαν παραπάνω, αξίζει να σημειωθεί το στυλ σχολιασμού. Αυστηρά μιλώντας, ο κώδικας που συζητήθηκε είναι τόσο μικρός και απλός που τα σχόλια δεν φαίνονται ιδιαίτερα απαραίτητα. Ωστόσο, προστέθηκαν και για μεθοδολογικούς λόγους - ο σύντομος κώδικας μας επιτρέπει να βγάλουμε ορισμένα γενικά συμπεράσματα πιο ξεκάθαρα. Στον παρουσιαζόμενο κωδικό δηλώνεται μία κλάση (TtableDlg). Οι μέθοδοι αυτής της κλάσης μπορούν να αντικατασταθούν και αυτό δεν θα επηρεάσει τη λειτουργία του προγράμματος με κανέναν τρόπο, αλλά μπορεί να επηρεάσει την αναγνωσιμότητά του. Για παράδειγμα, φανταστείτε τη σειρά:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Μπορεί να μην είναι ιδιαίτερα αισθητό, αλλά θα γίνει λίγο πιο δύσκολο να το διαβάσετε και να το κατανοήσετε. Εάν δεν υπάρχουν πέντε, αλλά δεκάδες φορές περισσότερες μέθοδοι στην ενότητα εκτέλεση έχουν τελείως διαφορετική σειρά από ό,τι στις περιγραφές της τάξης, τότε το χάος θα αυξηθεί. Επομένως, αν και είναι δύσκολο να αποδειχθεί αυστηρά και μπορεί ακόμη και να είναι αδύνατο, μπορεί κανείς να ελπίζει ότι η εισαγωγή πρόσθετης σειράς θα βελτιώσει την αναγνωσιμότητα του κώδικα. Αυτή η πρόσθετη σειρά διευκολύνεται από τη λογική ομαδοποίηση πολλών μεθόδων που εκτελούν σχετικές εργασίες. Σε κάθε ομάδα πρέπει να δοθεί ένας τίτλος, για παράδειγμα:

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

Αυτές οι επικεφαλίδες θα πρέπει να αντιγραφούν στην αρχή της ενότητας και να μορφοποιηθούν ως πίνακας περιεχομένων. Σε ορισμένες περιπτώσεις αρκετά μεγάλων ενοτήτων, τέτοιοι πίνακες περιεχομένων παρέχουν πρόσθετες επιλογές πλοήγησης. Ομοίως, στο μακρύ σώμα μιας μεθόδου, διαδικασίας ή λειτουργίας, αξίζει, πρώτα, να σημειωθεί το τέλος αυτού του σώματος:

end; // FormCreate

και, δεύτερον, σε διακλαδισμένες εντολές με αγκύλες προγράμματος αρχή - τέλος, σημειώστε τη δήλωση στην οποία αναφέρεται η αγκύλη κλεισίματος:

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

Για να επισημάνετε τις κεφαλίδες ομάδων και τα άκρα των σωμάτων μεθόδου, μπορείτε να προσθέσετε γραμμές που είναι μεγαλύτερες από τις περισσότερες δηλώσεις και αποτελούνται, για παράδειγμα, από τους χαρακτήρες "=" και "_", αντίστοιχα.
Και πάλι, πρέπει να κάνουμε μια κράτηση: το παράδειγμά μας είναι πολύ απλό. Και όταν ο κώδικας μιας μεθόδου δεν χωράει σε μία οθόνη, μπορεί να είναι δύσκολο να κατανοήσουμε έξι διαδοχικά άκρα για να κάνετε αλλαγές κώδικα. Σε ορισμένους παλιούς μεταγλωττιστές, για παράδειγμα, Pascal 8000 για OS IBM 360/370, μια στήλη υπηρεσίας όπως αυτή εκτυπώθηκε στα αριστερά στην καταχώριση

B5
…
E5

Αυτό σήμαινε ότι η παρένθεση κλεισίματος στη γραμμή Ε5 αντιστοιχούσε στην αρχική παρένθεση στη γραμμή Β5.

Φυσικά, το στυλ προγραμματισμού είναι ένα πολύ αμφιλεγόμενο ζήτημα, επομένως οι ιδέες που εκφράζονται εδώ δεν πρέπει να εκληφθούν ως τίποτα περισσότερο από τροφή για σκέψη. Μπορεί να είναι πολύ δύσκολο για δύο αρκετά έμπειρους προγραμματιστές, που έχουν αναπτύξει και έχουν συνηθίσει σε διαφορετικά στυλ για πολλά χρόνια εργασίας, να καταλήξουν σε συμφωνία. Είναι διαφορετικό θέμα για έναν μαθητή που μαθαίνει να προγραμματίζει και δεν έχει ακόμη προλάβει να βρει το δικό του στυλ. Νομίζω ότι σε αυτή την περίπτωση ο δάσκαλος θα πρέπει τουλάχιστον να μεταφέρει στους μαθητές του μια τόσο απλή, αλλά όχι προφανή ιδέα σε αυτούς ότι η επιτυχία ενός προγράμματος εξαρτάται σε μεγάλο βαθμό από το στυλ με το οποίο είναι γραμμένος ο πηγαίος κώδικας του. Ο μαθητής μπορεί να μην ακολουθεί το προτεινόμενο στυλ, αλλά αφήστε τον τουλάχιστον να σκεφτεί την ανάγκη για «επιπλέον» ενέργειες για τη βελτίωση του σχεδιασμού του πηγαίου κώδικα.

Επιστρέφοντας στο βασικό μας πρόβλημα στον Περιοδικό Πίνακα: η περαιτέρω ανάπτυξη μπορεί να προχωρήσει σε διαφορετικές κατευθύνσεις. Μία από τις οδηγίες είναι για αναφορά: όταν τοποθετείτε τον κέρσορα του ποντικιού πάνω από ένα κελί πίνακα, εμφανίζεται ένα παράθυρο πληροφοριών που περιέχει πρόσθετες πληροφορίες για το καθορισμένο στοιχείο. Η περαιτέρω ανάπτυξη είναι τα φίλτρα. Για παράδειγμα, ανάλογα με την εγκατάσταση, το παράθυρο πληροφοριών θα περιέχει μόνο: τις πιο σημαντικές φυσικές και χημικές πληροφορίες, πληροφορίες για την ιστορία της ανακάλυψης, πληροφορίες για τη διανομή στη φύση, μια λίστα με τις πιο σημαντικές ενώσεις (που περιλαμβάνει αυτό το στοιχείο), φυσιολογικές ιδιότητες, όνομα σε μια ξένη γλώσσα κ.λπ. ε. Θυμόμαστε την «πάπια» του Kaverin με την οποία ξεκινά αυτό το άρθρο, μπορούμε να πούμε ότι με αυτήν την ανάπτυξη του προγράμματος θα έχουμε ένα πλήρες εκπαιδευτικό συγκρότημα στις φυσικές επιστήμες: εκτός από τον υπολογιστή επιστήμη, φυσική και χημεία - βιολογία, οικονομική γεωγραφία, ιστορία της επιστήμης και ακόμη και ξένες γλώσσες.

Αλλά μια τοπική βάση δεδομένων δεν είναι το όριο. Το πρόγραμμα συνδέεται φυσικά με το Διαδίκτυο. Όταν επιλέγετε ένα στοιχείο, ο σύνδεσμος ενεργοποιείται και το άρθρο της Wikipedia σχετικά με αυτό το στοιχείο ανοίγει στο παράθυρο του προγράμματος περιήγησης Ιστού. Η Wikipedia, όπως γνωρίζετε, δεν είναι έγκυρη πηγή. Μπορείτε να ορίσετε συνδέσμους προς έγκυρες πηγές, για παράδειγμα, χημική εγκυκλοπαίδεια, TSB, αφηρημένα περιοδικά, ερωτήματα παραγγελίας σε μηχανές αναζήτησης για αυτό το στοιχείο κ.λπ. Οτι. Οι μαθητές θα είναι σε θέση να ολοκληρώσουν απλές αλλά ουσιαστικές εργασίες σε θέματα DBMS και Διαδικτύου.

Εκτός από τα ερωτήματα για ένα μεμονωμένο στοιχείο, μπορείτε να δημιουργήσετε λειτουργίες που, για παράδειγμα, θα επισημαίνουν κελιά στον πίνακα που πληρούν ορισμένα κριτήρια με διαφορετικά χρώματα. Για παράδειγμα, μέταλλα και αμέταλλα. Ή κύτταρα που απορρίπτονται σε υδάτινα σώματα από ένα τοπικό χημικό εργοστάσιο.

Μπορείτε επίσης να εφαρμόσετε τις λειτουργίες ενός οργανωτή φορητών υπολογιστών. Για παράδειγμα, επισημάνετε στον πίνακα τα στοιχεία που περιλαμβάνονται στην εξέταση. Στη συνέχεια επισημάνετε τα στοιχεία που μελέτησε/επαναλαμβάνει ο μαθητής κατά την προετοιμασία για την εξέταση.

Και εδώ, για παράδειγμα, είναι ένα από τα τυπικά προβλήματα σχολικής χημείας:

Δίνονται 10 g κιμωλίας. Πόσο υδροχλωρικό οξύ πρέπει να ληφθεί για να διαλυθεί όλη αυτή η κιμωλία;

Για να λυθεί αυτό το πρόβλημα, είναι απαραίτητο να γράψετε το χημικό. αντίδραση και τοποθετώντας τους συντελεστές σε αυτήν, υπολογίστε τα μοριακά βάρη του ανθρακικού ασβεστίου και του υδροχλωρίου, στη συνέχεια συνθέστε και λύστε την αναλογία. Μια αριθμομηχανή που βασίζεται στο βασικό μας πρόγραμμα μπορεί να υπολογίσει και να λύσει. Είναι αλήθεια ότι θα πρέπει ακόμα να λάβετε υπόψη ότι το οξύ πρέπει να λαμβάνεται σε λογική περίσσεια και σε λογική συγκέντρωση, αλλά αυτό είναι χημεία, όχι επιστήμη των υπολογιστών.
Προσθήκη 1: Πώς λειτουργεί ο Υπολογιστής ΧημείαςΑς αναλύσουμε τη λειτουργία της αριθμομηχανής χρησιμοποιώντας το παράδειγμα του παραπάνω προβλήματος της κιμωλίας και του «κουκουλάρι». Ας ξεκινήσουμε με την αντίδραση:

CaCO3 + 2HCl = CaCl2 + H2O

Από αυτό βλέπουμε ότι θα χρειαστούμε τα ατομικά βάρη των ακόλουθων στοιχείων: ασβεστίου (Ca), άνθρακα (C), οξυγόνου (Ο), υδρογόνου (Η) και χλωρίου (Cl). Στην απλούστερη περίπτωση, μπορούμε να γράψουμε αυτά τα βάρη σε έναν μονοδιάστατο πίνακα που ορίζεται ως

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

όπου ο δείκτης πίνακα αντιστοιχεί στον αριθμό του στοιχείου. Περισσότερα για τον ελεύθερο χώρο της φόρμας τραπέζιDlg βάλε δύο πεδία. Στο πρώτο πεδίο γράφεται αρχικά: "Το πρώτο αντιδραστήριο δίνεται", στο δεύτερο - "Το δεύτερο αντιδραστήριο είναι να βρείτε το x". Ας συμβολίσουμε τα πεδία αντιδραστήριο 1, αντιδραστήριο 2 αντίστοιχα. Άλλες προσθήκες στο πρόγραμμα θα είναι σαφείς από το ακόλουθο παράδειγμα της αριθμομηχανής.

Πληκτρολογούμε στο πληκτρολόγιο του υπολογιστή: 10 γρ. Επιγραφή στο πεδίο αντιδραστήριο 1 αλλαγές: "Το πρώτο αντιδραστήριο δίνεται 10 g." Τώρα εισάγουμε τον τύπο αυτού του αντιδραστηρίου και η αριθμομηχανή θα υπολογίσει και θα δείξει το μοριακό του βάρος καθώς το εισάγετε.

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο Ca. Επιγραφή στο χωράφι αντιδραστήριο 1 αλλαγές: "Πρώτο αντιδραστήριο Ca 40.078 που δόθηκε 10 g."

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο C. Επιγραφή στο πεδίο αντιδραστήριο 1 αλλαγές: "Πρώτο αντιδραστήριο CaC 52.089 που δόθηκε 10 g." Εκείνοι. Η αριθμομηχανή πρόσθεσε τα ατομικά βάρη ασβεστίου και άνθρακα.

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο O. Επιγραφή στο πεδίο αντιδραστήριο 1 αλλαγές: "Πρώτο αντιδραστήριο CaCO 68.088 που δόθηκε 10 g." Η αριθμομηχανή πρόσθεσε το ατομικό βάρος του οξυγόνου στο άθροισμα.

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο O. Επιγραφή στο πεδίο αντιδραστήριο 1 αλλαγές: "Πρώτο αντιδραστήριο CaCO2 84.087 που δόθηκε 10 g." Η αριθμομηχανή πρόσθεσε για άλλη μια φορά το ατομικό βάρος του οξυγόνου στο άθροισμα.

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο O. Επιγραφή στο πεδίο αντιδραστήριο 1 αλλαγές: "Πρώτο αντιδραστήριο CaCO3 100.086 που δόθηκε 10 g." Η αριθμομηχανή πρόσθεσε και πάλι το ατομικό βάρος του οξυγόνου στο άθροισμα.

Πατήστε Enter στο πληκτρολόγιο του υπολογιστή σας. Η εισαγωγή του πρώτου αντιδραστηρίου ολοκληρώθηκε και μεταβαίνει στο πεδίο αντιδραστήριο 2. Σημειώστε ότι σε αυτό το παράδειγμα παρέχουμε μια ελάχιστη έκδοση. Εάν θέλετε, μπορείτε εύκολα να οργανώσετε πολλαπλασιαστές ατόμων του ίδιου τύπου, έτσι ώστε, για παράδειγμα, να μην χρειάζεται να κάνετε κλικ επτά φορές στη σειρά στο κελί οξυγόνου κατά την εισαγωγή του τύπου χρωμίου (K2Cr2O7).

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο H. Επιγραφή στο πεδίο αντιδραστήριο 2 αλλάζει: "Δεύτερο αντιδραστήριο H 1.008 βρείτε το x."

Κάντε κλικ στο LMB στο κελί του πίνακα με το σύμβολο Cl. Επιγραφή στο χωράφι αντιδραστήριο 2 αλλάζει: "Δεύτερο αντιδραστήριο HCl 36.458 βρείτε το x." Η αριθμομηχανή πρόσθεσε τα ατομικά βάρη υδρογόνου και χλωρίου. Στην παραπάνω εξίσωση αντίδρασης, πριν από το υδροχλώριο προηγείται ένας συντελεστής 2. Επομένως, κάντε κλικ στο LMB στο πεδίο αντιδραστήριο 2. Το μοριακό βάρος διπλασιάζεται (τριπλασιάζεται όταν πιέζεται δύο φορές κ.λπ.). Επιγραφή στο χωράφι αντιδραστήριο 2 αλλαγές: "Δεύτερο αντιδραστήριο 2HCl 72.916 βρείτε το x."

Πατήστε Enter στο πληκτρολόγιο του υπολογιστή σας. Η εισαγωγή του δεύτερου αντιδραστηρίου ολοκληρώνεται και η αριθμομηχανή βρίσκει το x από την αναλογία

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών

Αυτό έπρεπε να βρούμε.

Σημείωση 1 Η έννοια της αναλογίας που προκύπτει: για διάλυση 100.086 Da Η κιμωλία απαιτεί 72.916 Da οξύ και για να διαλύσετε 10 g κιμωλίας χρειάζεστε x οξύ.

Σημείωση 2 Συλλογές παρόμοιων προβλημάτων:

Khomchenko I. G., Συλλογή προβλημάτων και ασκήσεων στη χημεία 2009 (τάξεις 8-11).
Khomchenko G. P., Khomchenko I. G., Συλλογή προβλημάτων στη χημεία για υποψήφιους στα πανεπιστήμια, 2019.

Σημείωση 3 Για να απλοποιήσετε την εργασία, μπορείτε να απλοποιήσετε την καταχώριση του τύπου στην αρχική έκδοση και απλώς να προσθέσετε το σύμβολο του στοιχείου στο τέλος της γραμμής του τύπου. Τότε ο τύπος του ανθρακικού ασβεστίου θα είναι:
CaCOOO
Αλλά ένας δάσκαλος χημείας είναι απίθανο να αρέσει μια τέτοια ηχογράφηση. Δεν είναι δύσκολο να κάνετε τη σωστή καταχώρηση - για να το κάνετε αυτό πρέπει να προσθέσετε έναν πίνακα:

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

όπου ο δείκτης είναι ο αριθμός του χημικού στοιχείου και η τιμή σε αυτόν τον δείκτη είναι ο αριθμός των ατόμων (αρχικά όλα τα στοιχεία του πίνακα μηδενίζονται). Θα πρέπει να ληφθεί υπόψη η σειρά με την οποία τα άτομα γράφονται σε έναν τύπο, όπως υιοθετείται στη χημεία. Για παράδειγμα, σε λίγους θα αρέσει το O3CaC. Ας μεταθέσουμε την ευθύνη στον χρήστη. Δημιουργία πίνακα:

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

όπου σημειώνουμε τον αριθμό του χημικού στοιχείου σύμφωνα με τον δείκτη εμφάνισής του στον τύπο. Προσθήκη ατόμου currNo στον τύπο:

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

Γράφοντας τον τύπο σε μια γραμμή:

s := ''; // пустая строка для формулы
for i:=1 to  orderIndex do // для всех хим.символов в формуле 
 begin
 s:=s+TableSymbols [ formulaOrder[i]];// добавляем хим.символ
 if formula [formulaOrder[i]]<>1 then //добавляем кол-во атомов
  s:=s+ intToStr(formula [formulaOrder[i]]);
 end;

Σημείωση 4 Είναι λογικό να παρέχεται η δυνατότητα εναλλακτικής εισαγωγής του τύπου αντιδραστηρίου από το πληκτρολόγιο. Σε αυτή την περίπτωση, θα χρειαστεί να εφαρμόσετε έναν απλό αναλυτή.

Αξίζει να σημειωθεί ότι:

Σήμερα, υπάρχουν αρκετές εκατοντάδες εκδόσεις του πίνακα και οι επιστήμονες προσφέρουν συνεχώς νέες επιλογές. (Wikipedia)

Οι μαθητές μπορούν να δείξουν την εφευρετικότητά τους προς αυτή την κατεύθυνση εφαρμόζοντας μία από τις ήδη προτεινόμενες επιλογές ή να προσπαθήσουν να φτιάξουν τη δική τους πρωτότυπη. Μπορεί να φαίνεται ότι αυτή είναι η λιγότερο χρήσιμη κατεύθυνση για μαθήματα πληροφορικής. Ωστόσο, με τη μορφή του Περιοδικού Πίνακα που εφαρμόζεται σε αυτό το άρθρο, ορισμένοι μαθητές ενδέχεται να μην δουν τα ιδιαίτερα πλεονεκτήματα των καρτών ελέγχου έναντι της εναλλακτικής λύσης χρησιμοποιώντας τυπικά κουμπιά TButton. Το σπειροειδές σχήμα του τραπεζιού (όπου τα κελιά έχουν διαφορετικά σχήματα) θα καταδείξει με μεγαλύτερη σαφήνεια τα πλεονεκτήματα της λύσης που προτείνεται εδώ.

Περιοδικός πίνακας σχολικής επιστήμης υπολογιστών
(Εναλλακτικό σύστημα στοιχείων του Theodore Benfey, Πηγή)

Ας προσθέσουμε επίσης ότι ορισμένα υπάρχοντα προγράμματα υπολογιστών για τον Περιοδικό Πίνακα περιγράφονται στο πρόσφατα δημοσιευμένο στο Habré άρθρο.

Παράρτημα 2: παραδείγματα εργασιών για φίλτραΧρησιμοποιώντας φίλτρα μπορείτε να λύσετε, για παράδειγμα, τις ακόλουθες εργασίες:

1) Επιλέξτε στον πίνακα όλα τα στοιχεία που ήταν γνωστά στο Μεσαίωνα.

2) Προσδιορίστε όλα τα στοιχεία που ήταν γνωστά κατά την ανακάλυψη του Περιοδικού Νόμου.

3) Προσδιορίστε επτά στοιχεία που οι αλχημιστές θεωρούσαν μέταλλα.

4) Επιλέξτε όλα τα στοιχεία που βρίσκονται σε αέρια κατάσταση υπό κανονικές συνθήκες (n.s.).

5) Επιλέξτε όλα τα στοιχεία που βρίσκονται σε υγρή κατάσταση στο αρ.

6) Επιλέξτε όλα τα στοιχεία που βρίσκονται σε στερεή κατάσταση στο αρ.

7) Επιλέξτε όλα τα στοιχεία που μπορούν να εκτεθούν στον αέρα για μεγάλο χρονικό διάστημα χωρίς αισθητές αλλαγές σε κανονικές συνθήκες.

8) Επιλέξτε όλα τα μέταλλα που διαλύονται σε υδροχλωρικό οξύ.

9) Επιλέξτε όλα τα μέταλλα που διαλύονται σε θειικό οξύ στον αρ.

10) Επιλέξτε όλα τα μέταλλα που διαλύονται σε θειικό οξύ όταν θερμαίνονται.

11) Επιλέξτε όλα τα μέταλλα που διαλύονται στο νιτρικό οξύ.

12) Απομονώστε όλα τα μέταλλα που αντιδρούν βίαια με το νερό σε συνθήκες περιβάλλοντος.

13) Επιλέξτε όλα τα μέταλλα.

14) Προσδιορίστε στοιχεία που είναι ευρέως διαδεδομένα στη φύση.

15) Προσδιορίστε στοιχεία που βρίσκονται στη φύση σε ελεύθερη κατάσταση.

16) Προσδιορίστε τα στοιχεία που παίζουν τον σημαντικότερο ρόλο στο σώμα του ανθρώπου και των ζώων.

17) Επιλέξτε στοιχεία που χρησιμοποιούνται ευρέως στην καθημερινή ζωή (σε ελεύθερη μορφή ή σε συνδυασμούς).

18) Προσδιορίστε στοιχεία με τα οποία είναι πιο επικίνδυνη η εργασία και απαιτούν ειδικά μέτρα και προστατευτικό εξοπλισμό.

19) Προσδιορίστε τα στοιχεία που, σε ελεύθερη μορφή ή σε μορφή ενώσεων, αποτελούν τη μεγαλύτερη απειλή για το περιβάλλον.

20) Επιλέξτε πολύτιμα μέταλλα.

21) Προσδιορίστε στοιχεία που είναι πιο ακριβά από τα πολύτιμα μέταλλα.

Σημειώσεις

1) Είναι λογικό να παρέχονται πολλαπλά φίλτρα. Για παράδειγμα, εάν ενεργοποιήσετε ένα φίλτρο για να λύσετε το πρόβλημα 1 (όλα τα στοιχεία γνωστά στον Μεσαίωνα) και 20 (πολύτιμα μέταλλα), τότε τα κελιά με πολύτιμα μέταλλα γνωστά στον Μεσαίωνα θα επισημανθούν (για παράδειγμα, με χρώμα) ( για παράδειγμα, το παλλάδιο δεν θα τονιστεί, άνοιξε το 1803).

2) Είναι λογικό να διασφαλίσουμε ότι πολλά φίλτρα λειτουργούν με τέτοιο τρόπο ώστε κάθε φίλτρο να επιλέγει κελιά με το δικό του χρώμα, αλλά να μην αφαιρεί εντελώς την επιλογή άλλου φίλτρου (μέρος του κελιού σε ένα χρώμα, μέρος σε άλλο). Στη συνέχεια, στην περίπτωση του προηγούμενου παραδείγματος, θα είναι ορατά στοιχεία της τομής συνόλων που ανακαλύφθηκαν στο Μεσαίωνα και πολύτιμων μετάλλων, καθώς και στοιχεία που ανήκουν μόνο στο πρώτο και μόνο στο δεύτερο σύνολο. Εκείνοι. πολύτιμα μέταλλα άγνωστα στο Μεσαίωνα και στοιχεία γνωστά στο Μεσαίωνα αλλά όχι πολύτιμα μέταλλα.

3) Είναι λογικό μετά την εφαρμογή του φίλτρου να διασφαλίζεται η δυνατότητα άλλης εργασίας με τα αποτελέσματα που λαμβάνονται. Για παράδειγμα, έχοντας επιλέξει στοιχεία γνωστά στον Μεσαίωνα, ο χρήστης κάνει κλικ στο LMB στο επιλεγμένο στοιχείο και μεταφέρεται στο άρθρο της Wikipedia σχετικά με αυτό το στοιχείο.

4) Είναι λογικό να παρέχουμε στον χρήστη τη δυνατότητα να αποεπιλέξει κάνοντας κλικ στο LMB στο επιλεγμένο κελί του πίνακα. Για παράδειγμα, για να αφαιρέσετε στοιχεία που έχετε ήδη δει.

5) Είναι λογικό να διασφαλίσουμε ότι η λίστα των επιλεγμένων κελιών αποθηκεύεται σε ένα αρχείο και ότι ένα τέτοιο αρχείο φορτώνεται με αυτόματη επιλογή κελιών. Αυτό θα δώσει στον χρήστη την ευκαιρία να κάνει ένα διάλειμμα από την εργασία.

Χρησιμοποιήσαμε έναν στατικό, προκαθορισμένο χάρτη ελέγχου, αλλά υπάρχουν πολλές σημαντικές εργασίες όπου μπορούν να χρησιμοποιηθούν χάρτες δυναμικού ελέγχου που αλλάζουν καθώς εκτελείται το πρόγραμμα. Ένα παράδειγμα θα ήταν ένας επεξεργαστής γραφήματος, στον οποίο ο χρήστης χρησιμοποιεί το ποντίκι για να υποδείξει τις θέσεις των κορυφών σε ένα παράθυρο και να σχεδιάσει άκρες μεταξύ τους. Για να διαγράψετε μια κορυφή ή μια άκρη, ο χρήστης πρέπει να το δείξει. Αλλά αν είναι πολύ εύκολο να δείξετε μια κορυφή που σημειώνεται με κύκλο, τότε θα είναι πιο δύσκολο να δείξετε μια άκρη που σχεδιάζεται με μια λεπτή γραμμή. Ένας χάρτης ελέγχου θα βοηθήσει εδώ, όπου οι κορυφές και οι ακμές καταλαμβάνουν ευρύτερες γειτονιές από ό,τι στο ορατό σχήμα.

Μια ενδιαφέρουσα δευτερεύουσα ερώτηση που σχετίζεται με αυτήν τη μέθοδο σύνθετης εκπαίδευσης είναι: μπορεί αυτή η μέθοδος να είναι χρήσιμη στην εκπαίδευση AI;

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο