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

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


help:coding

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:coding [2013/12/10 16:51]
admin поменял местами абзацы
help:coding [2024/12/01 10:29] (текущий)
aleks_versus
Строка 1: Строка 1:
 [[help:​expressions|Назад:​ Выражения]] [[help:​expressions|Назад:​ Выражения]]
  
-=====Программный код=====+====== Программный код ​======
  
-  ​Команды выполняются одна за другой, последовательно. +Выполнение кода в плеере ​**QSP** происходит последовательно,​ команда за командой,​ сверху вниз и слева направо
-  Новая команда пишется на следующей строке после предыдущей+ 
-    * Для лучшей читаемости можно разбивать код на части пустыми строками.<sxh qsp>+<sxh qsp> 
 +*pl "​Первая команда"​ 
 +*pl "​Вторая команда"​ 
 +*pl "​Третья команда"​ 
 + 
 +*pl "​Четвёртая команда"​ & *pl "​Пятая команда"​ & *pl "Шестая команда" 
 +</​sxh>​ 
 + 
 +===== Структура команд ===== 
 + 
 +Все команды в **QSP** составляются по общим принципам:​ 
 + 
 +<sxh qsp> 
 +  {оператор} [значение 1], [значение 2], ..., [значение 20] 
 +</​sxh>​ 
 + 
 +Здесь вместо ''​%%{оператор}%%''​ может и должен стоять любой оператор **QSP** из техчто ​перечислены в разделе [[help:​keywords_operator|"​Ключевые слова. Операторы"​]]. Если в команде нет ''​%%{оператор}%%'',​ значит на самом ​деле на этом месте подразумевается **неявный оператор**. 
 + 
 +<sxh qsp> 
 +! здесь используются явные операторы:​ 
 +*pl "​Ехал Грека Через Реку"​ 
 +addobj "​Рак"​ 
 + 
 +! а здесь имеет место неявный оператор: 
 +137 + 294 
 +func('​pow',​ 3, 3) 
 +</​sxh>​ 
 + 
 +В качестве значений ''​%%[значение 1]%%'',​ ''​%%[значение 2]%%'',​ … ,''​%%[значение 20]%%''​ могут выступать строковые или числовые константы,​ переменные,​ значения функций, или целые выражения,​ а число таких значений зависит от назначения оператора. Например, для оператора ''​%%*PL%%''​ может быть указано лишь одно значение, а для оператора ''​%%ADDOBJ%%''​ от одного до трёх таких значений. Сами значения перечисляются ​через запятую. 
 + 
 +<sxh qsp> 
 +*pl "​Три в кубе это "​+func('​pow',​3,​3)+"​. Да, серьёзно. А ты не верил?"​ 
 +addobj "​Апельсинка", "​img/​orange.png",​ 1 
 +</​sxh>​ 
 + 
 +Если необходимо, то для ​удобства чтения кода значения для операторов можно (но не обязательно) помещать в круглые скобки:​ 
 + 
 +<sxh qsp> 
 +pl("Строка текста"​) 
 +addobj("​Отвёртка","​img/​screwdriver.png",​3) 
 +</​sxh>​ 
 + 
 +**Внимание!** В одной команде не может быть более одного оператора! Равно так же не может быть команды совсем без оператора. Если в вашей команде нет оператора,​ то вы имеете ​дело с **неявным оператором**
 + 
 +Операция присваивания предполагает, ​что перед именем переменной стоит оператор ''​%%SET%%'',​ хотя обычно этот оператор опускают, то есть его тоже ​можно ​назвать "​неявным":​ 
 + 
 +<sxh qsp> 
 +[имя_переменной] = [значение] 
 +</​sxh>​ 
 + 
 +Здесь ''​%%=%%''​ — это операция присваивания. Не путайте с операцией сравнения **равно**. 
 + 
 +===== Порядок ​записи команд ===== 
 + 
 +Вот несколько правил и рекомендаций для корректного написания кода: 
 + 
 +  * Каждую отдельную ​команду нужно записывать в отдельной ​строке. 
 +  * Отступы (пробелы и символы табуляцииперед командой и после неё игнорируются плеером,​ поэтому вы можете ставить их в нужном количестве для удобства чтения кода: <sxh qsp> 
 +*p "<​table width=240>"​ 
 +  *p "<​tr>"​ 
 +    *p "<​td>​Имя:</​td>"​ 
 +    *p "<​td>"​ 
 +      *p $name 
 +    *p "</​td>"​ 
 +  *p "</​tr>"​ 
 +  *p "<​tr>"​ 
 +    *p "<​td>​возраст:</​td>"​ 
 +    *p "<​td>"​ 
 +      *p age 
 +    *p "</​td>"​ 
 +  *p "</​tr>"​ 
 +*p "</​table>"​ 
 +</​sxh>​ 
 +  * Пустые ​строки так же игнорируются плеером, поэтому для лучшей читаемости кода вы можете размещать их между командами: ​<sxh qsp>
 яблоко = 1 яблоко = 1
 груша = 1 груша = 1
- 
 *pl '​Яблок'​ + яблоко *pl '​Яблок'​ + яблоко
 *pl '​Груш'​ + груша *pl '​Груш'​ + груша
 </​sxh>​ </​sxh>​
-  * При необходимости можно написать несколько команд в одну строку. +  * При необходимости можно написать несколько команд в одну строку. ​При этом в качестве разделителя ​команд ​служит символ "​**&​**"​ (не путайте с операцией объединения строк): <sxh qsp> 
-    * Между командами ставится знак '**&**'+яблоко+=1 ​& *pl "У меня есть <<​яблоко>>​ яблок." & яблоко_взял=1 
-    * //​Пример:​//<sxh qsp> +</sxh> Без необходимости так делать не рекомендуется,​ поскольку это ухудшает читаемость кода, а так же повышает вероятность допустить [[glossary:​bag|баг]]. ​Подобное перечисление команд уместно в гиперссылках: <sxh qsp> 
-'<a href="​EXEC:​ яблоко += 1 & GT $CURLOC">​яблоко</​a>'​ +*pl '<a href="​EXEC:​ яблоко += 1 & GT $CURLOC">​яблоко</​a>'​ 
-ри нажатии на ссылку выполнится код:+</​sxh>​ В данном случае при нажатии на ссылку выполнится код: ​<sxh qsp>
 яблоко += 1 яблоко += 1
-GT $CURLOC</​sxh>​ +GT $CURLOC 
-  * Внутреннюю часть многострочных операторов рекомендуется сдвигать вправо 2-4 пробелами. +</​sxh>​ 
-    * Это никак не влияет на выполнение,​ но делает код более читаемым:<​sxh qsp>+  * Внутреннюю часть многострочных операторов рекомендуется сдвигать вправо 2-4 пробелами ​(или одним символом табуляции). Это никак не влияет на выполнение,​ но делает код более читаемым:​ <sxh qsp>
 IF яблоки=0 : IF яблоки=0 :
-  ​ADDOBJ '​Яблоко'​ +    ​ADDOBJ '​Яблоко'​ 
-  яблоки = 1+    яблоки = 1
 END END
 </​sxh>​ </​sxh>​
-    * Без необходимости делать так __не__ рекомендуется,​ так как: +  ​* Крайне редко для повышения читаемости кода приходится разбивать строку на несколько. ​Такая строка хотя и будет ​в коде разбита на части, но будет восприниматься плееромкак единая ​(сообщения об ошибках будут выводится с учётом того, что это одна строка). Чтобы следующая строка считалась частью текущей,​ нужно в конце ​текущей ​строки дописать ''​%% ​_%%'' (пробел и символ подчёркивания):​ <sxh qsp>
-      * Код может стать трудночитаемым +
-      * Повышается вероятность допустить [[баг|баг]]. +
-  ​* Крайне редко для повышения читаемости кода приходится разбивать строку на несколько. +
-    * Вместо разбиения строки рекомендуется видоизменить код ​так, чтобы это не требовалось. +
-    * Строка будет ​разбита ​в коде ​на части, но будет восприниматься ​интерпретатором как единая. ​ +
-    * Чтобы следующая строка считалась частью текущей,​ нужно в конце строки дописать ​**' _'** (пробел и символ подчёркивания):<​sxh qsp>+
 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'​
 </​sxh>​ равнозначно <sxh qsp> </​sxh>​ равнозначно <sxh qsp>
 if a<5 and _ if a<5 and _
-    ​n-b>​4+5+h/​7*2 or  +  ​n-b>​4+5+h/​7*2 or _ 
-    t=4: p '​TTTTTTTTT'​ _ +  t=4: p '​TTTTTTTTT'​ _ 
-  & cla & $f='​Text Variable'​ _ +& cla & $f='​Text Variable'​ _ 
-  & goto '​FFFF'​+& goto '​FFFF'​ 
 +</​sxh>​ Вместо разбиения строки рекомендуется видоизменить код так, чтобы разбивать строку не требовалось. **Обратите внимание.** Сочетание символов ''​%%_%%''​ (пробел и символ подчёркивания) при склеивании строк заменяется на пробел,​ поэтому такой код: <sxh qsp> 
 +t _ 
 +or _ 
 +
 +</​sxh>​ будет эквивалентен такому коду: <sxh qsp> 
 +t or t 
 +</​sxh>​ Разбивать команду на две строки внутри строковой константы нельзя:​ <sxh qsp> 
 +! на экране мы увидим две строки текста,​ а не одну: 
 +*pl "​Это строка,​ которую я хочу разбить _ 
 +на две строки кода, но при выводе видеть одну строку"​
 </​sxh>​ </​sxh>​
-    * Группа строк, разделённых " _", считается **//​одной//​** строкой (сообщения об ошибках также выводятся с учётом того, что это одна строка). 
-    * После **OR** стоит не один, а **//​два//​** пробела - один пробел расходуется на " _", получилось бы "​ort=4"​ вмето "or t=4". 
-      * Исправлено:​ в более новых версиях (//Quest Navigator//,​ возможно даже в //​AeorQSP//​) пробел сохраняется. 
  
-====Комментарии====+===== Комментарии ====
 + 
 +Оператор комментария ''​%%!%%''​ служит для комментирования кода и позволяет оставлять "​заметки на полях",​ которые помогут впоследствии ориентироваться в коде. Всё, что следует за оператором комментария,​ плеер игнорирует. 
 + 
 +Поскольку ''​%%!%%''​ — это оператор (не путайте с операцией **не равно**),​ если вы пишете его на одной строке с другими командами,​ нужно обязательно ставить разделитель ''​%%&​%%''​ (амперсанд) между последней командой и оператором комментария:​
  
-Оператор комментария (символ '​**!**'​) служит для комментирования кода и позволяет оставлять "​заметки на полях",​ которые помогут впоследствии ориентироваться в коде. Комментарии игнорируются интерпретатором. 
 <sxh qsp> <sxh qsp>
-  ​!Однострочный комментарий +это комментарий в отдельной строке 
-  яблоки = 0+яблоки = 0 & ! а это комментарий в строке с командой 
 +</​sxh>​ 
 + 
 +Исключением из этого правила является установка комментария после двоеточия в многострочном условии,​ цикле или действии. В этом случае амперсанд не нужен:​ 
 + 
 +<sxh qsp> 
 +act "​Взять яблоко":​ ! многострочное действие 
 +    addobj "​Яблоко"​ 
 +    яблоко += 1 
 +end 
 +</​sxh>​ 
 + 
 +Так как весь текст после оператора комментария будет проигнорирован плеером,​ комментарий надо ставить всегда самым последним в строке из нескольких команд:​ 
 + 
 +<sxh qsp> 
 +! комментарий. Следующие команды не работают:​ & *pl "​Первая команда"​ & *pl "​вторая команда"​ 
 +*pl "​Эта команда работает"​ & ! а остальные нет & *pl "​вторая команда"​ & *pl "​третья команда"​ 
 +*pl "​Эта команда работает"​ & *pl "и эта работает"​ & ! а последняя нет & *pl "​третья команда"​ 
 +*pl "​Все три"​ & *pl " команды"​ & *pl "​работают"​ & ! а это ​комментарий 
 +</​sxh>​ 
 + 
 +Комментарии бывают двух видов: однострочные и многострочные. 
 + 
 +  ​* Однострочный комментарий начинается от оператора комментария и заканчивается с концом строки:​ <sxh qsp> 
 +! Однострочный комментарий 
 +! и это однострочный комментарий 
 +яблоки = 0 & ! и это однострочный комментарий 
 +</​sxh>​ 
 +  * Многострочный комментарий так же начинается от оператора комментария и заканчивается с концом строки,​ однако при использовании кавычек (''​%%"​ "​%%''​),​ апострофов (''​%%'​ '​%%''​) или фигурных скобок,​ он может захватывать так же и те строки,​ что размещены внутри кавычек,​ апострофов или фигурных скобок:​ <sxh qsp>
 !'​Многострочный !'​Многострочный
-комментарий'​+комментарий ​в апострофах'
 яблоки = 1 яблоки = 1
-  ​сыр = 5 &  ! А здесь"​комментарий начинается +сыр = 5 &  ! А здесь "​комментарий начинается 
-  в той же строке,​ но" заканчивается '​сильно +в той же строке,​ но" заканчивается '​сильно 
-  позже'​. Во всём виноваты {кавычки и скобки +позже'​. Во всём виноваты {кавычки и скобки 
-  }Кстати:​ +} Кстати:​ 
-  яблоки=0 +яблоки = 0 
- ​!'​Комментарии рекомендуется писать всё-таки +!'​Комментарии рекомендуется писать всё-таки 
-в отдельных строках,​ а не как с "​сыром"'​+в отдельных строках,​ а не как ​бутерброд ​с "​сыром"'​
 </​sxh>​ </​sxh>​
  
-**Примечание:** при выводе ошибок многострочные комментарии считаются ​интерпретатором за одну строку.+===== Запись констант ===== 
 + 
 +Под константами в **QSP** подразумеваются конкретные числовые или строковые значения. Конкретный кортеж (запись значений в квадратных скобках) тоже можно назвать константой. В следующем ​примере для операторов ​вывода текста указаны конкретные значения,​ это и есть константы:​ 
 + 
 +<sxh qsp> 
 +! вывод на экран числа 137. Можно назвать это число константой. 
 +*pl 137 
 +! вывод на экран строки текста. Эту строку можно назвать константой 
 +*pl "На окошке крошку-мошку ловко ловит лапой кошка"​ 
 +! выводим на экран кортеж. Кортеж тоже может быть константой 
 +*pl [13, '​unit',​ 37] 
 +</​sxh>​ 
 + 
 +Для записи числовых констант (чисел) используются символы цифр без дополнительных обозначений: 
 + 
 +<sxh qsp> 
 +x = 145 & ! 145 здесь - константа 
 +(137+299*2)/​11-19 & ! целое выражение из числовых ​констант 
 +</​sxh>​ 
 + 
 +Для записи строковых констант (строк) используются символы, отмечающие начало и конец ​такой строковой константы. Можно ​использовать кавычки (''​%%"​ "​%%''​),​ апострофы (''​%%'​ '​%%''​),​ или фигурные скобки (''​%%{ }%%''​):​ 
 + 
 +<sxh qsp> 
 +*pl "​Это строковая константа"​ 
 +*pl 'И это строковая константа'​ 
 +*pl {И даже это} 
 +</​sxh>​ 
 + 
 +Более подробно о правилах записи строк в **QSP** можно почитать в разделе [[help:​strings|"​Строки"​]]. 
 + 
 +Для записи кортежей используются ​квадратные скобки:​ 
 + 
 +<sxh qsp> 
 +*pl ['​это кортеж', '​если он ', "не присвоен ​переменной",​ "​его можно считать константой"​] 
 +</​sxh>​ 
 + 
 +См. также [[howto:​namedconst|"​Именованные константы"​]]. 
 + 
 +===== Операторы и функции ===== 
 + 
 +**Оператор** - ключевое слово (команда) языка **QSP**, выполняющее какое-либо действие. Оператор может иметь параметры (аргументы), ​которые задаются выражениями. Операторы не возвращают результат выполнения.
  
-====Операторы и функции==== 
-**Оператор** - ключевое слово (команда языка QSP), выполняющее какое-либо действие. Оператор может иметь параметры (аргументы),​ которые задаются выражениями. Операторы не возвращают результат выполнения.\\ ​ 
 Как правило,​ операторы меняют состояние игры. Как правило,​ операторы меняют состояние игры.
 +
 +Каждая команда **QSP** содержит один оператор и его аргументы (параметры). Если вы написали команду без оператора,​ то в ней обязательно присутствует **неявный оператор**.
  
 <sxh qsp> <sxh qsp>
-!'​Общий вид вызова оператора 
-    имя_оператора аргумент1,​ аргумент2,​ ... 
-или 
-    имя_оператора (аргумент1,​ аргумент2,​ ...) 
-' 
 !Примеры вызовов операторов:​ !Примеры вызовов операторов:​
 ADDOBJ '​ключ','​pics/​key.png'​ ADDOBJ '​ключ','​pics/​key.png'​
 ADDOBJ ('​ключ','​pics/​key.png'​) ADDOBJ ('​ключ','​pics/​key.png'​)
-PL ('​текст'​)+PL('​текст'​)
 CLEAR() CLEAR()
 </​sxh>​ </​sxh>​
  
-**Функция** - ключевое слово, которое используется для того, чтобы что-нибудь узнать. Например,​ сколько предметов игрок несёт в рюкзаке. Для этого, в коде мы указываем функцию,​ и необходимые для расчёта параметры (аргументы функции). Результат,​ "​посчитанный"​ этой функцией,​ подставляется на её место в выражении. На языке программистов это ​называется "функция была вызвана и вернула значение"​.\\  +**Функция** - ключевое слово, которое используется для того, чтобы ​получить какое-либо значение. Например,​ сколько предметов игрок несёт в рюкзаке. Для этого, в коде мы указываем функцию,​ и необходимые для расчёта параметры (аргументы функции). Результат,​ "​посчитанный"​ этой функцией,​ подставляется на её место в **выражении**. На языке программистов это звучит так: **"​мы ​вызвали функцию, и функция ​вернула ​нам ​значение"​**. 
-Как правило,​ при вызове функции состояние игры не меняется.+ 
 +Как правило,​ при вызове функции состояние игры не меняется. ​Примеры вызовов функций:​
  
 <sxh qsp> <sxh qsp>
-!Примеры вызовов функций:​ +maximum ​= MAX(1, 2, 4) 
-= MAX(1, 2, 4) +случайное_число ​= RAND(4) 
-= RAND(4) +предметов_в_рюкзаке ​= COUNTOBJ ​
-= COUNTOBJ ​ +
-PL STR(43)+
 PL $STR(43) PL $STR(43)
-!Последние два выражения эквивалентны 
 </​sxh>​ </​sxh>​
  
-**Примечание:** при использовании функций возвращающих текстовое значение настоятельно рекомендуется приписывать перед именем ​функции символ '​**$**'​ для улучшения читаемости кода.+В одной команде может быть вызвано несколько функций:
  
-**Примечание:** Максимальное количество аргументов равно **10**+<sxh qsp> 
 +*pl "​Случайный предмет: "​+$getobj(rand(1,​countobj)) 
 +bcolor = rgb(func('​hex_in_dec','​ff'​),​func('​hex_in_dec','​34'​),​func('​hex_in_dec','​67'​)) 
 +</​sxh>​
  
-====Базовые функции====+При использовании функций,​ возвращающих текстовое значение,​ настоятельно рекомендуется прописывать перед именем функции ​символ ''​%%$%%''​ для улучшения читаемости кода.
  
-  ​* **QSPVER** - возвращает версию библиотеки интерпретатора в формате "X.Y.Z". +Максимальное число аргументов для операторов и функций в **QSP**: 20. 
-  * **CURLOC** - возвращает название текущей локации. + 
-  ​* ​Математические функции +===== Базовые функции ===== 
-    * **RAND(**//[#выр1]//**,**//[#выр2]//**)** - возвращает случайное число между числами ​//[#выр]// и //[#выр2]//.  + 
-      * Параметр ​//[#выр2]// ​может отсутствовать, ​при этом ​он принимается ​равным 0. +  ​''​%%$QSPVER%%'' ​- возвращает версию библиотеки ​плеера в формате "X.Y.Z Player"​. Например, классический плеер версии 5.9.0. возвращает значение "5.9.0 (classic)",​ а qSpider просто "​5.9.0"​. Пример использования:​ <sxh qsp> 
-        * В более поздних версиях библиотеки //[#выр2]// по умолчанию принимается ​за 1. +if $QSPVER<'​5.9.0':​ 
-      //Примеры:​//<sxh qsp> +*pl "​Ваша версия плеера не подходит для данной игры. Установите плеер версии 5.9.0."​ 
-RAND(1,4) &! вернёт случайное значение от 1 до 4 +end 
-RAND(4,1) &! вернёт случайное значение от 1 до 4 +</​sxh>​ Так же данная функция может ​возвращать платформу, на которой запущена игра, если указать аргументом значение "platform": <sxh qsp> 
-RAND(1000) &! вернёт случайное значение от 0(1до 1000 +$QSPVER('​platform'​) 
-RAND 1000 &! вернёт случайное значение от 0(1) до 1000</​sxh>​ +</​sxh>​ 
-    * **RND** - возвращает случайное значение от 1 до 1000. +  * ''​%%$CURLOC%%'' ​- возвращает название текущей локации. 
-    * **MAX(**//[выр1]//**,**//[выр2]//**,** ...**)** - возвращает максимальное из значений выражений-аргументов. + 
-      * Если передан один аргумент,​ то считается,​ что указано имя массива+==== Математические функции ​==== 
-      * //​Примеры://<sxh qsp>+ 
 +  ​''​RAND([#​выр1],​[#​выр2],​[#​мода])'' ​- возвращает случайное число между числами ​''​[#выр]'' ​и ''​[#выр2]''​
 +    * Параметр ​''​[#мода]''​ позволяет указать число, которое должно выпадать ​более часточем остальные. При этом ​распределение частоты выпадения будет плавно изменяться для ​всех остальных чиселПодробнее о распределении читайте ​в статье [[howto:​randomize|Третий параметр RAND]]. 
 +    * Если 3й параметр не указан,​ то функция возвращает случайное число в заданном диапазоне с равномерным/​равновероятным распределением чисел. 
 +    * Параметр ''​[#выр2]''​ может отсутствовать, при этом он принимается ​равным единице (**''​1''​**)
 +    * Примеры:​ <sxh qsp> 
 +RAND(1,4) & ! вернёт случайное значение от 1 до 4 
 +RAND(4,1) & ! вернёт случайное значение от 1 до 4 
 +RAND(1000) & ! вернёт случайное значение от 1 до 1000 
 +RAND 1000 & ! вернёт случайное значение от 1 до 1000 
 + 
 +x = RAND(1, 1000, 500) & ! чаще будет выпадать 500 
 +x = RAND(1, 1000, 1) & ! чаще будет выпадать 1 
 +x = RAND(1, 1000, 1000) & ! чаще будет выпадать 1000 
 +x = RAND(-1000, ​0, -500) & ! чаще будет выпадать -500 
 +x = RAND(1, 1000, 5000& ! чаще будет выпадать ​1000 
 +x = RAND(-1000, -100, -5000) & ! чаще будет выпадать -1000 
 +</​sxh>​ 
 +  ''​RND'' ​- возвращает случайное значение от 1 до 1000. 
 +  ''​MAX([выр1],​[выр2],​ ...)'' ​- возвращает максимальное из значений выражений-аргументов. Если передан один аргумент,​ то считается,​ что указано имя массива:​ <sxh qsp>
 MAX(1,​2,​5,​2,​0) &! вернёт 5 MAX(1,​2,​5,​2,​0) &! вернёт 5
 MAX(a,b,c) &! вернёт максимальное из значений переменных a,b,c MAX(a,b,c) &! вернёт максимальное из значений переменных a,b,c
 MAX('​aa','​ab','​zz'​) &! вернёт '​zz'​ MAX('​aa','​ab','​zz'​) &! вернёт '​zz'​
-MAX('​a'​) &! вернёт максимальное из значений элементов массива "​a"​ +MAX('​a'​) &! вернёт максимальное из числовых ​значений элементов массива "​a"​ 
-MAX('​$b'​) &! вернёт максимальное из значений элементов массива "​$b"</​sxh>​ +MAX('​$b'​) &! вернёт максимальное из текстовых ​значений элементов массива "​$b"​ 
-    * **MIN(**//[выр1]//**,**//[выр2]//**,** ...**)** - возвращает минимальное из значений выражений-аргументов. +</​sxh>​ 
-      * Если передан один аргумент,​ то считается,​ что указано имя массива.+  ''​%%MIN([выр1],​[выр2], ​)%%'' ​- возвращает минимальное из значений выражений-аргументов. Если передан один аргумент,​ то считается,​ что указано имя массива: <sxh qsp> 
 +MIN(1,​2,​5,​2,​0) &! вернёт 0 
 +MIN(a,b,c) &! вернёт минимальное из значений переменных a,b,c 
 +MIN('​aa','​ab','​zz'​) &! вернёт '​aa'​ 
 +MIN('​a'​) &! вернёт минимальное из числовых значений элементов массива "​a"​ 
 +MIN('​$b'​) &! вернёт минимальное из текстовых значений элементов массива "​$b"​ 
 +</​sxh>​ 
 + 
 +[[help:​cycle|Вперёд:​ Циклы]]
  
----- 
-[[help:​arrays|Вперёд:​ Массивы]] 
help/coding.1386694264.txt.gz · Последние изменения: 2013/12/10 20:51 (внешнее изменение)