Periodic table sa computer science ng paaralan

(Mga control card)
(Nakatuon sa International Year ng Periodic Table of Chemical Elements)
(Ang mga pinakabagong pagdaragdag ay ginawa noong Abril 8, 2019. Ang listahan ng mga karagdagan ay nasa ibaba kaagad ng hiwa)

Periodic table sa computer science ng paaralan
(Ang bulaklak ni Mendeleev, Pinagmulan)

Naalala ko nadaanan namin ang pato. Ito ay tatlong mga aralin nang sabay-sabay: heograpiya, natural na agham at Ruso. Sa isang aralin sa agham, ang isang pato ay pinag-aralan bilang isang pato, kung ano ang mga pakpak nito, kung ano ang mga binti nito, kung paano ito lumangoy, at iba pa. Sa isang aralin sa heograpiya, ang parehong pato ay pinag-aralan bilang isang naninirahan sa mundo: ito ay kinakailangan upang ipakita sa isang mapa kung saan ito nakatira at kung saan ito ay hindi. Sa Russian, tinuruan kami ni Serafima Petrovna na magsulat ng "u-t-k-a" at magbasa ng isang bagay tungkol sa mga duck mula sa Brem. Sa pagdaan, ipinaalam niya sa amin na sa German duck ay ganito, at sa French ay ganito. Sa tingin ko ito ay tinatawag na "complex method" noon. Sa pangkalahatan, ang lahat ay lumabas "sa pagdaan."

Veniamin Kaverin, Dalawang kapitan

Sa quote sa itaas, mahusay na ipinakita ni Veniamin Kaverin ang mga pagkukulang ng kumplikadong paraan ng pagtuturo, gayunpaman, sa ilang (marahil medyo bihirang) mga kaso, ang mga elemento ng pamamaraang ito ay nabigyang-katwiran. Ang isang ganoong kaso ay ang periodic table ni D.I. Mendeleev sa mga aralin sa computer science sa paaralan. Ang gawain ng software automation ng mga tipikal na aksyon na may periodic table ay malinaw para sa mga mag-aaral na nagsimulang mag-aral ng kimika, at nahahati sa maraming tipikal na problema sa kemikal. Kasabay nito, sa loob ng balangkas ng computer science, ang gawaing ito ay nagpapahintulot sa amin na ipakita sa isang simpleng anyo ang paraan ng mga control card, na maaaring maiugnay sa graphical programming, na nauunawaan sa malawak na kahulugan ng salita bilang programming gamit ang mga graphic na elemento.

(Abril 8, 2019 mga karagdagan na ginawa:
Addendum 1: Paano Gumagana ang Chemistry Calculator
Appendix 2: mga halimbawa ng mga gawain para sa mga filter)

Magsimula tayo sa pangunahing gawain. Sa pinakasimpleng kaso, ang periodic table ay dapat ipakita sa screen sa isang window form, kung saan sa bawat cell magkakaroon ng kemikal na pagtatalaga ng elemento: H - hydrogen, He - helium, atbp. Kung ang mouse cursor ay tumuturo sa isang cell, ang pagtatalaga ng elemento at ang numero nito ay ipinapakita sa isang espesyal na field sa aming form. Kung pinindot ng user ang LMB, ang pagtatalaga at numero ng napiling elementong ito ay ipapakita sa ibang field ng form.

Periodic table sa computer science ng paaralan

Ang problema ay maaaring malutas gamit ang anumang unibersal na wika. Kukunin namin ang simpleng lumang Delpi-7, na naiintindihan ng halos lahat. Ngunit bago ang programming sa PL, gumuhit tayo ng dalawang larawan, halimbawa, sa Photoshop. Una, iguhit natin ang Periodic Table sa anyo na gusto nating makita sa programa. I-save ang resulta sa isang graphic file table01.bmp.

Periodic table sa computer science ng paaralan

Para sa pangalawang pagguhit ginagamit namin ang una. Sunud-sunod naming pupunuin ang mga cell ng talahanayan, na na-clear sa lahat ng mga graphics, na may mga natatanging kulay sa modelo ng kulay ng RGB. Ang R at G ay palaging magiging 0, at B=1 para sa hydrogen, 2 para sa helium, atbp. Ang pagguhit na ito ay magiging aming control card, na aming ise-save sa isang file na tinatawag table2.bmp.

Periodic table sa computer science ng paaralan

