نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • امنیت
  • Lua یک زبان برنامه نویسی دستوری است. حلقه ها با عبارت for در Lua

Lua یک زبان برنامه نویسی دستوری است. حلقه ها با عبارت for در Lua

لوا(از پرتغالی به معنی "ماه") یک زبان برنامه نویسی تفسیر شده است که توسط گروه فناوری گرافیک کامپیوتری دانشگاه کاتولیک پاپی ریودوژانیرو در برزیل توسعه یافته است. آزادانه، با منبع باز توزیع می شود کد منبعبه زبان C از نظر قابلیت ها و پیاده سازی، به جاوا اسکریپت نزدیک تر است، اما از نظر من، انعطاف پذیرتر است و امکانات بیشتری دارد. علیرغم این واقعیت که Lua مفاهیمی به عنوان "کلاس" یا "شیء" ندارد، بر اساس آن، ساخت برنامه های OOP بر اساس جدول های متا کاملاً امکان پذیر است، که به شما امکان می دهد، به عنوان مثال، بارگذاری بیش از حد اپراتور را اجرا کنید.

در این درس، می‌خواهم تعدادی از بهترین‌ها را به شما ارائه دهم اطلاعات کلیدر مورد این زبان و در درس های بعدی به طور عملی به شما نشان خواهم داد که چگونه می توانید از زبان Lua برای حل مشکلات برنامه نویسی بازی استفاده کنید.

تاریخچه لوا

همانطور که در بالا گفتم، Lua توسط یکی از بخش های دانشگاه کاتولیک ریودوژانیرو توسعه داده شد. این اتفاق در سال 1993 رخ داد. اما از آن لحظه، Lua به طور فعال در حال توسعه است و به طور دوره ای نسخه های جدید Lua منتشر می شود - راحت تر، سریع تر، کاربردی تر شده است. AT این لحظه نسخه پایدار Lua 5.1 است، با این حال نسخه آلفا 5.2 در حال حاضر موجود است.

انواع لوا

AT لواهشت نوع داده اصلی وجود دارد:

  • صفر (تعریف نشده)
  • بولی (بولی)
  • عدد (عددی)
  • رشته
  • عملکرد (عملکرد)
  • داده های کاربر (اطلاعات کاربر)
  • نخ (نخ)
  • میز (جدول)

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

جداول لوا

میزها بیشترین هستند نوع مهمداده ها در Lua - جداول مبنای ذخیره و استفاده هستند انواع سفارشیداده ها: ساختارها، آرایه ها، لیست ها، مجموعه ها و غیره در Lua از طریق جداول پیاده سازی می شوند. جدول در Lua مجموعه‌ای از جفت‌های [Key, Value] است که کلید آن می‌تواند هر مقداری غیر از صفر باشد.

دستگاه لوا

مانند بسیاری از زبان های برنامه نویسی تفسیر شده، پیاده سازی Lua دارای یک کامپایلر جداگانه بایت کد قابل اجرا از منبع و یک ماشین مجازی برای اجرای بایت کد تولید شده است. در مورد Lua، بایت کد دستورات ماشین نیست، بلکه دستورات " پردازنده مجازی Lua" با رجیسترهای متعدد، که کارایی اجرا را بهبود می بخشد. ماشین مجازی Lua همچنین از اصل جمع آوری زباله (مشابه جاوا یا دات نت) استفاده می کند که به برنامه نویس اجازه می دهد نگران تخصیص / حذف حافظه نباشد - این کار توسط خود مفسر انجام می شود.

برای کارهای حیاتی، یک کامپایلر Lua: وجود دارد که به شما امکان می دهد کد سریع تری دریافت کنید.

کجا از Lua استفاده می شود؟

Lua در طول سال ها وجود و توسعه خود، قلب بسیاری از توسعه دهندگان نرم افزار را به دست آورده است و امروزه در زمینه های مختلف برنامه نویسی از آن استفاده می شود: در اسکریپت نویسی. بازی های کامپیوتری(کریزیس، Far Cry، Diablo 3، S.T.A.L.K.E.R.)، در سرورهای بازی MMO (World of Warcraft، Allods Online)، در بسته های گرافیکی (به عنوان مثال، در Adobe فتوشاپ لایت روم)، در موتورهای بازی و طراحان بازی (به جای آن)، برای برنامه نویسی رابط کاربری گرافیکی برخی اپلیکیشن ها (همان فتوشاپ لایت روم) و در بسیاری از کارهای دیگر.

