VisualBasic-таки vs. GamBAS v.1.0?

Все о программировании под *nix
drvtiny
Заглянувший
Сообщения: 37
Зарегистрирован: 25 сен 2004, 11:33
Откуда: Москва

VisualBasic-таки vs. GamBAS v.1.0?

Сообщение drvtiny »

Гм, буду краток до беспредела: Gambas является единственной работоспособной и в целом вполне полноценной альтернативой VBA или VisualStudio-VB.NET. Всё бы замечателно, я так и вовсе просто в восторге от Gambas'а, но... создаётся откровенно неблагоприятное с точки зрения перспектив моего освоения Linux в качестве рабочего места программиста на BASIC'е (я вообще-то программы расчёта аппаратов хим. прома и различных "деталей машин" пишу, так что использование "безграничных возможностей" таких языков, как Kylix(Pascal) или C++ для меня как-то не очень принципиально) из-за одной досадной мелочи: Gambas не умеет создавать матрицы (т.е любые массивы с кол-вом размерностей >1) с динамическими границами. Т.е нельзя, к примеру, создавать в процедуре динамический массив с кол-вом столбцов и строк, задающимися в качестве входных параметров процедуры (пример примитвный и нежизненный, но мысль позволяет передать). Может, я чего не понимаю? Подскажите, как всё-таки обстоит ситуация с поддержкой динамических массивов в Gambas'е, если вы совершенно неожиданным образом сталкивались с subject'ом данного топика
Мыслите Масштабно!

[CWeR]
Заглянувший
Сообщения: 29
Зарегистрирован: 20 дек 2004, 19:53
Откуда: Минск
Контактная информация:

Сообщение [CWeR] »

а массив указателей там тоже создавать нельзя?
Может лучше взять что-нибудь более вменяемое?
С хотябы или Перл какой.
Или надо много работать с гуи? В этом случае вроде tcl/tk советуют.

[CWeR]
Заглянувший
Сообщения: 29
Зарегистрирован: 20 дек 2004, 19:53
Откуда: Минск
Контактная информация:

Сообщение [CWeR] »

ещё в MSDN написано:
MSDN писал(а): To declare a single-dimensional array variable

In your declaration, add one pair of parentheses after the variable name, as in the following example:
Dim MySingleArray() As Integer
To declare a multidimensional array variable

In your declaration, add one pair of parentheses after the variable name and place commas inside the parentheses to separate the dimensions, as in the following example:
Dim My4DArray(,,,) As Short ' Four-dimensional array.
To declare a jagged array variable

In your declaration, add as many pairs of parentheses after the variable name as there are levels of nested arrays, as in the following example:
Dim MyJaggedArray()()() As Byte ' Array of arrays of Byte arrays.
А на http://www.binara.com/gambas-wiki/stati ... ation.html
есть пример
DIM Matrix[3, 3] AS FLOAT
судя по всему это и есть твоя матрица.

drvtiny
Заглянувший
Сообщения: 37
Зарегистрирован: 25 сен 2004, 11:33
Откуда: Москва

Сообщение drvtiny »

В том-то и дело, что размерность матрицы можно задавать только статически, а любая универсальная процедура, работающая с данными, размер которых заранее неизвестен (обработка текстовых строк в алгоритмах поиска образца, к примеру), должна создавать массив динамически (с размерностью, заданной переменными величинами)
Мыслите Масштабно!

[CWeR]
Заглянувший
Сообщения: 29
Зарегистрирован: 20 дек 2004, 19:53
Откуда: Минск
Контактная информация:

Сообщение [CWeR] »

drvtiny, я в общем совсем не спец в области ВБ, но могу посоветовать создать класс, который будет тебе выдавать по двум индексам элемент матрицы (ну и сохранять их). А хранить их можно в однмерном динамическом массиве. Вполне стандартная методика, думаю на ВБ она тоже реализуема.

drvtiny
Заглянувший
Сообщения: 37
Зарегистрирован: 25 сен 2004, 11:33
Откуда: Москва

Сообщение drvtiny »

