Bảng tuần hoàn về khoa học máy tính trường học

(Thẻ kiểm soát)
(Dành riêng cho Năm quốc tế về Bảng tuần hoàn các nguyên tố hóa học)
(Các bổ sung mới nhất được thực hiện vào ngày 8 tháng 2019 năm XNUMX. Danh sách bổ sung ngay bên dưới phần cắt)

Bảng tuần hoàn về khoa học máy tính trường học
(hoa của Mendeleev, Nguồn)

Tôi nhớ chúng tôi đã đi qua con vịt. Đây là ba bài học cùng một lúc: địa lý, khoa học tự nhiên và tiếng Nga. Trong một bài học khoa học, một con vịt được nghiên cứu về loài vịt, nó có cánh gì, chân gì, bơi như thế nào, v.v. Trong một bài học địa lý, con vịt giống nhau đã được nghiên cứu với tư cách là cư dân trên toàn cầu: cần phải chỉ ra trên bản đồ nơi nó sống và nơi nó không sống. Bằng tiếng Nga, Serafima Petrovna dạy chúng tôi viết “u-t-k-a” và đọc đôi điều về loài vịt ở Brem. Khi đi ngang qua, cô ấy cho chúng tôi biết rằng con vịt trong tiếng Đức là thế này, và trong tiếng Pháp là thế này. Tôi nghĩ hồi đó nó được gọi là “phương pháp phức tạp”. Nói chung, mọi thứ đều diễn ra “một cách ngẫu nhiên”.

Veniamin Kaverin, Hai thuyền trưởng

Trong đoạn trích dẫn trên, Veniamin Kaverin đã chỉ ra một cách xuất sắc những nhược điểm của phương pháp giảng dạy phức tạp, tuy nhiên, trong một số trường hợp (có lẽ khá hiếm), các yếu tố của phương pháp này là hợp lý. Một trường hợp như vậy là bảng tuần hoàn của D.I. Mendeleev trong các bài học khoa học máy tính ở trường. Nhiệm vụ tự động hóa phần mềm các hoạt động điển hình với bảng tuần hoàn được làm rõ ràng đối với học sinh mới bắt đầu học hóa học và được chia thành nhiều nhiệm vụ hóa học điển hình. Đồng thời, trong khuôn khổ khoa học máy tính, nhiệm vụ này cho phép chúng ta trình bày một cách đơn giản phương pháp của thẻ điều khiển, có thể được quy cho lập trình đồ họa, hiểu theo nghĩa rộng của từ là lập trình sử dụng các yếu tố đồ họa.

(Ngày 8 tháng 2019 năm XNUMX đã thực hiện bổ sung:
Phụ lục 1: Cách thức hoạt động của Máy tính Hóa học
Phụ lục 2: ví dụ về nhiệm vụ của bộ lọc)

Hãy bắt đầu với nhiệm vụ cơ bản. Trong trường hợp đơn giản nhất, bảng tuần hoàn phải được hiển thị trên màn hình ở dạng cửa sổ, trong đó mỗi ô sẽ có ký hiệu hóa học của nguyên tố: H - hydro, He - heli, v.v. Nếu con trỏ chuột trỏ đến một ô, thì ký hiệu của phần tử và số của nó sẽ được hiển thị trong một trường đặc biệt trên biểu mẫu của chúng tôi. Nếu người dùng nhấn LMB, thì ký hiệu và số của phần tử được chọn này sẽ được chỉ định trong trường khác của biểu mẫu.

Bảng tuần hoàn về khoa học máy tính trường học

Vấn đề có thể được giải quyết bằng bất kỳ ngôn ngữ phổ quát nào. Chúng ta sẽ sử dụng Delpi-7 cũ đơn giản, điều này có thể hiểu được đối với hầu hết mọi người. Nhưng trước khi lập trình bằng PL, hãy vẽ hai bức tranh, chẳng hạn như trong Photoshop. Đầu tiên chúng ta hãy vẽ Bảng tuần hoàn theo dạng mà chúng ta muốn thấy trong chương trình. Lưu kết quả vào một tập tin đồ họa bảng01.bmp.

Bảng tuần hoàn về khoa học máy tính trường học

