Условный оператор If then else в Lua

Условные операторы if then else lua

Условные операторы

В языке lua как и в большинстве других языков можно выполнять операции сравнения с помощью оператора if. Для чего это вообще нужно, в большинстве случаев нам нет необходимости всегда выполнять код программы целиком, обычно необходимо выполнять некоторые части программы в зависимости от того, что в данный момент происходит на рынке.

Приведу простой пример. Предположим мы решили приобрести фьючерс на сбербанк в 10:15, но по каким-то причинам мы не можем находиться за компьютером в это время. Если мы просто напишем программу купить фьючерс на сбербанк, то как только мы эту программу запустим фьючерс будет куплен. Для того чтобы купить в определенное время нам нужен оператор сравнения, который будет сравнивать текущее время с установленным временем и как только время совпадет выполнит часть программы где будет описана покупка фьючерса.

Сравнивать можно всё что угодно, а не только время. Можно сравнивать текущую цену с установленной заранее и как только цены совпадают выставить ордер. Также операторы сравнения можно применять и в вычислении. Например если мы хотим посчитать количество растущих баров на графике, мы можем написать следующее условие, если цена закрытия больше цены открытия, значит это растущий бар прибавляем единицу. Суть применение операторов сравнения в целом думаю понятно.

Полная версия оператора if может выглядеть следующим образом

if (true) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

Обратите внимание на обязательные слова if — then — else — end — это и есть описание оператора сравнения.

Оператор сравнения состоит из обязательной части под названием Условие, а также из обязательной части под названием Действие при выполнении условия, дополнительно имеется необязательная часть под названием Действие если условие не выполняется, эту часть можно опускать если она нам не нужна.

Условия. Обычно условия описываются таким образом чтобы результат был либо Истина либо Ложь.

С этим думаю проблем возникнуть не должно, если условие дает истину выполняется Действие 1, иначе выполняется Действие 2.

Действия. После проверки условия необходимо выполнить какие-то действия. Действие может быть одно, либо два. Первое действие является обязательным, оно выполняется если условие является истинным. Второе действие не является обязательным, она выполняется если условие является ложным.

У вас могут возникнуть проблемы если результатом условия будет не Истина или Ложь, а к примеру число. Напишем такой пример.

if (1) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

В этом примере в условии написано число 1. В данном случае условие является истинным, а значит будет выполнено действие под номером 1. Любое число в результате будет означать истинное значения, каким бы это число не было положительным, отрицательным или равнялось нулю.

Также в условии может находиться текст.

if ("TEXT") then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

В этом случае условие также является истинным, даже если текст не будет содержать ни одного символа.

Условие будет ложным, если значение будет равняться nil

if (nil) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

В этом примере условие является ложным и будет выполнено действие номер 2.

Для того чтобы выполнять сравнения значений необходимо воспользоваться операторами сравнения:
>     больше
>=  больше или равно
<     меньше
<=  меньше или равно
==  строго равно
~=  не равно

Используя операторы сравнения мы можем сравнивать значения и получать в результате Истину или Ложь. Пример.

local a = 1;
if (a == 1) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

В этом примере мы проверяем чтобы переменная а была равна 1, если это так выполняется Действие 1, иначе выполняется Действие 2.

local a = 1;
if (a >= 1) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

Данный пример также проверяет переменную а, но теперь переменная а может быть любым числом больше 1, или равно 1.

local a = 1;
if (a < 1) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

Теперь наоборот, переменная a должна быть обязательно меньше 1. В данном примере условие не выполняется, а значит выполняется Действие 2.

local a = 1;
if (a ~= 1) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

И последний пример в котором переменная а может быть абсолютно любым числом чтобы условие являлось истинным, главное чтобы переменная а не была равна 1.

Логические операторы в условиях.

В условиях допускается использовать логические операторы, они описаны в главе Логические операции в языке lua.

Логический оператор может быть один или несколько, также допускается использовать несколько разных логических операторов.

local a = 1;
if (a >= 1 and a <= 5) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

В этом примере переменная а может быть любым числом в диапазоне от 1 до 5. Обратите внимание, что число не обязательно должно быть целым, условие также будет являться истинным если переменная а равна 3,758. Главное чтобы переменная а была больше или равна 1 и меньше или равна 5.

local a = 1;
if ((a >= 1 and a <= 5) or (a <= -1 and a >= -5)) then
	
	message("Условие выполнено успешно");
	
else
	
	message("Условие не выполнено.");
	
end

В этом примере используется 3 логических операторов. Условие будет является истинным только в том случае, если все сравнения будут выполнены. Обратите внимание что в этом примере используются разные операторы сравнения, а также расставлены дополнительные скобки. В этом примере условие будет являться истинным, если переменная а находится в диапазоне от 1 до 5 или в диапазоне от -1 до -5.

Вложение условий или оператор elseif

Еще один вариант применения условий, это когда необходимо выполнять проверку сразу на несколько значений. В самом верху я приводил пример в котором мы покупали фьючерсы в определённое время. А что если мы хотим не только покупать но и продавать. Расширяем наш пример таким образом. Если время 10:15, тогда выставить ордер. Первое условие описали, а вторым условием мы определимся какой именно ордер выставлять на покупку или на продажу. Если текущая цена больше или равна 15, тогда выставить ордер на покупку. Если цена меньше или равна 10, тогда выставить ордер на продажу. Теперь наш алгоритм выполнит одно из трёх действий, выставит ордер на покупку, выставит ордер на продажу или ничего не будет делать даже если время будет 10:15.

Так как мы находимся лишь только в начале пути и еще не знакомы с тем как выставлять ордера, а также неизвестны функции для работы с датой и временем приведу более простой пример.

local a = 1;
if (a == 1) then
	
	message("Переменная a имеет значение 1");
	
else
	
	if (a == 2) then
		
		message("Переменная a имеет значение 2");
		
	else
		
		if (a == 3) then
			
			message("Переменная a имеет значение 3");
			
		else
			
			if (a == 4) then
				
				message("Переменная a имеет значение 4");
				
			else
			
				if (a == 5) then
					
					message("Переменная a имеет значение 5");
					
				else
					
					message("Переменная a имеет другое значение");
					
				end
			
			end
			
		end
		
	end
	
end

В этом примере мы переменную а проверяли на пять значений. Таким образом мы вкладывали одно условие в другое. Тот же самый пример можно написать используя оператор elseif

local a = 1;
if (a == 1) then
	
	message("Переменная a имеет значение 1");
	
elseif (a == 2) then
		
	message("Переменная a имеет значение 2");
		
elseif (a == 3) then
			
	message("Переменная a имеет значение 3");
			
elseif (a == 4) then
				
	message("Переменная a имеет значение 4");
				
elseif (a == 5) then
					
	message("Переменная a имеет значение 5");
					
else					
	message("Переменная a имеет другое значение");
	
end

Этот пример выполняет абсолютно тоже самое что и пример выше, но выглядит гораздо лучше.

Теперь я думаю вы разобрались с условиями и сможете использовать их в своей работе.

Постоянная ссылка на это сообщение: https://k-pavel.ru/uslovnyj-operator-if-then-else-v-lua/

avatar

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Подписаться на