QBASIC: выполнение строки GOTO, если условие не выполнено

Я конвертирую код GW-BASIC в C# и имею очень ограниченный опыт работы с языками BASIC в целом. Я пытаюсь понять, как ЕСЛИ... ПОТОМ...GOTO заявления ведут себя. Например, у меня есть следующее утверждение:

85 IF M(3,1)>M(2,1) THEN 95
90 M(3,1)=M(3,1)+P2
95 Z1=R1*(90.567-41.685/M(2,3))

У меня такой вопрос: если условие в строке 85 не выполнено, будет ли он по-прежнему выполнять код в строке 95 или оно будет пропущено?

Любое направление будет с благодарностью...

4 ответа

Решение

Да, независимо от оценки логического условия в строке 85, строка 95 будет выполнена НО, если 85 оценивается как истина, тогда строка 90 будет перескакивать и, следовательно, не будет выполняться.

Он выполнит код в строке 95. Оператор then заставит программу перейти к строке 95 и выполнить эту строку.

Это эквивалентно этому:

if ( M[3,1] <= M[2,1] ) {
   M[3,1] = M[3,1] + P2
}
Z1=R1*(90.567-41.685/M[2,3])

Очевидно, фрагмент кода имеет псевдо-структуру IF/ELSE, логика выглядит так:

Если условие строки 85 не выполняется, то QBasic продолжается с 90, а затем 95. Если условие строки 85 выполняется, то QBasic продолжается с 95 и вперед.

THEN 95 коротка для THEN GOTO 95, который перемещает указатель выполнения в строку 95.

REMLINE.BAS - это программа для удаления номеров строк из основных программ Microsoft. Он удаляет только те номера строк, которые не являются объектом одного из следующих операторов: GOSUB, RETURN, GOTO, THEN, ELSE, RESUME, RESTORE или RUN.

BaCon и BCX могут превратить ваш бейсик в C.

Другие вопросы по тегам