Đối với bản vẽ thứ hai, chúng tôi sử dụng bản vẽ đầu tiên. Chúng tôi sẽ lần lượt điền vào các ô trong bảng, xóa tất cả đồ họa, bằng các màu độc đáo trong mô hình màu RGB. R và G sẽ luôn bằng 0 và B=1 đối với hydro, 2 đối với heli, v.v. Hình vẽ này sẽ là thẻ điều khiển của chúng ta, chúng ta sẽ lưu thẻ này vào một tệp có tên bảng2.bmp.

Bảng tuần hoàn về khoa học máy tính trường học

Giai đoạn đầu tiên của lập trình đồ họa trong Photoshop đã hoàn thành. Hãy chuyển sang lập trình GUI đồ họa trong IDE Delpi-7. Để thực hiện việc này, hãy mở một dự án mới, trong đó trên biểu mẫu chính chúng ta đặt một nút hộp thoại (bảngDlg), trong đó công việc với bảng sẽ diễn ra. Tiếp theo chúng ta làm việc với biểu mẫu bảngDlg.

Đặt một thành phần lớp trên biểu mẫu hình ảnh. Chúng tôi nhận được Image1. Lưu ý rằng nói chung, đối với các dự án lớn, các tên có dạng được tạo tự động Hình ảnhNĐâu N có thể đạt tới vài chục hoặc nhiều hơn - đây không phải là phong cách lập trình tốt nhất và nên đặt những cái tên có ý nghĩa hơn. Nhưng trong dự án nhỏ của chúng tôi, nơi N sẽ không vượt quá 2, bạn có thể để nó như được tạo.

Đến tài sản Hình ảnh1.Hình ảnh tải tập tin lên bảng01.bmp. Chúng tôi tạo ra Image2 và nạp thẻ kiểm soát của chúng tôi vào đó bảng2.bmp. Trong trường hợp này, chúng tôi làm cho tệp có kích thước nhỏ và không hiển thị với người dùng, như hiển thị ở góc dưới bên trái của biểu mẫu. Chúng tôi thêm các yếu tố kiểm soát bổ sung, mục đích của nó rất rõ ràng. Giai đoạn thứ hai của lập trình GUI đồ họa trong Delpi-7 IDE đã hoàn thành.

Bảng tuần hoàn về khoa học máy tính trường học

Hãy chuyển sang giai đoạn thứ ba - viết mã trong IDE Delpi-7. Mô-đun này chỉ bao gồm năm trình xử lý sự kiện: tạo biểu mẫu (Biểu mẫuTạo), chuyển động của con trỏ Image1 (Hình ảnh1ChuộtDi chuyển), bấm vào LMB trên một ô (Hình ảnh1Nhấp chuột) và thoát khỏi hộp thoại bằng các nút OK (OKBtnNhấp chuột) hoặc Hủy bỏ (Hủy bỏBtnNhấp chuột). Tiêu đề của các trình xử lý này được tạo theo cách tiêu chuẩn bằng IDE.

Mã nguồn mô-đun:

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.

Trong phiên bản của chúng tôi, chúng tôi đã lấy một bảng gồm 104 phần tử (hằng số kích thước). Rõ ràng kích thước này có thể được tăng lên. Ký hiệu phần tử (ký hiệu hóa học) được ghi vào một mảng BảngBiểu tượng. Tuy nhiên, vì lý do gọn nhẹ của mã nguồn, nên viết chuỗi các ký hiệu này dưới dạng hằng chuỗi. Bảng tuần hoànStr1…, Bảng tuần hoànStr4để khi biểu mẫu được tạo, chương trình sẽ tự phân tán các ký hiệu này giữa các phần tử của mảng. Mỗi ký hiệu phần tử bao gồm một hoặc hai chữ cái Latinh, với chữ cái đầu tiên là chữ hoa và chữ cái thứ hai (nếu có) là chữ thường. Quy tắc đơn giản này được thực hiện khi tải một mảng. Do đó, chuỗi ký hiệu có thể được viết một cách ngắn gọn mà không có dấu cách. Chia một chuỗi thành bốn phần (hằng số Bảng tuần hoànStr1…, Bảng tuần hoànStr4) là do sự cân nhắc về tính dễ đọc mã nguồn, bởi vì Một dòng quá dài có thể không vừa hoàn toàn trên màn hình.

