Jadual berkala tentang sains komputer sekolah

(Kad kawalan)
(Didedikasikan kepada Tahun Antarabangsa Jadual Berkala Unsur Kimia)
(Penambahan terbaharu dibuat pada 8 April 2019. Senarai penambahan adalah tepat di bawah potongan)

Jadual berkala tentang sains komputer sekolah
(bunga Mendeleev, Source)

Saya ingat kami melewati itik itu. Ini adalah tiga pelajaran sekaligus: geografi, sains semula jadi dan Rusia. Dalam pelajaran sains, seekor itik dipelajari sebagai itik, apa sayapnya, apa kakinya, bagaimana ia berenang, dan sebagainya. Dalam pelajaran geografi, itik yang sama telah dipelajari sebagai penduduk dunia: ia adalah perlu untuk menunjukkan pada peta di mana ia tinggal dan di mana ia tidak. Dalam bahasa Rusia, Serafima Petrovna mengajar kami menulis "u-t-k-a" dan membaca sesuatu tentang itik dari Brem. Secara sepintas lalu, dia memberitahu kami bahawa dalam bahasa Jerman itik adalah seperti ini, dan dalam bahasa Perancis seperti ini. Saya fikir ia dipanggil "kaedah kompleks" ketika itu. Secara umum, segala-galanya keluar "secara sepintas lalu."

Veniamin Kaverin, Dua kapten

Dalam petikan di atas, Veniamin Kaverin mahir menunjukkan kelemahan kaedah pengajaran yang kompleks, namun, dalam beberapa kes (mungkin agak jarang), unsur-unsur kaedah ini adalah wajar. Satu kes sedemikian ialah jadual berkala D.I. Mendeleev dalam pelajaran sains komputer sekolah. Tugas automasi perisian tindakan biasa dengan jadual berkala adalah jelas untuk pelajar sekolah yang telah mula belajar kimia, dan dibahagikan kepada banyak masalah kimia biasa. Pada masa yang sama, dalam rangka kerja sains komputer, tugas ini membolehkan kami menunjukkan dalam bentuk mudah kaedah kad kawalan, yang boleh dikaitkan dengan pengaturcaraan grafik, difahami dalam erti kata yang luas sebagai pengaturcaraan menggunakan elemen grafik.

(8 April 2019 penambahan dibuat:
Tambahan 1: Cara Kalkulator Kimia Berfungsi
Lampiran 2: contoh tugasan untuk penapis)

Mari kita mulakan dengan tugas asas. Dalam kes paling mudah, jadual berkala harus dipaparkan pada skrin dalam bentuk tetingkap, di mana dalam setiap sel akan ada sebutan kimia unsur: H - hidrogen, He - helium, dll. Jika kursor tetikus menghala ke sel, maka penetapan elemen dan nombornya dipaparkan dalam medan khas pada borang kami. Jika pengguna menekan LMB, maka penetapan dan nombor elemen yang dipilih ini akan ditunjukkan dalam medan lain dalam borang.

Jadual berkala tentang sains komputer sekolah

Masalahnya boleh diselesaikan menggunakan mana-mana bahasa universal. Kami akan menggunakan Delpi-7 lama yang mudah, yang boleh difahami oleh hampir semua orang. Tetapi sebelum pengaturcaraan dalam PL, mari kita lukis dua gambar, sebagai contoh, dalam Photoshop. Mula-mula, mari kita lukis Jadual Berkala dalam bentuk yang kita mahu lihat dalam atur cara. Simpan hasilnya dalam fail grafik table01.bmp.

Jadual berkala tentang sains komputer sekolah

Untuk lukisan kedua kami menggunakan yang pertama. Kami akan mengisi sel jadual secara berurutan, dibersihkan daripada semua grafik, dengan warna unik dalam model warna RGB. R dan G akan sentiasa 0, dan B=1 untuk hidrogen, 2 untuk helium, dsb. Lukisan ini akan menjadi kad kawalan kami, yang akan kami simpan dalam fail yang dipanggil table2.bmp.