اسناد لوا

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

معرفی

این راهنما برای کسانی است که تجربه محدودی با LUA دارند. ما اصول اولیه نحوه کدنویسی، بلوک‌های ساختمانی برای ایجاد کدهای پیچیده‌تر را پوشش می‌دهیم و چند مثال ارائه می‌کنیم. دفترچه راهنما به گونه ای نوشته شده است که بلافاصله عملی می شود. بنابراین، شما باید شبیه ساز Tabletop و ویرایشگر LUA خود را برای ادامه کار باز کنید.

این اولین راهنمای این مجموعه است. دومی یادگیری بیشتر لوا است. سومی یک مجموعه است ویژگی های مفیدتوابع یادگیری لوا نامیده می شود.

قبل از اولین زدن کلید

اول، اگر می خواهید در Tabletop Simulator اسکریپت نویسی کنید، به شدت توصیه می کنم Atom را نصب کنید. می داند از چه توابعی می توان استفاده کرد و کد را به/از TTS وارد/صادرات می کند.

سپس باید نشانه گذاری کنید. هنگامی که شروع به نوشتن اسکریپت های خود کردید، اغلب به این سایت مراجعه خواهید کرد. در اینجا خواهید یافت توابع ویژهدر Tabletop Simulator و نحوه کار آنها. شما اغلب از صفحات API و Object استفاده خواهید کرد، اما حداقل، بنا به تجربه من.

آموزش

هنگامی که اسکریپت های خود را در Tabletop ذخیره می کنید، از شما استفاده می کند آخرین ذخیرهو سپس اسکریپت ها را در آن بارگذاری کنید. بنابراین، برای هر اسکریپتی که قصد نوشتن آن را دارید، باید موارد زیر را انجام دهید:

  • میز را همانطور که می خواهید آماده کنید.
  • جدول را ذخیره کنید.
  • جدول را بارگیری کنید.
برای این تمرین یک میز خالی بردارید و دو شی (من از یک بلوک مربع و یک بلوک مستطیلی استفاده کردم) و یک چکر قرمز ایجاد کنید.

آن را بارها و بارها فشار دهید، زیرا مطمئناً این کار را خواهید کرد.

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

button_parameters = ( click_function="buttonClicked", function_owner=nil, label="Press Me", position=(0,0.8,0), rotation=(0,0,0), width=500, height=500, font_size= 100 )

اعتبار اضافی:این بهترین زمان برای شروع بازی است چیزهای مختلف، که می توانید با اشیا انجام دهید. به صفحه "Object" در پایگاه دانش بروید و مطالب را امتحان کنید. اشیاء را جابجا کنید، آنها را مجبور کنید موقعیت خود را تغییر دهند، رنگ آنها را تغییر دهید، هر چه فکر می کنید.

اعتبار اضافی:همچنین با هر بار کلیک بر روی دکمه کلیک_function با دو پارامتر اجرا می شود. اولی ارجاع به یک شی است، به ویژه اشاره به شیئی که دکمه به آن متصل است. رنگ دوم (به عنوان مثال، "آبی" - آبی) در قالب رشته ای از رنگ پخش کننده ای است که دکمه را فشار داده است.

5) ادعای منطقی

مقایسه متغیرها

از نو تمام اسکریپت های داخل تابع buttonClicked() را حذف کنید.ما قصد داریم یک متغیر جدید ایجاد کنیم و سپس آن را تغییر دهیم. متغیر جدید از نوع Boolean خواهد بود. مقادیر بولی فقط می توانند درست، نادرست باشند. مقادیر بولی همیشه با حروف کوچک نوشته می شوند. ابتدا، متغیر خود را در زیر GUID شیء و جستجوگر خود ایجاد می کنیم.

trueOrFalse = درست است