Ang unang yugto ng graphic programming sa Photoshop ay nakumpleto. Lumipat tayo sa graphical na GUI programming sa Delpi-7 IDE. Upang gawin ito, magbukas ng bagong proyekto, kung saan inilalagay namin ang isang pindutan ng dialog sa pangunahing form (tableDlg), kung saan gaganapin ang gawain sa talahanayan. Susunod na nagtatrabaho kami sa form tableDlg.

Maglagay ng bahagi ng klase sa form TImage. Nakukuha namin Image1. Tandaan na sa pangkalahatan, para sa malalaking proyekto, awtomatikong nabuo ang mga pangalan ng form ImaheNSaan N maaaring umabot ng ilang dosena o higit pa - hindi ito ang pinakamahusay na istilo ng programming, at dapat bigyan ng mas makabuluhang mga pangalan. Ngunit sa aming munting proyekto, kung saan N ay hindi lalampas sa 2, maaari mong iwanan ito bilang nabuo.

Sa ari-arian Larawan1.Larawan i-upload ang file table01.bmp. Lumilikha kami Image2 at i-load ang aming control card doon table2.bmp. Sa kasong ito, ginagawa naming maliit at hindi nakikita ng user ang file, tulad ng ipinapakita sa ibabang kaliwang sulok ng form. Nagdaragdag kami ng mga karagdagang elemento ng kontrol, na ang layunin ay malinaw. Ang ikalawang yugto ng graphical na GUI programming sa Delpi-7 IDE ay nakumpleto.

Periodic table sa computer science ng paaralan

Lumipat tayo sa ikatlong yugto - pagsulat ng code sa Delpi-7 IDE. Ang module ay binubuo lamang ng limang tagapangasiwa ng kaganapan: paggawa ng form (FormCreate), paggalaw ng cursor Image1 (Image1MouseMove), pag-click sa LMB sa isang cell (Image1Click) at lumabas sa diyalogo gamit ang mga pindutang OK (OKBtnClick) o Kanselahin (CancelBtnClick). Ang mga header ng mga humahawak na ito ay nabuo sa karaniwang paraan gamit ang IDE.

Source code ng module:

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.

Sa aming bersyon, kumuha kami ng talahanayan ng 104 na elemento (constant laki). Malinaw na ang laki na ito ay maaaring tumaas. Ang mga pagtatalaga ng elemento (mga simbolo ng kemikal) ay isinusulat sa isang array TableSymbols. Gayunpaman, para sa mga dahilan ng pagiging compact ng source code, tila ipinapayong isulat ang pagkakasunud-sunod ng mga notasyong ito sa anyo ng mga string constants PeriodicTableStr1..., PeriodicTableStr4upang kapag ang form ay ginawa, ang program mismo ay nakakalat sa mga pagtatalagang ito sa mga elemento ng array. Ang bawat pagtatalaga ng elemento ay binubuo ng isa o dalawang Latin na titik, na ang unang titik ay uppercase at ang pangalawa (kung mayroon) lowercase. Ang simpleng panuntunang ito ay ipinapatupad kapag naglo-load ng array. Kaya, ang pagkakasunud-sunod ng mga notasyon ay maaaring isulat sa isang maigsi na paraan nang walang mga puwang. Ang paghahati ng pagkakasunod-sunod sa apat na bahagi (constant PeriodicTableStr1..., PeriodicTableStr4) ay dahil sa mga pagsasaalang-alang sa kadalian ng pagbabasa ng source code, dahil Ang isang linya na masyadong mahaba ay maaaring hindi ganap na magkasya sa screen.

Kapag gumagalaw ang cursor ng mouse sa ibabaw ng Image1 handler Image1MouseMove tinutukoy ng kaganapang ito ang halaga ng bahagi ng asul na kulay ng pixel ng control card Image2 para sa kasalukuyang mga coordinate ng cursor. Sa pamamagitan ng pagtatayo Image2 ang halagang ito ay katumbas ng numero ng elemento kung ang cursor ay nasa loob ng cell; zero kung nasa hangganan, at 255 sa iba pang mga kaso. Ang natitirang mga aksyon na isinagawa ng programa ay walang halaga at hindi nangangailangan ng paliwanag.