Jadual berkala tentang sains komputer sekolah

Tahap pertama pengaturcaraan grafik dalam Photoshop selesai. Mari kita beralih kepada pengaturcaraan GUI grafik dalam Delpi-7 IDE. Untuk melakukan ini, buka projek baharu, di mana pada borang utama kami meletakkan butang dialog (tableDlg), di mana kerja dengan jadual akan berlaku. Seterusnya kita bekerja dengan borang tableDlg.

Letakkan komponen kelas pada borang Gambar. Kita mendapatkan Image1. Ambil perhatian bahawa secara umum, untuk projek besar, nama borang yang dijana secara automatik ImejNJika N boleh mencapai beberapa dozen atau lebih - ini bukan gaya pengaturcaraan terbaik, dan nama yang lebih bermakna harus diberikan. Tetapi dalam projek kecil kami, di mana N tidak akan melebihi 2, anda boleh membiarkannya seperti yang dijana.

Kepada harta benda Imej1.Gambar muat naik fail table01.bmp. Kami cipta Image2 dan muatkan kad kawalan kami di sana table2.bmp. Dalam kes ini, kami menjadikan fail kecil dan tidak kelihatan kepada pengguna, seperti yang ditunjukkan di sudut kiri bawah borang. Kami menambah elemen kawalan tambahan, yang tujuannya jelas. Tahap kedua pengaturcaraan GUI grafik dalam IDE Delpi-7 telah selesai.

Jadual berkala tentang sains komputer sekolah

Mari kita beralih ke peringkat ketiga - menulis kod dalam Delpi-7 IDE. Modul ini mengandungi hanya lima pengendali acara: penciptaan borang (FormCreate), pergerakan kursor Image1 (Image1MouseMove), mengklik LMB pada sel (Imej1Klik) dan keluar dari dialog menggunakan butang OK (OKBtnClick) atau Batal (CancelBtnClick). Pengepala pengendali ini dijana dengan cara standard menggunakan IDE.

Kod sumber modul:

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.

Dalam versi kami, kami mengambil jadual 104 elemen (constant saiz). Jelas sekali saiz ini boleh ditingkatkan. Penamaan unsur (simbol kimia) ditulis pada tatasusunan Simbol Jadual. Walau bagaimanapun, atas sebab kekompakan kod sumber, nampaknya dinasihatkan untuk menulis urutan tatatanda ini dalam bentuk pemalar rentetan Jadual BerkalaStr1..., Jadual BerkalaStr4supaya apabila borang dibuat, program itu sendiri menyerakkan sebutan ini di antara elemen tatasusunan. Setiap sebutan unsur terdiri daripada satu atau dua huruf Latin, dengan huruf pertama huruf besar dan huruf kecil kedua (jika ada). Peraturan mudah ini dilaksanakan semasa memuatkan tatasusunan. Oleh itu, urutan tatatanda boleh ditulis secara ringkas tanpa ruang. Memecahkan urutan kepada empat bahagian (malar Jadual BerkalaStr1..., Jadual BerkalaStr4) adalah disebabkan oleh pertimbangan kemudahan membaca kod sumber, kerana Garisan yang terlalu panjang mungkin tidak muat sepenuhnya pada skrin.

Apabila kursor tetikus bergerak ke atas Image1 pengendali Image1MouseMove peristiwa ini menentukan nilai komponen warna biru bagi piksel kad kawalan Image2 untuk koordinat kursor semasa. Secara pembinaan Image2 nilai ini sama dengan nombor elemen jika kursor berada di dalam sel; sifar jika di sempadan, dan 255 dalam kes lain. Tindakan selebihnya yang dilakukan oleh program ini adalah remeh dan tidak memerlukan penjelasan.

