Инструменты пользователя

Инструменты сайта


Боковая панель

help:coding

Это старая версия документа.


Назад: Выражения

Программный код

  • В QSP нет таких разделителей команд, как ';' в Паскале. Команды разделяются переносом строки или знаком '&':
    i=0
    j=0
    равнозначно
    i=0 & j=0
  • Перед интерпретированием строки удаляются пробелы и символы табуляции в её начале, поэтому можно форматировать код:
    if яблоки=0 :
        ADDOBJ 'Яблоко'
        яблоки=1
    end
    
  • Иногда бывает удобно разбить строку на несколько. Чтобы следующая строка считалась частью текущей, нужно в конце строки дописать ' _' (пробел и символ подчёркивания):
    if a<5 and n-b>4+5+h/7*2 or t=4: p 'TTTTTTTTT' & cla & $f='Text Variable' & goto 'FFFF'
    
    равнозначно
    if a<5 and n-b> _
        4+5+h/7*2 or  _
        t=4: p 'TTTTTTTTT' _
      & cla & $f='Text Variable' _
      & goto 'FFFF'
    
    • Группа строк, разделённых " _", считается одной строкой (сообщения об ошибках также выводятся с учётом того, что это одна строка).
    • После OR стоит не один, а два пробела - один пробел расходуется на " _" и получилось бы "ort=4" вмето "or t=4".
      • Исправлено: в более новых версиях (Quest Navigator, возможно даже в AeorQSP) пробел сохраняется.

Комментарии

Для пояснений в коде удобно использовать комментарии, которые игнорируются интерпретатором (плеером):

  !Однострочный комментарий
  яблоки = 0
!'Многострочный
комментарий'
яблоки = 1
  сыр = 5 &  ! А здесь"комментарий начинается
  в той же строке, но" заканчивается 'сильно
  позже'. Во всём виноваты {кавычки и скобки
  }Кстати:
  яблоки=0
 !'Комментарии рекомендуется писать всё-таки
в отдельных строках, а не как с "сыром"'

Примечание: при выводе ошибок многострочные комментарии считаются интерпретатором за одну строку.

Операторы и функции

Оператор - ключевое слово, выполняющее какое-либо действие. Оператор может иметь аргументы (параметры), которые задаются выражениями. Операторы не возвращают результат выполнения.

!'Общий вид вызова оператора
    имя_оператора аргумент1, аргумент2, ...
или
    имя_оператора (аргумент1, аргумент2, ...)
'
!Примеры вызовов операторов:
ADDOBJ 'ключ','pics/key.png'
ADDOBJ ('ключ','pics/key.png')
PL ('текст')
CLEAR()

Функция - почти тоже, что и оператор, но функция возвращает значение. При количестве аргументов более одного скобки обязательны.

!Примеры вызовов функций:
X=MAX(1,2,4)
A=RAND 4
B=COUNTOBJ
pl str(43)
pl $str(43)
!Последние два выражения эквивалентны

Примечание: при использовании функций возвращающих текстовое значение настоятельно рекомендуется приписывать перед именем функции символ '$' для улучшения читаемости кода.

Базовые функции

Это те функции, которые я пока никуда не пристроил. Базовые функции языка QSP CURLOC - возвращает название текущей локации. RAND([#выражение 1],[#выражение 2]) - возвращает случайное число между числами [#выражение 1] и [#выражение 2]. Параметр [#выражение 2] может отсутствовать, при этом он принимается равным 0. RND - возвращает случайное значение от 1 до 1000.

MAX([выражение 1],[выражение 2], …) - возвращает максимальное из значений выражений-аргументов. Если передан один аргумент, то считается, что указано имя массива - в этом случае поиск максимального элемента происходит среди строковых (если название массива указано со знаком "$") или среди числовых значений элементов массива. Например: MAX(1,2,5,2,0) - вернёт 5 MAX(a,b,c) - вернёт максимальное из значений переменных MAX('aa','ab','zz') - вернёт 'zz' MAX('a') - вернёт максимальное из числовых значений элементов массива "A" MAX('$b') - вернёт максимальное из строковых значений элементов массива "B"

MIN([выражение 1],[выражение 2], …) - возвращает минимальное из значений выражений-аргументов. Если передан один аргумент, то считается, что указано имя массива - в этом случае поиск минимального элемента происходит среди строковых (если название массива указано со знаком "$") или среди числовых значений элементов массива. IIF([#выражение],[выражение_да],[выражение_нет]) - возвращает значение выражения [выражение_да], если [#выражение] верно, иначе значение выражения [выражение_нет].

QSPVER - возвращает версию интерпретатора в формате "X.Y.Z".


Вперёд:

help/coding.1382089904.txt.gz · Последние изменения: 2013/10/18 13:51 (внешнее изменение)