PDA

نسخه کامل مشاهده نسخه کامل : برنامه نویسی به زبان LUA Com



Arsa Persian
01-08-2008, 08:07
دوستان عزیز در این تاپیک قصد داریم پیرامون برنامه نویسی به زبان LUA Com در محیط برنامه AutoPlay Media Studio بحث و گفتگو نماییم
------------------------------------
از دوستان خواهشمندم سوالات خود را در این تاپیک مطرح نفرمایید تا باعث به هم ریختن آموزش نشود. شما می توانید سوالات خود را در تاپیک مشکلات برنامه نویسی LUA Com مطرح نمایید. بعد از اتمام آموزش دو تاپیک به هم متصل خواهند شد



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Arsa Persian
21-08-2008, 22:52
این زبان برنامه نویسی ترکیبی از جاوا و C هستش که شما می توانید از این زبان در برنامه AutoPlay Media Studio برای ساختن برنامه هایتان استفاده کنید. حالا بسیاری از افراد با دیدن اولیه این اسم فکر می کنند که این یک برنامه ی ساده اتوران سازی هستش اما در پس پرده ی این ظاهر ساده فرشته ی نجات برنامه نویسان مبتدی و نیمه حرفه پنهان شده است. مثلا خودم بعد از حدود یکسال کار کردن با این برنامه و ارائه ی چند نرم افزار ساده و البته ناقص توانستم جدی ترین پروژه ی خودم رو در حدود دو سال پیش ارائه کنم. قابلیت های این برنامه در خطا یابی قدرتمند هستش که باعث میشه بیخود دنبال خطا های برنامه خود نگردید.
این برنامه ی من رو میتونید در پست زیر ببینید



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

این زبان داخل این برنامه به اون قدرت عجیبی بخشیده که تا نبینینشون باورتون نمیشه

انشالا اگه عمری باقی باشه تجربه ام رو در طول این 4-3 با این برنامه رو میخوام روی سایت بیارم.


:40::40::40:

Arsa Persian
22-08-2008, 09:49
خوب برای این که بتوانید اسکریپت بنویسید میتوانید روی شئ مورد نظر دابل کلیک کنید( البته یادم رفت که بگم این زبان شئ گراست) خوب، پنجره ی باز شده با توجه به ویژگی های جسم (تصویر، دکمه، چک مارک و ...) دارای تب های Setting و Attributs (برای تنظیم ویژگی های شئ مورد نظر) Quick Action (که به درد برنامه نویسی نمی خورد چون خیلی محدود است و بیشتر برای افراد آماتور ساخته شده) و بالاخره تب Script هست که در واقع بخش اصلی فعالیت ما در همین قسمت بود. در شکل زیر با دابل کلیک روی صفحه ی اصلی وارد Page Properties می شویم

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]


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

2-اگر کد های شما در این قسمت نوشته شود در هنگام نمایش برنامه این کد ها برای یکبار اجرا میشوند (برای مثال زمانی که میخواهید در برنامه شما هنگامی که صفحه ی اصلی برنامه باز شد یک پیغام خوش آمد گویی به کاربر ارائه شود)

3-اگر کد های شما در این قسمت نوشته شود هنگامی که از این صفحه خارج میشوید (چون شما میتوانید بیش از یک صفحه در برنامه داشته باشید) این کد ها اجرا میشوند (برای مثال میخواهید زمانی که کاربر از برنامه خارج شد فایل به خصوصی پاک شود)

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

5-اگر کد های شما در این قسمت نوشته شود به هنگام تغییر کانال های صوتی (مثلا زمانی که شما آهنگی را اجرا می کنید) این کد ها اجرا میشوند

6-اگر کد های شما در این قسمت نوشته شود زمانی که سایز برنامه شما توسط کاربر تغییر می کند (یعنی هنگامی که کاربر از گوشه ی پنجره برنامه شما گرفته و اندازه را تغییر میدهد) این کد ها اجرا میشوند (برای مثال میخواهید که اگر کاربر سایز پنجره را تغییر داد به او یک پیغام خطا مبنی بر اینکه این برنامه درست کار نخواهد کرد ارائه گردد)

7-اگر کد های شما در این قسمت نوشته شود زمانی که منویی باز میشود (منظورم همون منویی هست که شما هنگام رایت کلیک مشاهده می کنید که در این برنامه لزوما با رایت کلیک باز نمیشود و می توانید برای هر چیزی تعریف گردد) کد ها اجرا می شوند

