12+
Язык программирования Lua за час

Бесплатный фрагмент - Язык программирования Lua за час

Знать язык программирования это круто!

Мы сегодня научимся понимать и писать на языке программирования Lua! :-)

Lua? Что это?

Lua — простой встраиваемый язык (его можно интегрировать с вашими программами, написанными на других языках), легкий и понятный, с несколькими типами данных, с однообразным синтаксисом. Идеальный язык для изучения.

Зачем?

Lua может вам пригодится:

*если вы геймер (плагины для World of Warcraft и множества других игр)
* если вы пишете игры (очень часто в играх движок пишут на C/C++, а AI — на Lua)
* если вы системный программист (на Lua можно писать плагины для nmap, wireshark, nginx и других утилит)
* если вы embedded-разработчик (Lua очень быстрый, компактный и требует очень мало ресурсов)

Что надо для того, чтобы читать дальше?

1. Научитесь программировать. Хотя бы немного. Не важно на каком языке.

2. Установите Lua. Для этого скачайте самую последнию версию с оф. сайта: (http://www.lua.org).

3. Все примеры запускайте в терминале командой наподобие «lua file.lua».

Давайте начнём

Lua — язык с динамической типизацией (переменные получают типы «на лету» в зависимости от присвоенных значений). Писать на нем можно как в императивном, так и в объектно-ориентированном или функциональном стиле (даже если вы не знаете как это — ничего страшного, продолжайте читать). Вот Hello world на Lua:

— — my first lua app: hello.lua

print «hello world»;

print («goodbye world»)

Что уже можно сказать о языке из этого примера:

1) однострочные комментарии начинаются с двух дефисов " — -"
2) скобки и точки-с-запятыми можно не писать

Операторы языка

Набор условных операторов и циклов довольно типичен:

— — условные операторы (ветки else может не быть)

if a == 0 then

print («a is zero»)

else

print («a is not zero»)

end

— — сокращенная форма if/elseif/end (вместо switch/case)

if a == 0 then

print («zero»)

elseif a == 1 then

print («one»)

elseif a == 2 then

print («two»)

else

print («other»)

end

— — цикл со счетчиком

for i = 1, 10 do

print (i)

end

— — цикл с предусловием

b = 5

while b> 0 do

b = b — 1

end

— — цикл с постусловием

repeat

b = b +1

until b> = 5

________________________________________________________________

ПОДУМАЙТЕ:

что может означать цикл «for i = 1, 10, 2 do… end»?

В выражениях можно использовать такие вот операторы над переменными:

присваивание: x = 0
арифметические: +, -, *, /, % (остаток от деления), ^ (возведение в степень)
логические: and, or, not
сравнение:

>, <, ==, <=,> =, ~= (не-равно, да-да, вместо привычного»! =»)

конкатенация строк (оператор»..»),

напр.: s1=«hello»; s2=«world»; s3=s1..s2

длина/размер (оператор #):

s=«hello»; a = #s («a’ будет равно 5).

получение элемента по индексу, напр.: s [2]

Битовых операций в языке долгое время не было, но в версии 5.2 появилась библиотека bit32, которая их реализует (как функции, не как операторы).

________________________________________________________________

Типы данных

Как вы уже знаете тип данных у него много (как и у каждого серьезного языка):

* nil (ровным счетом ничего)
* булевы числа (true/false)
* числа (numbers) — без деления на целые/вещественные. Просто числа. * строки — кстати, они очень похожи на строки в паскале
* функции — да, переменная может быть типа «функция»
* поток (thread)
* произвольные данные (userdata)
* таблица (table)