Bilang karagdagan sa mga pangkakanyahan na mga diskarte sa programming na nabanggit sa itaas, ito ay nagkakahalaga ng pagpuna sa estilo ng komentaryo. Sa mahigpit na pagsasalita, ang code na tinalakay ay napakaliit at simple na ang mga komento ay tila hindi partikular na kinakailangan. Gayunpaman, idinagdag din ang mga ito para sa mga metodolohikal na kadahilanan - ang maikling code ay nagpapahintulot sa amin na gumawa ng ilang pangkalahatang konklusyon nang mas malinaw. Sa ipinakita na code ang isang klase ay ipinahayag (TtableDlg). Ang mga pamamaraan ng klase na ito ay maaaring palitan at hindi ito makakaapekto sa paggana ng programa sa anumang paraan, ngunit maaaring makaapekto sa pagiging madaling mabasa nito. Halimbawa, isipin ang pagkakasunud-sunod:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Maaaring hindi ito masyadong kapansin-pansin, ngunit ito ay magiging mas mahirap basahin at maunawaan. Kung walang lima, ngunit sampu-sampung beses na higit pang mga pamamaraan sa seksyon pagsasakatuparan mayroon silang ganap na naiibang pagkakasunud-sunod kaysa sa mga paglalarawan ng klase, pagkatapos ay tataas lamang ang kaguluhan. Samakatuwid, kahit na mahirap na mahigpit na patunayan at maaaring maging imposible, ang isa ay makakaasa na ang pagpapakilala ng karagdagang pagkakasunud-sunod ay mapapabuti ang pagiging madaling mabasa ng code. Ang karagdagang order na ito ay pinadali ng lohikal na pagpapangkat ng ilang mga pamamaraan na nagsasagawa ng mga kaugnay na gawain. Ang bawat pangkat ay dapat bigyan ng pamagat, halimbawa:

// Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ: ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π±ΠΎΡ€

Ang mga heading na ito ay dapat kopyahin sa simula ng module at i-format bilang talaan ng mga nilalaman. Sa ilang mga kaso ng medyo mahahabang module, ang mga naturang talaan ng nilalaman ay nagbibigay ng karagdagang mga opsyon sa pag-navigate. Katulad nito, sa mahabang katawan ng isang pamamaraan, pamamaraan o pag-andar, ito ay nagkakahalaga, una, na minarkahan ang dulo ng katawan na ito:

end; // FormCreate

at, pangalawa, sa mga branched na pahayag na may mga bracket ng programa ay nagsisimula - dulo, markahan ang pahayag kung saan ang pagsasara ng bracket ay tumutukoy:

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

Upang i-highlight ang mga header ng pangkat at ang mga dulo ng mga katawan ng pamamaraan, maaari kang magdagdag ng mga linya na mas mahaba kaysa sa karamihan ng mga pahayag at binubuo, halimbawa, ng mga character na "=" at "_", ayon sa pagkakabanggit.
Muli, kailangan nating magpareserba: ang ating halimbawa ay masyadong simple. At kapag ang code ng isang pamamaraan ay hindi magkasya sa isang screen, maaaring mahirap maunawaan ang anim na magkakasunod na pagtatapos upang gumawa ng mga pagbabago sa code. Sa ilang lumang compiler, halimbawa, Pascal 8000 para sa OS IBM 360/370, isang column ng serbisyo na tulad nito ang naka-print sa kaliwa sa listahan

B5
…
E5

Nangangahulugan ito na ang pagsasara ng panaklong sa linya E5 ay tumutugma sa pambungad na panaklong sa linya B5.

Siyempre, ang istilo ng pagprograma ay isang napakakontrobersyal na isyu, kaya ang mga ideyang ipinahayag dito ay dapat kunin na walang iba kundi ang pagkain para sa pag-iisip. Maaaring napakahirap para sa dalawang medyo may karanasang programmer, na nakabuo at nakasanayan na sa magkaibang istilo sa loob ng maraming taon ng trabaho, na magkasundo. Ibang usapan para sa isang estudyanteng nag-aaral na magprograma na hindi pa nagkakaroon ng oras na maghanap ng sariling istilo. Sa palagay ko, sa kasong ito, dapat ihatid ng guro sa kanyang mga mag-aaral ang isang simple, ngunit hindi halatang ideya sa kanila na ang tagumpay ng isang programa ay higit na nakasalalay sa istilo kung saan nakasulat ang source code nito. Maaaring hindi sundin ng mag-aaral ang inirekumendang istilo, ngunit hayaan siyang isipin man lang ang pangangailangan para sa "dagdag" na mga aksyon upang mapabuti ang disenyo ng source code.