Да, и если можно, подскажите, где там в Mozille FireFox настраивается кодировка отправляемых сообщений (это я из моей любимой Oper'ы пишу) Предыдущее сообщение очевидно по каким-то загадочным причинам в cp1251 ушло...
Мыслите Масштабно!

[CWeR]
Заглянувший
Сообщения: 29
Зарегистрирован: 20 дек 2004, 19:53
Откуда: Минск
Контактная информация:

Сообщение [CWeR] »

понятия "класс" и "объект" используются для сокрытия реализации и объединения данных и кода, и если этим за тебя занимается язык, то это не значит что ты ими не пользуешься :)

drvtiny
Заглянувший
Сообщения: 37
Зарегистрирован: 25 сен 2004, 11:33
Откуда: Москва

Сообщение drvtiny »

Ну во первых я вообще старюсь избегать применения ООП (проектирование класса отнимает порой больше времени, нежели написани основного кода), а во-вторых я в принципе не понимаю при чём тут ООП - то, что Вы предлагаете реализуется написанием подпрограммы (что-нибудь типа SUB doRetMatrixEl(Vector AS Array[]) ) Меня ведь интересует другое - можно ли всё-таки на Gambas'е создавать переменные-массивы с плавающими границами (как в QuickBASIC'е, к примеру) или нельзя. Если всё-таки нельзя, то я и мучаться, совершая всякие обходные манёвры не буду и продолжу писать код исключительно под DOS и Windows.
Мыслите Масштабно!

[CWeR]
Заглянувший
Сообщения: 29
Зарегистрирован: 20 дек 2004, 19:53
Откуда: Минск
Контактная информация:

Сообщение [CWeR] »

я не использовал gambas и мне негде проверить, но если он совместим с VB на столько, на скольок обещает - до ответ Да. Многомерные динамические массивы там создавать можно.
А наличие класса ещё не означает наличие ООП.

Anonymous

Сообщение Anonymous »

drvtiny, попробуй создать модуль, а в нем
public matrix(1 to 5,1 to 5) as integer
или
private /-/-/-/-/-/-/

кстати где можно достать gambas?

Аватара пользователя
Pasha
Неотъемлемая часть форума
Сообщения: 554
Зарегистрирован: 06 окт 2002, 12:39
Откуда: Southampton
Контактная информация:

Сообщение Pasha »

У нас по силлабусу по компьютингу в колледже изучается VB :ass: (хотя я всё равно на С пишу... :P)

В ВижуалВасике это делается оператором ReDim - смотреть в его сторону

Anonymous

Сообщение Anonymous »

Короче, покопался я в этой програмке, сразу приступив к массивам, и вот что я придумал.
---------------------------------------------------
# Gambas Form File 1.0
{ Form1 Form
Move(341,114,400,400)
Text = ("")
Border = Window.Fixed
{ Button1 Button
Move(104,112,96,40)
Text = ("Button1")
}
}
---------------------------------------------------
' Gambas module file
PRIVATE matrix[5,5] AS Integer
PUBLIC SUB mass(znach AS Integer, i AS Integer, j AS Integer )
matrix[i,j]=znach
END

PUBLIC FUNCTION pechat(i AS Integer, j AS Integer) AS Integer

form1.znach=matrix[i,j]

END
---------------------------------------------------
' Gambas class file
PUBLIC znach AS Integer

PUBLIC SUB Button1_Click()
DIM I AS Integer
DIM J AS Integer
FOR I=0 TO 4
FOR J=0 TO 4
znach=Int(Rnd*10)+5
module1.mass(znach,I,J)
NEXT
NEXT
FOR I=0 TO 4
FOR J=0 TO 4
module1.pechat(I,J)
PRINT znach;
NEXT
PRINT
NEXT
END
----------------------------------------------------
Если в VB работал, то разберешся, но это не лучшый вариант, я так думаю, не могли они убрать такую нежную штуку.
пользуйся на здаровье, придумоешь иное напиши на мыло.

HiDDeN
Заглянувший
Сообщения: 16
Зарегистрирован: 20 сен 2004, 00:34
Откуда: Минск
Контактная информация:

Сообщение HiDDeN »

Так тут тоже статичный массив. Где динамика то ?

Ответить