8-اگر کد های شما در این قسمت نوشته شود زمانی که دکمه ای از روی کیبورد فشرده می شود این کد ها اجرا می گردد

9-اگر کد های شما در این قسمت نوشته شود زمانی که دکمه های موس فشرده می شود این کد ها اجرا می شوند

10-اگر کد های شما در این قسمت نوشته شود زمانی مکان موس تغییر می یابد این کد ها اجرا میشوند

11-با زدن این دکمه ویزارد اسکریپ نویسی ظاهر میگردد که بیشتر برای افراد مبتدی و نیمه حرفه ای است و زمانی که به طور کامل با کد ها آشنا شدید می توانید از Ctrl+Space استفاده کنید که سریعتر به مقصود برسید

12-این دکمه حاوی کد های ترکیبی است تا کاربر را از نوشتن چند باره آنها راحت کند

13-کاربرد این دکمه هنوز کشف نشده است!!!

14-این قسمت برای نشاندار کردن یک یا چند سطر است تا در زمانه که شما مثلا 300 خط اسکریپت نوشته اید بتوانید به راحتی اسکریپت مورد نظر خود را پیدا کنید

15-این قسمت برای ایجاد یک ماکرو هست که خود بحث یک جلسه است

16-این دگمه هم بیشتر شبیه یک منو است که در مواقع خیلی کم از آن استفاده می گردد

Arsa Persian
22-08-2008, 12:28
تذکر مهم: این زبان حساس به بزرگ و کوچک بودن حروف در مورد دستورات برنامه (Global Functions) است
برای اسکریپت نویسی شما باید بدانید در کجا و از کدام دستورات استفاده کنید برای یک کار شاید چند دستور موجود باشد اما باید بهترین را انتخاب کرد (چرا؟) جواب این سوال را بعد از اینکه خودتان شروع کردید پیدا خواهید کرد اما برای یک جواب کوتاه: هر چه قدر دستورات زیاد میشوند احتمال تداخل آنها و عدم عملکرد صحیح آنها زیاد می شود
حال شروع به معرفی مهمترین بخش برنامه نویسی یعنی حلقه ها می کنیم. اگر بگویم حداقل 30% یک برنامه از حلقه ها تشکیل شده اند عبث نگفته ام.
حلقه چیست؟در یک تعریف ساده فرض کنید یک لاستیک دوچرخه را در اختیار دارد. از یک نقطه شروع می کنیم آنجا را علامت زده و سپس شروع به دور زدن لاستیک می کنیم تا دوباره به همان نقطه اولیه برسیم که می گوییم یک حلقه طی شد. حال اگر در مسیر حلقه بریدگی بود از حلقه خارج می شدیم. در برنامه نویسی هم عین همین اتفاق می افتد و تا زمانی که در حلقه خطایی (بریدگی) نباشد حلقه ادامه می یابد

اجزای حلقه:
1-شروع حلقه: معمولا در این قسمت یک شرط قرار می گیرد که در زبان LUA عبارتند از:

A) if ... then
B) while ... do
C) for ... do
D) repeat
که به جای نقطه چین باید یک عمل مورد نظر باشد (مثل X<10)

2-مسیر حلقه:در این قسمت دستوراتی که باید اجرا شود نوشته می گردد. این دستورات می تواند هر چیزی باشد اما اجرای این دستورات وابسته به درست بودن شروع حلقه (شرط حلقه) است
3-انتهای حلقه: این قسمت نشان می دهد که حلقه تمام شده است و به ابتدای حلقه برو که در زبان LUA عبارتند از:

A) end
B) until

که end برای سه دستور ابتدایی بند 1 بکار می رود و until برای دستور D بند 1 به کار برده می شود

Arsa Persian
23-08-2008, 13:28
این دو واژه رو به فارسی ترجمه می کنم تا راحتتر بتونید با آنها آشنا بشید چون کاربرد زیادی دارند و اگر آنها را به جای هم به کار ببرید نتیجه نخواهید گرفت

String در زبان فارسی به معنی رشته است. رشته تشکیل می شود از یک جمله، عدد و هر چیز دیگری اما نکته مهم این هست که رشته خود عدد نیست بلکه یک نماد هست به دو مثال زیر توجه نمایید:

A = 10
if A > 5 then
عمل مورد نظر
end
---------------
"A = "10
if A > 5 then
عمل مورد نظر
end

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


attempt to compare number with string