Khi con trỏ chuột di chuyển qua Image1 xử lý Hình ảnh1ChuộtDi chuyển sự kiện này xác định giá trị của thành phần màu xanh lam của pixel thẻ kiểm soát Image2 cho tọa độ con trỏ hiện tại. Bằng cách xây dựng Image2 giá trị này bằng số phần tử nếu con trỏ ở trong ô; 255 nếu ở biên giới và XNUMX trong các trường hợp khác. Các hành động còn lại được chương trình thực hiện là tầm thường và không cần giải thích.

Ngoài các kỹ thuật lập trình theo phong cách đã nêu ở trên, điều đáng chú ý là phong cách bình luận. Nói đúng ra, mã được thảo luận quá nhỏ và đơn giản nên các nhận xét dường như không đặc biệt cần thiết. Tuy nhiên, chúng được thêm vào cũng vì lý do phương pháp luận - mã ngắn cho phép chúng tôi đưa ra một số kết luận chung rõ ràng hơn. Trong mã được trình bày, một lớp được khai báo (TtableDlg). Các phương thức của lớp này có thể được hoán đổi và điều này sẽ không ảnh hưởng đến hoạt động của chương trình theo bất kỳ cách nào nhưng có thể ảnh hưởng đến khả năng đọc của nó. Ví dụ, hãy tưởng tượng trình tự:

OKBtnClick, Image1MouseMove, FormCreate, Image1Click, CancelBtnClick.

Nó có thể không đáng chú ý lắm, nhưng nó sẽ trở nên khó đọc và khó hiểu hơn một chút. Nếu không có năm, nhưng có nhiều phương pháp hơn hàng chục lần trong phần thực hiện chúng có một trật tự hoàn toàn khác so với mô tả lớp học, khi đó sự hỗn loạn sẽ chỉ gia tăng. Do đó, mặc dù rất khó để chứng minh một cách chặt chẽ và thậm chí có thể là không thể, nhưng người ta có thể hy vọng rằng việc đưa ra thứ tự bổ sung sẽ cải thiện khả năng đọc mã. Thứ tự bổ sung này được hỗ trợ bằng cách nhóm hợp lý một số phương pháp thực hiện các nhiệm vụ liên quan. Mỗi nhóm nên được đặt một tiêu đề, ví dụ:

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

Những tiêu đề này phải được sao chép vào đầu mô-đun và được định dạng dưới dạng mục lục. Trong một số trường hợp mô-đun khá dài, các mục lục như vậy cung cấp thêm các tùy chọn điều hướng. Tương tự, trong phần thân dài của một phương thức, thủ tục hoặc hàm, trước tiên cần đánh dấu phần cuối của phần thân này:

end; // FormCreate

và thứ hai, trong các câu lệnh phân nhánh có dấu ngoặc chương trình bắt đầu - kết thúc, hãy đánh dấu câu lệnh mà dấu ngoặc đóng đề cập đến:

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

Để làm nổi bật các tiêu đề nhóm và phần cuối của nội dung phương thức, bạn có thể thêm các dòng dài hơn hầu hết các câu lệnh và bao gồm các ký tự lần lượt là “=” và “_”.
Một lần nữa, chúng ta cần đặt chỗ trước: ví dụ của chúng ta quá đơn giản. Và khi mã của một phương thức không vừa trên một màn hình, có thể khó hiểu sáu đầu liên tiếp để thực hiện thay đổi mã. Trong một số trình biên dịch cũ, chẳng hạn như Pascal 8000 dành cho hệ điều hành IBM 360/370, một cột dịch vụ như thế này được in ở bên trái trong danh sách

B5
…
E5

Điều này có nghĩa là dấu ngoặc đơn đóng ở dòng E5 tương ứng với dấu ngoặc đơn mở ở dòng B5.

Tất nhiên, phong cách lập trình là một vấn đề gây tranh cãi rất nhiều, vì vậy những ý tưởng được trình bày ở đây chỉ nên được coi là thức ăn để suy nghĩ. Có thể rất khó để hai lập trình viên khá có kinh nghiệm, những người đã phát triển và quen với các phong cách khác nhau trong nhiều năm làm việc, đi đến thống nhất. Đó là một vấn đề khác đối với một sinh viên học lập trình chưa có thời gian để tìm ra phong cách riêng của mình. Tôi nghĩ rằng trong trường hợp này, giáo viên ít nhất nên truyền đạt cho học sinh của mình một ý tưởng đơn giản nhưng không rõ ràng rằng sự thành công của một chương trình phần lớn phụ thuộc vào phong cách viết mã nguồn của nó. Học sinh có thể không làm theo phong cách được đề xuất, nhưng ít nhất hãy để anh ta suy nghĩ về sự cần thiết của các hành động “bổ sung” để cải thiện thiết kế mã nguồn.

