logo.aleks Versus
Приветствую Вас Гость
 

Переменные и массивы в QSP.

Для самых маленьких, но не очень.

Переменные

Для начала определимся, что из себя представляет переменная.

Действительно, что?

Все мы знаем, что у компьютера есть память, так как он умеет запоминать интересные фильмы, отличную музыку и картинки с котиками. И всё это компьютер хранит в разных участках своей памяти.

Как правило, фильмы, музыка и фотографии хранятся в виде отдельных файлов.

Но что если нам не нужен целый файл, а мы просто хотим, чтобы компьютер запомнил какое-либо число?

Тут-то и выручают переменные.

Компьютер выделяет частичку своей памяти, и мы что-то в неё записываем. Условно эту частичку памяти можно представить в виде коробки, которую мы можем в любой момент открыть и положить туда что-нибудь.

То, что мы кладём в "коробку", то есть записываем в память компьютера, называется данными.

В QSP данные бывают двух типов: числовые и текстовые. Поэтому и в коробку Вы можете положить либо текстовые, либо числовые данные.

Данные, которые не являются файлами и представляют из себя запись числа или текста, называются значениями.

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

Это что-то вроде таблички на ящике, по которой можно узнать, что в этом ящике хранится.

Таким образом, переменная — это именованная область памяти компьютера.

Чтобы "положить данные в коробку", следует ввести специальную команду:

ИМЯ_ПЕРЕМЕННОЙ = ЗНАЧЕНИЕ_ПЕРЕМЕННОЙ

Это называется "присвоить значение переменной", или "вернуть значение переменной". У нас на картинке нарисована красивая коробка с именем "BOX". Присвоим ей какое-нибудь значение:

BOX = 13

Произносится это так: "Переменной BOX присвоено значение 13". Или: "Переменной BOX возвращено значение 13". Или: "В переменную BOX записано значение 13". Или просто: "BOX равно 13".

Как мы уже говорили, данные в QSP бывают двух типов. Значит и переменным можно присваивать значения двух типов.

Чтобы отличить переменные с данными числового типа от переменных с данными текстового типа (для краткости мы будем называть их числовыми и текстовыми переменными), в начале названий переменных текстового типа стали записывать знак "$". То есть, если бы мы захотели поместить в нашу коробку текст, её имя выглядело бы так:

$BOX

