Гайд | Lua для чайников {1 часть}
- 
							
							
							
							
Универсальный гайд по входу в кодинг на Luaгайд полностью написан мной (t1m1yep) при помощи своих знаний и документации Lua для octothorp team и его сообщества  Предисловиепривет! меня зовут тимофей и на протяжении всего этого гайда я буду обучать тебя входу в кодинг на lua и базам glua 
 рекомендую взять чай/кофе или твой любимый напиток, чипсы или другую закуску и готовься впитывать большое кол-во информации
 удачи! Установка IDE и Luaдавай начнем с установк всего необходимого для разработки: 
 для начала установим среду разработки - IDE (англ. интегрированная среда разработки)предлагаю тебе использовать visual studio code, но если ты знаком с любым другим IDE, можешь пользоваться им 
 установить vs code
 после установки открывай visual studio code (дальше для удобства буду его называть VSC)
 в левой части интерфейса будет кнопка с квадратиками, в ней мы выберем необходимые дополнения (скриншот ниже, нажимай туда) в строку поиска пиши Lua и нажимай установить на расширении, показанном на скриншоте  делай тоже самое с расширением glua (тоже показано на скриншоте)  теперь установим Lua. я смогу сделать гайд на установку луа на windows только в феврале, сейчас у меня мак… поэтому… смотреть гайд тут (НЕ МОЙ): видео гайд 
 нужный сайт для установкитеперь ты готов к разработке! учимся писать код!откроем папку для разработки, рекомендую создать отдельную папку (смотреть скриншот)  теперь создадим файл: (смотреть скриншот)  нажимаем на кнопку создать файл и вводим: main.luaв этом случае main - название файла, а .lua это расширение файла. название файла вы можете сделать своим, но расширение обязательно .lua после этого откроется окошко с вводом кода, туда мы будем писать код 
  также в VSC удобный встроенный терминал. для этого нажмите словосочетание CTRL + ` (апостроф)переведи курсор в верхнюю панель с кодом и готовься запоминать терминологияпеременная - ячейка с определенным названием и значением: название_переменной = значение_переменнойпеременные могут быть глобальными и локальными. локальные имеют перед названием слово “local”: local название_переменной = значение_переменнойтипы данных в Luaлуа - динамически типизированный язык, поэтому тут вам не надо указывать типы, но, все же их необходимо знать для понимания языка и чтобы не допускать ошибок с этой темой string - строкамоя_крутая_строка = "привет, мир!"строка ВСЕГДА обьявляется в кавычках!! это очень важно, если их не указать, компьютер будет искать переменную вместо строки, так как именно переменные указываются без кавычек!!! number - числомое_крутое_число = 5также число может быть дробью: моя_крутая_дробь_тоже_число = 5.5boolean - булево значениевы наверняка знаете “true” и “false” из учебников английского языка 5 класса  мое_крутое_булево_значение = trueи еще: мое_крутое_булево_значение = falseесли не знаете английский, true - правда, false - ложь nil - ничегоnil - буквально ничего  мое_крутое_ничего = nilfunction - функцияfunction моя_крутая_функция(мой_крутой_аргумент_функции)пока что ты еще не знаешь о функциях, но мы поговорим о них прямо в следующем параграфе! в этом параграфе я рассказал тебе только о самых базовых типах, всего их восемь, об остальных мы поговорим позже функциифункция имеет аргумент (иногда его не может быть) и название, также она может возвращать значение. давай посмотрим на примере: function название_функции(аргумент_функции) -- обьявляем функцию local переменная = 10 -- обьявляем переменную return переменная -- возвращаем переменную end -- обьясняем компьютеру, что наша функция закончиласьты мог заметить, что после обьявления функции, все что находится в ней начинается с нескольких пробелов. такой отступ называется табуляцией. чтобы удобно создать табуляцию - нажми кнопку TAB и табуляция появится сама **также функция может принимать аргументы: ** function суммировать(а, б) -- создаем функцию local сумма = а + б -- создаем переменную, равную сумме аргументов а и б return сумма -- возвращаем нашу переменную сумма end -- заканчиваем функциюаргументы в функции перечисляются через запятые и могут иметь любые названия, это обычные переменные теперь вызовем функцию: суммировать(10, 50)функция должна быть обьявлена выше, чем ее вызов в коде! чтобы вывести результат функции, нам понадобится вызов встроенной функции print: print(суммировать(10, 50))также можем вывести любую другую переменную через функцию print: print("привет, челог!")для этого понадобится отправить строку в кавычках, как я говорил раньше в параграфе с типами данных!! если этого не сделать, компьютер будет искать переменную вместо строки также можно вывести переменную: local строка = "привет, челог!" print(строка)разницы между двумя верхними примерами нет условияусловия позволяют выполнять определенный отрывок кода только если условие соблюдается условия if и elselocal a = 10 -- обьявляем переменную a local b = 5 -- обьявляем переменную b if a > b then -- говорим компьютеру: ЕСЛИ а БОЛЬШЕ б, ТОГДА печатай текст print("переменная а больше чем б!") endусловие также имеет табуляции и заканчиваются с помощью end. в этом случае нам напишет строку “переменная а больше чем б!” но если мы поменяем переменные значениями (тоесть переменная a станет равна 5, а переменная b станет 10) теперь введем еще одно условие else local a = 10 local b = 5 if a > b then print("переменная а больше чем б!") else -- говорим компьютеру, что если условие не выполняется, то печатаем текст print("функция не подошла не под одно условие!!") endelseifа что если может быть еще один вариант? если переменные равны, и нам надо напечатать текст именно о том, что переменные равны? в таком случае нам поможет условие elseif local a = 10 local b = 5 if a > b then print("переменная а больше чем б!") else if a == b -- иначе если а == б print("переменная а равна б!") -- печатаем текст else print("функция не подошла не под одно условие!!") endвот так выглядят условия. и да, end у них один, так как они считаются одним блоком кода когда мы сравниваем две переменные на равенство, пишется два знака “=”, а если присваеваем переменной значение, пишется один знак “=” ввод и выводесть три потока - stdIN, stdOUT, stdERR 
 нас интересуют только первые два (пока что)
 stdin - осуществляет пользовательский ввод из консоли
 stdout - осуществляет вывод данных в консоль
 чтобы пользователь мог ввести значение переменной, рассмотрим такой код:local переменная = io.read()мы вызываем функцию read из библиотеки io (input/output) библиотека - определенный код, созданный для удобства использования заготовленных функций. язык имеет встроенные библиотеки 
 а теперь выведем этот ввод:local переменная = io.read() print(переменная)массивынабор переменных, каждая из которых хранит значение, идентифицируемое с помощью одного или нескольких индексов 
 рассмотрим следующий код:local массив = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}так создается массив, в массиве количество элементов считается от нуля, тоесть последним индексом этого массива будет 9, а первым 0 
 обратимся к 5 индексу массива в этом коде (это число 6):local массив = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} print(массив[5]) -- в квадратных скобках после названия переменной указываем индекс переменной в массивециклыциклы позволяют нам выполнять один блок кода н-нное количество раз. один такой раз называется одной ИТЕРАЦИЕЙ операторы (важно)= - оператор присваивания 
 == - оператор сравнения (если переменные равны)
 ~= - оператор сравнения (если переменные не равны)
 < - оператор меньше
 > - оператор больше
 <= - оператор меньше-равно
 >= - оператор больше-равноwhilewhile переводится как “пока”, тоесть компьютер делает какой то блок кода пока условие выполняется. грубо говоря, if вместе с циклом. рассмотрим цикл while: local i = 0 -- i это общепринятое название переменной обозначающей количество итераций local limit = 10 -- количество итераций while i < limit do -- пока i меньше переменной limit (10) делай этот блок кода print(i) -- печатаем переменную i i = i + 1 -- i равняется i плюс 1 endэтот код выведет числа от 0 до 9 repeat (repeat-until)repeat -- повторять line = io.read() -- считываем ввод от пользователя until line ~= "" -- если ввод пользователя не пустая строка, то повторяем еще раз print(line) -- печатаем последний ввод пользователяrepeat перевыполняет код еще раз, если условие until выполняется. until выполняет роль if числовой forцикл for - переводится как “пока”, как и while, только используется в других целях и имеет другой вид for i = 1, 10 do print(index) endfor делает “шаги”, после каждого автоматически прибавляя 1 к переменной i, а число 10 после запятой здесь означает количество шагов. этот код выведет числа от 1 до 10 рядовой forсразу попрошу учесть что рядовой for не военный и даже не служит в армии! рядовой тут означает - по рядам рядовой for позволяет итерироваться (перевыполнятся) блоку кода пока в данном ему массиве имеются элементы. 
 рассмотрим этот код:local a = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100} for i,v in ipairs(a) do -- i (индекс обьекта в массиве) и v (значение массива с индексом i) в ipairs(массив) print(v) -- печатаем значение массива с индексом i endipairs() - функция которая возвращает сразу два значения: индекс значения в массиве и само значение в массиве. перестает возвращать значения когда массив заканчивается, следственно, цикл тоже останавливается возвращать два значения легко - return первое_значение, второе_значение . просто перечисли через запятую! breakbreak позволяет остановить цикл вне его выполнения 
 рассмотрим данный код:local a = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100} for i,v in ipairs(a) do -- i (индекс обьекта в массиве) и v (значение массива с индексом i) в ipairs(массив) if v == 50 then break end -- если значение массива равняется 50, останавливаем цикл print(v) -- печатаем значение массива с индексом i endда, условия в одну строку реализуются только если блок, выполняемый в условии однострочный: if 10 > 20 then print(“10 меньше 20!!”) end Заключение первой части гайдаитоговый гайд выйдет ОЧЕНЬ большим, поэтому я считаю что будет лучше разбить его на несколько частей, дабы сильно не нагружать мозг читателя. спасибо что дочитал до этого момента! мне правда приятно что я смогу научить кого-то своим навыкамитоговая работа (по желанию)если ты хочешь закрепить свои навыки, можешь выполнить это задание и отправить его мне в личные сообщения (дискорд - timofeyw) или канал #programming дискорда Octothorp Team с моим пингом. отправляй файл .lua, я обязательно отвечу тебе сделать программу, которая будет запрашивать у пользователя количество чисел и после в цикле (можно выбрать любой) запросить и суммировать столько чисел, сколько пользователь ввел в начале (то самое кол-во чисел о котором я сказал в начале задания) обратная связь (вопросы насчет кода)смело пиши мне в личные сообщения дискорда - timofeywя постараюсь ответить в кратчайшие срокиобратная связь (вопросы насчет топика, ошибки топика)можешь писать прямо в комментарии этого топика или мне в личные сообщения дискорда - timofeywспасибо и удачи! новая часть выйдет как можно скореевторая часть
- 
							
							
							
							
сейчас отдохну и начну писать вторую часть, сообщайте насчет ошибок пожалуйста 
- 
	 Т тимиеп делает ссылку на эту тему Т тимиеп делает ссылку на эту тему
- 
							
							
							
							
спасибо за лайки, мне очень приятно 
- 
							
							
							
							
приступаю ко второй части, завтра/может быть сегодня будет готово (у меня +4 от мск, поэтому скорее всего завтра) 
Похожие темы




 
				