Sebagai tambahan kepada teknik pengaturcaraan gaya yang dinyatakan di atas, perlu diperhatikan gaya ulasan. Tegasnya, kod yang dibincangkan adalah sangat kecil dan ringkas sehingga komen tidak kelihatan sangat diperlukan. Walau bagaimanapun, mereka ditambah juga atas sebab metodologi - kod pendek membolehkan kami membuat beberapa kesimpulan umum dengan lebih jelas. Dalam kod yang dibentangkan satu kelas diisytiharkan (TtableDlg). Kaedah kelas ini boleh ditukar dan ini tidak akan menjejaskan fungsi program dalam apa jua cara, tetapi boleh menjejaskan kebolehbacaannya. Sebagai contoh, bayangkan urutannya:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Ia mungkin tidak begitu ketara, tetapi ia akan menjadi sedikit lebih sukar untuk dibaca dan difahami. Jika tidak ada lima, tetapi berpuluh kali lebih banyak kaedah dalam bahagian itu pelaksanaan mereka mempunyai susunan yang sama sekali berbeza daripada dalam penerangan kelas, maka huru-hara hanya akan meningkat. Oleh itu, walaupun sukar untuk dibuktikan dengan ketat dan mungkin mustahil, seseorang boleh berharap bahawa memperkenalkan susunan tambahan akan meningkatkan kebolehbacaan kod. Perintah tambahan ini dipermudahkan oleh pengelompokan logik beberapa kaedah yang melaksanakan tugas yang berkaitan. Setiap kumpulan perlu diberi tajuk, contohnya:

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

Tajuk ini hendaklah disalin ke permulaan modul dan diformatkan sebagai jadual kandungan. Dalam sesetengah kes modul yang agak panjang, jadual kandungan tersebut menyediakan pilihan navigasi tambahan. Begitu juga, dalam badan panjang satu kaedah, prosedur atau fungsi, adalah bernilai, pertama, menandakan penghujung badan ini:

end; // FormCreate

dan, kedua, dalam pernyataan bercabang dengan kurungan program bermula - tamat, tandakan pernyataan yang dirujuk oleh kurungan penutup:

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

Untuk menyerlahkan pengepala kumpulan dan hujung badan kaedah, anda boleh menambah baris yang lebih panjang daripada kebanyakan pernyataan dan terdiri, sebagai contoh, aksara "=" dan "_", masing-masing.
Sekali lagi, kami perlu membuat tempahan: contoh kami terlalu mudah. Dan apabila kod kaedah tidak muat pada satu skrin, sukar untuk memahami enam hujung berturut-turut untuk membuat perubahan kod. Dalam sesetengah penyusun lama, contohnya, Pascal 8000 untuk OS IBM 360/370, lajur perkhidmatan seperti ini telah dicetak di sebelah kiri dalam penyenaraian

B5
…
E5

Ini bermakna bahawa kurungan penutup pada baris E5 sepadan dengan kurungan pembukaan pada baris B5.

Sudah tentu, gaya pengaturcaraan adalah isu yang sangat kontroversi, jadi idea-idea yang dinyatakan di sini harus dianggap tidak lebih daripada makanan untuk difikirkan. Ia boleh menjadi sangat sukar untuk dua pengaturcara yang cukup berpengalaman, yang telah membangun dan terbiasa dengan gaya yang berbeza selama bertahun-tahun bekerja, untuk mencapai persetujuan. Ia adalah perkara yang berbeza bagi pelajar yang belajar untuk berprogram yang belum sempat mencari gayanya sendiri. Saya berpendapat bahawa dalam kes ini, guru sekurang-kurangnya harus menyampaikan kepada pelajarnya idea yang mudah, tetapi tidak jelas kepada mereka bahawa kejayaan program bergantung pada gaya di mana kod sumbernya ditulis. Pelajar mungkin tidak mengikut gaya yang disyorkan, tetapi biarkan dia sekurang-kurangnya memikirkan keperluan untuk tindakan "tambahan" untuk menambah baik reka bentuk kod sumber.