Quay trở lại vấn đề cơ bản của chúng ta về Bảng tuần hoàn: sự phát triển hơn nữa có thể đi theo những hướng khác nhau. Một trong những hướng dẫn mang tính tham khảo: khi bạn di con trỏ chuột lên một ô trong bảng, một cửa sổ thông tin sẽ xuất hiện chứa thông tin bổ sung về thành phần được chỉ định. Phát triển hơn nữa là các bộ lọc. Ví dụ: tùy thuộc vào cách cài đặt, cửa sổ thông tin sẽ chỉ chứa: thông tin vật lý và hóa học quan trọng nhất, thông tin về lịch sử phát hiện, thông tin về phân bố trong tự nhiên, danh sách các hợp chất quan trọng nhất (bao gồm yếu tố này), đặc tính sinh lý, tên bằng tiếng nước ngoài, v.v. e. Hãy nhớ đến chú vịt con của Kaverin mà bài viết này bắt đầu, chúng ta có thể nói rằng với sự phát triển của chương trình này, chúng ta sẽ có được một tổ hợp đào tạo hoàn chỉnh về khoa học tự nhiên: ngoài máy tính khoa học, vật lý và hóa học - sinh học, địa lý kinh tế, lịch sử khoa học và thậm chí cả ngoại ngữ.

Nhưng cơ sở dữ liệu cục bộ không phải là giới hạn. Chương trình tự nhiên kết nối với Internet. Khi bạn chọn một phần tử, liên kết sẽ được kích hoạt và bài viết Wikipedia về phần tử này sẽ được mở trong cửa sổ trình duyệt web. Wikipedia, như bạn biết, không phải là một nguồn có thẩm quyền. Bạn có thể đặt liên kết đến các nguồn có thẩm quyền, ví dụ: bách khoa toàn thư hóa học, TSB, tạp chí trừu tượng, truy vấn đặt hàng trong công cụ tìm kiếm cho nguyên tố này, v.v. Cái đó. Học sinh sẽ có thể hoàn thành các bài tập đơn giản nhưng có ý nghĩa về các chủ đề DBMS và Internet.

Ngoài các truy vấn trên một phần tử riêng lẻ, bạn có thể tạo chức năng, chẳng hạn như đánh dấu các ô trong bảng đáp ứng các tiêu chí nhất định bằng các màu khác nhau. Ví dụ: kim loại và phi kim loại. Hoặc các tế bào được nhà máy hóa chất địa phương đổ vào vùng nước.

Bạn cũng có thể triển khai các chức năng của một công cụ sắp xếp sổ ghi chép. Ví dụ: đánh dấu trong bảng các yếu tố có trong bài kiểm tra. Sau đó nêu bật những nội dung học sinh đã học/lặp lại để chuẩn bị cho kỳ thi.

Và đây, chẳng hạn, là một trong những bài toán hóa học điển hình ở trường:

Cho 10 g phấn. Phải dùng bao nhiêu axit clohiđric để hòa tan hết số phấn này?

Để giải quyết vấn đề này, cần phải viết ra hóa chất. phản ứng và đặt các hệ số trong đó, tính trọng lượng phân tử của canxi cacbonat và hydro clorua, sau đó soạn và giải tỷ lệ. Một máy tính dựa trên chương trình cơ bản của chúng tôi có thể tính toán và giải quyết. Đúng, bạn vẫn cần phải tính đến việc axit phải được sử dụng ở mức dư thừa hợp lý và nồng độ hợp lý, nhưng đây là hóa học, không phải khoa học máy tính.
Phụ lục 1: Cách thức hoạt động của Máy tính Hóa họcChúng ta hãy phân tích hoạt động của máy tính bằng cách sử dụng ví dụ về bài toán phấn và “hodgepodge” trên. Hãy bắt đầu với phản ứng:

CaCO3 + 2HCl = CaCl2 + H2O