سپس، در buttonClicked، مقداری منطق را تنظیم می کنیم تا بررسی کنیم که آیا مقدار trueOrFalse است یا خیر. اگر درست باشد، درست بودن آن را چاپ می‌کند و آن را به False تغییر می‌دهد. اگر دوباره دکمه را فشار دهید، نشان می دهد که False است و مقدار را به True تغییر می دهد.

اگر trueOrFalse سپس print ("trueOrFalse درست بود.") --trueOrFalse درست بود. trueOrFalse = false else print("trueOrFalse false بود.") --trueOrFalse false بود. trueOrFalse = پایان واقعی

ما همچنین می‌توانیم آن را به این صورت بنویسیم «اگر trueOrFalse == درست است»، اما این ضروری نیست. به یاد داشته باشید که دستور IF باید یک مقدار بولی ارسال شود. و از آنجایی که trueOrFalse در حال حاضر یکی از این موارد است، می توانیم "== true" را کنار بگذاریم.

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

این یک نوع دیگر است - جفت. جفت برای جداول بدون کلید عددی و ipair برای جدول با کلیدهای عددی متوالی (آرایه) مورد نیاز است. ipairs مرتب است، در حالی که جفت ها می توانند به هر ترتیبی باشند.

Lua یک زبان برنامه نویسی است که توسط Roberto Jeruzalimski، Valdemar Selish و Luis Enrique de Figueiredo ساخته شده است. سخت است باور کنیم که چنین زبان محبوبی نه در جایی در سیلیکون ولی یا MIT، بلکه در برزیل آفتابی ایجاد شده باشد. در کشوری که به نظر می رسد بسیار دور از مراکز تمرکز فناوری اطلاعات قرار دارد. با این حال، در یکی از بخش های دانشگاه کاتولیک ریودوژانیرو، آنها توانستند چنین انعطاف پذیری و زبان قدرتمندکه در حال حاضر به طور گسترده در بسیاری از مناطق استفاده می شود.

همه چیز با توسعه یک زبان کمکی برای شروع شد شرکت نفتپتروبراس. مهندسان نفت برای پردازش داده‌های شبیه‌سازی‌های فرآیندهای خاص نیاز به یک جلوی گرافیکی داشتند. در عین حال، تجهیزات می تواند بسیار متفاوت باشد - هم PC DOS و هم UNIX، Macintosh، بسیاری از زبان های موجود (مثلاً Perl) به سادگی مناسب نیستند، زیرا آنها فقط روی یکی از اینها کار می کنند. سیستم های. در این مرحله زبانی به نام DEL (زبان ورودی داده) توسعه یافت. با گذشت زمان، قابلیت های این زبان کافی نبود، بنابراین توسعه یافت زبان جدید SOL (زبان شیء ساده) نامیده می شود. و سرانجام، در سال 1993، توسعه دهندگان متوجه شدند که می توان آنها را در یک زبان برنامه نویسی کامل ترکیب کرد که Lua نام داشت (در پرتغالی، Sol خورشید است و Lua ماه است). به هر حال، در سال 1996، روبرتو یروزالیمسکی و سایر نویسندگان این زبان تصمیم گرفتند تا در مورد کار خود به جهان بگویند و مقاله ای در مورد Lua به مجله "Software: Practice & Experience" ارسال کردند. Lua بعداً در مجله دکتر Dobb منتشر شد که یکی از برترین توسعه دهندگان بازی های ماجراجویی در LucasArts از آن مطلع شد. او که تصمیم گرفت از Lua به جای زبان اسکریپت خود استفاده کند، از سادگی و کارایی آن شگفت زده شد. در نتیجه، بیشتر بازی در حال توسعه در آن زمان در Lua بازنویسی شد که به رشد محبوبیت آن کمک کرد.

فلسفه زبان لوا

بیشتر از همه، ایدئولوژی Lua شبیه جاوا اسکریپت است. به عنوان مثال، هر دو یک مدل اولیه برای پیاده سازی OOP دارند. با این حال، Lua بسیار انعطاف پذیرتر و قدرتمندتر است. لوا استفاده می کند ماشین مجازیو یک زباله جمع کن که آن را بیشتر شبیه جاوا می کند، اما این مانع از حفظ سادگی و ظرافت آن نمی شود.

