لوا یا همان LUA یک زبان برنامه نویسی بسیار سبک و همچنین پرسرعت است . این زبان برنامه نویسی ، کاربرد بسیار زیادی برای بازی سازی دارد. توسعه دهنده های گیم علاقه شدیدی به زبان برنامه نویسی لوا دارند . که واقعا هم حق دارند ! زیرا سرعت اجرای اسکریپت های لوا به قدری زیاد است ، که وقتی قرار است سرعت اجرای زبان دیگری  سنجیده شود آن را با لوا مقایسه می کنند ! لوا ، یک زبان برنامه نویسی تفسیری است .کد های لوا ، روی پلتفرم های مختلف بدون نیاز به کامپایل (لوا یک زبان برنامه نویسی مفسری است) جرا می شود . می توانیم بگوییم لوا یک زبان برنامه نویسی کراس پلتفرم است .

توجه : پکیج آمو برنامه نویسی lua ، به زودی برای شما عزیزان آماده سازی و ارایه می شود . این پکیج آموزشی ، ویدیویی خواهد بود و تمام نکات حرفه ای این مبحث را برای شما دربرخواهد داشت .

معرفی و تاریخچه ی لوا

لوا ، همیشه جزو زبان های پرکاربرد اسکریپتی بوده . یعنی لوا قابلیت این را دارد که وظایف تکراری را با سرعت و دقت بالا را ، با ظرافت زیادی انجام دهد و از پس آنها بر بیاید . این زبان برنامه نویسی در زمان به وجود آمدن بر پایه ساده و قابل فهم بودن و نزدیکی به زبان انسان ساخته شد. همین مورد ، باعث محبوبیت لوا شد . در واقع اگر شما دوست دارید یک زبان برنامه نویسی غیرپیچیده ، کاربردی و سبک را یاد بگیرید ، لوا می تواند انتخابی خوب برای شما باشد .

زبان برنامه نویسی lua در سال 1993 یعنی حدود 29 سال پیش  پا به عرصه وجود نهاد . بسیاری از زبان های برنامه نویسی بعد از گذشت سالیان سال از محبوبیت آنها کاسته می شود و رفته رفته کنار گذاشته می شوند. اما لوا برخلاف چیزی که بسیاری از افراد تصور می کنند ، اینگونه نیست ! این زبان همچنان در بسیاری از عرصه ها به شدت استفاده می شود . همچنین در توسعه بسیاری از پلتفرم ها جایگاهی حیاتی دارد. این زبان در پروژه های تجاری و غیرتجاری بزرگی  استفاده می شود که چند مورد از آنها را برای شما آورده ایم. همچنین می توانید در مورد (آموزش اسکریپتری ام تی ای) بخوانید

موارد استفاده لوا

  • Adobe Photoshop Lightroom
  • Apache HTTP Server
  • Damn Small Linux
  • LuaTex
  • nmap
  • WireShark
  • Crysis
  • BZFlag
  • PlayStation Home
  • Dawn of War
  • World of Warcraft
  • DeathStatue Game(بازی تندیس مرگ)

البته استفاده لوا ، فقط به همین موارد محدود نمی شود و ما فقط برخی استفاده ها را مثال زدیم.

 

آیا Lua  شی گرا است؟

بله زبان برنامه نویسی لوا ، از شی گرایی نیز پشتیبانی می کند و شما می توانید با استفاده از این قابلیت به پیاده سازی برنامه هایی شی گرا بپردازید.

 

لوا اوپن سورس است یا کلوز سورس ؟

به طور کلی ، لوا یک زبان برنامه نویسی کاملا اوپن سورس محسوب می شود .البته به تصور بسیاری از افراد ، وقتی ما از زبانی اوپن سورس استفاده می کنیم ، نمی توانیم از کد هایمان محافظت کنیم . در نتیجه این تصور را خواهند داشت که اگر من یک برنامه نویس لوا باشم ، سورس های من همواره در معرض خطر خواهند بود و من نمیتوانم از کدهایم محافظت کنم . در نتیحه ، این تصور اشتباه باعث می شود ، که دید بدی نسبت به این زبان ها پیدا کنند. اما نگران نباشید . به طور کلی اصلا چنین قاعده ای وجود ندارد . در کل برای محافظت از کد های lua ی خود می توانید آنها را به luac تبدیل کنید. یا اصلا با تبدیلگر های دیگر همان فایل lua  خود را غیر قابل مشاهده کنید. البته ترفند ها و کار های مختلفی برای محافظت از کد وجود دارد .و این موارد صرفا مثال بود .

 

