LINUX.ORG.RU

QBASIC - помогите с теорией

 , ,


1

1

Здравствуйте. Не нашелся в каком разделе спросить и выбрал генеральский =)

Переделываю софтину из 80-х, писаную на qbasic, в веб-страницу.
Т.к. устали люди ею пользоваться - очень, понимаете, недружественный у нее UI))
Софтина суровая, расчитывает режимы изготовления клея, которым крылья самолётам приклеивают :)
Как именно она творит уже доподлинно не известно, потому мне нуна понимать точно чего разраб наваял, а мой qbasic почти 20 лет назад закончился на «человечках отрывающих друг другу бошки по нажатию пробела» %)

Сути проблемы таковы:

1) когда GOSUB отсылает в якобы подпрограмму/процедуру, то переменные с такими же именами как в основном коде они совпадают или отдельные создаются? о_О
вводятся в оборот без предварительного объявления
моя основная версия, что совпадают %)

2) наткнулся на пару таких мест:

X = Y0
Z = X - 12345/(456-789)
при этом Y0 массив :\ одномерный из чисел..
и происходит это в цикле, переберающем какраз этот массив и есть в начале цикла его употребление, как
X0 = Y0(I)
что кагбэ намекает, на мою основную версию:
потрогав массив в нем перемещается некий указатель, текущего элемента чтоли, и можно обращаться к нему (элементу массива) без явного указания индекса нужного элемента 8|


Подскажите, прав ли я в предположениях или как этот код правильно понять?


ЗЫ: Ходил вчера на мелкомягко.сом - следы qbasic'а невнятны %)

Ответ на: комментарий от buratino

тебе надо весь аут в это оборачивать. это раз. а есть ещё и два, и три :)

да и qbasic никаких проблем нет:

PRINT "test"
qbasic /run test.bas > test.txt
type test.txt
test

bormant ★★★★★
()
Ответ на: комментарий от MERZaveC

Вот это интересно, примерно как такое делается?

Ты скрипты писал когда-либо?
Или вообще программы?
Кладешь рядом с главным исполняемым файлом (в твоем случае твоя главная страница, открываемая в браузере) скомпилированный бинарник другой софтины, принимающий при запуске ключи. В своей программе в нужном месте пишешь запуск этого бинарника с нужными ключами (start bin.exe -key, образно), ждешь какое-то время, пока он прорешает задачу и положит рядом с собой ответ в промежуточном файле, парсишь этот файл и показываешь результат в окошке.

Как-то так.
В джаваскрипте не силен, но, думаю, реализовать это можно. Придется только чуть допилить исходники основной программы, подвесив старт расчетов сразу на запуск программы, а вводимые параметры на ключи.

Zhbert ★★★★★
()
Ответ на: комментарий от MERZaveC

Прошу простить мою неграмотность, но тут имеется ввиду «Я Плакал»?

язык программирования.

emulek
()

Не пытайся понять код. Лучше напиши транслятор qbasic в какой либо javascript.

anonymous
()
Ответ на: комментарий от anonymous

Не пытайся понять код. Лучше напиши транслятор qbasic в какой либо javascript.

Я и есть транслятор, просто, хорошо маскируюсь О:)

А можешь вообще извратиться, как тут сделано:

«На этой странице обнаружена циклическая переадресация»
Могу, но переадресация не решает задачу :Ъ

MERZaveC
() автор топика
Ответ на: комментарий от Zhbert

Придется только чуть допилить исходники основной программы, подвесив старт расчетов сразу на запуск программы, а вводимые параметры на ключи.

Полагаю, в моём случае, всетаки не подходящий это путь..
Например, по причине того, что из 5 страниц кода, я бы не сказал, что половина (потому что больше) занимается вводом параметров, т.е. зачем запиливать в исходник их (параметров) разборку, когда проще выпилить их обработку %)

MERZaveC
() автор топика
Ответ на: комментарий от rezedent12

А вообще, используй gambas, будет легче портировать.

Вот это тоже попробую. Спасибо :)

MERZaveC
() автор топика

Переписывая сей адъ, ты перенесешь все имеющиеся ошибки, добавишь свои, а по читаемости и поддерживаемости это будет немногим лучше чем было. Найди документ регламентирующий варку этого клейстера и сделай с нуля.

Deleted
()
Ответ на: комментарий от Deleted

Найди документ регламентирующий варку этого клейстера и сделай с нуля.

Сильно сомневаюсь, что мне подвластна реализация с ноля «интегрирования дифференциального уравнения химической кинетики методом Рунге-Кутта 4-го порядка» и тдтп =)

Судя по документу, сей адъ писали на ЭВМ HP-86B, что кагбэ намекает на не первую переписку, и что, кстати, наверно пояснило мне, отчасти, некоторые безумные конструкции в коде %)
Например, сегодня меня смущал смысл такого цикла:

...
1410 J1 = J: J2 = J
1415 FOR J = J1 TO J2
1420 A = X(J - 1) - X(J)
1425 B = X(J - 1) - X(J + 1)
1430 C = A - B
1435 T1 = Y(J - 1) / (A * B)
1440 T2 = Y(J) / (A * C)
1445 T3 = -(Y(J + 1) / (B * C))
1450 A = T1 + T2 + T3
1455 B = -((X(J) + X(J + 1)) * T1) - (X(J - 1) + X(J + 1)) * T2 - (X(J - 1) + X(J)) * T3
1460 C = X(J) * X(J + 1) * T1 + X(J - 1) * X(J + 1) * T2 + X(J - 1) * X(J) * T3
1465 P1 = J3
1470 ON P1 GOTO 1395, 1365, 1380
1472 NEXT J
1475 RETURN
Переменная J3 (т.е. и P1) принимает только 3 значения (1,2,3) и в 2х случаях GOTO приводит к RETURN (через пару вычислений), а в 3-ем обратно на 1410

MERZaveC
() автор топика
Ответ на: комментарий от Deleted

зачем

Могу предположить, что вместо комментария для перехода по ON P1. Либо урезали цикл до одного прохода несколько позже, чем написан основной алгоритм.

А может где-то притаился GOTO 1415, или того хуже, A=1415: GOTO A. С такой лапшой без специальной проверки исключать подобного нельзя.

bormant ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.