زبان Lua بر اساس جداول پیاده سازی شده با استفاده از آرایه های انجمنی است. جدول در اینجا به معنای مجموعه ای از داده ها است که در آن هر یک از کلیدهای منحصر به فرد ارزش خاص خود را دارد. با استفاده از جداول در Lua، می توانید تقریباً هر داده ای را نشان دهید - آرایه های معمولی، مجموعه ها، جداول نمادها و غیره. توابع را می توان در فیلدهای جدول نیز توضیح داد. به عبارت ساده، اگر می خواهید شخصیت یا شی خاصی در بازی مورد علاقه شما ظاهر شود، کافی است نام آن را بدانید تا تابعی را در جدول وارد کنید تا این شیء ایجاد شود و مختصات دنیای بازی را وارد کنید. باید ظاهر شود.

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

کجا از Lua استفاده می شود؟

اگرچه از Lua در کاربردهای صنعتی نیز استفاده می شود، اما این زبان بیشترین محبوبیت را در ساخت بازی به دست آورده است. از آنجایی که ایجاد تغییرات در موتور بازی برای توسعه دهندگان می تواند دشوار باشد و طراحان بازی دائماً باید تغییراتی در نحوه عملکرد سطوح یا شخصیت ها ایجاد کنند، Lua در اینجا به سادگی ضروری است. توصیف تعامل بین بازیکنان، برنامه‌ریزی NPC (دهقانان در Skyrim) یا رفتار رئیس‌ها با استفاده از اسکریپت‌ها بسیار آسان است، که سپس می‌توان به سرعت بدون تأثیر بر موتور تغییر داد.

معروف ترین بازی که از Lua استفاده می کند، البته World of Warcraft است. رابط WoW (منوها، چت و ...) روی آن نوشته شده است. Lua همچنین در بازی هایی مانند Crysis، King's of Bounty، Warhammer، Allods Online، CS، Stalker، The Witcher، Sim City، Far Cry، Civilization V و غیره استفاده شد.

افزونه‌های nmap، wireshark، nginx یا ربات‌های تلگرام نیز اغلب به زبان Lua نوشته می‌شوند. همچنین، ویکی‌پدیا قصد دارد از Lua برای جاسازی در مدیاویکی استفاده کند (می‌توانید آن را در نسخه انگلیسی امتحان کنید).

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

مشکل در یادگیری لوا

یادگیری لوا بسیار آسان است. منابع و آموزش های ویدیویی زیادی در شبکه بر روی آن وجود دارد. علاوه بر این، گیمیفیکیشن در اینجا کمک زیادی می کند. اگر بازی مورد علاقه‌تان به شما اجازه می‌دهد که Lua را مود کنید، آن را امتحان کنید دنیای بازیدر فرآیند یادگیری این امر یادگیری برنامه نویسی را سرگرم کننده و بدون دردسر می کند.

جوانب مثبت و منفی Lua

مزایای Lua عبارتند از:

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

از معایب:

Lua به خوبی کار می کند هر زبان برنامه نویسی می تواند. اما بیشتر اوقات در ارتباط با زبان های دیگر استفاده می شود، اگرچه انجام برخی کارها به تنهایی امکان پذیر است. بنابراین، شما باید حداقل یک مورد دیگر، به عنوان مثال، C یا C++ را بدانید. با این حال، بدون شک دانش Lua در هنگام درخواست شغلی به عنوان توسعه‌دهنده بازی، یک امتیاز بزرگ برای شما خواهد بود.

فن آوری های مرتبط

LuaJIt- کامپایلر JIT برای Lua. برای کارهایی که زمان اجرا حیاتی است استفاده می شود. تقریباً شش برابر سریعتر از مفسر استاندارد اجرا می شود.

Love2Dیک فریمورک محبوب برای توسعه بازی های دو بعدی در Lua است.

کرونا SDK- چارچوبی برای ایجاد برنامه های کاربردی برای iOS و Android در Lua. نسخه رایگان آن از سال 2015 در دسترس بوده است.

