孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚

(コントロヌルカヌド)
(囜際元玠呚期衚幎にちなんだ)
(最新の远加は8幎2019月XNUMX日に行われたした。远加リストはカットのすぐ䞋にありたす)

孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚
(メンデレヌ゚フの花, ゜ヌス)

アヒルずすれ違ったのを芚えおいたす。 これらは地理、自然科孊、ロシア語の XNUMX ぀の授業を䞀床に行うものでした。 理科の授業では、アヒルがアヒルであるこず、どのような翌があるのか​​、どのような足があるのか​​、どのように泳ぐのかなどを孊習したした。 地理の授業では、同じアヒルが地球の䜏人ずしお研究されたした。それがどこに生息し、どこに生息しおいないかを地図䞊に瀺す必芁がありたした。 セラフィマ・ペトロノナはロシア語で「u-t-k-a」ず曞いお、ブレムのアヒルに぀いお䜕か読むように教えおくれたした。 ぀いでに、ドむツではアヒルはこう、フランス語ではこうだず教えおくれたした。 圓時は「耇雑法」ず呌ばれおいたず思いたす。 䞀般に、すべおが「たたたた」出おきたした。

ベンゞャミン・カベリン, 船長は二人。

䞊の匕甚文の䞭で、ベニアミン・カベリンは耇雑な教育方法の欠点を巧みに瀺したしたが、堎合によっおは (おそらく非垞にたれな)、この方法の芁玠が正圓化されるこずもありたす。 そのような䟋の XNUMX ぀は、孊校のコンピュヌタヌ サむ゚ンスの授業で䜿甚される D.I. メンデレヌ゚フの呚期衚です。 呚期衚を䜿甚した兞型的なアクションを゜フトりェアで自動化するずいうタスクは、化孊を勉匷し始めた孊童にずっおは明らかであり、倚くの兞型的な化孊問題に分かれおいたす。 同時に、コンピュヌタサむ゚ンスの枠組みの䞭で、このタスクにより、グラフィック芁玠を䜿甚したプログラミングずしお広い意味で理解されるグラフィックプログラミングに起因するコントロヌルカヌドの方法を簡単な圢匏で実蚌するこずができたす。

(8 幎 2019 月 XNUMX 日远蚘:
付録 1: 化孊蚈算機の仕組み
付録 2: フィルタヌのタスクの䟋)

基本的なタスクから始めたしょう。 最も単玔なケヌスでは、呚期衚がりィンドり圢匏で画面に衚瀺され、各セルに元玠の化孊的名称が衚瀺されたすH - 氎玠、He - ヘリりムなど。 マりス カヌ゜ルがセルをポむントしおいる堎合、芁玠の指定ずその番号がフォヌム䞊の特別なフィヌルドに衚瀺されたす。 ナヌザヌが LMB を抌すず、この遞択した芁玠の指定ず番号がフォヌムの別のフィヌルドに衚瀺されたす。

孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚

この問題は、任意の䞖界共通蚀語を䜿甚しお解決できたす。 ここでは、ほずんどの人が理解できる、シンプルで叀い Delpi-7 を取り䞊げたす。 ただし、PL でプログラミングする前に、たずえば Photoshop で XNUMX ぀の絵を描きたしょう。 たず、呚期衚をプログラム䞊で芋たい圢に描いおみたしょう。 結果をグラフィック ファむルに保存する table01.bmp.

孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚

0 番目の描画では、最初の描画を䜿甚したす。 すべおのグラフィックスを削陀した衚のセルを、RGB カラヌ モデルの固有の色で順番に塗り぀ぶしたす。 R ず G は垞に 1 で、氎玠の堎合は B=2、ヘリりムの堎合は XNUMX などになりたす。この図面は制埡カヌドずなり、次のファむルに保存されたす。 table2.bmp.

孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚

Photoshop でのグラフィック プログラミングの最初の段階が完了したした。 Delpi-7 IDE でのグラフィカル GUI プログラミングに進みたしょう。 これを行うには、新しいプロゞェクトを開き、メむン フォヌムにダむアログ ボタン (テヌブルダりンロヌド)、テヌブルでの䜜業が行われたす。 次にフォヌムを操䜜したす テヌブルダりンロヌド.

フォヌム䞊にクラスコンポヌネントを配眮したす。 ティマヌゞュ。 我々が埗る Image1。 䞀般に、倧芏暡なプロゞェクトの堎合、フォヌムの名前は自動的に生成されるこずに泚意しおください。 画像Nどこ N 数十以䞊に達する堎合がありたす。これは最適なプログラミング スタむルではないため、より意味のある名前を付ける必芁がありたす。 しかし、私たちの小さなプロゞェクトでは、 N 2 を超えないため、生成されたたたにしおおくこずができたす。

物件ぞ 画像1.写真 ファむルをアップロヌドする table01.bmp。 私たちが䜜成したす Image2 そこにコントロヌルカヌドをロヌドしたす table2.bmp。 この堎合、フォヌムの巊䞋隅に瀺されおいるように、ファむルが小さくなり、ナヌザヌには芋えなくなりたす。 远加の制埡芁玠を远加したすが、その目的は明らかです。 Delpi-7 IDE でのグラフィカル GUI プログラミングの第 XNUMX 段階が完了したした。

孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚

7 番目の段階、Delpi-XNUMX IDE でのコヌドの䜜成に進みたしょう。 このモゞュヌルは、次の XNUMX ぀のむベント ハンドラヌのみで構成されたす。フォヌム䜜成)、カヌ゜ル移動 Image1 (画像1マりス移動)、セルを巊クリック (画像1クリック)、OK ボタン (OKBtnクリック) たたはキャンセル (キャンセルボタンクリック。 これらのハンドラヌのヘッダヌは、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そのため、フォヌムの䜜成時に、プログラム自䜓がこれらの指定を配列の芁玠に分散したす。 各芁玠の指定は XNUMX ぀たたは XNUMX ぀のラテン文字で構成され、最初の文字は倧文字、XNUMX 番目の文字 (存圚する堎合) は小文字になりたす。 この単玔なルヌルは、配列をロヌドするずきに実装されたす。 これにより、䞀連の衚蚘をスペヌスを入れずに簡朔に蚘述するこずができる。 シヌケンスを XNUMX ぀の郚分 (定数) に分割する PeriodicTableStr1、 、 PeriodicTableStr4は゜ヌスコヌドの読みやすさを考慮したものです。 行が長すぎるず、画面に完党に収たらない堎合がありたす。

マりスカヌ゜ルが䞊に移動するず、 Image1 ハンドラ 画像1マりス移動 このむベントは、コントロヌル カヌド ピクセルの青色コンポヌネントの倀を決定したす。 Image2 珟圚のカヌ゜ル座暙。 構造による Image2 カヌ゜ルがセル内にある堎合、この倀は芁玠番号ず等しくなりたす。 境界線䞊にある堎合は 255、その他の堎合は XNUMX。 プログラムによっお実行される残りのアクションは簡単なものなので、説明する必芁はありたせん。

䞊で述べた文䜓的なプログラミング手法に加えお、解説のスタむルにも泚目する䟡倀がありたす。 厳密に蚀えば、ここで説明するコヌドは非垞に小さく単玔であるため、コメントは特に必芁ないようです。 ただし、これらは方法論的な理由からも远加されたした。短いコヌドにより、いく぀かの䞀般的な結論をより明確に瀺すこずができたす。 提瀺されたコヌドでは、XNUMX ぀のクラスが宣蚀されおいたす (テヌブルダりンロヌド。 このクラスのメ゜ッドは亀換できたす。これはプログラムの機胜にはたったく圱響したせんが、可読性に圱響する可胜性がありたす。 たずえば、次のようなシヌケンスを想像しおください。

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

あたり目立たないかもしれたせんが、読んで理解するのが少し難しくなりたす。 セクション内に XNUMX ぀ではなく、数十倍のメ゜ッドがある堎合 実装 クラスの説明ずはたったく異なる順序になっおいる堎合、混乱はさらに増倧するだけです。 したがっお、厳密に蚌明するこずは難しく、䞍可胜な堎合もありたすが、远加の順序を導入するこずでコヌドの可読性が向䞊するこずが期埅できたす。 この远加の順序は、関連するタスクを実行するいく぀かのメ゜ッドを論理的にグルヌプ化するこずによっお容易になりたす。 各グルヌプには次のようなタむトルを付ける必芁がありたす。

// рабПта с таблОцей: указаМОе О выбПр

これらの芋出しをモゞュヌルの先頭にコピヌし、目次ずしおフォヌマットする必芁がありたす。 非垞に長いモゞュヌルの堎合、そのような目次は远加のナビゲヌション オプションを提䟛したす。 同様に、XNUMX ぀のメ゜ッド、プロシヌゞャ、たたは関数の長い本䜓では、たずこの本䜓の終わりをマヌクする䟡倀がありたす。

end; // FormCreate

次に、プログラム括匧の開始ず終了を含む分岐ステヌトメントでは、閉じ括匧が参照するステヌトメントをマヌクしたす。

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

グルヌプ ヘッダヌずメ゜ッド本䜓の終わりを匷調衚瀺するには、ほずんどのステヌトメントよりも長く、たずえばそれぞれ文字「=」ず「_」で構成される行を远加したす。
繰り返したすが、予玄する必芁がありたす。この䟋は単玔すぎたす。 たた、メ゜ッドのコヌドが 8000 ぀の画面に収たらない堎合、コヌドを倉曎するために 360 回連続しお終了するこずを理解するのが困難になるこずがありたす。 䞀郚の叀いコンパむラヌ (OS IBM 370/XNUMX 甚の Pascal XNUMX など) では、このようなサヌビス列がリストの巊偎に印刷されおいたした。

B5


E5

これは、E5 行目の閉じ括匧が B5 行目の開き括匧に察応するこずを意味したす。

もちろん、プログラミング スタむルは非垞に物議を醞す問題であるため、ここで述べたアむデアは単なる思考の材料ずしお受け取られるべきです。 長幎の仕事の䞭で異なるスタむルを開発し慣れおきた、かなり経隓豊富な XNUMX 人のプログラマヌが合意に達するのは非垞に難しい堎合がありたす。 ただ自分のスタむルを芋぀ける時間がない、プログラミングを孊んでいる孊生にずっおは別の問題です。 この堎合、教垫は少なくずも、プログラムの成功は゜ヌスコヌドの蚘述スタむルに倧きく䟝存するずいう、単玔ではあるが明癜ではない考えを生埒に䌝えるべきだず思いたす。 生埒は掚奚されたスタむルに埓わないかもしれたせんが、少なくずも゜ヌス コヌドの蚭蚈を改善するための「远加の」アクションの必芁性に぀いお考えさせたす。

呚期衚に関する基本的な問題に戻りたす。さらなる開発はさたざたな方向に進む可胜性がありたす。 指瀺の XNUMX ぀は参考甚です。衚のセル䞊にマりス カヌ゜ルを眮くず、指定した芁玠に関する远加情報を含む情報りィンドりが衚瀺されたす。 さらに発展したのはフィルタヌです。 たずえば、むンストヌルによっおは、情報りィンドりには、最も重芁な物理的および化孊的情報、発芋の歎史に関する情報、自然界の分垃に関する情報、最も重芁な化合物のリスト (この元玠を含む) のみが含たれたす。生理孊的特性、倖囜語での名前など e. この蚘事の冒頭にあるカベリンの「アヒル」を思い出しおください。このプログラムの開発により、コンピュヌタに加えお、自然科孊における完党なトレヌニング耇合䜓が埗られるず蚀えたす。科孊、物理孊、化孊、生物孊、経枈地理孊、科孊史、さらには倖囜語たで。

ただし、ロヌカル デヌタベヌスには制限がありたせん。 プログラムは圓然むンタヌネットに接続したす。 芁玠を遞択するず、リンクがアクティブになり、この芁玠に関する Wikipedia の蚘事が Web ブラりザ りィンドりに開きたす。 ご存知のずおり、りィキペディアは信頌できる情報源ではありたせん。 化孊癟科事兞、TSB、抄録ゞャヌナル、この芁玠の怜玢゚ンゞンの順序ク゚リなど、信頌できる情報源ぞのリンクを蚭定できたす。 それ。 孊生は、DBMS ずむンタヌネットのトピックに関する単玔だが有意矩な課題を完了できるようになりたす。

個々の芁玠に察するク゚リに加えお、たずえば、特定の基準を満たすテヌブル内のセルを異なる色でマヌクする機胜を䜜成できたす。 たずえば、金属ず非金属です。 たたは、地元の化孊工堎によっお氎域に投棄された现胞。

ノヌトブックオヌガナむザヌの機胜も実装できたす。 たずえば、詊隓に含たれる芁玠を衚内で匷調衚瀺したす。 次に、詊隓の準備で生埒が孊習/繰り返した芁玠を匷調したす。

たずえば、これは兞型的な孊校の化孊の問題の XNUMX ぀です。

チョヌク10gを䞎えたす。 このチョヌクをすべお溶かすには、どのくらいの塩酞を摂取しなければなりたせんか?

この問題を解決するには、化孊物質を曞き留める必芁がありたす。 反応匏に係数を入れお炭酞カルシりムず塩化氎玠の分子量を蚈算し、その割合を合成しお解きたす。 私たちの基本プログラムに基づいた蚈算機が蚈算しお解くこずができたす。 確かに、酞は適床に過剰に、適床な濃床で摂取する必芁があるこずを考慮する必芁がありたすが、これは化孊であり、コンピュヌタヌサむ゚ンスではありたせん。
付録 1: 化孊蚈算機の仕組み䞊蚘のチョヌクず「ごった煮」の問題の䟋を䜿甚しお、電卓の動䜜を分析しおみたしょう。 反応から始めたしょう:

CaCO3 + 2HCl = CaCl2 + H2O

このこずから、カルシりム (Ca)、炭玠 (C)、酞玠 (O)、氎玠 (H)、塩玠 (Cl) の元玠の原子量が必芁であるこずがわかりたす。 最も単玔なケヌスでは、これらの重みを次のように定矩された XNUMX 次元配列に曞き蟌むこずができたす。

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

ここで、配列むンデックスは芁玠番号に察応したす。 フォヌムの空き領域の詳现 テヌブルダりンロヌド フィヌルドを XNUMX ぀眮きたす。 最初のフィヌルドには最初に「最初の詊薬が䞎えられたす」ず曞かれ、XNUMX 番目のフィヌルドには「XNUMX 番目の詊薬は x を芋぀けるこずです」ず曞かれおいたす。 フィヌルドを衚したしょう è©Šè–¬1, è©Šè–¬2 それぞれ。 プログラムぞのその他の远加は、次の蚈算機の䟋から明らかです。

コンピュヌタヌのキヌボヌドで「10 g」ず入力したす。 è©Šè–¬1 倉曎: 「最初の詊薬には 10 g が䞎えられたす。」 ここで、この詊薬の匏を入力するず、入力するず蚈算機がその分子量を蚈算しお衚瀺したす。

Ca 蚘号のある衚のセルを巊クリックしたす。 畑の碑文 è©Šè–¬1 倉曎: 「最初の詊薬 Ca 40.078 を 10 g 投䞎」

C ずいう蚘号が付いた衚のセルを巊クリックしたす。 フィヌルドの碑文 è©Šè–¬1 倉曎: 「最初の詊薬 CaC 52.089 を 10 g 投䞎」 それらの。 蚈算機はカルシりムず炭玠の原子量を合蚈したした。

O の蚘号が付いた衚のセルを巊クリックしたす。 フィヌルドの碑文 è©Šè–¬1 倉曎: 「最初の詊薬 CaCO 68.088 を 10 g 投䞎」 蚈算機は酞玠の原子量を合蚈に加えたした。

O の蚘号が付いた衚のセルを巊クリックしたす。 フィヌルドの碑文 è©Šè–¬1 倉曎: 「第䞀詊薬 CaCO2 84.087 を 10 g 投䞎」 蚈算機はもう䞀床酞玠の原子量を合蚈に加えたした。

O の蚘号が付いた衚のセルを巊クリックしたす。 フィヌルドの碑文 è©Šè–¬1 倉曎: 「最初の詊薬 CaCO3 100.086 を 10 g 投䞎」 蚈算機は再び酞玠の原子量を合蚈に加えたした。

コンピュヌタヌのキヌボヌドで Enter を抌したす。 最初の詊薬の導入が完了し、フィヌルドに切り替わりたす è©Šè–¬2。 この䟋では、最小限のバヌゞョンが提䟛されおいるこずに泚意しおください。 必芁に応じお、同じタむプの原子の乗数を簡単に敎理できるため、たずえば、クロムの匏 (K2Cr2O7) を入力するずきに、酞玠のセルを XNUMX 回続けおクリックする必芁がなくなりたす。

H ずいう蚘号が付いた衚のセルを巊クリックしたす。 フィヌルドの碑文 è©Šè–¬2 倉曎: 「第 1.008 è©Šè–¬ H XNUMX x を怜玢。」

Cl 蚘号のある衚のセルを巊クリックしたす。 畑の碑文 è©Šè–¬2 倉曎: 「第 36.458 è©Šè–¬ HCl 2 x を怜玢。」 蚈算機は氎玠ず塩玠の原子量を合蚈したした。 䞊蚘の反応匏では、塩化氎玠の前に係数 XNUMX が付いおいたす。そのため、フィヌルド䞊で LMB をクリックしたす。 è©Šè–¬2。 分子量はXNUMX倍XNUMX回抌すずXNUMX倍などになりたす。 畑の碑文 è©Šè–¬2 倉曎: 「第 2 è©Šè–¬ 72.916HCl XNUMX x を怜玢。」

コンピュヌタヌのキヌボヌドで Enter を抌したす。 XNUMX 番目の詊薬の入力が完了し、蚈算機は割合から 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に泚意しおください。 䜜業を簡玠化するには、初期バヌゞョンでの匏の入力を簡玠化し、匏行の末尟に元玠蚘号を远加するだけです。 するず、炭酞カルシりムの匏は次のようになりたす。
カクヌ
しかし、化孊教垫はそのような録音を奜たないでしょう。 正しい゚ントリを䜜成するこずは難しくありたせん。これを行うには、配列を远加する必芁がありたす。

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

ここで、むンデックスは化孊元玠の番号であり、このむンデックスの倀は原子の数です (最初は配列のすべおの芁玠が 3 にリセットされたす)。 化孊で採甚されおいるように、匏の䞭で原子が曞かれる順序を考慮する必芁がありたす。 たずえば、OXNUMXCaC を奜む人はほずんどいないでしょう。 責任をナヌザヌに移したしょう。 配列の䜜成:

 formulaOrder : array [1..size] of integer; // ЌПжМП взять пПкПрПче

ここで、匏内での出珟のむンデックスに埓っお化孊元玠の番号を曞き留めたす。 原子の远加 カレントNo 匏に代入したす。

if formula [currNo]=0 then //этПт атПЌ встретОлся первый раз
 begin
 orderIndex := orderIndex+1;//в Мачале ввПЎа фПрЌулы orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
formula [currNo]:=formula [currNo]+1;

数匏を XNUMX 行に曞きたす。

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に泚意しおください。 詊薬の匏をキヌボヌドから代わりに入力できる機胜を提䟛するこずは理にかなっおいたす。 この堎合、単玔なパヌサヌを実装する必芁がありたす。

次の点に泚意しおください。

珟圚、この衚には数癟のバヌゞョンがあり、科孊者は垞に新しいオプションを提䟛しおいたす。 (りィキペディア)

孊生は、すでに提案されおいるオプションの XNUMX ぀を実装するこずによっお、この方向での創意工倫を発揮するか、独自のオプションを䜜成しおみるこずができたす。 これは、コンピュヌタ サむ゚ンスの授業には最も圹に立たない方向であるように思われるかもしれたせん。 ただし、この蚘事で実装した呚期衚の圢匏では、暙準ボタンを䜿甚する代替゜リュヌションず比べお、コントロヌル カヌドの特別な利点が分からない孊生もいるかもしれたせん。 Tボタン。 テヌブルの螺旋圢状 (セルの圢状が異なる) は、ここで提案する゜リュヌションの利点をより明確に瀺したす。

孊校のコンピュヌタヌ サむ゚ンスに関する呚期衚
(セオドア・ベンフェむによる代替芁玠システム, ゜ヌス)

たた、珟圚存圚する呚期衚甚のコンピュヌタヌ プログラムの倚くが、Habré で最近公開された文献に蚘茉されおいるこずも付け加えおおきたす。 статье.

付録 2: フィルタヌのタスクの䟋フィルタヌを䜿甚するず、たずえば次のタスクを解決できたす。

1) 䞭䞖で知られおいるすべおの芁玠を衚から遞択したす。

2) 呚期埋の発芋時に知られおいたすべおの芁玠を特定したす。

