Помогите переписать программу с qBasic на Visual Basic, а то я запутался с разбором кода qBasic. Хотелось бы осовременить программу и потом еще сделать возможность сохранения графика.
10 REM +++++++++++++ П Р O Г Р А M M А E3_mol.bas ++++++++++++++++++
20 REM + расчета температуры и состава эвтектики в треxкомпонентной +
30 REM + системе и температуры и состава эвтектик , вxодящиx в нее +
40 REM + бинaрныx систем ( BA-B2F-B2S ) +
50 REM + Cостaвитель Питaк Я.H., ХГПУ, 11.05.1998 +
60 REM ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
70 REM // Ввод исxодныx данныx //
80 S1$="BaSO4":S2$="CaCl2":S3$="CaSO4": REM // Формулы соединений //
110 T1=1853:T2=1045:T3=1723 : REM // Темперaтуры плaвления соединений //
120 N1=6:N2=3:N3=6:EEE=.0001 : REM // Число aтомов в молекуле //
127 REM // Haчaло рaсчетa Тэ12, Тэ13, Тэ23 //
130 TT1=T1:TT2=T2:NN1=N1:NN2=N2:GOSUB 1010:TE12=TE1:X112=X1:X212=X2
140 TT1=T1:TT2=T3:NN1=N1:NN2=N3:GOSUB 1010:TE13=TE1:X113=X1:X313=X2
150 TT1=T2:TT2=T3:NN1=N2:NN2=N3:GOSUB 1010:TE23=TE1:X223=X1:X323=X2
160 GOSUB 2010:REM // рaсчет Тэ123 //
170 GOSUB 3010:REM // Построение конц. треугольникa и погрaн. кривыx //
180 GOSUB 3300:REM // Вывод дaнныx нa экрaн //
200 END
1010 REM Опред. состaвa и темп. плaвления эвтектики в 2-х комп.сист.
1205 X2=0:PP=1:EEE=.0001
1215 PP=PP/10
1220 X2=X2+PP
1245 X1=EXP(NN1*(1-TT1*(1-LOG(X2)/NN2)/TT2))
1250 Y=X1+X2-1
1260 IF ABS(Y)<EEE THEN GOTO 1355 ELSE 1270
1270 IF Y<0 THEN GOTO 1220 ELSE 1290
1290 X2=X2-PP:GOTO 1215
1355 TE1=TT1/(1-LOG(X1)/NN1)
1400 RETURN
2010 REM Опред. состaвa и темп. плaвления эвтектики в 3-х комп.сист.
2205 X2=0:PP=1:EEE=.0001
2215 PP=PP/10
2220 X2=X2+PP
2245 X1=EXP(N1*(1-T1*(1-LOG(X2)/N2)/T2))
2247 X3=EXP(N3*(1-T3*(1-LOG(X2)/N2)/T2))
2250 Y=X1+X2+X3-1
2260 IF ABS(Y)<EEE THEN GOTO 2355 ELSE GOTO 2270
2270 IF Y<0 THEN GOTO 2220 ELSE GOTO 2290
2290 X2=X2-PP:GOTO 2215
2355 TE123=T1/(1-LOG(X1)/N1)
2370 X1123=X1:X2123=X2:X3123=X3
2400 RETURN
3010 REM Построение конц. треугольникa и кривыx ликвидусa
3020 CLS
3030 SCREEN 2
3040 SS=SQR(3)/2
3050 CC=.5
3060 X1=100:Y1=160
3070 X2=400:Y2=160
3080 X3=250:Y3=160-300*SS/2.3
3090 LINE(X1,Y1)-(X2,Y2)
3100 LINE(X1,Y1)-(X3,Y3)
3110 LINE(X2,Y2)-(X3,Y3)
3130 XAB=100+300*X212*CC:YAB=160-(300*X212*SS)/2.3
3140 XAC=100+300*X313:YAC=160
3150 XBC=400-300*X223*CC:YBC=160-(300*X223*SS)/2.3
3160 XABC=100+300*X2123*CC+300*X3123:YABC=160-(300*X2123*SS)/2.3
3170 LINE(XAB,YAB)-(XABC,YABC)
3180 LINE(XAC,YAC)-(XABC,YABC)
3190 LINE(XBC,YBC)-(XABC,YABC)
3200 RETURN
3300 LOCATE 4,40:PRINT S1$;"-";S2$
3305 LOCATE 4,55:PRINT "X(";S1$;")=";
3306 PRINT USING "###.#";X112*100;:PRINT " мол.%"
3310 LOCATE 5,55:PRINT "X(";S2$;")=";
3315 PRINT USING "###.#";X212*100;:PRINT " мол.%"
3316 LOCATE 6,55:PRINT "Te2=";:PRINT USING "####";TE12;:PRINT " K"
3320 LOCATE 7,40:PRINT S1$;"-";S3$
3325 LOCATE 7,55:PRINT "X(";S1$;")=";
3326 PRINT USING "###.#";X113*100;:PRINT " мол.%"
3330 LOCATE 8,55:PRINT "X(";S3$;")=";
3335 PRINT USING "###.#";X313*100;:PRINT " мол.%"
3336 LOCATE 9,55:PRINT "Te2=";:PRINT USING "####";TE13;:PRINT " K"
3340 LOCATE 10,40:PRINT S2$;"-";S3$
3345 LOCATE 10,55:PRINT "X(";S2$;")=";
3346 PRINT USING "###.#";X223*100;:PRINT " мол.%"
3350 LOCATE 11,55:PRINT "X(";S3$;")=";
3355 PRINT USING "###.#";X323*100;
3356 PRINT " мол.%":LOCATE 12,55:PRINT "Te2=";
3357 PRINT USING "####";TE23;:PRINT " K"
3370 LOCATE 14,55:PRINT S1$;"-";S2$;"-";S3$
3380 LOCATE 15,55:PRINT "X(";S1$;")=";
3385 PRINT USING "###.#";X1123*100;:PRINT " мол.%"
3386 LOCATE 16,55:PRINT "X(";S2$;")=";:PRINT USING "###.#";X2123*100;:PRINT " мол.%"
3390 LOCATE 17,55:PRINT "X(";S3$;")=";
3395 PRINT USING "###.#";X3123*100;:PRINT " мол.%"
3400 LOCATE 18,55:PRINT "Te3=";:PRINT USING "####";TE123;:PRINT " K"
3420 LOCATE 5,30:PRINT S2$
3425 LOCATE 22,12:PRINT S1$:LOCATE 22,50:PRINT S3$
3430 RETURN
SUB
На выходе получаем такое:
Расчёт вроде как ведется по следующим формулам:
Где, Tпл1, Тпл2, Тпл3 - температура первого, второго и третьего компонента.
N1, N2, N3 - количество атомов элемента
X1, X2, X3 - мольная доля компонента
То что я пытался сделать
https://gist.github.com/anonymous/19223b55c95eb458... но оно не работает должны образом, не при всех числовых значениях работает, не все нужные значения удается получить (Tэвт, T2, T2, T3, X1, X2, X3) и рисунок похоже не совсем правильный.