در این سری از آموزش هایی که من طراحی کردم، زبان برنامه نویسی Lua مورد بحث قرار خواهد گرفت. من سعی می کنم ارائه را تا حد امکان برای مبتدیان در دسترس قرار دهم و روی آنها تمرکز خواهم کرد. یعنی کدنویس های باتجربه Lua به احتمال زیاد چیز جدیدی از اینجا یاد نخواهند گرفت (مطمئنم اینجا فقط جایی برای nit-picking و نظر پیدا می کنند که در واقع حتی از طرف آنها هم استقبال می شود) شما تجربه برنامه نویسی غنی پشت سر خود ندارید، پس فکر می کنم چیزی به دست خواهید آورد.

کل سریال از هیچ سیستمی تبعیت نخواهد کرد. دروس به صورت متوالی یک سری از ساختارهای زبانی را معرفی می کند تا در درس سوم یا چهارم بتوانید برنامه های خود را بنویسید. هدف من این است که شما را به سمت سوق دهم مطالعه مستقلزبان، کمک کنید تا آن را احساس کنید، و آن را از A تا Z توضیح ندهید - اگر می خواهید به زبان کاملا مسلط شوید، بخوانید راهنمای مرجع(که، هرچند بد، به روسی ترجمه شده است: http://www.lua.ru/doc/). هرچه زودتر از آموزش‌های «برای آدمک‌ها» در وب به کتابچه راهنما بروید، بهتر است.

اگر چیزی واضح نیست، حتماً در نظرات سؤال بپرسید و من و سایر شرکت کنندگان سعی خواهیم کرد به شما کمک کنیم.

Lua یک زبان برنامه نویسی محبوب، آسان برای یادگیری، جاسازی، تفسیر شده و پویا است. همه منظوره. نه، لازم نیست حتی نیمی از کلمات جمله قبلی را بفهمید - نکته اصلی این است که بدانید محبوب و بدون پیچیدگی است. به هر حال، سادگی، و همچنین اندازه کوچک توزیع (حدود 150 کیلوبایت)، او شایسته محبوبیت خود بود. اسکریپت های Lua پشتیبانی می شوند مقدار زیادبرنامه های کاربردی، از جمله بازی ها. World of Warcraft و S.T.A.L.K.E.R. از زبان لوا استفاده کنید موتور بازی مورد علاقه من به شما این امکان را می دهد که به راحتی بازی های متنوعی را با Lua ایجاد کنید. همانطور که می بینید، لوا افق های زیادی را برای شما باز می کند!

قبل از شروع، شما باید یک محیط برنامه نویسی راه اندازی کنید: یعنی برنامه ای را پیدا کنید که کد Lua را که شما می نویسید گرفته و اجرا کند: یک مفسر. در اینجا سه ​​گزینه وجود دارد:

1. توزیع رسمی Lua را از یکی از سایت های عرضه کننده آنها دانلود کنید.

از وب سایت رسمی Lua فقط می توان بارگیری کرد کدهای منبعمترجم با این حال، اگر به http://lua.org/download.html در بخش Binaries نگاه کنید، ممکن است پیوندهایی به وب سایت هایی با فایل های اجراییبرای ویندوز یکی از آنها: . یکی از آرشیوها را از آنجا دانلود کنید (مطابق با پلتفرم شما: Win32 یا Win64) و آن را در جایی استخراج کنید، ترجیحاً در یک فهرست با یک مسیر کوتاه: مانند C:\lua. از این به بعد فرض می کنم شما از ویندوز استفاده می کنید و مترجم شما در آنجا قرار دارد.

کاربران سیستم عامل مبتنی بر لینوکساز این نظر، ساده تر است: آنها فقط باید از مدیر بسته استفاده کنند و Lua را از مخازن نصب کنند. در دبیان و اوبونتو، این کار با apt-get install lua و در Fedora، Red Hat و مشتقات، yum install lua انجام می‌شود. با این حال کورکورانه به من اعتماد نکنید و به کتاب مرجع خود مراجعه کنید. سیستم عاملتا بفهمید دقیقا چگونه این کار را انجام می دهید.

2. از مترجم آنلاین استفاده کنید.

واقع در http://www.lua.org/demo.html. در ابتدا ممکن است کافی باشد، اما در آینده با لمس ماژول ها، مجبور خواهید شد از نسخه آفلاین استفاده کنید. استفاده از مترجم آنلاین بسیار ساده است: برنامه خود را در کادر متن وارد کنید و روی دکمه Run کلیک کنید. برنامه اجرا می شود، خروجی برنامه شما در پنجره خروجی ظاهر می شود و همچنین گزارش خطا در صورت وجود توسط شما.

3. از یک IDE استفاده کنید.

به عنوان مثال ZeroBrane Studio: http://studio.zerobrane.com/. موارد دیگری وجود دارد - به صورت آنلاین نگاه کنید.

دو نسخه کمی متفاوت از Lua در حال حاضر در حال استفاده هستند: 5.1 و 5.2. بیشتر روی آن تمرکز خواهم کرد آخرین نسخه- نسخه 5.2، اما قطعا به آن اشاره خواهم کرد تفاوت های مهمبین آن و 5.1، زیرا دومی نیز بسیار رایج است. به هر حال، Lua 5.1 کد را یک و نیم برابر سریعتر از Lua 5.2 اجرا می کند، فقط برای اینکه بدانید.

=== درس شماره 1 ===

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

200?"200px":""+(this.scrollHeight+5)+"px");">
-- main.lua --
چاپ(" سلام دنیا!")

