Гайдар
Магдануров
Модуль для
расчета конфигурации электронной оболочки нейтрального атома
Вообще думаю, что это мало кому
пригодится, но раз уж спросили как это сделать. Я
нашел программу на QBasic и переделал ее под
Visaul Basic.
Public Sub CalcOrb(nn
As Integer,RetString as String)
Open "data.gcb" For Input As #1
If nn < 1 Or nn > 120 Then RetString = "Error
calculating (element unknown)"
Sum = 0
k = 1
l = 10
GoSub sub1
GoSub sub2
If nn <= 48 Then GoTo sub0
k = 11
l = 20
GoSub sub1
GoSub sub2
sub0:
GoTo end_
sub1:
S1$ = Space$(1)
s2$ = Space$(0)
For i = k To l
Input #1, orb$
Input #1, n
Sum = Sum + n
If Sum > nn Then n = n + nn - Sum
n = Str(n)
a = Space(0)
If Right$(orb$, 1) = "s" Then a = Space$(1)
RetString = RetString + " " + orb$ + n + " "
If Sum > nn Then GoTo sub3
Next i
sub3:
Return
sub2:
Return
Close #1
end_:
End Sub
Текст файла
data.gcb:
1s
2
2s
2
2p
6
3s
2
3p
6
4s
2
3d
10
4p
6
5s
2
4d
10
5p
6
6s
2
4f
14
5d
10
6p
6
7s
2
5f
14
6d
10
7p
6
8s
2
(орбиталь,
а за ней максимальное кол-во электронов на ней).
Использование:
Dim MyResult as String
Call
CalcOrb(NumberOfElement,MyResult)
msgbox MyResult
Гайдар Магдануров
|