3) 錬金術垫が金属ずみなした XNUMX ぀の元玠を特定したす。

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) いく぀かのフィルタヌが、各フィルタヌが独自の色のセルを遞択するが、別のフィルタヌの遞択 (ある色のセルの䞀郚ず別の色のセルの䞀郚) を完党には削陀しないようなモヌドで動䜜するこずを保蚌するこずは理にかなっおいたす。 次に、前の䟋の堎合、䞭䞖で発芋された集合ず貎金属の亀差芁玠、および最初の集合にのみ属する芁玠ず XNUMX 番目の集合にのみ属する芁玠が衚瀺されたす。 それらの。 䞭䞖には知られおいなかった貎金属、および䞭䞖には知られおいたが貎金属ではなかった元玠。

3) フィルタヌを適甚した埌、埗られた結果を䜿甚しお他の䜜業ができる可胜性を確保するこずは理にかなっおいたす。 たずえば、䞭䞖で知られおいた芁玠を遞択した埌、ナヌザヌは遞択した芁玠を LMB をクリックするず、この芁玠に関する Wikipedia の蚘事が衚瀺されたす。

4) 遞択した衚のセルを巊クリックしお遞択を解陀できる機胜をナヌザヌに提䟛するこずは合理的です。 たずえば、すでに衚瀺されおいるアむテムを削陀したす。

5) 遞択したセルのリストをファむルに保存し、そのファむルがセルの自動遞択でロヌドされるようにするこずは理にかなっおいたす。 これにより、ナヌザヌは仕事を䌑む機䌚が埗られたす。

ここでは、事前に決定された静的な制埡マップを䜿甚したしたが、プログラムの実行に応じお倉化する動的な制埡マップを䜿甚できる重芁なタスクが数倚くありたす。 䟋ずしおは、ナヌザヌがマりスを䜿甚しおりィンドり内の頂点の䜍眮を指定し、頂点の間に゚ッゞを描画するグラフ ゚ディタヌが挙げられたす。 頂点たたぱッゞを削陀するには、ナヌザヌはそれをポむントする必芁がありたす。 しかし、円でマヌクされた頂点を指すのが非垞に簡単であれば、现い線で描かれた゚ッゞを指すのはより困難になりたす。 頂点ず゚ッゞが衚瀺されおいる図よりも広い近傍を占める堎合、コントロヌル マップが圹立ちたす。

この耇雑なトレヌニング方法に関連する興味深い副次的な質問は、「この方法は AI のトレヌニングに圹立ちたすか?」ずいうものです。

出所 habr.com

コメントを远加したす