Разобрать код - QBasic

Узнай цену своей работы

Формулировка задачи:

Помогите разобрать код ниже. Что в нем происходит? Хочу переписать программу с qBasic на VB.
Листинг программы
  1. 70 REM // Ввод исxодныx данныx //
  2. 80 S1$="BaSO4":S2$="CaCl2":S3$="CaSO4": REM // Формулы соединений //
  3. 110 T1=1853:T2=1045:T3=1723 : REM // Темперaтуры плaвления соединений //
  4. 120 N1=6:N2=3:N3=6:EEE=.0001 : REM // Число aтомов в молекуле //
  5. 127 REM // Haчaло рaсчетa Тэ12, Тэ13, Тэ23 //
  6. 130 TT1=T1:TT2=T2:NN1=N1:NN2=N2:GOSUB 1010:TE12=TE1:X112=X1:X212=X2
  7. 140 TT1=T1:TT2=T3:NN1=N1:NN2=N3:GOSUB 1010:TE13=TE1:X113=X1:X313=X2
  8. 150 TT1=T2:TT2=T3:NN1=N2:NN2=N3:GOSUB 1010:TE23=TE1:X223=X1:X323=X2
  9. 160 GOSUB 2010:REM // рaсчет Тэ123 //
  10. 170 GOSUB 3010:REM // Построение конц. треугольникa и погрaн. кривыx //
  11. 180 GOSUB 3300:REM // Вывод дaнныx нa экрaн //
  12. 200 END
  13. 1010 REM Опред. состaвa и темп. плaвления эвтектики в 2 комп.сист.
  14. 1205 X2=0:PP=1:EEE=.0001
  15. 1215 PP=PP/10
  16. 1220 X2=X2+PP
  17. 1245 X1=EXP(NN1*(1-TT1*(1-LOG(X2)/NN2)/TT2))
  18. 1250 Y=X1+X2-1
  19. 1260 IF ABS(Y)<EEE THEN GOTO 1355 ELSE 1270
  20. 1270 IF Y<0 THEN GOTO 1220 ELSE 1290
  21. 1290 X2=X2-PP:GOTO 1215
  22. 1355 TE1=TT1/(1-LOG(X1)/NN1)
  23. 1400 RETURN
  24. 2010 REM Опред. состaвa и темп. плaвления эвтектики в 3 комп.сист.
  25. 2205 X2=0:PP=1:EEE=.0001
  26. 2215 PP=PP/10
  27. 2220 X2=X2+PP
  28. 2245 X1=EXP(N1*(1-T1*(1-LOG(X2)/N2)/T2))
  29. 2247 X3=EXP(N3*(1-T3*(1-LOG(X2)/N2)/T2))
  30. 2250 Y=X1+X2+X3-1
  31. 2260 IF ABS(Y)<EEE THEN GOTO 2355 ELSE GOTO 2270
  32. 2270 IF Y<0 THEN GOTO 2220 ELSE GOTO 2290
  33. 2290 X2=X2-PP:GOTO 2215
  34. 2355 TE123=T1/(1-LOG(X1)/N1)
  35. 2370 X1123=X1:X2123=X2:X3123=X3
  36. 2400 RETURN
  37. 3010 REM Построение конц. треугольникa и кривыx ликвидусa
  38. 3020 CLS
  39. 3030 SCREEN 2
  40. 3040 SS=SQR(3)/2
  41. 3050 CC=.5
  42. 3060 X1=100:Y1=160
  43. 3070 X2=400:Y2=160
  44. 3080 X3=250:Y3=160-300*SS/2.3
  45. 3090 LINE(X1,Y1)-(X2,Y2)
  46. 3100 LINE(X1,Y1)-(X3,Y3)
  47. 3110 LINE(X2,Y2)-(X3,Y3)
  48. 3130 XAB=100+300*X212*CC:YAB=160-(300*X212*SS)/2.3
  49. 3140 XAC=100+300*X313:YAC=160
  50. 3150 XBC=400-300*X223*CC:YBC=160-(300*X223*SS)/2.3
  51. 3160 XABC=100+300*X2123*CC+300*X3123:YABC=160-(300*X2123*SS)/2.3
  52. 3170 LINE(XAB,YAB)-(XABC,YABC)
  53. 3180 LINE(XAC,YAC)-(XABC,YABC)
  54. 3190 LINE(XBC,YBC)-(XABC,YABC)
  55. 3200 RETURN
  56. 3300 LOCATE 4,40:PRINT S1$;"-";S2$
  57. 3305 LOCATE 4,55:PRINT "X(";S1$;")=";
  58. 3306 PRINT USING "###.#";X112*100;:PRINT " мол.%"
  59. 3310 LOCATE 5,55:PRINT "X(";S2$;")=";
  60. 3315 PRINT USING "###.#";X212*100;:PRINT " мол.%"
  61. 3316 LOCATE 6,55:PRINT "Te2=";:PRINT USING "####";TE12;:PRINT " K"
  62. 3320 LOCATE 7,40:PRINT S1$;"-";S3$
  63. 3325 LOCATE 7,55:PRINT "X(";S1$;")=";
  64. 3326 PRINT USING "###.#";X113*100;:PRINT " мол.%"
  65. 3330 LOCATE 8,55:PRINT "X(";S3$;")=";
  66. 3335 PRINT USING "###.#";X313*100;:PRINT " мол.%"
  67. 3336 LOCATE 9,55:PRINT "Te2=";:PRINT USING "####";TE13;:PRINT " K"
  68. 3340 LOCATE 10,40:PRINT S2$;"-";S3$
  69. 3345 LOCATE 10,55:PRINT "X(";S2$;")=";
  70. 3346 PRINT USING "###.#";X223*100;:PRINT " мол.%"
  71. 3350 LOCATE 11,55:PRINT "X(";S3$;")=";
  72. 3355 PRINT USING "###.#";X323*100;
  73. 3356 PRINT " мол.%":LOCATE 12,55:PRINT "Te2=";
  74. 3357 PRINT USING "####";TE23;:PRINT " K"
  75. 3370 LOCATE 14,55:PRINT S1$;"-";S2$;"-";S3$
  76. 3380 LOCATE 15,55:PRINT "X(";S1$;")=";
  77. 3385 PRINT USING "###.#";X1123*100;:PRINT " мол.%"
  78. 3386 LOCATE 16,55:PRINT "X(";S2$;")=";:PRINT USING "###.#";X2123*100;:PRINT " мол.%"
  79. 3390 LOCATE 17,55:PRINT "X(";S3$;")=";
  80. 3395 PRINT USING "###.#";X3123*100;:PRINT " мол.%"
  81. 3400 LOCATE 18,55:PRINT "Te3=";:PRINT USING "####";TE123;:PRINT " K"
  82. 3420 LOCATE 5,30:PRINT S2$
  83. 3425 LOCATE 22,12:PRINT S1$:LOCATE 22,50:PRINT S3$
  84. 3430 RETURN