Pagbabalik sa aming pangunahing problema sa Periodic Table: ang karagdagang pag-unlad ay maaaring pumunta sa iba't ibang direksyon. Ang isa sa mga direksyon ay para sa sanggunian: kapag ini-hover mo ang cursor ng mouse sa isang table cell, may lalabas na window ng impormasyon na naglalaman ng karagdagang impormasyon sa tinukoy na elemento. Ang karagdagang pag-unlad ay mga filter. Halimbawa, depende sa pag-install, ang window ng impormasyon ay naglalaman lamang ng: ang pinakamahalagang pisikal at kemikal na impormasyon, impormasyon sa kasaysayan ng pagtuklas, impormasyon sa pamamahagi sa kalikasan, isang listahan ng pinakamahalagang compound (na kinabibilangan ng elementong ito), mga katangian ng pisyolohikal, pangalan sa isang wikang banyaga, atbp. agham, pisika at kimika - biology, heograpiyang pang-ekonomiya, kasaysayan ng agham at maging mga wikang banyaga.

Ngunit ang isang lokal na database ay hindi ang limitasyon. Ang programa ay natural na kumokonekta sa Internet. Kapag pumili ka ng isang elemento, ang link ay isinaaktibo, at ang artikulo sa Wikipedia tungkol sa elementong ito ay mabubuksan sa window ng web browser. Ang Wikipedia, tulad ng alam mo, ay hindi isang awtoritatibong mapagkukunan. Maaari kang magtakda ng mga link sa mga makapangyarihang mapagkukunan, halimbawa, chemical encyclopedia, TSB, abstract journal, mga query sa pag-order sa mga search engine para sa elementong ito, atbp. yun. Magagawa ng mga mag-aaral ang simple ngunit makabuluhang mga takdang-aralin sa DBMS at mga paksa sa Internet.

Bilang karagdagan sa mga query sa isang indibidwal na elemento, maaari kang lumikha ng functionality na, halimbawa, markahan ang mga cell sa talahanayan na nakakatugon sa ilang pamantayan na may iba't ibang kulay. Halimbawa, ang mga metal at di-metal. O mga cell na itinapon sa mga katawan ng tubig ng isang lokal na planta ng kemikal.

Maaari mo ring ipatupad ang mga function ng isang notebook organizer. Halimbawa, i-highlight sa talahanayan ang mga elemento na kasama sa pagsusulit. Pagkatapos ay i-highlight ang mga elementong pinag-aralan/inulit ng mag-aaral bilang paghahanda sa pagsusulit.

At narito, halimbawa, ang isa sa mga karaniwang problema sa kimika ng paaralan:

Binigyan ng 10 g ng chalk. Gaano karaming hydrochloric acid ang dapat inumin upang matunaw ang lahat ng chalk na ito?

Upang malutas ang problemang ito, kinakailangang isulat ang chem. reaksyon at paglalagay ng mga coefficient dito, kalkulahin ang mga molekular na timbang ng calcium carbonate at hydrogen chloride, pagkatapos ay buuin at lutasin ang proporsyon. Ang isang calculator batay sa aming pangunahing programa ay maaaring kalkulahin at malutas. Totoo, kailangan mo pa ring isaalang-alang na ang acid ay dapat na inumin sa makatwirang labis at sa isang makatwirang konsentrasyon, ngunit ito ay chemistry, hindi computer science.
Addendum 1: Paano Gumagana ang Chemistry CalculatorSuriin natin ang pagpapatakbo ng calculator gamit ang halimbawa ng problema sa itaas ng chalk at "hodgepodge". Magsimula tayo sa reaksyon:

CaCO3 + 2HCl = CaCl2 + H2O

Mula dito makikita natin na kakailanganin natin ang atomic weights ng mga sumusunod na elemento: calcium (Ca), carbon (C), oxygen (O), hydrogen (H) at chlorine (Cl). Sa pinakasimpleng kaso, maaari nating isulat ang mga timbang na ito sa isang one-dimensional na array na tinukoy bilang

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

kung saan ang array index ay tumutugma sa numero ng elemento. Higit pa sa libreng espasyo ng form tableDlg maglagay ng dalawang field. Sa unang field ay una itong nakasulat: "Ang unang reagent ay ibinigay", sa pangalawa - "Ang pangalawang reagent ay upang mahanap ang x". Tukuyin natin ang mga patlang reagent1, reagent2 ayon sa pagkakabanggit. Ang iba pang mga karagdagan sa programa ay magiging malinaw mula sa sumusunod na halimbawa ng calculator.