آموزش حلقه ها در برنامه نویسی لوا ، اموزش کامل زبان برنامه نویسی lua

یادگیری زبان برنامه نویسی لوا

همانطور که می دانید ، برای یادگیری lua ، در کامیونیتی ایرانی برنامه نویس ها ، منابع زیاد و قابل توجهی موجود نیست . لذا یادگیری آن کمی دشوار خواهد بود. البته ما قصد داریم یک پکیج آموزشی لوا ، برای شما تهیه کنیم و این مساله مهم را برای شما حل کنیم . اما برای شروع بهتر است شما ، به یوتیوب ، و کتاب های مرجع و زبان اصلی (اگر زبانتان خوب است)  مراجعه کنید و برای یادگیری lua تعلل نکنید .

ما برای شما یک سری کتاب خوب برای شروع کار آماده کرده ایم که لینک دانلود آنها را در پایین برای شما قرار دادیم

  • کتاب آموزش لوا


 

درحال حاضر lua به چه دردی میخورد؟

  • توسعه ی بازی های ویدیویی
  • فعالیت در حوزه پلتفرم های توسعه بازی های قبلا ساخته شده (ام تی ای ، راست ، ماینکرفت ، فایوم ، وارکرفت)
  • توسعه وب با پلتفرم هایی مانند(Orbit,WSAPI,Xavante,Sputnik,CGILua )
  • ساخت و توسعه رابط های API
  • استفاده بعنوان تکه ای از برنامه ای دیگر در برنامه ای دیگر
  • درنهایت کاربرد در حوزه هایی که نیاز به یک اسکریپت سریع ، سبک و کاربردی دارند

کدام نسخه از lua را یاد بگیریم؟

با توجه به این که تفاوت های زیادی در ورژن های مختلف لوا وجود دارد ، پیشنهاد ما به شما ورژن 5.1   لوا می باشد ، زیرا از پایداری (استبلیتی) خوبی برخوردار است و علاوه بر آن پلتفرم های قدرتمندی مانند ام تی ای از آن نسخه پشتیبانی می کنند .

چگونه برنامه نویس لوا بشویم

برای شروع برنامه نویسی LUA  نیاز داریم پایه های اولیه آن زبان را یاد بگیریم .ما برای شما قطعه کد هایی به منظور آشنایی با زبان برنامه نویسی لوا آماده سازی کرده ایم . این نمونه کد ها شما را برای ادامه راه آماده می کند

 

hello world به زبان لوا

 

print (“Hello World !”)

این دستور ، به ما خروجی می دهد ، حالا با استفاده از  “..” می توانیم دو دیتا را به هم متصل کنیم و خروجی بگیریم ،به این گونه

print (“Hello”..”World !”)

 

آموزش اسکریپت نویسی lua

انواع دیتا و متغیر ها در زبان برنامه نویسی لوا

در این بخش نوع های مختلف ممکن در این زبان برنامه نویسی را به خوبی خواهیم شناخت .(بزودی به صورت حرفه ای تر در آموزش لوا بصورت ویدیو مباحث را حرفه ای تر به شما آموزش خواهیم داد)

  • نوع nil در لوا

این نوع دیتا به معنای دقیق هیچ است ، اگر با زبان های برنامه نویسی دیگر اشنا داشته باشید ، این متغیر مانند (None , null , ..)در زبان  های برنامه نویسی دیگر محسوب می شود ، به یاد دشته باشید که nil به هیچ وجه معنای 0 نمی دهد ، 0 خودش یک مقدار است اما nil به معنای هیچ است ، یعنی چیزی که وجود ندارد

 

  • بولین ها در لوا (boolean)