بله اون دو تا گیومه که عدد 10 داخلشون قرار گرفت کار خودشون رو کردن و دیگه A یه عدد نیست بلکه یه String هست.
--------------------------------------------------------------------------------------------------------------------------
Table در زبان فارسی به معنی جدول هست. در این برنامه هم یعنی همین. دوستانی که با Qbasic کار کرده اند احتمالا تابع Bubble یادشون هست (که من بهش میگم تابع ماتریس) Table هم دقیقا همون کار رو میکنه البته کار رو ساده می کنه

مثلا شما یه جدول تو برنامه خودتون میخواهید بذارید. که هرکسی وارد برنامه شد اسم و تاریخ تولد خودشو وارد کنه (این مثال رو به صورت فارسی توضیح میدم چون هنوز اول راهه)

ابتدا دو تا جدول (List Box) ایجاد می کنیم یکی به اسم Name و دیگری به اسم Age
حال باید یه تابع Table در کار باشه که بتونه این اطلاعات رو روی یه فایل ذخیره کنه (هنگام خروج)
بعد یه تابع Table دیگه در کار باشه که بتونه این اطلاعات رو از روی فایل وارد برنامه بکنه (هنگام ورود)
و دوباره این حلقه تکرار بشه
خوب حالا شما پیش خودتون فکر می کنید چه کار راحتی بابا بریم پی کارمون این که چیزی نیست اما صبر کنید :28:اینطوری ما خیلی به اشکال بر میخوریم چرا؟

من یه مثال میزنم: فرض کنید 10 نفر اسم و سنشون رو وارد کردن و برنامه توی یه فایل ذخیره کرده
فردا این برنامه دوباره اجرا میشه نفر یازدهم اسمشو می نویسه اما یادش میره سنشو بنویسه
حال نفر دوازدهم هم اسم و هم سنشو وارد میکنه
بعله مشکل از اینجا شروع شد. سن نفر دوازدهم رفت رو سن نفر یازدهم و بعد ...
حالا باید یه اسکریپت دیگه بنوسیم که اگه یکی از خونه ها پر شد باید دیگری هم پر بشه

پس تا جلسه بعد خدا نگه دار :thumbsup:

Arsa Persian
23-08-2008, 15:08
عملکردهای مقایسه
در این زبان برنامه نویسی هم طبق زبان های دیگر دستورالعمل هایی برای مقایسه دو چیز با هم وجود دارد

این جمله ی مهم را به یاد داشته باشید: کبوتر با کبوتر، باز با باز
این یعنی اینکه عدد با عدد، رشته با رشته و ... مقایسه میشود و نمیتوان عدد را با رشته مقایسه کرد


علامت برگتر (>): این مورد فقط برای مقایسه عدد به کار میرود که جواب آن true یا false خواهد بود. مثلا نمیتوان به صورت زیر عمل کرد