Kembali kepada masalah asas kami pada Jadual Berkala: pembangunan selanjutnya boleh pergi ke arah yang berbeza. Salah satu arahan adalah untuk rujukan: apabila anda mengarahkan kursor tetikus ke atas sel jadual, tetingkap maklumat muncul yang mengandungi maklumat tambahan pada elemen yang ditentukan. Pembangunan selanjutnya ialah penapis. Sebagai contoh, bergantung pada pemasangan, tetingkap maklumat hanya akan mengandungi: maklumat fizikal dan kimia yang paling penting, maklumat mengenai sejarah penemuan, maklumat mengenai pengedaran dalam alam semula jadi, senarai sebatian yang paling penting (yang termasuk unsur ini), sifat fisiologi, nama dalam bahasa asing, dsb. e. Mengingati "itik" Kaverin yang mana artikel ini bermula, kita boleh mengatakan bahawa dengan perkembangan program ini kita akan mendapat kompleks latihan yang lengkap dalam sains semula jadi: sebagai tambahan kepada komputer sains, fizik dan kimia - biologi, geografi ekonomi, sejarah sains dan juga bahasa asing.

Tetapi pangkalan data tempatan bukanlah had. Program ini secara semula jadi bersambung ke Internet. Apabila anda memilih elemen, pautan itu diaktifkan, dan artikel Wikipedia tentang elemen ini dibuka dalam tetingkap pelayar web. Wikipedia, seperti yang anda tahu, bukanlah sumber yang berwibawa. Anda boleh menetapkan pautan ke sumber berwibawa, contohnya, ensiklopedia kimia, TSB, jurnal abstrak, pertanyaan pesanan dalam enjin carian untuk elemen ini, dsb. Itu. Pelajar akan dapat menyelesaikan tugasan yang mudah tetapi bermakna mengenai topik DBMS dan Internet.

Selain pertanyaan pada elemen individu, anda boleh mencipta kefungsian yang akan, sebagai contoh, menandakan sel dalam jadual yang memenuhi kriteria tertentu dengan warna yang berbeza. Contohnya, logam dan bukan logam. Atau sel yang dibuang ke dalam badan air oleh loji kimia tempatan.

Anda juga boleh melaksanakan fungsi penganjur buku nota. Sebagai contoh, serlahkan dalam jadual elemen yang disertakan dalam peperiksaan. Kemudian serlahkan elemen yang dipelajari/diulang oleh pelajar sebagai persediaan menghadapi peperiksaan.

Dan di sini, sebagai contoh, adalah salah satu masalah kimia sekolah biasa:

Diberi 10 g kapur. Berapakah jumlah asid hidroklorik yang perlu diambil untuk melarutkan semua kapur ini?

Untuk menyelesaikan masalah ini, perlu menulis chem. tindak balas dan letakkan pekali di dalamnya, kira berat molekul kalsium karbonat dan hidrogen klorida, kemudian gubah dan selesaikan perkadaran itu. Kalkulator berdasarkan program asas kami boleh mengira dan menyelesaikan. Benar, anda masih perlu mengambil kira bahawa asid mesti diambil secara berlebihan dan dalam kepekatan yang munasabah, tetapi ini adalah kimia, bukan sains komputer.
Tambahan 1: Cara Kalkulator Kimia BerfungsiMarilah kita menganalisis operasi kalkulator menggunakan contoh masalah kapur dan "hodgepodge" di atas. Mari kita mulakan dengan reaksi:

CaCO3 + 2HCl = CaCl2 + H2O

Daripada ini kita melihat bahawa kita akan memerlukan berat atom unsur-unsur berikut: kalsium (Ca), karbon (C), oksigen (O), hidrogen (H) dan klorin (Cl). Dalam kes yang paling mudah, kita boleh menulis pemberat ini ke dalam tatasusunan satu dimensi yang ditakrifkan sebagai

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