Nagta-type kami sa keyboard ng computer: 10 g. Inskripsyon sa field reagent1 mga pagbabago: "Ang unang reagent ay binibigyan ng 10 g." Ngayon ay ipinasok namin ang formula ng reagent na ito, at ang calculator ay kalkulahin at ipapakita ang molekular na timbang nito habang ipinasok mo ito.

I-click ang LMB sa cell ng talahanayan na may simbolo ng Ca. Inskripsyon sa patlang reagent1 mga pagbabago: "Unang reagent Ca 40.078 na ibinigay 10 g."

I-click ang LMB sa cell ng talahanayan na may simbolo na C. Inskripsyon sa field reagent1 mga pagbabago: "Ang unang reagent CaC 52.089 ay binigay ng 10 g." Yung. Ang calculator ay nagdagdag ng mga atomic na timbang ng calcium at carbon.

I-click ang LMB sa cell ng talahanayan na may simbolong O. Inskripsyon sa field reagent1 mga pagbabago: "Ang unang reagent na CaCO 68.088 ay binigay ng 10 g." Idinagdag ng calculator ang atomic weight ng oxygen sa kabuuan.

I-click ang LMB sa cell ng talahanayan na may simbolong O. Inskripsyon sa field reagent1 mga pagbabago: "Ang unang reagent CaCO2 84.087 ay binigay ng 10 g." Idinagdag muli ng calculator ang atomic weight ng oxygen sa kabuuan.

I-click ang LMB sa cell ng talahanayan na may simbolong O. Inskripsyon sa field reagent1 mga pagbabago: "Ang unang reagent CaCO3 100.086 ay binigay ng 10 g." Idinagdag muli ng calculator ang atomic weight ng oxygen sa kabuuan.

Pindutin ang Enter sa keyboard ng iyong computer. Ang pagpapakilala ng unang reagent ay nakumpleto at lumipat sa field reagent2. Tandaan na sa halimbawang ito ay nagbibigay kami ng kaunting bersyon. Kung ninanais, madali mong ayusin ang mga multiplier ng mga atomo ng parehong uri, upang, halimbawa, hindi mo kailangang mag-click ng pitong beses sa isang hilera sa oxygen cell kapag pumapasok sa chromium formula (K2Cr2O7).

I-click ang LMB sa cell ng talahanayan na may simbolo na H. Inskripsyon sa field reagent2 mga pagbabago: "Ikalawang reagent H 1.008 hanapin ang x."

I-click ang LMB sa cell ng talahanayan na may simbolo ng Cl. Inskripsyon sa patlang reagent2 mga pagbabago: "Ikalawang reagent HCl 36.458 hanapin x." Idinagdag ng calculator ang atomic weights ng hydrogen at chlorine. Sa equation ng reaksyon sa itaas, ang hydrogen chloride ay nauuna sa isang koepisyent na 2. Samakatuwid, i-click ang LMB sa field reagent2. Ang molekular na timbang ay doble (triple kapag pinindot nang dalawang beses, atbp.). Inskripsyon sa patlang reagent2 mga pagbabago: "Ikalawang reagent 2HCl 72.916 hanapin ang x."

Pindutin ang Enter sa keyboard ng iyong computer. Ang pagpasok ng pangalawang reagent ay nakumpleto, at ang calculator ay nakahanap ng x mula sa proporsyon

Periodic table sa computer science ng paaralan

Iyon ang kailangan naming hanapin.

Tandaan 1. Ang kahulugan ng nagresultang proporsyon: para sa paglusaw 100.086 Da nangangailangan ang chalk ng 72.916 Da acid, at para matunaw ang 10 g ng chalk kailangan mo ng x acid.

Tandaan 2. Mga koleksyon ng mga katulad na problema:

Khomchenko I. G., Koleksyon ng mga problema at pagsasanay sa kimika 2009 (grado 8-11).
Khomchenko G. P., Khomchenko I. G., Koleksyon ng mga problema sa kimika para sa mga aplikante sa mga unibersidad, 2019.

Tandaan 3. Upang gawing simple ang gawain, maaari mong pasimplehin ang pagpasok ng formula sa paunang bersyon at idagdag lamang ang simbolo ng elemento sa dulo ng linya ng formula. Kung gayon ang formula ng calcium carbonate ay magiging:
CaCOOO
Ngunit ang isang guro ng kimika ay malamang na hindi magugustuhan ang gayong pag-record. Hindi mahirap gawin ang tamang entry - upang gawin ito kailangan mong magdagdag ng isang array:

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