سپس بدوید داخل خط فرمان(فراموش نکنید با دستور cd به دایرکتوری main.lua تغییر دهید):

200?"200px":""+(this.scrollHeight+5)+"px");">
> C:\lua\lua.exe main.lua

در پاسخ، مترجم Lua صادر خواهد کرد:

200?"200px":""+(this.scrollHeight+5)+"px");">
سلام دنیا!

اساساً این قابل انتظار است. در برنامه تابع print را فراخوانی کردیم. تابع چاپ طول می کشد شماره دلخواهپارامترها و نمایش آنها به صورت متوالی بر روی صفحه نمایش. AT این مثالرشته (رشته کاراکتر) "سلام دنیا!" را به آن پاس دادیم. با همان موفقیت، می توانید به عنوان یک پارامتر ارسال کنید:

200?"200px":""+(this.scrollHeight+5)+"px");">
چاپ (8) -- چیزی عدد اعشاری
-- خروجی: 8

چاپ (0xDEADBEEF) -- عدد هگزادسیمال
-- خروجی: 3735928559

چاپ ("0xDEADBEEF") -- و این یک رشته است نه یک عدد! نقل قول ها را ببینید؟
-- چاپ: 0xDEADBEEF

چاپ (1.35e-4) -- عدد ممیز شناور ( عدد کسری)
-- خروجی 0.000135. 1.35e-4 باید به صورت "1.35 بار" درک شود
- با ده به منهای توان چهارم، اگر کسی نمی داند.

چاپ ((198*99)-3*500 + 14/88) -- بیان
-- مقدار عبارت را نشان می دهد: 18102.159090909. جایگزین بدی نیست
- یک ماشین حساب رومیزی!

چاپ (198/7، "کود"، 2^9) - برخی از پارامترهای دلخواه
-- نوع مقادیر هر یک از آنها با علامت هایی از هم جدا می شوند.
-- برگه ها:
-- 28.285714285714 کود 512
-- توجه داشته باشید که نقل قول در مورد کود چاپ نمی شود!

چاپ (1.35) -- دو عدد، نه اعشاری 1.35!
- برای جدا کردن گزینه ها از کاما استفاده می شود.
-- خروجی ها:
-- 1 35

علامت "--" فقط تقلیدی از یک خط تیره نیست که برای زیبایی درج شده است. علامت "--" در Lua نظرات را نشان می دهد: نکاتی برای برنامه نویس که توسط مفسر نادیده گرفته می شوند و برای درک راحت تر کد طراحی شده اند. می توانید سعی کنید در برنامه بنویسید:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- چاپ ("هیچی")

