ตารางธาตุเกี่ยวกับวิทยาการคอมพิวเตอร์ของโรงเรียน

(การ์ดควบคุม)
(อุทิศให้กับปีสากลของตารางธาตุองค์ประกอบทางเคมี)
(เพิ่มล่าสุดเมื่อวันที่ 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 ก่อนอื่นเรามาวาดตารางธาตุในรูปแบบที่เราต้องการเห็นในโปรแกรมกันก่อน บันทึกผลลัพธ์เป็นไฟล์กราฟิก table01.bmp.

ตารางธาตุเกี่ยวกับวิทยาการคอมพิวเตอร์ของโรงเรียน

สำหรับรูปวาดที่สองเราใช้รูปแรก เราจะเติมเซลล์ตารางตามลำดับ โดยล้างกราฟิกทั้งหมดด้วยสีที่เป็นเอกลักษณ์ในรูปแบบสี RGB R และ G จะเป็น 0 เสมอ และ B=1 สำหรับไฮโดรเจน 2 สำหรับฮีเลียม ฯลฯ ภาพวาดนี้จะเป็นการ์ดควบคุมของเรา ซึ่งเราจะบันทึกไว้ในไฟล์ชื่อ table2.bmp.

ตารางธาตุเกี่ยวกับวิทยาการคอมพิวเตอร์ของโรงเรียน

ขั้นตอนแรกของการเขียนโปรแกรมกราฟิกใน Photoshop เสร็จสมบูรณ์ มาดูการเขียนโปรแกรม GUI แบบกราฟิกใน Delpi-7 IDE กันดีกว่า หากต้องการทำสิ่งนี้ ให้เปิดโปรเจ็กต์ใหม่ โดยที่เราวางปุ่มโต้ตอบในแบบฟอร์มหลัก (ตารางDlg) ซึ่งจะมีการทำงานกับตาราง ต่อไปเราจะทำงานกับแบบฟอร์ม ตารางDlg.

วางองค์ประกอบของชั้นเรียนลงในแบบฟอร์ม ทีอิมเมจ. เราได้รับ Image1. โปรดทราบว่าโดยทั่วไป สำหรับโครงการขนาดใหญ่ ชื่อของแบบฟอร์มจะสร้างโดยอัตโนมัติ รูปภาพNที่ไหน N สามารถเข้าถึงได้หลายโหลขึ้นไป - นี่ไม่ใช่รูปแบบการเขียนโปรแกรมที่ดีที่สุด และควรตั้งชื่อที่มีความหมายมากกว่านี้ แต่ในโครงการเล็กๆของเราที่ไหน N จะไม่เกิน 2 คุณสามารถปล่อยไว้ตามที่สร้างขึ้นได้

สู่ทรัพย์สิน รูปภาพ1.รูปภาพ อัปโหลดไฟล์ table01.bmp. เราสร้าง Image2 และโหลดการ์ดควบคุมของเราที่นั่น table2.bmp. ในกรณีนี้ เราทำให้ไฟล์มีขนาดเล็กและผู้ใช้มองไม่เห็น ดังที่แสดงไว้ที่มุมซ้ายล่างของแบบฟอร์ม เราเพิ่มองค์ประกอบการควบคุมเพิ่มเติมซึ่งมีจุดประสงค์ที่ชัดเจน ขั้นตอนที่สองของการเขียนโปรแกรม GUI แบบกราฟิกใน Delpi-7 IDE เสร็จสมบูรณ์

ตารางธาตุเกี่ยวกับวิทยาการคอมพิวเตอร์ของโรงเรียน

มาดูขั้นตอนที่สามกันดีกว่า - การเขียนโค้ดใน Delpi-7 IDE โมดูลประกอบด้วยตัวจัดการเหตุการณ์เพียงห้าตัวเท่านั้น: การสร้างแบบฟอร์ม (สร้างแบบฟอร์ม) การเคลื่อนไหวของเคอร์เซอร์ Image1 (Image1เมาส์ย้าย) คลิก LMB บนเซลล์ (รูปภาพ1คลิก) และออกจากกล่องโต้ตอบโดยใช้ปุ่มตกลง (OKBtnคลิก) หรือยกเลิก (ยกเลิกBtnคลิก). ส่วนหัวของตัวจัดการเหล่านี้ถูกสร้างขึ้นในวิธีมาตรฐานโดยใช้ 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 รายการ (ค่าคงที่ ขนาด). แน่นอนว่าสามารถเพิ่มขนาดนี้ได้ การกำหนดองค์ประกอบ (สัญลักษณ์ทางเคมี) จะถูกเขียนลงในอาร์เรย์ สัญลักษณ์ตาราง. อย่างไรก็ตาม ด้วยเหตุผลของความกะทัดรัดของซอร์สโค้ด จึงแนะนำให้เขียนลำดับของสัญลักษณ์เหล่านี้ในรูปแบบของค่าคงที่สตริง ตารางธาตุStr1, ..., ตารางธาตุStr4เพื่อว่าเมื่อสร้างแบบฟอร์ม โปรแกรมจะกระจายการกำหนดเหล่านี้ไปให้กับองค์ประกอบของอาร์เรย์ การกำหนดองค์ประกอบแต่ละรายการประกอบด้วยตัวอักษรละตินหนึ่งหรือสองตัว โดยตัวอักษรตัวแรกเป็นตัวพิมพ์ใหญ่และตัวที่สอง (ถ้ามี) ตัวพิมพ์เล็ก กฎง่ายๆ นี้ถูกนำมาใช้เมื่อโหลดอาร์เรย์ ดังนั้นลำดับของสัญกรณ์สามารถเขียนได้กระชับโดยไม่ต้องเว้นวรรค การแบ่งลำดับออกเป็นสี่ส่วน (ค่าคงที่ ตารางธาตุStr1, ..., ตารางธาตุStr4) เกิดจากการคำนึงถึงความสะดวกในการอ่านซอร์สโค้ด เนื่องจาก เส้นที่ยาวเกินไปอาจไม่พอดีกับหน้าจอทั้งหมด

เมื่อเคอร์เซอร์ของเมาส์เลื่อนไปเหนือ Image1 ตัวจัดการ Image1เมาส์ย้าย เหตุการณ์นี้จะกำหนดค่าของส่วนประกอบสีน้ำเงินของพิกเซลของการ์ดควบคุม 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

ซึ่งหมายความว่าวงเล็บปิดบนบรรทัด E5 สอดคล้องกับวงเล็บเปิดบนบรรทัด B5

แน่นอนว่ารูปแบบการเขียนโปรแกรมเป็นประเด็นที่มีการถกเถียงกันมาก ดังนั้นแนวคิดที่แสดงไว้ที่นี่จึงไม่ควรเป็นเพียงอาหารทางความคิด อาจเป็นเรื่องยากมากสำหรับโปรแกรมเมอร์สองคนที่มีประสบการณ์พอสมควร ซึ่งได้พัฒนาและคุ้นเคยกับสไตล์ที่แตกต่างกันตลอดระยะเวลาหลายปีของการทำงาน ที่จะตกลงกันได้ เป็นเรื่องที่แตกต่างสำหรับนักเรียนที่เรียนเขียนโปรแกรมที่ยังไม่มีเวลาค้นหาสไตล์ของตัวเอง ฉันคิดว่าในกรณีนี้ อย่างน้อยครูควรถ่ายทอดแนวคิดที่เรียบง่ายแต่ไม่ชัดเจนให้นักเรียนฟังว่าความสำเร็จของโปรแกรมส่วนใหญ่ขึ้นอยู่กับสไตล์ในการเขียนซอร์สโค้ด นักเรียนอาจไม่ปฏิบัติตามสไตล์ที่แนะนำ แต่อย่างน้อยให้เขาคิดถึงความจำเป็นในการดำเนินการ "พิเศษ" เพื่อปรับปรุงการออกแบบซอร์สโค้ด

กลับมาที่ปัญหาพื้นฐานของเราในตารางธาตุ: การพัฒนาเพิ่มเติมสามารถไปในทิศทางที่ต่างกัน ทิศทางหนึ่งมีไว้สำหรับการอ้างอิง: เมื่อคุณวางเคอร์เซอร์ของเมาส์ไว้เหนือเซลล์ตาราง หน้าต่างข้อมูลจะปรากฏขึ้นพร้อมข้อมูลเพิ่มเติมเกี่ยวกับองค์ประกอบที่ระบุ การพัฒนาเพิ่มเติมคือตัวกรอง ตัวอย่างเช่น ขึ้นอยู่กับการติดตั้ง หน้าต่างข้อมูลจะมีเฉพาะข้อมูลทางกายภาพและเคมีที่สำคัญที่สุด ข้อมูลเกี่ยวกับประวัติการค้นพบ ข้อมูลเกี่ยวกับการกระจายตัวในธรรมชาติ รายการสารประกอบที่สำคัญที่สุด (ซึ่งรวมถึงองค์ประกอบนี้) คุณสมบัติทางสรีรวิทยาชื่อในภาษาต่างประเทศ ฯลฯ e. จดจำ "เป็ด" ของ Kaverin ที่บทความนี้เริ่มต้นเราสามารถพูดได้ว่าด้วยการพัฒนาโปรแกรมนี้เราจะได้รับการฝึกอบรมที่สมบูรณ์ในสาขาวิทยาศาสตร์ธรรมชาติ: นอกเหนือจากคอมพิวเตอร์ วิทยาศาสตร์ ฟิสิกส์ และเคมี - ชีววิทยา ภูมิศาสตร์เศรษฐกิจ ประวัติศาสตร์วิทยาศาสตร์ และแม้แต่ภาษาต่างประเทศ

แต่ฐานข้อมูลท้องถิ่นไม่ได้จำกัด โปรแกรมเชื่อมต่อกับอินเทอร์เน็ตตามธรรมชาติ เมื่อคุณเลือกองค์ประกอบ ลิงก์จะถูกเปิดใช้งาน และบทความ Wikipedia เกี่ยวกับองค์ประกอบนี้จะเปิดขึ้นในหน้าต่างเว็บเบราว์เซอร์ ดังที่คุณทราบ Wikipedia ไม่ใช่แหล่งข้อมูลที่เชื่อถือได้ คุณสามารถตั้งค่าลิงก์ไปยังแหล่งข้อมูลที่เชื่อถือได้ เช่น สารานุกรมเคมี, TSB, วารสารเชิงนามธรรม, ข้อความค้นหาคำสั่งซื้อในเครื่องมือค้นหาสำหรับองค์ประกอบนี้ ฯลฯ ที่. นักเรียนจะสามารถทำงานมอบหมายที่เรียบง่ายแต่มีความหมายในหัวข้อ DBMS และอินเทอร์เน็ตได้

นอกเหนือจากการสืบค้นในแต่ละองค์ประกอบแล้ว คุณสามารถสร้างฟังก์ชันที่จะทำเครื่องหมายเซลล์ในตารางที่ตรงกับเกณฑ์ที่กำหนดด้วยสีที่ต่างกันได้ ตัวอย่างเช่น โลหะและอโลหะ หรือเซลล์ที่ถูกทิ้งลงแหล่งน้ำโดยโรงงานเคมีท้องถิ่น

คุณยังสามารถใช้ฟังก์ชั่นของผู้จัดโน้ตบุ๊กได้ ตัวอย่างเช่น ไฮไลต์องค์ประกอบที่รวมอยู่ในการสอบในตาราง จากนั้นเน้นองค์ประกอบที่นักเรียนเรียน/ทำซ้ำเพื่อเตรียมตัวสอบ

และนี่คือหนึ่งในปัญหาเคมีในโรงเรียนทั่วไป:

ให้ชอล์ก 10 กรัม ต้องใช้กรดไฮโดรคลอริกมากแค่ไหนในการละลายชอล์กทั้งหมดนี้?

เพื่อแก้ไขปัญหานี้ จำเป็นต้องจดบันทึกเคมีไว้ ปฏิกิริยาและวางสัมประสิทธิ์ในนั้น คำนวณน้ำหนักโมเลกุลของแคลเซียมคาร์บอเนตและไฮโดรเจนคลอไรด์ จากนั้นจึงประกอบและแก้สัดส่วน เครื่องคิดเลขที่ใช้โปรแกรมพื้นฐานของเราสามารถคำนวณและแก้โจทย์ได้ จริงอยู่ คุณยังคงต้องคำนึงว่ากรดนั้นจะต้องได้รับในปริมาณที่มากเกินไปพอสมควรและมีความเข้มข้นที่สมเหตุสมผล แต่นี่คือวิชาเคมี ไม่ใช่วิทยาการคอมพิวเตอร์
ภาคผนวก 1: เครื่องคำนวณเคมีทำงานอย่างไรให้เราวิเคราะห์การทำงานของเครื่องคิดเลขโดยใช้ตัวอย่างปัญหาชอล์กและ "ผสม" ข้างต้น เริ่มจากปฏิกิริยากันก่อน:

CaCO3 + 2HCl = CaCl2 + H2O

จากนี้เราจะเห็นว่าเราต้องการน้ำหนักอะตอมขององค์ประกอบต่อไปนี้: แคลเซียม (Ca) คาร์บอน (C) ออกซิเจน (O) ไฮโดรเจน (H) และคลอรีน (Cl) ในกรณีที่ง่ายที่สุด เราสามารถเขียนน้ำหนักเหล่านี้ลงในอาร์เรย์หนึ่งมิติที่กำหนดเป็น

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

โดยที่ดัชนีอาร์เรย์สอดคล้องกับหมายเลของค์ประกอบ ข้อมูลเพิ่มเติมเกี่ยวกับพื้นที่ว่างของแบบฟอร์ม ตารางDlg ใส่สองช่อง ในฟิลด์แรกเขียนไว้ในตอนแรก: "ให้รีเอเจนต์ตัวแรก" ในฟิลด์ที่สอง - "รีเอเจนต์ที่สองคือการค้นหา x" เรามาแสดงถึงเขตข้อมูลกัน รีเอเจนต์1, รีเอเจนต์2 ตามลำดับ ส่วนเพิ่มเติมอื่นๆ ของโปรแกรมจะชัดเจนจากตัวอย่างเครื่องคิดเลขต่อไปนี้

เราพิมพ์บนแป้นพิมพ์คอมพิวเตอร์: 10 กรัม จารึกในสนาม รีเอเจนต์1 การเปลี่ยนแปลง: “รีเอเจนต์ตัวแรกได้รับ 10 กรัม” ตอนนี้เราป้อนสูตรของรีเอเจนต์นี้ แล้วเครื่องคิดเลขจะคำนวณและแสดงน้ำหนักโมเลกุลเมื่อคุณป้อน

คลิก LMB บนเซลล์ตารางที่มีสัญลักษณ์ Ca จารึกไว้ในสนาม รีเอเจนต์1 การเปลี่ยนแปลง: “รีเอเจนต์แรก Ca 40.078 ให้ 10 กรัม”

คลิก LMB บนเซลล์ตารางที่มีสัญลักษณ์ C คำจารึกในช่อง รีเอเจนต์1 การเปลี่ยนแปลง: “รีเอเจนต์แรก CaC 52.089 ให้ 10 กรัม” เหล่านั้น. เครื่องคิดเลขบวกน้ำหนักอะตอมของแคลเซียมและคาร์บอน

คลิก LMB บนเซลล์ตารางที่มีสัญลักษณ์ O คำจารึกในช่อง รีเอเจนต์1 การเปลี่ยนแปลง: “รีเอเจนต์แรก CaCO 68.088 ให้ 10 กรัม” เครื่องคิดเลขบวกน้ำหนักอะตอมของออกซิเจนเข้ากับผลรวม

คลิก LMB บนเซลล์ตารางที่มีสัญลักษณ์ O คำจารึกในช่อง รีเอเจนต์1 การเปลี่ยนแปลง: “รีเอเจนต์แรก CaCO2 84.087 ให้ 10 กรัม” เครื่องคิดเลขได้บวกน้ำหนักอะตอมของออกซิเจนเข้ากับผลรวมอีกครั้ง

คลิก LMB บนเซลล์ตารางที่มีสัญลักษณ์ O คำจารึกในช่อง รีเอเจนต์1 การเปลี่ยนแปลง: “รีเอเจนต์แรก CaCO3 100.086 ให้ 10 กรัม” เครื่องคิดเลขได้บวกน้ำหนักอะตอมของออกซิเจนเข้ากับผลรวมอีกครั้ง

กด 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 กรัม คุณต้องใช้กรด 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; // можно взять покороче

โดยที่เราเขียนจำนวนองค์ประกอบทางเคมีตามดัชนีการปรากฏในสูตร การเพิ่มอะตอม สกุลเงินไม่มี ลงในสูตร:

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 การให้ความสามารถในการป้อนสูตรรีเอเจนต์จากแป้นพิมพ์เป็นทางเลือกหนึ่งก็สมเหตุสมผล ในกรณีนี้ คุณจะต้องใช้ parser แบบธรรมดา

เป็นที่น่าสังเกตว่า:

วันนี้มีโต๊ะหลายร้อยรุ่นและนักวิทยาศาสตร์เสนอทางเลือกใหม่ ๆ อยู่ตลอดเวลา (วิกิพีเดีย)

นักเรียนสามารถแสดงความเฉลียวฉลาดในทิศทางนี้โดยใช้ตัวเลือกที่เสนอไปแล้วหรือพยายามสร้างตัวเลือกดั้งเดิมของตนเอง อาจดูเหมือนเป็นแนวทางที่มีประโยชน์น้อยที่สุดสำหรับบทเรียนวิทยาการคอมพิวเตอร์ อย่างไรก็ตาม ในรูปแบบของตารางธาตุที่ใช้ในบทความนี้ นักเรียนบางคนอาจไม่เห็นข้อดีเฉพาะของการ์ดควบคุมเหนือโซลูชันทางเลือกที่ใช้ปุ่มมาตรฐาน ปุ่ม. รูปร่างเกลียวของโต๊ะ (โดยที่เซลล์มีรูปร่างต่างกัน) จะแสดงข้อดีของวิธีแก้ปัญหาที่เสนอไว้ที่นี่ได้ชัดเจนยิ่งขึ้น

ตารางธาตุเกี่ยวกับวิทยาการคอมพิวเตอร์ของโรงเรียน
(ระบบทางเลือกของธาตุ โดย ธีโอดอร์ เบนฟีย์, Источник)

ให้เราเพิ่มเติมด้วยว่าโปรแกรมคอมพิวเตอร์ที่มีอยู่ในปัจจุบันจำนวนหนึ่งสำหรับตารางธาตุมีการอธิบายไว้ในบทความที่เผยแพร่เมื่อเร็ว ๆ นี้ใน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 ได้หรือไม่

ที่มา: will.com

เพิ่มความคิดเห็น