kung saan ang index ay ang bilang ng elementong kemikal, at ang halaga sa index na ito ay ang bilang ng mga atomo (sa una lahat ng elemento ng array ay ni-reset sa zero). Ang pagkakasunud-sunod kung saan ang mga atom ay nakasulat sa isang pormula, tulad ng pinagtibay sa kimika, ay dapat isaalang-alang. Halimbawa, kakaunti ang magugustuhan ng O3CaC. Ilipat natin ang responsibilidad sa gumagamit. Paggawa ng array:

 formulaOrder : array [1..size] of integer; // ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΏΠΎΠΊΠΎΡ€ΠΎΡ‡Π΅

kung saan isusulat natin ang bilang ng elemento ng kemikal ayon sa index ng hitsura nito sa formula. Pagdaragdag ng atom currNo sa formula:

if formula [currNo]=0 then //этот Π°Ρ‚ΠΎΠΌ встрСтился ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·
 begin
 orderIndex := orderIndex+1;//Π² Π½Π°Ρ‡Π°Π»Π΅ Π²Π²ΠΎΠ΄Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ orderIndex=0
 formulaOrder [orderIndex] :=  currNo;
 end;
formula [currNo]:=formula [currNo]+1;

Pagsusulat ng formula sa isang linya:

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;

Tandaan 4. Makatuwirang magbigay ng kakayahang alternatibong ipasok ang formula ng reagent mula sa keyboard. Sa kasong ito, kakailanganin mong ipatupad ang isang simpleng parser.

Ito ay nagkakahalaga na tandaan na:

Ngayon, mayroong ilang daang mga bersyon ng talahanayan, at ang mga siyentipiko ay patuloy na nag-aalok ng mga bagong pagpipilian. (Wikipedia)

Maaaring ipakita ng mga mag-aaral ang kanilang katalinuhan sa direksyong ito sa pamamagitan ng pagpapatupad ng isa sa mga iminungkahing opsyon na o subukang gumawa ng sarili nilang orihinal. Maaaring mukhang ito ang hindi gaanong kapaki-pakinabang na direksyon para sa mga aralin sa computer science. Gayunpaman, sa anyo ng Periodic Table na ipinatupad sa artikulong ito, maaaring hindi makita ng ilang mag-aaral ang mga partikular na pakinabang ng mga control card kaysa sa alternatibong solusyon gamit ang mga karaniwang button. TButton. Ang spiral na hugis ng talahanayan (kung saan ang mga cell ay may iba't ibang mga hugis) ay mas malinaw na magpapakita ng mga pakinabang ng solusyon na iminungkahi dito.

Periodic table sa computer science ng paaralan
(Alternatibong sistema ng mga elemento ni Theodore Benfey, Pinagmulan)

Idagdag din natin na ang ilang kasalukuyang umiiral na mga programa sa computer para sa Periodic Table ay inilarawan sa kamakailang nai-publish sa HabrΓ© Artikulo.

Appendix 2: mga halimbawa ng mga gawain para sa mga filterGamit ang mga filter na maaari mong lutasin, halimbawa, ang mga sumusunod na gawain:

1) Piliin sa talahanayan ang lahat ng mga elemento na kilala sa Middle Ages.

2) Tukuyin ang lahat ng mga elementong kilala sa panahon ng pagkatuklas ng Periodic Law.

3) Tukuyin ang pitong elemento na itinuturing ng mga alchemist na metal.

4) Piliin ang lahat ng elemento na nasa gaseous state sa ilalim ng normal na kondisyon (n.s.).

5) Piliin ang lahat ng elemento na nasa likidong estado sa no.

6) Piliin ang lahat ng elemento na nasa solid state sa no.

7) Piliin ang lahat ng elemento na maaaring malantad sa hangin sa loob ng mahabang panahon nang walang kapansin-pansing pagbabago sa mga normal na kondisyon.

8) Piliin ang lahat ng mga metal na natutunaw sa hydrochloric acid.

9) Piliin ang lahat ng metal na natutunaw sa sulfuric acid sa no.

10) Piliin ang lahat ng metal na natutunaw sa sulfuric acid kapag pinainit.