Từ đó, chúng ta thấy rằng chúng ta sẽ cần trọng lượng nguyên tử của các nguyên tố sau: canxi (Ca), cacbon (C), oxy (O), hydro (H) và clo (Cl). Trong trường hợp đơn giản nhất, chúng ta có thể viết các trọng số này vào mảng một chiều được định nghĩa là

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

trong đó chỉ số mảng tương ứng với số phần tử. Thông tin thêm về không gian trống của biểu mẫu bảngDlg đặt hai trường. Trong trường đầu tiên, ban đầu nó được viết: “Thuốc thử đầu tiên đã được đưa ra”, trong trường thứ hai - “Thuốc thử thứ hai là tìm x”. Hãy ký hiệu các trường thuốc thử1, thuốc thử2 tương ứng. Các bổ sung khác cho chương trình sẽ được rõ ràng từ ví dụ sau về máy tính.

Chúng tôi gõ trên bàn phím máy tính: 10 g Dòng chữ trên trường thuốc thử1 thay đổi: "Thuốc thử đầu tiên được cho 10 g." Bây giờ chúng ta nhập công thức của thuốc thử này, máy tính sẽ tính toán và hiển thị trọng lượng phân tử của nó khi bạn nhập.

Bấm vào LMB trên ô bảng có ký hiệu Ca. Dòng chữ trên cánh đồng thuốc thử1 thay đổi: “Thuốc thử đầu tiên Ca 40.078 cho 10 g.”

Nhấp vào LMB trên ô bảng có ký hiệu C. Dòng chữ trong trường thuốc thử1 thay đổi: “Thuốc thử đầu tiên CaC 52.089 cho 10 g.” Những thứ kia. Máy tính đã cộng trọng lượng nguyên tử của canxi và cacbon.

Bấm vào LMB trên ô bảng có ký hiệu O. Dòng chữ trong trường thuốc thử1 thay đổi: “Thuốc thử đầu tiên CaCO 68.088 cho 10 g.” Máy tính đã thêm trọng lượng nguyên tử của oxy vào tổng.

Bấm vào LMB trên ô bảng có ký hiệu O. Dòng chữ trong trường thuốc thử1 thay đổi: “Thuốc thử đầu tiên CaCO2 84.087 cho 10 g.” Máy tính một lần nữa cộng trọng lượng nguyên tử của oxy vào tổng.

Bấm vào LMB trên ô bảng có ký hiệu O. Dòng chữ trong trường thuốc thử1 thay đổi: “Thuốc thử đầu tiên CaCO3 100.086 cho 10 g.” Máy tính lại cộng trọng lượng nguyên tử của oxy vào tổng.

Nhấn Enter trên bàn phím máy tính của bạn. Việc đưa thuốc thử đầu tiên vào đã hoàn tất và chuyển sang hiện trường thuốc thử2. Lưu ý rằng trong ví dụ này, chúng tôi đang cung cấp một phiên bản tối thiểu. Nếu muốn, bạn có thể dễ dàng sắp xếp các bội số nguyên tử cùng loại, chẳng hạn như bạn không cần phải bấm bảy lần liên tiếp vào ô oxy khi nhập công thức crom (K2Cr2O7).

Nhấp vào LMB trên ô bảng có ký hiệu H. Dòng chữ trong trường thuốc thử2 thay đổi: “Thuốc thử thứ hai H 1.008 tìm x.”

Bấm vào LMB trên ô bảng có ký hiệu Cl. Dòng chữ trên cánh đồng thuốc thử2 thay đổi: “Thuốc thử thứ hai HCl 36.458 tìm x.” Máy tính đã cộng khối lượng nguyên tử của hydro và clo. Trong phương trình phản ứng trên, hydro clorua đứng trước hệ số 2. Do đó, hãy nhấp vào LMB trên trường thuốc thử2. Trọng lượng phân tử tăng gấp đôi (gấp ba khi nhấn hai lần, v.v.). Dòng chữ trên cánh đồng thuốc thử2 thay đổi: “Thuốc thử thứ hai 2HCl 72.916 tìm x.”

Nhấn Enter trên bàn phím máy tính của bạn. Việc nhập thuốc thử thứ hai hoàn tất và máy tính tìm thấy x từ tỷ lệ

Bảng tuần hoàn về khoa học máy tính trường học

Đó là những gì chúng tôi cần tìm.

