![[Image: WHAJCyB.png]](http://i.imgur.com/WHAJCyB.png)
Добро пожаловать на курс посвященный языку программирования Squirrel. Хочу Вас предупредить о том, что при написании данного курса автор ориентировался на аудиторию людей которые не имеют базового представления об программировании. Предполагается что читатель уже владеет необходимым программным обеспечением для написания исходного кода.
Краткое введение
В первую очередь следует отметить что Squirrel является интерпретируемым языком программирования. В отличии от компиляции наша программа транслируется в процессе выполнения - это будет приносить нам неудобства. Данный язык схож с его родственником Lua, но говорить что эти языки идентичны разумеется не правильно. Самое удивительное что данный язык поддерживает классы и наследование, что действительно сыграет нам на руку. Язык программирования Squirrel применяют в качестве инструмента в мире разработчиков игровой индустрии.
Чему Вы научитесь
Я желаю вам удачного обучения в этом нелегком деле - программировании. Уверен что на пути у вас возникнет куча вопросов и загадок на которые вы захотите получить ответ. Если у вас возникнет чувство усталости или лени продолжать дальше - не мучайте себя. Постарайтесь отложить этот материал на следующий день. Данный метод поможет вам накопить сил для перехода на более высшую ступень в программировании. Хочу вас удивить, но даже если вы научитесь программировать - это не сделает из вас профессионала. Программирование входит в концепцию информатики, информатика как правило это что-то больше чем программирование. Профессионал должен иметь достаточно богатый багаж математических знаний начиная с школьной алгебры до математического анализа. Конечно для разработки игровой модификации Gothic Online не обязательно так глубоко знать математику, но это не означает что вы не должны это знать. Поверьте, пройдет несколько лет и вы захотите двигаться дальше. Чем дальше вы двигаетесь - тем умней вы становитесь - тем быстрей меняется ваше мировоззрение.
Я старался воплотить все свои знания из программирования в этот курс. Для меня самая интересная тема - это работа на уровне бит. Когда я только начинал изучать программирование я всегда боялся эти страшные слова и формулировки, но прошел ровно год и мои страхи исчезли. Надеюсь что вы тоже как и я найдете ответы на свои вопросы. Удачи!
Переменные и типы данных
В процессе программирования мы постоянно взаимодействуем с данными, а ведь эти данные нужно где-то хранить. Существует несколько способов хранения данных, но в этой теме мы познакомимся с переменными. Переменные служат нам неким контейнером который дает нам возможность положить в него некоторое значение. Объявлением переменной является указание интерпретатору на существование данной переменной. Инициализация переменной является задание ей первоначального значения. Присвоение значения переменной - изменение уже хранящего значения. Значение может представлять собой как обычное число, либо-же результат какой-либо арифметической операции. В памяти компьютера переменные представляются следующим способом (изображение).
![[Image: iB4SO0E.png]](http://i.imgur.com/iB4SO0E.png)
Перед вами схематичное представление переменной в памяти компьютера. На первый взгляд может показаться очень сложным понять и запомнить изображенные элементы, но на самом деле это не так. Когда компьютер видит инструкцию объявления переменной, он выделяет под неё определенный размер памяти. Адрес переменной имеет по стандарту представляется в шестнадцатеричной системе счисления (было бы интересно увидеть адрес в двоичной системе счисления).
Объем памяти выделяемой для переменной определяется по типу данных которому принадлежит данная переменная. Исходя из синтаксических правил языка Squirrel нам не нужно указывать тип данных вручную. Так-же язык Squirrel не является строго типизированным языком программирования, следовательно у нас есть возможность изменять тип переменной процессе выполнения программы.
Типы данных
Область видимости переменных
Переменные подразделяются на локальные и глобальные. Перед идентификатором локальной переменной следует ключевое слово local указывающие что данная переменная относится к группе локальных переменных. В случаи с глобальными переменными перед идентификатором не следует ключевых слов, но после идентификатора следует специальный оператор <- который объявляет-инициализирует глобальную переменную. Дело в том что вы не сможете объявить глобальную переменную без инициализации - если не послушаться этому правилу вы получите ошибку.
Но и этого не достаточно для того, что бы научиться разделять локальные и глобальные переменные. Локальные переменные в отличии от глобальных переменные существуют только в определенном блоке инструкций (блок инструкций заключается в { }). Глобальные-же переменные объявляются вне блоков инструкций и существуют всегда (если не удалить их вручную).
Ниже представлен листинг кода показывающий правила объявления / инициализации глобальных и локальных переменных.
[Исходный код] Перейти
[Результат]
![[Image: ohZwJNW.png]](http://i.imgur.com/ohZwJNW.png)
Когда я начинал изучать программирование, моей целью стояло заказать правдивость авторских слов на примере. Давайте попробуем объявить и инициализировать несколько переменных различных типов, и заставим компьютер вывести их тип.
[Исходный код] Перейти
[Результат]
![[Image: yeZYECB.png]](https://i.imgur.com/yeZYECB.png)
Заключение
Этот урок был неким введением в язык программирования Squirrel, именно по этому материал не был насыщен практическими примерами. В следующем уроке мы подробно разберем каждый тип данных на примере решения прикладных задач. На мой взгляд самой интересной частью будет тема посвященная побитовым операциям (работа на уровне бит).
- Проектировать и оптимизировать существующий алгоритм для решения задачи.
- С уверенностью использовать язык программирования Squirrel для решения прикладных задач.
- Взаимодействовать с памятью на уровне бит.
- Разрабатывать структуру классов для решений различных задач.
- Структурировать и использовать многофайловую структуру проекта.
- Использовать API Gothic Online для разработки игровой модификации.
Я желаю вам удачного обучения в этом нелегком деле - программировании. Уверен что на пути у вас возникнет куча вопросов и загадок на которые вы захотите получить ответ. Если у вас возникнет чувство усталости или лени продолжать дальше - не мучайте себя. Постарайтесь отложить этот материал на следующий день. Данный метод поможет вам накопить сил для перехода на более высшую ступень в программировании. Хочу вас удивить, но даже если вы научитесь программировать - это не сделает из вас профессионала. Программирование входит в концепцию информатики, информатика как правило это что-то больше чем программирование. Профессионал должен иметь достаточно богатый багаж математических знаний начиная с школьной алгебры до математического анализа. Конечно для разработки игровой модификации Gothic Online не обязательно так глубоко знать математику, но это не означает что вы не должны это знать. Поверьте, пройдет несколько лет и вы захотите двигаться дальше. Чем дальше вы двигаетесь - тем умней вы становитесь - тем быстрей меняется ваше мировоззрение.
Я старался воплотить все свои знания из программирования в этот курс. Для меня самая интересная тема - это работа на уровне бит. Когда я только начинал изучать программирование я всегда боялся эти страшные слова и формулировки, но прошел ровно год и мои страхи исчезли. Надеюсь что вы тоже как и я найдете ответы на свои вопросы. Удачи!
![[Image: tNTU2qK.png]](http://i.imgur.com/tNTU2qK.png)
Переменные и типы данных
В процессе программирования мы постоянно взаимодействуем с данными, а ведь эти данные нужно где-то хранить. Существует несколько способов хранения данных, но в этой теме мы познакомимся с переменными. Переменные служат нам неким контейнером который дает нам возможность положить в него некоторое значение. Объявлением переменной является указание интерпретатору на существование данной переменной. Инициализация переменной является задание ей первоначального значения. Присвоение значения переменной - изменение уже хранящего значения. Значение может представлять собой как обычное число, либо-же результат какой-либо арифметической операции. В памяти компьютера переменные представляются следующим способом (изображение).
![[Image: iB4SO0E.png]](http://i.imgur.com/iB4SO0E.png)
Объем памяти выделяемой для переменной определяется по типу данных которому принадлежит данная переменная. Исходя из синтаксических правил языка Squirrel нам не нужно указывать тип данных вручную. Так-же язык Squirrel не является строго типизированным языком программирования, следовательно у нас есть возможность изменять тип переменной процессе выполнения программы.
Типы данных
- Null | Неопределенный тип данных | Эквивалентна удалению переменной
- Integer | Целочисленный тип данных | Выделение 4 байта памяти
- Float | Вещественный тип данных | Выделение 4 байта памяти
- Bool | Логический тип данных | Выделение 1 байта памяти
- String | Строковый тип данных | Выделение 1 (ASCII) или 2 (unicode) байта памяти (в зависимости от кодировки)
- Table | Таблица | Последовательность слотов представленные парами ключ/значение
- Array | Массив | Последовательность однотипных элементов индексирующиеся от 0 до N-1 (где N - размер массива)
Область видимости переменных
Переменные подразделяются на локальные и глобальные. Перед идентификатором локальной переменной следует ключевое слово local указывающие что данная переменная относится к группе локальных переменных. В случаи с глобальными переменными перед идентификатором не следует ключевых слов, но после идентификатора следует специальный оператор <- который объявляет-инициализирует глобальную переменную. Дело в том что вы не сможете объявить глобальную переменную без инициализации - если не послушаться этому правилу вы получите ошибку.
Но и этого не достаточно для того, что бы научиться разделять локальные и глобальные переменные. Локальные переменные в отличии от глобальных переменные существуют только в определенном блоке инструкций (блок инструкций заключается в { }). Глобальные-же переменные объявляются вне блоков инструкций и существуют всегда (если не удалить их вручную).
Ниже представлен листинг кода показывающий правила объявления / инициализации глобальных и локальных переменных.
[Исходный код] Перейти
[Результат]
![[Image: ohZwJNW.png]](http://i.imgur.com/ohZwJNW.png)
Комментарии
Блок инструкций
Функции
Когда я начинал изучать программирование, моей целью стояло заказать правдивость авторских слов на примере. Давайте попробуем объявить и инициализировать несколько переменных различных типов, и заставим компьютер вывести их тип.
[Исходный код] Перейти
[Результат]
![[Image: yeZYECB.png]](https://i.imgur.com/yeZYECB.png)
Ключевое слово typeof
Стиль программирования
Заключение
Этот урок был неким введением в язык программирования Squirrel, именно по этому материал не был насыщен практическими примерами. В следующем уроке мы подробно разберем каждый тип данных на примере решения прикладных задач. На мой взгляд самой интересной частью будет тема посвященная побитовым операциям (работа на уровне бит).