Из TurboPascal переделать в PascalAbc - Pascal ABC

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

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

Переделать в PascalAbc
Листинг программы
  1. uses graphabc,crt;
  2. const x:real=0;
  3. x1:real=1;
  4. y:real=0;
  5. y1:real=0;
  6. g=9.8;
  7. w=0.1;
  8. dt=0.01;
  9. L=98;
  10. var
  11. gl,w1,x0,x10,y0,y10,ak,xp,yp,x1p,y1p:real;
  12. k1,k2,k3,k4,11,12,13,14:real;
  13. grDrivere:integer;
  14. grMode:integer;
  15. ErrCode:integer;
  16. begin
  17. gl:=g/l-w*w;
  18. w2:=2*w;
  19. grDriver:=Detect;
  20. InitGraph(grDriver,grMode,'c:\bp\bgi');
  21. ErrCode:=GraphResult;
  22. if ErrCode = grOk then
  23. begin
  24. repeat
  25. x0:=x;
  26. x10:=x1;
  27. y0:=y;
  28. y10:=y1;
  29. k1:=dt*(-gl*x0+w2*y10);
  30. 11:=dt*(-gl*y0-w2*x10);
  31. xp:=x0+dt*x10/2+dt*k1)/8;x1p:=x10+k2/2;
  32. yp:=y0+dt*y10/2+dt*11/8;y1p:=y10+11/2;
  33. k2:=dt*(-gl*xp+w2*y1p);
  34. l2:=dt*(-gl*yp-w2*x1p);
  35. xp:=x0+dt*x10/2+dt*k1/8;x1p:=x10+k2/2;
  36. yp:=y0+dt*y10/2+dt*11/8;y1p:=y10+12/2;
  37. k3:=dt*(-gl*xp+w2*y1p);
  38. l3:=dt*(-gl*yp-w2*x1p);
  39. xp:=x0+dt*x10+dt*k3/2;x1p:=y10+k3;
  40. yp:=y0+dt*y10+dt*13/2;y1p:=y10+l3;
  41. k4:=dt*(-gl*xp+w2*x1p);
  42. l4:=dt*(-gl*yp-w2*x1p);
  43. ak:=x10+(k1+k2+k3)/6;
  44. x1:=ak+(k2+k3+k4)/6;
  45. x:=x0+dt*ak;
  46. ak:=y10+(11+12+13)/6;
  47. y1:=ak+(12+13+14)/6;
  48. y:=y0+dt*ak;
  49. PutPixel(round(GetMaxX/2+x*75),round(GetMaxY/2-y*75),while);
  50. until KeyPressed;
  51. CloseGraph;
  52. end;
  53. else
  54. writeln('Graphics error:',GraphErrorMsg(ErrCode));
  55. end.

Решение задачи: «Из TurboPascal переделать в PascalAbc»

textual
Листинг программы
  1. uses graphABC;
  2. const
  3. g=9.8;
  4. w=0.1;
  5. dt=0.01;
  6. L=98;
  7. var
  8. gl,w1,x0,x10,y0,y10,ak,xp,yp,x1p,y1p:real;
  9. x,x1,y,y1,k1,k2,k3,k4,l1,l2,l3,l4,w2:real;
  10. begin
  11. setwindowsize(600,500);
  12. centerwindow;
  13. gl:=g/l-w*w;
  14. w2:=2*w;
  15. x:=0;
  16. y:=0;
  17. repeat
  18. x0:=x;
  19. x10:=x1;
  20. y0:=y;
  21. y10:=y1;
  22. k1:=dt*(-gl*x0+w2*y10);
  23. l1:=dt*(-gl*y0-w2*x10);
  24. xp:=x0+dt*x10/2+dt*k1/8; x1p:=x10+k2/2;
  25. yp:=y0+dt*y10/2+dt*l1/8; y1p:=y10+11/2;
  26. k2:=dt*(-gl*xp+w2*y1p);
  27. l2:=dt*(-gl*yp-w2*x1p);
  28. xp:=x0+dt*x10/2+dt*k1/8; x1p:=x10+k2/2;
  29. yp:=y0+dt*y10/2+dt*l1/8; y1p:=y10+l2/2;
  30. k3:=dt*(-gl*xp+w2*y1p);
  31. l3:=dt*(-gl*yp-w2*x1p);
  32. xp:=x0+dt*x10+dt*k3/2; x1p:=y10+k3;
  33. yp:=y0+dt*y10+dt*l3/2; y1p:=y10+l3;
  34. k4:=dt*(-gl*xp+w2*x1p);
  35. l4:=dt*(-gl*yp-w2*x1p);
  36. ak:=x10+(k1+k2+k3)/6;
  37. x1:=ak+(k2+k3+k4)/6;
  38. x:=x0+dt*ak;
  39. ak:=y10+(l1+l2+l3)/6;
  40. y1:=ak+(l2+l3+l4)/6;
  41. y:=y0+dt*ak;
  42. SetPixel(round(x*75),windowheight div 2-round(y*75),clBlack);
  43. until(windowheight div 2-round(y*75)=250)and(round(x*75)=300);
  44. end.

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

  1. Используется библиотека graphABC.
  2. Константы: g=9.8, w=0.1, dt=0.01, L=98.
  3. Переменные: gl, w1, x0, x10, y0, y10, ak,xp,yp,x1p,y1p:real; x,x1,y,y1,k1,k2,k3,k4,l1,l2,l3,l4,w2:real;
  4. Устанавливается размер окна.
  5. Вычисляется значение gl.
  6. Вычисляется значение w2.
  7. Инициализируются переменные x, y, k1, k2, k3, k4, l1, l2, l3, l4, w2.
  8. Запускается цикл повторения.
  9. В каждой итерации цикла вычисляются значения x0, x10, y0, y10, k1, l1, xp, yp, x1p, y1p.
  10. Вычисляются значения k2, l2, k3, l3, k4, l4.
  11. Вычисляются значения ak, x1, x0, y1, y0, x1p, y1p.
  12. Вычисляются значения x1, x0, y1, y0, xp, yp.
  13. Устанавливаются цвета пикселей.
  14. Остановка цикла при выполнении условия окончания движения (округленные значения y и x равны 300 и 250 соответственно).
  15. Остановка программы.

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


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

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

9   голосов , оценка 4.222 из 5

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

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

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