مترجم فکر می کند که این یک نظر است و دستور را اجرا نمی کند.

توجه به مهماندار: اگر می خواهید فقط یک خط چاپ کنید، می توانید تماس چاپی را بدون پرانتز بنویسید:

200?"200px":""+(this.scrollHeight+5)+"px");">
چاپ "فقط یک رشته"

راحتی مطمئناً مشکوک است: فقط به خاطر داشته باشید که این امکان پذیر است. با این حال، چنین تماس هایی مجاز نیستند:

200?"200px":""+(this.scrollHeight+5)+"px");">
چاپ 2 کار نمی کند، 2 یک رشته نیست.
چاپ 2*2 + 6 -- بیشتر کار نخواهد کرد

Str = "رشته!!" -- متغیر str را روی "string!!" قرار دهید.
- در مورد متغیرهای زیر بخوانید
print str -- هم کار نخواهد کرد.

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

در هر زبان خوببرنامه نویسی می توان متغیرها را اعلام کرد: ظروف کوچکی که می توانند حاوی نوعی داده باشند. در Lua این کار به این صورت انجام می شود:

200?"200px":""+(this.scrollHeight+5)+"px");">
<имя_переменной> = <выражение>

مثلا:

200?"200px":""+(this.scrollHeight+5)+"px");">
star = 8 -- متغیر star اکنون عدد 8 را ذخیره می کند
wars = "جغد" -- در متغیر wars، رشته "جغد"
jedi = 42/2 -- متغیر jedi عدد 21 است
luke = ستاره*جدی -- متغیر luke عدد 168 است (بله، 21 ضربدر 8)

مقادیر متغیرها و عبارات با آنها نیز می تواند روی صفحه نمایش داده شود:

200?"200px":""+(this.scrollHeight+5)+"px");">
چاپ (ستاره، جنگ، جدی، ستاره جدی + لوک)
-- خروجی ها:
-- 8 جغد 21 181

فقط سعی نکنید متغیرهای star و wars را اضافه کنید - تلاش برای اضافه کردن 8 به "جغد" هیچ سودی برای شما نخواهد داشت!

همانطور که باید متوجه شده باشید، نام یک متغیر می تواند تقریباً هر چیزی باشد: نکته اصلی این است که با یک عدد شروع نمی شود. به طور جدی، شما حتی می توانید متغیری به نام print را اعلام کنید و سپس تابع چاپ از کار می افتد زیرا چاپ نام به متغیر تازه اعلام شده اشاره می کند. اما گروهی از کلمات وجود دارند که استفاده از آنها به عنوان نام متغیر ممنوع است - اینها کلمات کلیدی زبانی هستند که ما هنوز آنها را ندیده ایم، اما قطعا ارزش دیدن دارند:

200?"200px":""+(this.scrollHeight+5)+"px");">
و شکستن دیگر اگر پایان انجام دهید
false برای تابع goto if in
نه محلی یا بازگشت مجدد
سپس تا زمانی که درست است

با ایجاد متغیری با یکی از این نام ها باعث خطا در برنامه می شوید و قطعا کار نمی کند. لطفا توجه داشته باشید: در Lua 5.1 کلمه کلیدیهیچ goto وجود ندارد، و شما می توانید متغیر را به این صورت فراخوانی کنید، اما بهتر است این کار را نکنید.
همچنین توجه داشته باشید که نام متغیرها به حروف کوچک و بزرگ حساس هستند. این به این معنی است که foo، foo، fOO و FOO چهار متغیر مختلف هستند، بنابراین اگر نام یک متغیر را بنویسید حروف کوچک، و بعداً آن را با حروف بزرگ نوشت، به احتمال زیاد برنامه به درستی کار نخواهد کرد.