di mana indeks tatasusunan sepadan dengan nombor elemen. Lebih lanjut mengenai ruang kosong borang tableDlg letak dua bidang. Dalam medan pertama ia pada mulanya ditulis: "Reagen pertama diberikan", dalam yang kedua - "Reagen kedua adalah untuk mencari x". Mari kita nyatakan medan reagen1, reagen2 masing-masing. Penambahan lain pada program akan jelas daripada contoh kalkulator berikut.

Kami menaip pada papan kekunci komputer: 10 g Prasasti di lapangan reagen1 perubahan: "Reagen pertama diberikan 10 g." Sekarang kita masukkan formula reagen ini, dan kalkulator akan mengira dan menunjukkan berat molekulnya semasa anda memasukkannya.

Klik LMB pada sel jadual dengan simbol Ca. Prasasti di lapangan reagen1 perubahan: "Reagen pertama Ca 40.078 diberi 10 g."

Klik LMB pada sel jadual dengan simbol C. Inskripsi dalam medan reagen1 perubahan: "Reagen pertama CaC 52.089 diberi 10 g." Itu. Kalkulator menambah berat atom kalsium dan karbon.

Klik LMB pada sel jadual dengan simbol O. Inskripsi dalam medan reagen1 perubahan: "Reagen pertama CaCO 68.088 diberi 10 g." Kalkulator menambah berat atom oksigen kepada jumlah.

Klik LMB pada sel jadual dengan simbol O. Inskripsi dalam medan reagen1 perubahan: "Reagen pertama CaCO2 84.087 diberi 10 g." Kalkulator sekali lagi menambah berat atom oksigen kepada jumlah.

Klik LMB pada sel jadual dengan simbol O. Inskripsi dalam medan reagen1 perubahan: "Reagen pertama CaCO3 100.086 diberi 10 g." Kalkulator sekali lagi menambah berat atom oksigen kepada jumlah.

Tekan Enter pada papan kekunci komputer anda. Pengenalan reagen pertama selesai dan beralih ke medan reagen2. Ambil perhatian bahawa dalam contoh ini kami menyediakan versi minimum. Jika dikehendaki, anda boleh dengan mudah menyusun pengganda atom daripada jenis yang sama, supaya, sebagai contoh, anda tidak perlu mengklik tujuh kali berturut-turut pada sel oksigen apabila memasukkan formula kromium (K2Cr2O7).

Klik LMB pada sel jadual dengan simbol H. Inskripsi dalam medan reagen2 perubahan: "Reagen kedua H 1.008 cari x."

Klik LMB pada sel jadual dengan simbol Cl. Prasasti di lapangan reagen2 perubahan: "Reagen kedua HCl 36.458 cari x." Kalkulator menambah berat atom hidrogen dan klorin. Dalam persamaan tindak balas di atas, hidrogen klorida didahului oleh pekali 2. Oleh itu, klik LMB pada medan reagen2. Berat molekul meningkat dua kali ganda (tiga kali ganda apabila ditekan dua kali, dsb.). Prasasti di lapangan reagen2 perubahan: "Reagen kedua 2HCl 72.916 cari x."

Tekan Enter pada papan kekunci komputer anda. Kemasukan reagen kedua selesai, dan kalkulator mencari x daripada perkadaran

Jadual berkala tentang sains komputer sekolah

Itulah yang perlu kami cari.

Catatan 1 Maksud perkadaran yang terhasil: untuk pembubaran 100.086 Da kapur memerlukan 72.916 asid Da, dan untuk melarutkan 10 g kapur anda memerlukan x asid.

Catatan 2 Koleksi masalah yang sama:

Khomchenko I. G., Koleksi masalah dan latihan dalam kimia 2009 (gred 8-11).
Khomchenko G. P., Khomchenko I. G., Koleksi masalah dalam kimia untuk pemohon ke universiti, 2019.

