Page 1 of 33

Мне нужна помощь с изучением синтаксиса.

Posted: Sun Nov 16, 2014 2:07 pm
by Parki
Мне нужна помощь с изучением синтаксиса.
Я был бы признателен если бы мне кто-нибудь помог мне с этим.
В свою очередь я постараюсь как можно меньше тратить ваше время.
Я могу связываться с вами любым способом, но удобнее было бы в скайпе(id: parkidesu).
Звонить не буду. Просто мне там удобно отправлять сообщения.
-
За знаки препинания не отвечаю. Спасибо.

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Sun Nov 16, 2014 2:11 pm
by Mr. Kibernetik
Добрый день!

Рекомендую ознакомиться с уроками по программированию на smart BASIC: viewforum.php?f=32

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Sun Nov 16, 2014 3:22 pm
by Parki
-
button "1" title "a$" at 10,10 size 50,50
if button_pressed("1") then notes midi 0,9,60,127
-
Почему-то не работает.
-
Учебные материалы нуждаются в доработке, поскольку затрагивают основы, но не весь синтаксис,
а со встроенной справкой работать сложно.
Если бы вы поможете мне в изучении синтаксиса, я возьму доработку на себя.
Что именно я хочу сделать:
1. Изучить синтаксис.
2. Писать референс посредством дачи моих контактов с тем, что они могут обращаться ко мне по любым вопросам внутри синтаксиса.
И улучшать его до тех пор пока не будет надобности задавать мне вопросы лично.

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Sun Nov 16, 2014 4:05 pm
by Mr. Kibernetik
Parki wrote:Почему-то не работает.
Давайте разберем подробно.
1) В какой именно команде что именно не работает?
2) Вы можете привести весь код своей программы, в которой используются эти строки?

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Wed Nov 19, 2014 2:51 pm
by Parki
Работает.
NOTES MIDI 3,9,60,127
Не работает.
BUTTON "1" TITLE "A$" AT 100,10 SIZE 50,50
IF button_pressed("1") THEN
NOTES MIDI 3,9,60,127
ENDIF
-
Почему?

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Wed Nov 19, 2014 3:02 pm
by Mr. Kibernetik
Parki wrote:Не работает.
BUTTON "1" TITLE "A$" AT 100,10 SIZE 50,50
IF button_pressed("1") THEN
NOTES MIDI 3,9,60,127
ENDIF
-
Почему?
Программа выполняется построчно.
При достижении последней строки выполнение программы завершается.
Если работа программы завершена, то никакие действия уже выполняться не будут.

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

IF x THEN
...
ENDIF

а можно записывать в одну строку как:

IF x THEN ...

Таким образом программа может выглядеть так:

Code: Select all

BUTTON "1" TITLE "A$" AT 100,10 SIZE 50,50
loop: IF button_pressed("1") THEN NOTES MIDI 3,9,60,127
goto loop

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Wed Nov 19, 2014 3:03 pm
by Фант
Parki wrote:Работает.
NOTES MIDI 3,9,60,127
Не работает.
BUTTON "1" TITLE "A$" AT 100,10 SIZE 50,50
IF button_pressed("1") THEN
NOTES MIDI 3,9,60,127
ENDIF
-
Почему?
Думаю что у Вас просто кнопка не работает...кнопку заключите в цикл

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Thu Dec 04, 2014 3:11 pm
by Parki
rem Я же не вызывал метод. Почему массив создан?
def linedim (a$, a)
dim b(a)
for c = 0 to a - 1
b(c) = c + 1
next c
end def

debug pause

'
def linedim (a$, a)
dim a$(a) rem "переменная уже определена другого типа"
for c = 0 to a - 1
b(c) = c + 1
next c
end def

debug pause
'Надо чтобы можно было вводить имя массива и его размер

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Thu Dec 04, 2014 4:11 pm
by Mr. Kibernetik
Parki wrote:rem Я же не вызывал метод. Почему массив создан?
def linedim (a$, a)
dim b(a)
for c = 0 to a - 1
b(c) = c + 1
next c
end def

debug pause

'
def linedim (a$, a)
dim a$(a) rem "переменная уже определена другого типа"
for c = 0 to a - 1
b(c) = c + 1
next c
end def

debug pause
'Надо чтобы можно было вводить имя массива и его размер
В smart BASIC переменные любой функции доступны в любой момент, в том числе еще до вызова этой функции. Это очень важная особенность smart BASIC. Она позволяет сначала заполнить переменные функции извне этой функции, а потом ее вызвать. Или сначала вызвать функцию, а потом извне получить значения любых переменных внутри этой функции. Такая "свободная" работа с любыми переменными любой функции из любой другой функции является уникальной особенностью smart BASIC. Подробнее смотрите в документации, раздел "Основы", подраздел "Зональные переменные".

Code: Select all

def linedim (a$, a)
dim a$(a)
В первой строке в функцию передается строковая переменная A$, а во второй строке определяется тоже переменная A$, но уже в виде массива. Это ошибка.

Re: Мне нужна помощь с изучением синтаксиса.

Posted: Thu Dec 04, 2014 4:24 pm
by Parki
rem как написать функцию возвращающую одномерный массив по определённому имени и размеру
def linedim (a$, a)
dim a$(a)
return a$
retust a
end def

rem так и не понял как это надо сделать