Lưu ý 1. Ý nghĩa của tỷ lệ thu được: đối với độ hòa tan 100.086 Da phấn cần có axit 72.916 Da và để hòa tan 10 g phấn bạn cần x axit.

Lưu ý 2. Tập hợp các vấn đề tương tự:

Khomchenko I. G., Tuyển tập các bài tập và bài tập hóa học 2009 (lớp 8-11).
Khomchenko G. P., Khomchenko I. G., Tuyển tập các bài toán hóa học dành cho ứng viên vào các trường đại học, 2019.

Lưu ý 3. Để đơn giản hóa tác vụ, bạn có thể đơn giản hóa việc nhập công thức trong phiên bản ban đầu và chỉ cần thêm ký hiệu phần tử vào cuối dòng công thức. Khi đó công thức của canxi cacbonat sẽ là:
CaCOOO
Nhưng một giáo viên hóa học chắc chắn sẽ không thích đoạn ghi âm như vậy. Không khó để nhập đúng - để làm được điều này, bạn cần thêm một mảng:

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

trong đó chỉ số là số nguyên tố hóa học và giá trị tại chỉ số này là số nguyên tử (ban đầu tất cả các phần tử của mảng được đặt lại về 3). Cần phải tính đến thứ tự các nguyên tử được viết trong công thức, như được áp dụng trong hóa học. Ví dụ, ít người sẽ thích OXNUMXCaC. Hãy chuyển trách nhiệm cho người dùng. Tạo một mảng:

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

trong đó chúng ta viết số lượng nguyên tố hóa học theo chỉ số xuất hiện của nó trong công thức. Thêm một nguyên tử hiện tạiKhông vào công thức:

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

Viết công thức ra một dòng:

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;

Lưu ý 4. Sẽ rất hợp lý khi cung cấp khả năng nhập công thức thuốc thử từ bàn phím. Trong trường hợp này, bạn sẽ cần triển khai một trình phân tích cú pháp đơn giản.

Điều đáng chú ý là:

Ngày nay, có hàng trăm phiên bản của bảng và các nhà khoa học liên tục đưa ra những lựa chọn mới. (Wikipedia)

Học sinh có thể thể hiện sự khéo léo của mình theo hướng này bằng cách thực hiện một trong các phương án đã được đề xuất hoặc cố gắng tự tạo ra phương án ban đầu của mình. Có vẻ như đây là hướng ít hữu ích nhất cho các bài học khoa học máy tính. Tuy nhiên, ở dạng Bảng tuần hoàn được triển khai trong bài viết này, một số học sinh có thể không thấy bất kỳ lợi thế cụ thể nào của thẻ điều khiển so với giải pháp thay thế bằng cách sử dụng các nút tiêu chuẩn. Nút. Hình dạng xoắn ốc của bảng (nơi các ô có hình dạng khác nhau) sẽ thể hiện rõ hơn ưu điểm của giải pháp được đề xuất ở đây.

Bảng tuần hoàn về khoa học máy tính trường học
(Hệ thống các phần tử thay thế của Theodore Benfey, Nguồn)

Chúng ta cũng hãy nói thêm rằng một số chương trình máy tính hiện có dành cho Bảng tuần hoàn được mô tả trong ấn phẩm gần đây được xuất bản trên Habré. Bài viết.

Phụ lục 2: ví dụ về nhiệm vụ của bộ lọcBằng cách sử dụng các bộ lọc, bạn có thể giải quyết các tác vụ sau:

1) Chọn trong bảng tất cả các nguyên tố được biết đến thời Trung Cổ.

2) Xác định tất cả các yếu tố đã biết vào thời điểm phát hiện ra Định luật tuần hoàn.

3) Xác định bảy nguyên tố mà các nhà giả kim coi là kim loại.

4) Chọn tất cả các nguyên tố ở trạng thái khí trong điều kiện bình thường (n.s.).

5) Chọn tất cả các phần tử ở trạng thái lỏng.

6) Chọn tất cả các phần tử ở trạng thái rắn không.

7) Chọn tất cả các phần tử có thể tiếp xúc với không khí trong thời gian dài mà không có sự thay đổi rõ rệt ở điều kiện bình thường.

8) Chọn tất cả các kim loại tan trong axit clohiđric.

9) Chọn tất cả các kim loại không tan trong axit sunfuric.

10) Chọn những kim loại tan trong axit sunfuric khi đun nóng.

11) Chọn tất cả các kim loại tan trong axit nitric.

12) Cô lập tất cả các kim loại phản ứng mạnh với nước ở điều kiện môi trường xung quanh.

13) Chọn tất cả các kim loại.

14) Xác định các yếu tố phổ biến trong tự nhiên.

15) Xác định các nguyên tố có trong tự nhiên ở trạng thái tự do.

16) Xác định các yếu tố có vai trò quan trọng nhất trong cơ thể con người và động vật.

17) Lựa chọn các yếu tố được sử dụng rộng rãi trong cuộc sống hàng ngày (ở dạng tự do hoặc kết hợp).

18) Xác định các yếu tố nguy hiểm nhất khi làm việc và yêu cầu các biện pháp và thiết bị bảo hộ đặc biệt.

19) Xác định các nguyên tố ở dạng tự do hoặc ở dạng hợp chất gây ra mối đe dọa lớn nhất cho môi trường.

20) Chọn kim loại quý.

21) Xác định các nguyên tố đắt hơn kim loại quý.

Ghi chú

1) Việc cung cấp nhiều bộ lọc là điều hợp lý. Ví dụ: nếu bạn bật bộ lọc để giải quyết vấn đề 1 (tất cả các nguyên tố được biết đến trong thời Trung cổ) và 20 (kim loại quý), thì các ô có kim loại quý được biết đến trong thời Trung cổ sẽ được đánh dấu (ví dụ: theo màu sắc) ( ví dụ: palladium sẽ không được đánh dấu, được mở vào năm 1803).

2) Sẽ rất hợp lý khi đảm bảo rằng một số bộ lọc hoạt động ở chế độ sao cho mỗi bộ lọc chọn các ô có màu riêng, nhưng không loại bỏ hoàn toàn việc lựa chọn bộ lọc khác (một phần của ô có màu này, một phần có màu khác). Sau đó, trong trường hợp của ví dụ trước, các phần tử giao nhau của các bộ được phát hiện vào thời Trung cổ và kim loại quý, cũng như các phần tử chỉ thuộc về bộ thứ nhất và chỉ thuộc bộ thứ hai, sẽ hiển thị. Những thứ kia. kim loại quý chưa được biết đến vào thời Trung cổ và các nguyên tố được biết đến vào thời Trung cổ nhưng không phải là kim loại quý.

3) Sẽ có ý nghĩa sau khi áp dụng bộ lọc để đảm bảo khả năng thực hiện công việc khác với kết quả thu được. Ví dụ: sau khi chọn các phần tử được biết đến từ thời Trung Cổ, người dùng nhấp vào LMB trên phần tử đã chọn và được đưa đến bài viết Wikipedia về phần tử này.

4) Sẽ rất hợp lý khi cung cấp cho người dùng khả năng bỏ chọn bằng cách nhấp vào LMB trên ô bảng đã chọn. Ví dụ: để xóa các mục đã xem.

5) Sẽ rất hợp lý khi đảm bảo rằng danh sách các ô đã chọn được lưu trong một tệp và tệp đó được tải tính năng chọn ô tự động. Điều này sẽ mang lại cho người dùng cơ hội được nghỉ làm.

Chúng tôi đã sử dụng bản đồ điều khiển tĩnh, được xác định trước, nhưng có nhiều nhiệm vụ quan trọng trong đó có thể sử dụng bản đồ điều khiển động thay đổi khi chương trình chạy. Một ví dụ là trình soạn thảo biểu đồ, trong đó người dùng sử dụng chuột để chỉ vị trí của các đỉnh trong cửa sổ và vẽ các cạnh giữa chúng. Để xóa một đỉnh hoặc cạnh, người dùng phải trỏ tới nó. Nhưng nếu việc trỏ đến một đỉnh được đánh dấu bằng một đường tròn khá dễ dàng thì việc trỏ tới một cạnh được vẽ bằng một đường mảnh sẽ khó khăn hơn. Ở đây, bản đồ kiểm soát sẽ hữu ích, trong đó các đỉnh và cạnh chiếm các vùng lân cận rộng hơn so với trong hình hiển thị.

Một câu hỏi phụ thú vị liên quan đến phương pháp đào tạo phức tạp này là: liệu phương pháp này có hữu ích trong việc đào tạo AI không?

Nguồn: www.habr.com

Thêm một lời nhận xét