Текст, который мы хотим вернуть переменной, должен быть как-то выделен, чтобы плеер мог понять, где начинается и заканчивается значение, а где продолжается код программы. Для этого используются символы апострофов ('), или кавычек (").

Вернём переменной $BOX какой-нибудь текст:

$BOX = "Текст"

$BOX = 'Текст'

Эти две записи работают абсолютно одинаково.

Есть третья группа символов, которые можно использовать для указания текстовых значений. Символы фигурных скобок:

$BOX = {Текст}

Однако с ними нужно быть осторожными, и использовать с умом.

Во всех трёх случаях в переменную $BOX будет записано одно и то же значение. То есть символы, выделяющие значение в коде программы, не записываются в переменную.

Для чего же введено столько разных символов, если все они делают одно и то же?

Всё очень просто. Иногда в тексте нужно использовать один или несколько из этих символов. Например, вы хотите поместить в переменную кусочек диалога с прямой речью:

Орк усмехнулся и сказал: "Что ты хочешь, Мора? Хочешь мухомора?!"

Чтобы поместить текст, в котором уже присутствуют кавычки, в переменную, следует воспользоваться апострофами:

$BOX = 'Орк усмехнулся и сказал: "Что ты хочешь, Мора? Хочешь мухомора?!"'

Или же вы хотите поместить в переменную текст с апострофом:

$BOX = "Руг'Ста'Раг"

Можно даже поместить текст с тем и другим символом:

$BOX = "Руг'Ста'Раг" + ' усмехнулся и сказал: "Что ты хочешь, Мора? Хочешь мухомора?!"'

$BOX = "Руг'Ста'Раг усмехнулся и сказал: ""Что ты хочешь, Мора? Хочешь мухомора?!"""

$BOX = 'Руг''Ста''Раг усмехнулся и сказал: "Что ты хочешь, Мора? Хочешь мухомора?!"'

В этих случаях в переменную будет внесено следующее:

Руг'Ста'Раг усмехнулся и сказал: "Что ты хочешь, Мора? Хочешь мухомора?!"

Следует пояснить вторую и третью строчку последнего примера кода.

Этот способ вставлять символы, которые уже были использованы для указания значения, называется экранирование.

Если очень нужно вставить внутри текстового значения, выделенного апострофами, другой апостроф - его просто следует написать дважды. Один символ экранируется другим, и таким образом воспринимается, как один апостроф. То же и с кавычками.

Массивы

Ну а что же такое массивы?

Теперь, когда о переменных мы знаем почти всё, этот вопрос не даёт нам покоя.

Массив - это тоже своего рода область памяти, где хранятся данные, но представить его можно, как огромный шкаф со множеством ящиков. Масив очень похож на камеру хранения. И ящики там называются подходяще: ячейки (ячейки массивов ещё называются "элементами массивов").

Каждой ячейке массива присваивается порядковый номер, начиная с нуля, а всему массиву — имя. Это значит, что массив — это именованная область памяти для хранения нескольких значений, сходных по смыслу.

В коде, чтобы работать с конкретной ячейкой массива, используется следующая запись:

ИМЯ_МАССИВА[НОМЕР_ЯЧЕЙКИ]

Допустим, мы хотим поместить в ячейку номер 3 массива BOX число 13. Это делается так:

BOX[3] = 13

И читается так: "Третьей ячейке массива BOX присвоено значение 13".

Точно так же, как и в переменные, в ячейки массива можно вписывать значения двух типов: числовые и текстовые. То есть в одном массиве Вы можете хранить одновременно и текстовые и числовые значения:

$BOX[0]= "Текст"
BOX[2] = 13
*PL $BOX[0]
*PL BOX[2]

Однако так делать не рекомендуется. Старайтесь хранить в одном массиве значения только одного типа. Если Вам нужно сохранить значение другого типа, заведите массив с другим именем:

$BOX_TEXT[0]= "Текст"
BOX_NUMBER[2] = 13
*PL $BOX_TEXT[0]
*PL BOX_NUMBER[2]

Надо сказать, что в QSP Вам не нужно заранее заботиться о создании переменных или массивов. В отличие от многих других языков программирования, инициализация в QSP происходит автоматически, когда Вы присваиваете переменной или ячейке массива значение.

И раз уж речь зашла о создании массивов ИЛИ переменных, нужно сказать, что в QSP все переменные — это массивы. Просто это массивы, состоящие из одной ячейки.

Запись

BOX = 13

и запись

BOX[0] = 13

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

BOX = 13
*PL BOX
*PL BOX[0]
BOX[0] = 15
*PL BOX
*PL BOX[0]

Дважды на экран будет выведено число 13, дважды - 15. Таким образом, нулевой элемент любого массива можно вызвать, просто написав имя массива.

Есть упрощённая запись для вызова последнего элемента массива, неважно, какой у него номер:

BOX[]

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

BOX[0]=1
BOX[1]=3
BOX[2]=35
BOX[3]=13

Если запросить вывод на экран значение последнего элемента, то это будет значение элемента BOX[3].

*PL BOX[]

Если присвоить последнему элементу число, то будет создан элемент BOX[4] и ему уже будет присвоено число:

BOX[] = 39

Легко проверить это, запустив простенький код:

BOX[0]=1
BOX[1]=3
BOX[2]=35
BOX[3]=13

*PL BOX[3]
*PL BOX[]
*PL BOX[4]

BOX[] = 39

*PL BOX[3]
*PL BOX[]
*PL BOX[4]

Подряд будут выведены числа 13 - 13 - 0. Потом числа 13 - 39 - 39.

Таковы основные сведения о массивах и переменных.

Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2020
Полезные ссылки:
Наверх