"A = "Ali
"B = "Bardia
if A > B then
(Application.Exit(0
end

خوب شما خودتان قضاوت کنید این کد ها چه معنی می دهد!!! علی بزرگتر از بردیا!!! از چه نظر!!!
علامت کوچکتر (<): مثل مورد بالا
علامت بزرگتر مساوی (=>)و کوچکتر مساوی (=<): این دو علامت برای رشته میتوان به کار برد ولی زمانی که دو رشته برابرند که در این مورد به درد نمیخورد
علامت نامساوی (~=): در تمام موارد کاربرد دارد
علامت مساوی (==):در تمام موارد کاربرد دارد اما باید توجه داشت که = با == تفاوت عمده دارد و اگر به جای هم به کار برده شوند با خطا مواجه می شوید (چرا؟) چون اولی یک مقدار را به یک شی اختصاص می دهد اما دومی عمل مقایسه انجام می دهد و true یا false بودن را مشخص می کند


----------------------------------
عملکردهای شرطی
این عملکردها خود در توابع شرطی به کار می روند که عبارتند از

and
or

با یک مثال مفهوم این دو عملکرد را بیان می کنیم


A = 10
B = 30
C = 20
if A > B or B > C then
(Application.Exit(0
end
-------------------------
A = 10
B = 30
C = 20
if A > B and B > C then
(Application.Exit(0
end

خوب کد اولی اجرا میشه چون نوشته شده (اگه A بزرگتر از B که جوابش false هست یا B بزرگتر از C که جوابش true هست) که در کل جوابش true هست پس اجرا میشه


کد دومی اجرا نمیشه چون نوشته شده (اگه A بزرگتر از B که جوابش false هست و B بزرگتر از C که جوابش true هست) که در کل جوابش false هست پس اجرا نمیشه
----------------------------------
عملکردهای ریاضی
این عملکرد ها + - * / هستن که نیاز به توضیح ندارن و تنها نکته شون تقدمشون هستش که درس اول راهنمایی هستش

Arsa Persian
23-08-2008, 22:14
بله این پروژه دیگه قدیمی شده ولی چاره چیه هنوز بهترین مثال هستش پس بسم الله

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


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

حتما کد های دکمه Solve رو بدقت بخونید بعد توش بگردید ببینید چی به چی ربط داده شده
این اولین پروژه شماست پس بدقت توش بگردید به همین سادگی که شما یه دلتا بگیرید و ... نیست
اگه از روی این پروژه سرسری رد شید توی مطالب بعدی دچار مشکل می شید

بعد اینکه این برنامه رو بدقت گشتید سعی کنید یکیشو بنویسید، از روش کپی نکنید بلکه خودتون کار کنید اگه چیزی اضافه پیدا کردید روش بذارید بعد توی تاپیک مشکلات برنامه نویسی LUA Com (مشکلات برنامه نویسی در AutoPlay Media Studio) سوالات خودتون رو مطرح کنید.


از مطرح کردن سوالات خود در این تاپیک جدا خودداری نمایید تا نظم آموزش به هم نخوره

Arsa Persian
27-08-2008, 21:17
این پروژه رو البته یکی از بچه های فروم خواسته بودند که من براشون آماده کردم بد ندیدم بزارم اینجا تا ببینید با این زبان برنامه نویسی چی کارا که نمی شه کرد البته توضیحات میمونه واسه بعد چون باید نحوه Call Function از DLL رو یاد بگیریم که یکم سخته ولی ممکنه:10:
اینم لینک دانلود:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Arsa Persian
02-09-2008, 08:57
دوستان عزیز این جلسه قصد دارم در مورد یک بحث مهم صحبت کنم
همونطور که میدونید هیچ چیزی در دنیا بدون عیب نیست مگر انچه خداوند افریده است. نرم افزارها و زبان های برنامه نویسی که ساخت همین مخلوق خداوند است نیز بی عیب نیست حال ممکنه این زبان مثل VB خیلی کامل باشه و نیاز کمی به تکمیل و ارائه نسخه جدید باشه یا مثل LUA Com که هنوز نوپاست و دارای تعریفات کمی برای برنامه نویسی هستش
اما این برنامه یک قابلیت فوق العاده به نام Global Function داره که شما میتونید یک عملکرد رو به صورد یک دستور یا همون Function در بیاورید یه مثال بزنم خیلی راحت متوجه منظورم میشید
فرض کنید که ما در برنامه ای که میخواهیم بسازیم مدام از فرمول حل معادله درجه دو در اون استفاده شده خوب شما میتونید هرجا که لازم شد این فرمول رو تعریف کنید. اما این قابلیت Global Function باعث میشه هم در وقت شما صرفه جویی بشه هم از نوشتن تعداد خط های اضافی برنامه خلاص شوید.
حال برای اجرای این کار به روش زیر عمل کنید
از منوی Project گزینه Global Functions رو انتخاب کنید که با یه محیط آشنا مواجه میشید حال طبق تعریف زیر عمل کنید:

()نام تابع function
تابع یا عملکرد مورد نظر
end

که برای هر عملکرد جدید باید یک بار به روش بالا عمل کنید و یک مثال
میخواهیم همون یافتن جواب معادله درجه دو رو به صورت یک Function بنویسیم

()function moadeleh
(X_1 = (b + (Math.Sqrt((b^2)-(4*a*c))))/(2*a
(X_2 = (b - (Math.Sqrt((b^2)-(4*a*c))))/(2*a
end


حال هر کجا که لازم شد می تونید این Function رو به کار ببرید
اما این Global Function هم یک عیب بزرگ دارد اونم اینه که باز هم شما نمیتونید خارج از دستورات برنامه در آن Function تعریف کنید (یعنی شما می تونید توابع ترکیبی تعریف کنید ولی نه خارج از دستورات برنامه)
که برای رفع این مشکل متوسل DLL ها خواهیم شد


:40:استفاده از دکمه ی تشکر سبب دلگرمی است:40:

Farhadoff
08-10-2022, 12:01
ببخشید ادامه این تاپیک کجاست؟

Farhadoff
08-10-2022, 12:02
ممنون از زحمات شما ولی ادامه ندادین؟:sad: