Для чего # и: используются в Qbasic?

#legacy-code #qbasic

#устаревший код #qbasic

Вопрос:

У меня есть устаревший код, выполняющий математические вычисления. Сообщается, что он написан на QBasic и успешно выполняется под управлением VB6. Я планирую написать код на более новом языке / платформе. Для чего я должен сначала поработать в обратном направлении и составить подробный алгоритм из существующего кода.

Проблема в том, что я не могу понять синтаксис нескольких строк:

 Dim a(1 to 200) as Double
Dim b as Double
Dim f(1 to 200) as Double
Dim g(1 to 200) as Double

For i = 1 to N
 a(i) = b: a(i N) = c
 f(i) = 1#: g(i) = 0#
 f(i N) = 0#: g(i N) = 1#
Next i
  

Основываясь на моей работе с VB5 9-летней давности, я предполагаю, что a, f и g — это двойные массивы, проиндексированные от 1 до 200. Тем не менее, я полностью запутался в этом использовании # и: вместе внутри тела цикла for.

Комментарии:

1. Интересно, стоит ли беспокоиться, что единственными непостоянными правыми частями являются b и c , которые нигде не инициализированы (и, следовательно, равны 0).

2. Символ : разделяет базовые операторы.

Ответ №1:

: это символ продолжения строки, он позволяет вам связать несколько операторов в одной строке. a(i) = b: a(i N) = c эквивалентно:

 a(i)=b
a(i N)=c
  

# является спецификатором типа. Это указывает, что число, за которым оно следует, должно обрабатываться как double.

Комментарии:

1. Большое спасибо Blindy и sidran32!

2. Пожалуйста, не забудьте проголосовать за полезные ответы и отметить один из них как решение. Спасибо, и всегда пожалуйста. 🙂

Ответ №2:

Я некоторое время не программировал на QBasic, но я много занимался в старших классах. Символ # указывает на определенный тип данных. Он предназначен для обозначения значения RHS как числа с плавающей запятой с двойной точностью (аналогично тому, как в C используется значение 1.0f, чтобы сделать 1.0 с плавающей запятой одинарной точности). Символ двоеточия также похож на точку с запятой в C, где он разделяет различные команды. Например:

 a(i) = b: a(i N) = c
  

является ли в C:

 a[i] = b; a[i N] = c;