Продолжение прошлой статьи. Поехали. --========================== §8. Блок do ... end.
Ничего нечто особенного из себя не представляет. Туда просто можно добавить некоторую группу выполняемых операций. Может быть полезен, допустим, для убийства локальных переменных которые потом необходимо будет объявить заново:
Код
var1 = 1; var2 = 2; var3 = 3; a = 11; b = 22; c = 33;
Код
do local v1,v2,v3 = var1,var2,var3 print(v1+v2+v3);--6 end -- теперь локальные переменные v1, v2 и v3 можно объявить снова
Код
local v1,v2,v3 = a,b,c print(v1*v2*v3); -- 7 986
--========================== §9. Ещё об операторе not.
Он также имеет способность возвращать противоположное boolean-значение переменной:
Код
a = 1; -- boolean-значение переменной — true b = true; -- здесь тоже print(not a); -- false print(not b); -- false
c = false; d = nil; print(not c); -- true print(not d); -- true
--========================== §10. Циклы.
-------------------------
§10.1. Арифметический цикл.
Выполняет действие заданное кол-во раз. Имеет следующую конструкцию:
Синтаксис:
Код
for ... do ... end
Пример:
Код
for i=1,10 do print("...."); end
Число 1 — с какого числа надо начинать цикл, 10 — до скольки продолжать. Первое число не может быть меньше одного. Переменная i может быть любой другой:
Код
for j=1,10 do ... end
Также эта переменная является локальной — после окончания цикла она перестанет существовать. Если надо, её можно сохранить:
Код
H = 1; for i=1,20 do print("..."); H = i;--сохраняем переменную end
Чтобы преждевременно закончить цикл, можно воспользоваться оператором break:
k = 1; for i=1,50 do k = k + 1; if k == 25 then break end end
Оператор break должен стоять в конце цикла. Если же этого не надо, то можно отнести его в отдельный блок do ... end, о котором говорилось ранее:
Код
k = 1; for i=1,60 do k = k + 2; do break end k = k - 20; end
Также, если написать break так:
Код
k = 1; for i=1,10 do k = k + 1; break end
Тогда цикл выполнится только один раз. В дополнение к скрипту выше:
Код
print(k); -- 2
-------------------------
§10.2. Цикл while.
Выполняет цикл до тех пор, пока заданное условие является истинным. Таким образом, цикл может не выполнится ни разу. Имеет следующую конструкцию:
Синтаксис:
Код
while ... do ... end
Пример:
Код
a = 1; -- переменная а while a < 20 do -- выполнять цикл до тех пор, пока а меньше 20 a = a + 1; end
В данном примере цикл закончится, когда а будет равна 20.
Оператор break тут тоже уместен.
-------------------------
§10.2.1. Бесконечный цикл. Как понятно по названию, данный цикл выполняется бесконечно. Конструкция его состоит из цикла while:
Синтаксис:
Код
while true do ... end
На самом деле это самый обычный цикл while. Но может пригодится для бесконечного выполнения какой-либо операции.
Пример:
Код
i = 1; while true do i = i + 1; if i > 10000 then break end end print(i);
-------------------------
§10.3. Цикл repeat.
Выполняет действие, пока не выполнится заданное условие. В отличии от while всегда выполнится хотя бы один раз. Конструкция его такова:
Синтаксис:
Код
repeat ... until ...
Пример:
Код
n = 1; -- есть переменная n со значением 1 repeat -- начало цикла n = n + 1; until n == 50; -- выполнять цикл, пока n не примет значение 50 print(n); -- напечатается 50
-------------------------
§10.4. Оператор return для циклов.
В случае для циклов данный оператор полностью повторяет оператор break:
Код
a = 10; for i=1,10 do a = a + 1; if a == 15 then return end end print(a); -- 15
Ну, в общем, тут всё понятно.
-------------------------
§10.5. Циклы обхода элементов таблиц и массивов.
Данные два цикла пока ещё рано изучать, так как ещё не приступили к изучению таблиц. Просто скажу, что к циклам вернёмся в будущих параграфах. --========================== §11. Математические выражения.
Название говорит само за себя. Каждая функция начинается с «math.» (сокр. от англ. «mathematics» — 'математика'), затем следует имя функции и в скобках выражение. Таких выражений достаточно много. О них будет сказано ниже.
-------------------------
§11.1. Виды математических выражений.
math.abs (x):
Возвращает модуль x.
math.acos(x):
Возвращает арккосинус x (в радианах).
math.asin(x):
Возвращает арксинус x (в радианах).
math.atan(x):
Возвращает арктангенс x (в радианах).
math.atan2(x,y):
Возвращает арктангенс x/y (в радианах), но использует знаки обоих параметров для вычисления «четверти» на плоскости. (Также корректно обрабатывает случай, когда y равен нулю.)
math.ceil(x):
Возвращает наименьшее целое число, большее или равное x. (Округление «вверх».)
math.cos(x):
Возвращает косинус x (угол — в радианах).
math.cosh(x):
Возвращает кошинус (гиперболический косинус) x.
math.deg(x):
Переводит угол, заданный в радианах (x) в градусы.
math.exp(x):
Возвращает ex.
math.floor(x):
Возвращает наибольшее целое число, меньшее или равное x. (Округление «вниз».)
math.fmod(x,y):
Возвращает остаток от деления x на y.
math.frexp(x):
Возвращает m и e такие, что x = m2e, e — целое, а модуль m находится в интервале [0.5,1) (либо ноль, если x равен нулю). (Разложение числа с фиксированной запятой.)
math.huge:
Значение HUGE_VAL, значение большее, либо равное любому числовому значению.
math.ldexp(m,e):
Возвращает m2e (e должно быть целым). (Восстановление значения по мантиссе и показателю.)
math.log(x):
Возвращает натуральный логарифм x.
math.log10(x):
Возвращает логарифм x по основанию 10.
math.max(x,...):
Возвращает максимальный из аргументов.
math.min(x,...):
Возвращает минимальный из аргументов.
math.modf(x):
Возвращает два числа, целую часть x и дробную часть x.
math.pi:
Значение pi, то есть 3,14159....
math.pow(x,y):
Возвращает x^y. (Также можно использовать запись x^y для вычисления значения этой функции.)
math.rad(x):
Конвертирует угол x, заданный в градусах, в радианы.
math.random([m [, n]]):
Эта функция является интерфейсом к простейшему генератору псевдослучайных чисел rand, предоставляемому ANSI C. (Нет никаких гарантий по поводу его статистических свойств.)
При вызове без аргументов возвращает псевдослучайное действительной число в интервале [0,1). При вызове с аргументом m math.random() возвращает псевдослучайное целое число из отрезка [1, m]. При вызове с двумя аргументами — m и n math.random() возвращает псевдослучайное целое число из отрезка [m, n].
math.randomseed(x):
Инициализирует генератор псевдослучайных чисел параметром x («seed»): каждый параметр порождает соответствующую (но одну и ту же) последовательность псевдослучайных чисел.
math.sin(x):
Возвращает синус x (аргумент — в радианах).
math.sinh(x):
Возвращает шинус (гиперболический синус) x.
math.sqrt(x):
Возвращает квадратный корень x. (Также можно использовать выражение x^0.5 для вычисления этого значения.)
math.tan(x):
Возвращает тангенс угла x (аргумент — в радианах)
math.tanh(x):
Возвращает гиперболический тангенс x.
-------------------------
§11.2. Подробный разбор некоторых функций.
math.abs:
Код
a = -1; print(math.abs(a)); -- 1
Модуль — это положительное значение числа.
math.max:
Код
a = 1; b = 2; c = 3; d = 4; e = 5;
print(math.max(a,b,c,d,e)); -- 5, то есть e
math.min:
Код
a = 1; b = 2; c = 3; d = 4; e = 5;
print(math.min(a,b,c,d,e)); -- 1, то есть a
math.pi:
Код
print(math.pi); -- 3,1415926535898
math.pow:
Код
a = 5; b = 2;
print(math.pow(a,b)); -- 25
Тут происходит возведение в степень.
Можно и так:
Код
print(a^b); -- 25
math.sqrt:
Код
a = 144;
print(math.sqrt(144)); -- 12
Здесь из числа извлекается арифметический квадратный корень.
Можно и так:
Код
print(a^0.5); -- 12
math.random:
Код
print(math.random()); -- рандомная десятичная дробь в интервале от 0 до 1. print(math.random(10)); -- рандомное число в отрезке от 1 до 10 print(math.random(5,10)); -- рандомное число в отрезке от 5 до 10
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Lua. Туториал для начинающих. Часть 2», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]