Чего не хватает в стандарте на Бейсик?

Mar 12, 2015 18:40

Некоторые примеры:

-----------------------------
DIM A(10,30)

FOR (1:10:1,1:30:1)
A(@1,@2)=@1+@2
NEXT

эквивалентно:

DIM A(10,30)

FOR I=1 TO 10 STEP 1
FOR J=1 TO 30 STEP 1
A(I,J)=I+J
NEXT I,J

-----------------------------

A=1:B=2:R$=""
MUT(A:C,B:D;P:R):GOSUB PROG: MUT 'сбрасывает привязку

...

PROG
P$="СУММА ЧИСЕЛ "+С+" И "+D+"РАВНА: ",C+D
RETURN

Результат:
A=1
B=2
C=1
D=2
P$=R$ = "СУММА ЧИСЕЛ 1 и 2 РАВНА: 3"
привязка сброшена.

------------------------------

MUT относится к любым вызовам GOSUB вплоть до замены новым MUT или сбросом привязок по оператору MUT без параметров. Т.е. семантику MUT лучше всего описывать словами: передать, принять и подставить(когда речь идет о массиве), а не с помощью терминов передача параметров по ссылке или по значению т.к. речь не идет ни о каких параметрах. В данном случае передача по ссылке простой переменной не имеет никакого смысла(достаточно указать эту же переменную в списке принятых), а массивы в любом случае передаются и принимаются по ссылке Для передачи массива по значению понадобится копирование, котрое лучше обозначить прямым присваиванием массивов перед вызовом GOSUB, которое есть во всех продвинутых версиях Бейсика, например в True Basic - ANSI стандарте на этот язык.
--------------------

* Разумеется идеология GOTO никоим образом несовместима с WHILE,LOOP,CASE и прочими аналогичными конструкциями. Так же как она несовместима с вложенными друг в друга операторами IF. Поэтому из Бейсика данные возможности необходимо исключить чуть более, чем полностью. Критикуя GOTO Дейкстра слукавил, он сделал вид будто не понимает, что любое обращение к этому оператору обладает вполне определенной семантикой, вдалбливание которой в подкорку и есть главный педагогический аспект в преподавании Бейсика.

Информатика, basic

Previous post Next post
Up