و حالا یکی نکته مهم: اگر به طور تصادفی یا عمدی به یک متغیر ناموجود مراجعه کنید چه اتفاقی می افتد؟ در بسیاری از زبان های دیگر این یک خطا ایجاد می کند، اما در Lua این وضعیت قابل قبول است. به گونه ای رفتار می شود که گویی یک متغیر غیر موجود در واقع وجود دارد، اما مقدار آن وجود دارد صفر. صفر- این کلمه را به خاطر بسپار! نوع خاصی از ارزش در Lua است که به معنای "هیچ" است. نه صفر و نه یک رشته خالی (رشته ای مانند "" - سعی کنید آن را روی صفحه نمایش دهید)، اما به سادگی هیچ. این را با این مدل مقایسه کنید: دو نفر هستند، یکی از آنها حساب بانکی دارد اما پول ندارد و دیگری اصلاً حساب بانکی ندارد. از نظر لوا در نظر گرفته می شود که حساب اولی 0 دلار است و حساب دومی دارای صفر. و نه حتی دلار، بلکه به سادگی صفر. امیدوارم شما را گیج نکرده باشم

برای مثال برنامه زیر را اجرا کنید:

200?"200px":""+(this.scrollHeight+5)+"px");">
-- main.lua --
فو = نوار
چاپ (فو، باز)
-- خروجی ها:
-- نوار صفر

بنابراین، متغیر baz که وجود ندارد اما فرض می شود وجود دارد، مقدار nil را دارد و تابع print این را درک می کند و آن را به عنوان رشته "nil" روی صفحه چاپ می کند. لوا دارد روش خوبوجود متغیر را بررسی می کند: اگر مقدار یک متغیر برابر با صفر نباشد، حداقل آن را اعلام می کند. از طرف دیگر، می توانید به صراحت یک متغیر را برابر صفر اعلام کنید:

200?"200px":""+(this.scrollHeight+5)+"px");">
cool_var = صفر

این کار قابل انجام است و اگرچه در نگاه اول احمقانه به نظر می رسد، اما گاهی اوقات این کار انجام می شود. در درس های بعدی یاد خواهید گرفت که چه کسی و چرا، و احتمالاً شروع به انجام همین کار خواهید کرد. گاهی اوقات البته.
مراقب صفر باشید: می توانید صفر را چاپ کنید، اما با آن اجرا کنید عملیات حسابیممنوع است! یعنی اگر print(nil) از بین برود، ساختاری مانند 99+nil خطا می دهد، حتی اگر می خواستید 99+nil برابر با 99 شود. باور کنید من هم وقتی فهمیدم ناراحت شدم.

خلاصه:
1. ما در مورد تابع چاپ، آنچه که می تواند انجام دهد و چگونه آن را به درستی بدون پرانتز فراخوانی کنیم، یاد گرفتیم.
2. ما یاد گرفتیم که چگونه متغیرها را اعلام کنیم، چگونه عبارات را ارزیابی کنیم (البته کمی)، متغیرها چه نام هایی می توانند داشته باشند.
3. در مورد صفر یاد گرفت، با رمز و راز عرفانی آن آغشته شد و اطمینان یافت که در آینده چیزهای زیادی با آن مرتبط خواهد شد.

برای کنجکاو و مایل به تقویت دانش خود، تمرین های ساده ای را ارائه می دهم.اگر از قبل به اندازه کافی صلاحیت داشته باشید، می توانید آن را حذف کنید:
1. برنامه ای بنویسید که کر آهنگ مورد علاقه شما را چاپ کند.
2. سعی کنید مقادیر عبارات زیر را نمایش دهید. سعی کنید بفهمید چرا برخی از آنها کار می کنند و برخی نه. ببینید عبارات شکسته چه خطاهایی ایجاد می کنند.

200?"200px":""+(this.scrollHeight+5)+"px");">
2 + "رشته"؛
6 + "14";
"جعبه" - "وکس"؛
1 * "11b"
"148" * "1e6"؛


3. برنامه ای بنویسید که دو تا را رد و بدل کند مقادیر متغیرها. یعنی:

200?"200px":""+(this.scrollHeight+5)+"px");">
a = 6502
b=8086


a را برابر با 8086 و b را برابر با 6502 قرار دهید. برای این کار، یک متغیر سوم ایجاد کنید و جایگشت های ساده ایجاد کنید. با فراخوانی print(a,b) قبل از تبادل و print(a,b) بعد از آن مطمئن شوید که مشکل به درستی حل شده است.

برترین مقالات مرتبط