Catatan 3 Untuk memudahkan tugas, anda boleh memudahkan kemasukan formula dalam versi awal dan hanya menambah simbol elemen pada penghujung baris formula. Maka formula kalsium karbonat adalah:
CaCOOO
Tetapi seorang guru kimia tidak mungkin menyukai rakaman sedemikian. Tidak sukar untuk membuat entri yang betul - untuk melakukan ini, anda perlu menambah tatasusunan:

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

dengan indeks ialah bilangan unsur kimia, dan nilai pada indeks ini ialah bilangan atom (pada mulanya semua unsur tatasusunan ditetapkan semula kepada sifar). Susunan atom ditulis dalam formula, seperti yang diterima pakai dalam kimia, harus diambil kira. Sebagai contoh, beberapa orang akan menyukai O3CaC sama ada. Mari kita alihkan tanggungjawab kepada pengguna. Membuat tatasusunan:

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

di mana kita menulis nombor unsur kimia mengikut indeks penampilannya dalam formula. Menambah atom currNo ke dalam formula:

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

Menulis formula ke baris:

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;

Catatan 4 Adalah masuk akal untuk menyediakan keupayaan untuk memasukkan formula reagen secara alternatif dari papan kekunci. Dalam kes ini, anda perlu melaksanakan parser mudah.

Perlu diperhatikan bahawa:

Hari ini, terdapat beberapa ratus versi jadual, dan saintis sentiasa menawarkan pilihan baharu. (Wikipedia)

Pelajar boleh menunjukkan kepintaran mereka ke arah ini dengan melaksanakan salah satu pilihan yang telah dicadangkan atau cuba membuat pilihan asal mereka sendiri. Nampaknya ini adalah arah yang paling kurang berguna untuk pelajaran sains komputer. Walau bagaimanapun, dalam bentuk Jadual Berkala yang dilaksanakan dalam artikel ini, sesetengah pelajar mungkin tidak melihat kelebihan tertentu kad kawalan berbanding penyelesaian alternatif menggunakan butang standard TButton. Bentuk lingkaran meja (di mana sel mempunyai bentuk yang berbeza) akan menunjukkan dengan lebih jelas kelebihan penyelesaian yang dicadangkan di sini.

Jadual berkala tentang sains komputer sekolah
(Sistem unsur alternatif oleh Theodore Benfey, Source)

Marilah kita juga menambah bahawa beberapa program komputer sedia ada untuk Jadual Berkala diterangkan dalam HabrΓ© yang diterbitkan baru-baru ini. artikel.

Lampiran 2: contoh tugasan untuk penapisMenggunakan penapis anda boleh menyelesaikan, sebagai contoh, tugas berikut:

1) Pilih dalam jadual semua elemen yang diketahui pada Zaman Pertengahan.

2) Kenal pasti semua unsur yang diketahui pada masa penemuan Undang-undang Berkala.

3) Kenal pasti tujuh unsur yang dianggap oleh ahli alkimia sebagai logam.

4) Pilih semua unsur yang berada dalam keadaan gas dalam keadaan normal (n.s.).

5) Pilih semua elemen yang berada dalam keadaan cair di no.

6) Pilih semua elemen yang berada dalam keadaan pepejal di no.

7) Pilih semua elemen yang boleh terdedah kepada udara untuk masa yang lama tanpa perubahan ketara pada keadaan biasa.

8) Pilih semua logam yang larut dalam asid hidroklorik.

9) Pilih semua logam yang larut dalam asid sulfurik pada no.

10) Pilih semua logam yang larut dalam asid sulfurik apabila dipanaskan.

11) Pilih semua logam yang larut dalam asid nitrik.

12) Asingkan semua logam yang bertindak balas dengan kuat dengan air pada keadaan persekitaran.

13) Pilih semua logam.

14) Mengenal pasti unsur-unsur yang bersifat meluas.

15) Mengenal pasti unsur-unsur yang terdapat pada alam semula jadi dalam keadaan bebas.

16) Mengenal pasti unsur-unsur yang memainkan peranan terpenting dalam tubuh manusia dan haiwan.

17) Pilih elemen yang digunakan secara meluas dalam kehidupan seharian (dalam bentuk bebas atau gabungan).

18) Kenal pasti elemen yang paling berbahaya untuk digunakan dan memerlukan langkah khas dan peralatan perlindungan.

19) Kenal pasti unsur-unsur yang, dalam bentuk bebas atau dalam bentuk sebatian, menimbulkan ancaman terbesar kepada alam sekitar.

20) Pilih logam berharga.

21) Kenal pasti unsur yang lebih mahal daripada logam berharga.

Nota

1) Masuk akal untuk menyediakan berbilang penapis. Contohnya, jika anda menghidupkan penapis untuk menyelesaikan masalah 1 (semua elemen yang diketahui pada Zaman Pertengahan) dan 20 (logam berharga), maka sel dengan logam berharga yang dikenali pada Zaman Pertengahan akan diserlahkan (contohnya, mengikut warna) ( sebagai contoh, paladium tidak akan diserlahkan , dibuka pada tahun 1803).

2) Adalah wajar untuk memastikan bahawa beberapa penapis beroperasi dalam mod sedemikian sehingga setiap penapis memilih sel dengan warnanya sendiri, tetapi tidak sepenuhnya mengalih keluar pemilihan penapis lain (sebahagian sel dalam satu warna, bahagian dalam warna lain). Kemudian, dalam kes contoh sebelumnya, unsur-unsur persilangan set yang ditemui pada Zaman Pertengahan dan logam berharga, serta unsur-unsur yang hanya dimiliki oleh set pertama dan hanya untuk set kedua, akan kelihatan. Itu. logam berharga yang tidak diketahui pada Zaman Pertengahan, dan unsur yang diketahui pada Zaman Pertengahan tetapi bukan logam berharga.

3) Ia masuk akal selepas menggunakan penapis untuk memastikan kemungkinan kerja lain dengan hasil yang diperolehi. Sebagai contoh, setelah elemen terpilih diketahui pada Zaman Pertengahan, pengguna mengklik LMB pada elemen yang dipilih dan dibawa ke artikel Wikipedia tentang elemen ini.

4) Adalah wajar untuk menyediakan pengguna dengan keupayaan untuk menyahpilih dengan mengklik LMB pada sel jadual yang dipilih. Contohnya, untuk mengalih keluar item yang telah dilihat.

5) Adalah wajar untuk memastikan bahawa senarai sel yang dipilih disimpan dalam fail dan bahawa fail tersebut dimuatkan dengan pemilihan sel automatik. Ini akan memberi pengguna peluang untuk berehat dari kerja.

Kami menggunakan peta kawalan statik yang telah ditetapkan, tetapi terdapat banyak tugas penting di mana peta kawalan dinamik yang berubah semasa program berjalan boleh digunakan. Contohnya ialah editor graf, di mana pengguna menggunakan tetikus untuk menunjukkan kedudukan bucu dalam tetingkap dan melukis tepi di antara mereka. Untuk memadam bucu atau tepi, pengguna mesti menunjuk kepadanya. Tetapi jika agak mudah untuk menunjuk ke puncak yang ditandakan dengan bulatan, maka akan menjadi lebih sukar untuk menunjuk ke tepi yang dilukis dengan garis nipis. Peta kawalan akan membantu di sini, di mana bucu dan tepi menduduki kawasan kejiranan yang lebih luas daripada angka yang boleh dilihat.

Soalan sampingan yang menarik berkaitan dengan kaedah latihan kompleks ini ialah: adakah kaedah ini berguna dalam melatih AI?

Sumber: www.habr.com

Tambah komen