logo.aleks Versus Поиск по сайту:
  Главная | Регистрация | Вход   Приветствую Вас Гость | RSS
Майнпаги
тыц
Стихи.РУ
Проза.РУ
Aleks Versus на LI
Я на Самиздате
читательский дневник
На Книготопии

Переменные и массивы в 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 и $BOX - то это будут два разных массива. Это легко проверить простеньким кодом:

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

На экран будет выведено слово "Текст" и число 13.

Инициализация переменных и массивов в 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.

Таковы основные сведения о массивах и переменных. Читайте так же мои опусы о двумерных массивах в QSP и создании шкал и меню предметов.

 
Copyright MyCorp © 2018
Конструктор сайтов - uCoz
aleksversus@mail.ru
lex666endless@rambler.ru
437337904
Наверх