11) Piliin ang lahat ng metal na natutunaw sa nitric acid.

12) Ihiwalay ang lahat ng metal na marahas na tumutugon sa tubig sa mga kondisyon ng kapaligiran.

13) Piliin ang lahat ng mga metal.

14) Tukuyin ang mga elemento na laganap sa kalikasan.

15) Tukuyin ang mga elemento na matatagpuan sa kalikasan sa isang malayang estado.

16) Tukuyin ang mga elemento na gumaganap ng pinakamahalagang papel sa katawan ng tao at hayop.

17) Pumili ng mga elemento na malawakang ginagamit sa pang-araw-araw na buhay (sa libreng anyo o sa mga kumbinasyon).

18) Tukuyin ang mga elemento na pinaka-mapanganib na gamitin at nangangailangan ng mga espesyal na hakbang at kagamitan sa proteksyon.

19) Tukuyin ang mga elemento na, sa malayang anyo o sa anyo ng mga compound, ay nagdudulot ng pinakamalaking banta sa kapaligiran.

20) Pumili ng mahahalagang metal.

21) Tukuyin ang mga elemento na mas mahal kaysa sa mahahalagang metal.

Mga Tala

1) Makatuwirang magbigay ng maramihang mga filter. Halimbawa, kung i-on mo ang isang filter upang malutas ang problema 1 (lahat ng elemento na kilala sa Middle Ages) at 20 (mahalagang metal), ang mga cell na may mahahalagang metal na kilala noong Middle Ages ay iha-highlight (halimbawa, ayon sa kulay) ( halimbawa, ang palladium ay hindi mai-highlight , binuksan noong 1803).

2) Makatuwirang tiyakin na maraming mga filter ang gumagana sa ganoong mode na ang bawat filter ay pumipili ng mga cell na may sarili nitong kulay, ngunit hindi ganap na inaalis ang pagpili ng isa pang filter (bahagi ng cell sa isang kulay, bahagi sa isa pa). Pagkatapos, sa kaso ng nakaraang halimbawa, ang mga elemento ng intersection ng mga set na natuklasan sa Middle Ages at mahalagang mga metal, pati na rin ang mga elemento na kabilang lamang sa una at tanging sa pangalawang set, ay makikita. Yung. mahahalagang metal na hindi kilala noong Middle Ages, at mga elementong kilala noong Middle Ages ngunit hindi mahalagang metal.

3) Makatuwiran pagkatapos ilapat ang filter upang matiyak ang posibilidad ng iba pang gawain sa mga resultang nakuha. Halimbawa, ang pagkakaroon ng mga napiling elemento na kilala sa Middle Ages, ang gumagamit ay nag-click sa LMB sa napiling elemento at dinadala sa artikulo ng Wikipedia tungkol sa elementong ito.

4) Makatuwirang bigyan ang user ng kakayahang alisin sa pagkakapili sa pamamagitan ng pag-click sa LMB sa napiling table cell. Halimbawa, upang alisin ang mga natingnan nang item.

5) Makatuwirang tiyakin na ang listahan ng mga napiling cell ay nai-save sa isang file at na ang nasabing file ay puno ng awtomatikong pagpili ng mga cell. Bibigyan nito ang user ng pagkakataong magpahinga mula sa trabaho.

Gumamit kami ng static, paunang natukoy na control map, ngunit maraming mahahalagang gawain kung saan maaaring gamitin ang mga dynamic na control map na nagbabago habang tumatakbo ang program. Ang isang halimbawa ay isang graph editor, kung saan ginagamit ng user ang mouse upang ipahiwatig ang mga posisyon ng mga vertex sa isang window at gumuhit ng mga gilid sa pagitan ng mga ito. Upang magtanggal ng vertex o gilid, dapat ituro ito ng user. Ngunit kung medyo madaling ituro ang isang vertex na minarkahan ng isang bilog, kung gayon magiging mas mahirap na ituro ang isang gilid na iginuhit na may manipis na linya. Makakatulong ang isang control map dito, kung saan ang mga vertex at gilid ay sumasakop sa mas malalawak na kapitbahayan kaysa sa nakikitang pigura.

Ang isang kawili-wiling panig na tanong na nauugnay sa pamamaraang ito ng kumplikadong pagsasanay ay: maaari bang maging kapaki-pakinabang ang pamamaraang ito sa pagsasanay ng AI?

Pinagmulan: www.habr.com

Magdagdag ng komento