Это будет первым уроком, где мы что-то реальное будем писать.
Для начала небольшой трёп про то, что значит писать программу. Небольшой вопрос: что такое программа, ну и вообще, что, по-вашему, значит написать программу? Вот я считаю, что правильный ответ примерно такой: Написать программу - значит объяснить компу, как решать какую-то задачу. Чтобы объяснить кому-то что-то, надо сначала представлять, как бы ты сам это делал. Таким образом, чтобы писать программу нужно продумать последовательность своих действий(алгоритм), а потом уже что-то программировать.
Для описания своего алгоритма часто требуется хранить что-то во время работы. Для этого существует такое понятие как переменная. Переменная - это некоторая область памяти в компьютере, которая имеет имя и значение, которое в ней хранится.
В lua переменную объявить очень легко. Вот так:
Code
имя переменной = значение
К примеру,
Code
a=10
При этом будет создана переменная с именем a, и значением 10
Переменные были бы бесполезными, если бы нельзя было бы узнать, что в ней находится. Поэтому имя переменной может участвовать в любых выражениях, к примеру математических:
Code
a=10 b=a+40
b теперь будет равна 50.
Вы наверно щас задаётесь вопросом: "где это попробовать??". Объясняю. Любой код, который я тут привожу для примеров надо написать в SciTE, сохранить как lua файл, а потом запустить нажатием F5 или другими способами(смотри урок 2). Внизу в консольке будет написано, что выводит программа. Под "выводит программа" понимается вызов функции print:
Code
a=10 print(a) b=a+40 print(b)
print - это функция(это понятие вы поймёте позже, сейчас запомните, что в функцию в скобки можно подставлять параметры, и она что-то с ними сделает), которая выводит на экран значение того, что в неё передали. В нашем примере на экран выведено:
Code
10 50
Итак с переменными более или менее ясно. Важно сказать, что у переменных кроме имени и значения есть ещё и тип. В lua 8 типов данных: nil (неопределенный) boolean (логический) number (числовой) string (строковый) function (функция) userdata (пользовательские данные) thread (поток) table (таблица)
Пробежимся по типам данных: 1. nil - буквально означает "ничего". Это одновременно и тип данных и значение. Попробуйте следующий код:
Code
print(c)
на экран будет выведено:
Code
nil
это означает, что нету переменной c - мы её не объявили(точнее не задали) с помощью оператора = Главная задача nil значения - поиск ошибок. Если вы сделаете так:
Code
print(nil+2)
то получите, что lua на вас ругнётся(потому что нельзя прибавлять 2 к ничему!), а вы узнаете, что забыли задать переменную.
2. boolean - тип данных, который означает правду или неправду(true или false). Он используется при сравнении. К примеру выражение 1>2 вернёт false, потому что 1 меньше двойки. выражение 9==9 вернёт true, потому что 9 равно 9. Задать булеву переменную можно так:
Code
a=true b=false c=10<4 or 2==2 print(a,b,c)
Как видите, для булевых переменных можно писать операции or, а также and и not. Правила, по которым они действуют описаны ниже:
Quote
true and true = true true and false = false false and true = false false and false = false
true or true = true true or false = true false or true = true false or false = false
3. number - тип данных, который используется для хранения чисел. Числа записываются как обычно. Десятичные дроби записываются с разделителем ".". Примеры:
Code
a=20 b=42.234 c=-124.412
Для чисел определены математические операции: + сложение - вычитание * умножение / деление % деление по модулю ^ возведение в степень примеры:
Деление по модулю - это получение остатка от деления(вспомните школьное деление столбиком) При возведении в степень первое число возводится в степень второго.
4. string - строка текста. Под ней понимается какая-то последовательность букв или символов. Обычно строка задаётся в кавычках
Code
name="Вася" print(name)
На экране появится гордая надпись Вася=) Строки можно объединять с помощью оператора ..("две точки", а официально называется конкатенация или склейка).
Часто надо вставить в текст специальный символ(перенос строки, кавычки, слэш). Для этого этот символ экранируют. То есть чтобы специальный символ ничего специального не значил перед ним ставят слэш. Вот кратенький спискок самого нужного: \n - вставка переноса на новую строку \" - вставка кавычки \\ - вставка слэша. К примеру, чтобы записать текст C:\gerich\docs\ в lua надо писать так:
Code
path="C:\\gerich\\docs\\"
Чтобы вставить перенос строки:
Code
multiline="Я на первой строке\nА я на второй!" print(multiline)
Код выведет на экран:
Code
Я на первой строке А я на второй!
Надписи на разных строках. Также можно многострочный текст можно писать внутри конструкции [[длинный-длинный текст]]. Вот так:
Code
multiline=[[BOX2D
Физический движок для создания rigidbody физики в 2D играх. Движок-opensource, т.е. исходный код доступен каждому. Исходный код на C++ уже портирован на несколько языков программирования: C#, Java, ActionScript, Python, Scala. В основном применяется во флэш играх(в них используется ActionScript порт движка BOX2DFLASHAS3). Для использования требуются умение программировать и знание языка.]] print(multiline)
Этот код выведет этот текст. 5. function - особый тип данных. Он позволяет хранить в переменной не данные, а действие! Подробней на этом типе данных мы остановимся в следующих уроках. А сейчас, чтобы вы хоть чуть-чуть поняли что это скажу: print- это функция, то есть это переменная типа function, в которой хранится действие(напечатать на экране то, что в неё передали). 6. userdata - Для lua этот тип данных - чёрный ящик. Это просто какие-то данные. Вы ничего не можете сделать с ними, кроме того, как передать эти данные в функцию или получить их и сохранить в переменной. У вас возникает вопрос, зачем этот тип данных? Он нужен для внешней программы.
Quote
Мы можем попросить у Worms дать нам описание текущего червя, потом изменить его имя и попросить Worms, чтобы он запомнил, что мы переименовали червя. Но для описания червя внешней программе нужно знать ещё и его положение в пространстве(вектор). Поэтому внешняя программа передаёт нам таблицу(см. ниже) с описанием червя, в которой есть элемент "position" типа userdata. Мы ничего не можем с этим position сделать, но Worms может её использовать.
7. thread - ненужный для нас тип данных, позволяющий делать псевдо-потоки в lua
8. table - один из самых важных типов в lua. Почти всё в lua использует таблицы(даже все переменные хранятся в таблице). Таблица в lua не та, что в Excel'е - в ней всего две строчки: первая - заголовок, вторая - значения, но сколько уогдно колонок. Про таблицы мы поговорим в следующих уроках гораздо подробнее, поэтому этот урок почти подходит к концу.
Напоследок напомню, что вам из этого урока надо запомнить: 1) как объявлять переменную 2) что такое тип данных 3) как работать с числами, логическими и строковыми значениями.
Ну и совсем на последок скажу ещё что такое оператор type. С его помощью можно узнать тип переменной, к примеру:
всё понятно... просьба рассказать о переводе текста в число и числа в текст... это же возможно... т.е. вот такой код
Code
a = 11 b = "13" c = a < b print(c)
выдаёт такую ошибку
Code
lua.exe: E:\¦+-\Worms 4 Mayhem\Data\scripts\+хчvь ээvщ2.lua:3: attempt to compare number with string stack traceback: E:\¦+-\Worms 4 Mayhem\Data\scripts\+хчvь ээvщ2.lua:3: in main chunk [C]: ?
ну это и так можно было предугадать... так вопрос в том как всё же сравнить??? Всё что ни делается, делается в Китае(SW_Krash, 2009) Мир делиться на два типа людей: Бездарные трудоголики и Талантливые лентяи. (firsacho 2008) Я отрицаю вашу реальность и заменяю её своей!(Адам Севидж, 200x) OFFTOP SWEAT OFFTOP(фольклор)