این نوع دیتا ، به معنای صحیح و اشتباه می باشد ، به عبارتی این دیتا می تواند حاوی تنها دو مقدار True  و False  باشد . این نوع دیتا ، بیشتر در زمان مقایسه ، شرط ها ، لوپ ها و چنین چیز هایی استفاده می شود ، در خاطر  داشته باشید که  true حامل عدد 1  و False حامل عدد 0 است.

  • متغیر های عددی یا همان number های lua

اعداد در لوا ، مانند دیگر زبان های برنامه نویسی ، حامل هر عدد حسابی شامل اعداد مثبت ، منفی ، اعشاری هستند ، اعدادی که در این نوع متغیر ریخته می شوند قابل محاسبه هستند (برعکس اعدادی که در رشته ها ریخته می شوند)

 

  • رشته ها در لوا (string)

رشته ها، نوع متغیر هایی هستند که شامل کاراکتر هایی هستند که در کنار هم قرار می گیرند ،هرکدام از این کاراکتر ها دارای یک ادرس در متغیر هستند و از هم بطور مجزا می توانند وجود داشته باشند ، رشته در برنامه نویسی از مهم ترین نوع دیتا هستند ، اما باید این را بدانید که اگر یک عدد را در غالب یک رشته معرفی کرده باشید ، نمی توانید برای محاسبه از آن استفاده کنید ، منظورم این است ، اگر شما اعداد 20 و 23 را در قالب رشته باشید ، برنامه آن ها را به عنوان اعداد نمی شناسد و معنای عددی برای آنها قایل نیست و صرفا به عنوان توالی 2 و 0  ،  و توالی 2 و 3 در کنار هم آن ها را شناسایی می کند ، بدیهی است که نمی توانیم از رشته ها برای محاسلتی مثل جمع و تفریق و ضرب و تقسیم استفاده کنیم .  مطلب پیشنهادی (سورس ربات تلگرام)

بهترین آموزش زبان برنامه نویسی لوا lua

  • توابع یا همان فانکشن ها در لوا (function)

تابع در برنامه نویسی یک قطعه از کدهای ساختاریافته و قابل استفاده است. هر تابع ساز و کار خاصی را برای ما پیاده سازی می کند . به کمک توابع می‌توانیم بخش‌های مختلف برنامه را از هم تفکیک کرده و به آن نظم بیشتری بدهیم. همچنین فهم و بازبینی کدها راحت‌تر انجام می‌شود.

  • تیبل ها در لوا (Tables)

تیبل ها یا همان جدول ها ، یکی از نقا مثبت لوا محسوب می شوند ، در این نوع داده ما می توانیم با دو حالت دیکشنری و ساختار یافته و  حالت دیگر معمولی تعداد زیادی داده را در یک متغیر جمعاوری کنیم ، تیبل ها به ما کمک می کنند نظم بیشتری در ساختار  برنامه خود ایجاد کنیم و دیتای خود را به خوبی مدیریت کنیم .

عملگر های منطقی  واپراتور های لوا

  • + :  این اپراتور وظیفه جمع کردن را به عهده دارد
  •  – : این اپراتور وظیفه کم کردن را به عده دارد
  • / :  وظیفه ای اپراتور تقسیم کردن است
  • ^ : از این اپراتور برای به توان رساندن استفاده می شود
  • %: در نهایت این عملگر ، مقدار باقیمانده از تقسیم دو عدد را بازمی گرداند
  • and, or , not : این عملگر ها دقیقا مانند مدل ریاضی خود عمل می کنند(در پکیج آموزشی لوا بهتر درموردشان توضیح می دهیم)

شرط ها در lua

شرط ها و یا همان کاندیشن ها ، در زبان های مختلف برنامه نویسی ، به ما کمک می کنند ،بتوانیم مسیر برنامه را به نحوری پیش ببریم که در شرایط مختلف ، عکس العمل خاصی از خود نشان دهد ، مثلا  می توانیم به برنامه بگوییم گر ورودی برنامه مثبت بود به ما بگو عدد مثبت است و اگر منفی بود بگو منفی است ، در غیر این صورت اگر صقر بود به ما صفر را نشان بده ، این ساده ترین حالت شرط هاست . مثال:

x = 2

if (x == 1) then
print (“x = 1”)
else if x == 2 then
print (“x==2”)
else
print(“idk”)
end
end

این تکه کد ساده ، کارش این است که اول متغیر x را می گیرد ، در مرحله اول اگر برابر با 1 بود پرینت می کند که x با 1 برابر است در مرحله دوم اگر شرایط بالا برقرار نباشد و همچنین x برابر 2 باشد پرینت می کند x  با 2 برابر است و در غیر این صورت نمی دانم را پرینت می کند (idk = i dont know)

 

حلقه ها در LUA

حلقه ها در زبان برنامه نویسی لوا ، به دو بخش تقسیم می شوند ، نوع حلقه های for و حلقه های while که هردو را به صورت جداگانه برای شما بررسی می کنیم و توضیح می دهیم . حلقه ها وظیفه تکرار یک عملکرد را دارند و این اعمال را تا زمانی ادامه می دهند ، که شرایطی که ما از قبل برای آنها معرفی کردیم برقرار باشند ، درواقع حلفه ها در لوا ، یک کار را تا زمانی انجام می دهند که ما بخواهیم .

 

حلقه های  while  در لوا

این نوع حلقه ها دارای ، کاندیشن و یا همان شرط های واحد هستند ، یعنی ما شرط ها را به آنها تعریف می کنیم ،و تا زمانی که شرط برقرار باشد ، کار را ادامه می دهند . باید توجه داشته باشید که این حلقه ها نیازمند استفاده دقیق هستند و اگر به اشتباه از آنها استفاده کنیم ، دچار حلقه نامتناهی در برنامه نویسی می شویم (همان حلقه های بی نهایت یا  infinitie loop). یعنی مثلا شرطی که برقرار کرده ایم هرگز از حالت معقول خود خارج نشود و همین باعث می شود برنامه تا بی نهایت اجرا شود و برای ما مشکل ساز شود. مثال از استفاده از حلقه ها

 

x = 1
while x <=1000000 do
x = x+1
print (x)
end

خب ، این کد ، اول x را به عنوان عدد 1 معرفی می کند ، بعد از آن یک حلقه می آید که می گوید اگر x کوچکتر و یا برابر عدد 1000000 بود ، حلقه را تکرار کن ، حالا نقطه عطف ما چیست ، ما در درون حلقه به ازای هربار حرکت حلقه به مقدار 1 واحد به x اضافه می کنیم ، حالا این باعث می شود که حلقه به تعداد999999 بار تکرار شود (یک بار کمتر از عدد معرفی شده ، چون عدد اولیه ما خودش از قبل 1 واحد را داشت)

آموزش حرفه ای برنامه نویسی lua

حلقه های for در lua

این حلقه هابا استفاده از iterator ها و یا چیز های قایب شمارش کار می کنند ، البته مقادیر قابل شمارش در لوا با قواعد خودشان کار می کنند ، اینگونه است که ما یک حلقه تعریف می کنیم ، یک ابتدا و انتهای مشخص و درصورت لزوم یک گام به آن می دهیم ، حلقه شروع به حرکت کرده و تا زمان پایان ایریتور کار می کند . (اگر گیج شدید نگران نباشید با مثال زیر مساله متوجه می شوید)

 

for i=0,50,2 do
print(i)
end

این کد ، یک حلقه for می سازد ، در ابتدا یک i  تعریف می کند که در شروع 0 است ، انتهای تعریف شده برای آن 50 است ، و 2 که در اخر خط اول قرار دارد نشان دهنده ی گام است ، یعنی با هر بار حرکت حلقه دو واحد به i باید اضافه شود ، در نهایت ، برنامه عدد 2 تا 50 را برای ما پرینت می کند . به همین سادگی ، به همین خوشمزگی !!!

!