Не очень понятно что происходит здесь:
Листинг программы
  1. 1245 X1=EXP(NN1*(1-TT1*(1-LOG(X2)/NN2)/TT2))
  2. 1250 Y=X1+X2-1
  3. 1260 IF ABS(Y)<EEE THEN GOTO 1355 ELSE 1270
  4. 1270 IF Y<0 THEN GOTO 1220 ELSE 1290
  5. 1290 X2=X2-PP:GOTO 1215
  6. 1355 TE1=TT1/(1-LOG(X1)/NN1)
  7. 1400 RETURN
Я попытался перевести код в VB, но в результат неправильный выходит
Листинг программы
  1. X2 = 0
  2. X2 = X2 + PP
  3. X1 = Math.Exp(N1 * (1 - T1 * (1 - Math.Log(X2) / N2) / T2))
  4. Y = X1 + X2 - 1
  5. If Math.Abs(Y) < 0.0001 Then TE1 = T1 / (1 - Math.Log(X1) / N1) Else If Y < 0 Then X2 = X2 + 0.1 Else X2 = X2 - 0.1
Здесь аналогично не понятно
Листинг программы
  1. 2245 X1=EXP(N1*(1-T1*(1-LOG(X2)/N2)/T2))
  2. 2247 X3=EXP(N3*(1-T3*(1-LOG(X2)/N2)/T2))
  3. 2250 Y=X1+X2+X3-1
  4. 2260 IF ABS(Y)<EEE THEN GOTO 2355 ELSE GOTO 2270
  5. 2270 IF Y<0 THEN GOTO 2220 ELSE GOTO 2290
  6. 2290 X2=X2-PP:GOTO 2215
  7. 2355 TE123=T1/(1-LOG(X1)/N1)
  8. 2370 X1123=X1:X2123=X2:X3123=X3
  9. 2400 RETURN
Помогите привести это к коду Visual Basic

Решение задачи: «Разобрать код»

textual
Листинг программы
  1. 70 REM        //         Ввод исxодныx данныx         //
  2. 80 S1$="BaSO4":S2$="CaCl2":S3$="CaSO4":   REM // Формулы соединений //
  3. 110 T1=1853:T2=1045:T3=1723   :   REM // Темперaтуры плaвления соединений //
  4. 120 N1=6:N2=3:N3=6:EEE=.0001  :   REM // Число aтомов в молекуле //
  5. 127 REM       //  Haчaло рaсчетa   Тэ12, Тэ13, Тэ23        //
  6. 130 TT1=T1:TT2=T2:NN1=N1:NN2=N2:GOSUB 1010:TE12=TE1:X112=X1:X212=X2
  7. 140 TT1=T1:TT2=T3:NN1=N1:NN2=N3:GOSUB 1010:TE13=TE1:X113=X1:X313=X2
  8. 150 TT1=T2:TT2=T3:NN1=N2:NN2=N3:GOSUB 1010:TE23=TE1:X223=X1:X323=X2
  9. 160 GOSUB 2010:REM   // рaсчет Тэ123 //
  10. 170 GOSUB 3010:REM   // Построение конц. треугольникa и погрaн. кривыx //
  11. 180 GOSUB 3300:REM   // Вывод дaнныx нa экрaн //
  12. 200 END

Объяснение кода листинга программы

  1. Ввод исходных данных: S1$=BaSO4:S2$=CaCl2:S3$=CaSO4 (строки 70-80) T1=1853:T2=1045:T3=1723 (строки 110-120) N1=6:N2=3:N3=6:EEE=.0001 (строки 120-127)
  2. Начало расчета: Тэ12, Тэ13, Тэ23 (строка 130)
  3. Расчет Тэ12: TT1=T1:NN1=N1:GOSUB 1010:TE12=TE1:X112=X1:X212=X2 (строки 130-140)
  4. Расчет Тэ13: TT1=T1:NN1=N1:NN2=N3:GOSUB 1010:TE13=TE1:X113=X1:X313=X2 (строки 140-150)
  5. Расчет Тэ23: TT1=T2:TT2=T3:NN1=N2:NN2=N3:GOSUB 1010:TE23=TE1:X223=X1:X323=X2 (строки 150-160)
  6. Расчет Тэ123: GOSUB 2010 (строка 160)
  7. Построение концентрического треугольника и пограничных кривых: GOSUB 3010 (строка 170)
  8. Вывод данных на экран: GOSUB 3300 (строка 180)
  9. Конец работы: END (строка 200)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут