رفتن به مطلب

آموزش اسکریپت نویسی در ویژوال بیسیک (VBScript)


Shining Star

ارسال های توصیه شده

با سلام خدمت دوستان

 

نوشتن کدهای vbscript یکی از راحت ترین و جذاب ترین راه ها برای انجام دادن کارهای ساده و گاهی اوقات بسیار پیچیده در سیستم عامل ویندوز هستش.

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

نیازی به نرم افزار خاصی نیست و میشه کدها رو در NotePad بنویسیم و اجرا کنیم. با این حال یکی دو تا نرم افزار به زودی معرفی میکنم.

 

متاسفانه منبع فارسی و حتی انگلیسی برای نوشتن اسکریپت بسیار کمیاب هست و تقریبا تمام آموزش ها مختص نرم افزار .net و Visual Studio هستند.

 

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

 

اما دو تا ایراد داره.

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

 

سرفصل های آموزشی:

1- معرفی دستورات و کاراکترهای پایه

2- معرفی و آشنایی با Class و برنامه نویسی شی گرا

3- کار با فایل ها و فولدرها در ویندوز

4- کار های مربوط به اینترنت (ارسال ایمیل، کار کردن با html و ....)

5- اعمال تغییرات در دستورات ویندوز و رجیستری

6- ارتباط VBS و BAT و سایر نرم افزارهای EXE (ساخت، اجرا و ارسال فرمان)

7- معرفی چند مثال پیشرفته

8- کدنویسی و تحلیلی یک ویروس کامپیوتری پیشرفته (البته قصدمون فقط آموزش هستش)

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

التماس دعا. تا پست بعد :icon_gol:

لینک به دیدگاه

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

برای اجرای کدهایی که مینویسیم، نرم افزار Wscript.exe که بطور پیشفرض تو نسخه های ویندوز وجود داره استفاده میشه.

نمیتونم آموزش رو به قسمت های مشخصی تبدیل کنم چون مباحث با هم اشتراک دارن.

روش خوبی که میتونیم استفاده کنیم، یادگیری با مثال هستش.

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

خب فکر میکنم بهتره به جای مقدمه چینی بریم سر اصل مطلب.

 

یک پوشه به اسم Scripts تو دسکتاپ یا مسیر مورد نظرتون ایجاد کنید. کدهایی که مینویسیم رو در این پوشه ذخیره میکنیم.

همینطور برای کدها به ترتیب شماره بزارید که ترتیبش دقیقا مشخص باشه.

خب داخل پوشه Scripts یه فایل متنی ایجاد کنید.همونطور که خودتون بلدید برای این کار باید کلیک راست کنید و از منوی New گزینه Text document رو انتخاب کنید.

فایل که ایجاد شد اسمش رو به 1welcome تغییر بدید.عدد 1 یعنی این اولین کد ما هستش.

فایل رو باز کنید و این کد رو داخلش کپی کنید:

 

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

 

خب حالا فایل رو ببندید و پسوند اون رو از txt به vbs تغییر بدید. اگر پسوند txt رو مشاهده نمیکنید برید به folder option و این امکان رو فعال کنید. حالا روی فایل دابل کلیک کنید تا اجرا بشه.

 

تبریک .... شما اولین کدتون رو نوشتین :w16:

نکته: پسوند اسکریپتهای ویژوال بیسیک vbs هستش.

نکته: این نوع زبان به حروف کوچک و بزرگ حساس نیست. میتونید برای نوشتن دستورات از هر دو استفاده کنید.

 

معرفی دستور echo: از دستور echo برای نمایش دادن یک نوشته استفاده میشود.

 

مفهوم Wscript.echo: خیلی ساده هستش. یعنی دستور echo دستوری هستش که در نرم افزار Wscript وجود داره و وقتی مینویسیم Wscript.echo یعنی نرم افزار Wscript باید فرمان echo رو اجرا کنه. با این نوع فراخوانی ها در ادامه مفصل آشنا میشیم.

 

معرفی دستور vbnewline: وقتی میخوایم یه متن رو به کاربر نمایش بدیم از این دستور برای رفتن به خط بعدی استفاده میکنیم.

 

معرفی کاراکتر " : از این کاراکتر برای تبدیل نوشته ها به رشته یا string استفاده میشه. وقتی میخوایم یه متن رو نمایش بدیم، باید اون متن ابتدا به رشته تبدیل بشه. در تمام زبان های برنامه نویسی به همین صورته.وقتی ابتدا و انتهای یک متن علامت " قرار بدیم یعنی اون متن یک رشته هست. خب کد زیر رو اگر بنویسید و اجرا کنید میبینید که ارور میده:

 

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

 

دلیلش هم اینه که هنگام اجرای برنامه وقتی به کلمه IN میرسه، اون رو به عنوان یک دستور تشخیص میده و چون بعد از دستور echo ما انتظار یک رشته رو داریم (که قراره به کاربر نشون داده بشه) برنامه ارور میده.

پس حالت درست استفاده از کد echo به این صورته:

 

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

 

معرفی کاراکتر & : این کاراکتر که بهش امپرسند (ampersand) گفته میشه برای اتصال دو رشته و یا یک رشته و یک دستور به همدیگه استفاده میشه.

 

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

 

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

 

این کد رو اگر اجرا کنید نوشته زیرو مشاهده میکنید:

...IN THE NAME OF GOD

Welcome to VBScript workshop

 

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

 

 

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

 

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

 

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

 

خب حالا مفهوم تمام کد 1Welcome رو میتونید بفهمید و اینکه چرا اون خروجی رو به ما نشون میده.

 

کاراکترها و دستورات معرفی شده، از مهم ترین و پایه ای ترین مفاهیم Visual Basic Scripting یا VBScript بودند.

 

همونطور که میبینید این نوع کدنویسی بسیار راحت و شیرینه و در ادامه میبینیم که چه کارهای بزرگی میشه با این کدها انجام داد.

 

حالا تمرینات قسمت اول:

1- اسکریپیتی بنویسید که نوشته زیر رو در یک کادر نمایش بده:

This is the first problem for vbscripting workshop.

I am a member of noandishaan forum and i'm learning vbscripting there...

 

 

2- اسکریپتی بنویسید که در خط اول اسمتون رو بنویسه و بعد از دو خط فامیلیتون رو. مثلا به این صورت:

Shining

 

 

Star

 

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 


93-3-12 ==> shining star


تا پست بعدی ... مراقب خودتون باشید :icon_gol:
لینک به دیدگاه

نکته: تمرینات مثال اول در انتهای پست قبلی اضافه شد. لطفا انجام بدید و سوالاتتون رو به صورت خصوصی بپرسید :icon_gol:


خب امیدوارم تونسته باشید قسمت قبلی رو کاملا درک کنید. بسیار ساده هستش و چیز سختی فکر نمیکنم داشته باشه.

 

حالا تعدادی کاراکتر دیگه رو میخوایم معرفی کنیم.

 

توی همون پوشه Scripts یه فایل متنی دیگه ایجاد کنید و اسمش رو بزارید 2basic characters and commands.vbs

 

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

 

نکته: برای ویرایش یک فایل VBS روی اون کلیک راست کنید و Edit رو بزنید.

 

خب فایلی که ساختیم الان خالیه و هیچی توش نوشته نشده. طبق نکته بالا بازش کنید تا دستورات رو بنویسیم.

 

متن زیر رو کپی کنید داخل اسکریپت و اون رو ذخیره کرده و ببندید.

 

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

 

خب یکمی طولانی شد کد بالا. ولی ایرادی نداره. فقط یکی دو تا کاراکتر جدید رو میبینید.

 

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

 

هر بار که دستور wscript.echo رو بنویسید یک پنجره براش باز میشه. و این پنجره تا زمانی باز میمونه که شما ببندیدش. تا اون موقع کد اجرا نمیشه و تو همون خط میمونه. وقتی شما پنجره رو میبندید کد خط بعدی رو اجرا میکنه. به خاطر همین در مورد کد بالا باید 6 بار پنجره نمایش داده بشه.

 

معرفی کاراکتر دونقطه: وقتی بخوایم تو یک خط چند تا دستور بنویسیم، بعد از اتمام هر دستور یه : میزاریم و دستور بعدی رو مینویسیم. برای نوشتن دستورات کوتاه تو یک خط میتونه مفید باشه.

 

معرفی کاراکتر = :برای اختصاص دادن یک مقدار یا یک عدد به یک متغیر از کاراکتر = استفاده میکنیم. مشخصه دیگه. برای درک بهتر این قضیه کد زیر رو هم بنویسید و اجرا کنید.

 

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

 

تو کد بالا اول دو تا عدد به دو تا متغیر اختصاص میدیم. بعد یه متغیر تعریف میکنیم و جمع اون دو تا عدد قبلی رو بهش وارد میکنیم.

 

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

 

این قسمت هم تموم شد. من سعی میکنم تا جاییکه میتونم ساده و قابل فهم بنویسم. امیدوارم تا اینجاش سخت نبوده باشه :icon_redface:

 

خب یه تمرینم واسه این قسمت بزاریم.

 

3- تمرینات قسمت اول (پست قبلی) رو با هم ترکیب کنید و در یک فایل بنویسید. طوریکه بعد از اجرا اول جواب تمرین اول رو نشون بده و بعد جواب تمرین دوم. توضیحات مربوط به هر مرحله رو هم سعی کنید به انتهای دستور اضافه کنید (با کاراکتر '). بسیار ساده هست حل این تمرین.

4- کد زیر رو بنویسید و پاسخ خروجی رو تحلیل کنید.

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

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 


93-3-13 ==> shining star


تا پست بعدی ... مراقب خودتون باشید
:icon_gol:

 

لینک به دیدگاه

خب بزارید اولش اعتراف کنم خودم که این قسمتش یکمی حوصله سر بره icon_pf%20(34).gif:ws3:

ولی یه کاری میکنیم حوصلتون سر نره :gnugghender: :ws3:

لازمه بگم که لازم نیست همه این جدولارو حفظ کنید. من خودم حفظ نیستم :whistle:

وقتی لازمتون بشه که استفاده کنید (که معمولا لازم نمیشه :ws3:) برمیگردید و همینجا یه نیم نگاه میندازید :a030:

 

چیزایی که میخوایم اینجا معرفی کنیم کلی هستن. یعنی مخصوص یه زبان خاص نیستن و بیشترشون تو همه زبان های برنامه نویسی مشترک هستن.

 

در این پست می آموزیم: :whistle:

 

1- انواع داده ها (Data types)

2- انواع عملگرها (Operators)

3- تعریف متغیرها از هر نوع

4- چند تابع پایه ای پر کاربرد

 


انواع داده های مشترک در تمام زبان های برنامه نویسی


ck3mrdjxrzc6zer13qor.jpg

 

خب اگه گفتید یاد گرفتن این جدول به چه دردی میخوره ؟؟

آفرین درسته .... به هیچ دردی :ws3:

پس چرا این جدولو گذاشتیم اینجا ؟؟؟ :ws38:

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

 

معادل انگلیسی کلمه تبدیل، convert هستش. اگه بعد از هر کدوم از انواع داده های جدول بالا یه حرف C (اول کلمه convert) بزارید، میشه دستور تبدیل یک مقدار به اون نوعی که نوشتید. الان میگم این که گفتم یعنی چه :ws3:

 

توابع تبدیل در VBS:

 

CBool ............... تبدیل به بولین

CByte ............... تبدیل به بایت

CDate ............... تبدیل به تاریخ

CDbl ................. تبدیل به نوع Double

CInt .................. تبدیل به نوع Integer

CLng ................. تبدیل به نوع Long

 

چون تبدیل زیاد کاربرد نداره فقط یه مثال میزنم دیگه بقیش معلوم میشه چطوریه. فرض کنید حین محاسبات یه عددی به دست اومده مثلا 54.2 حالا میخوایم این عدد رو رندش کنیم. میایم تبدیلش میکنم به نوع Integer یا Byte. کد زیرو بنویسید و اجرا کنید تا بفهمید چی گفتم.

 

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

خب به همین مثال تو این قسمت کفایت میکنیم. بریم که کلی جدول مونده :gnugghender:

 

 

 


انواع عملگرهای مشترک در تمام زبان های برنامه نویسی


 

 

1- عملگرهای ریاضی: همون علامت ضرب و جمع و اینا :ws3:. جدول زیرو ببینید

 

0u66qz7rhe4d4c733bcq.jpg

 

2- عملگرهای مقایسه ای: همون کوچیکتر بزرگتر مساوی :ws3:

rfwgqia0dr0l1l5g6oxf.jpg

 

3- عملگرهای منطقی: این یکی رو تو دبستان نداشتیم :ws3:

hb7gq5ouilesu5uv76xe.jpg

 

 

این عملگرها یه تعدادشون پرکاربرد هستن، مثل عملگرهای ریاضی. و یه تعدادشون مثل عملگرهای منطقی کمتر کاربرد دارند.

نوع استفادشون مشخصه. تو پست های بعدی احتمالا استفاده میکنیم.

 


خب امیدوارم خسته نشده باشید. من که خیلی خسته شدم 5c6ipag2mnshmsf5ju3z.gif نظرتون چیه یکمی خستگی در کنیم ؟ :gnugghender:

 


ﺁﻭﺭﺩﻩ ﺍﻧﺪ ﮐﻪ ﯾﺎﺭﺍﻧﻪ ﺑﮕﯿﺮﯼ ﺭﺍ ﺩﯾﺪﻧﺪ ﮐﻪ ﺩﺭ ﻗﻌﺮ ﺟﻬﻨﻢ ، ﮔﺮﻓﺘﺎﺭ ﭼﻬﻞ ﻭ ﭘﻨﺞ ﺍﮊﺩﻫﺎﯼ ﺩﻭ ﺳﺮ ﻫﻤﯽ ﺑﻮﺩ ﻭ ﻓﺮﯾﺎﺩ ﮐﻨﺎﻥ ﮐﻤﮏ ﻫﻤﯽ ﻃﻠﺒﯿﺪ ﻭ ﮐﺴﯽ ﺑﻪ ﻓﺮﯾﺎﺩ ﺍﻭ ﻧﺮﺳﯿﺪ.

 

ﺻﺎﻟﺤﺎﻥ ﻫﻤﯽ ﮔﻔﺘﻨﺪ ﮐﻪ ﺍﯾﻦ ﭼﻬﻞ ﻭﭘﻨﺞ ﺍﮊﺩﻫﺎ ﻫﻤﺎﻥ ﭼﻬﻞ ﻭ ﭘﻨﺞ ﻫﺰﺍﺭ ﺗﻮﻣﺎﻥ ﯾﺎﺭﺍﻧﻪ ﺍﯼ ﺍﺳﺖ ﮐﻪ ﻭﯼ ﺩﺭ ﻃﻮﻝ ﺣﯿﺎﺕ ﻣﯽ ﮔﺮﻓﺘﻪ ﺍﺳﺖ ﻭ ﺍﺯ ﮔﺮﻓﺘﻦ ﺁﻥ ﺍﻧﺼﺮﺍﻑ ﻧﺪﺍﺩﻩ ﺍﺳﺖ. ﻭ ﺍﯾﻨﮏ ﺍﯾﻦ ﺍﮊﺩﻫﺎﯾﺎﻥ ﺍﺯ ﺭﻧﺠﺎﻧﺪﻥ ﺍﻭ ﺍﻧﺼﺮﺍﻑ ﻧﺪﻫﻨﺪ! :ws3:


بریم نوع تعریف متغیر ها رو هم بگیم و برید استراحت کنید.

 

خبر خوش اینه که همه متغیرها تو VBS به یه صورت تعریف میشن. بریم حالشو ببریم hapydancsmil.gif

 

به اینصورت:

 

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

 

همینطور برای تعریف عدد ثابت از const که ابتدای کلمه constant هستش استفاده میشه.

 

خب یه مثالم بنویسیم که راه بیفتید. یه فایل متنی جدید تو پوشه Scripts بسازید و اسمش رو بزارید 3dim-const.vbs

 

این کد رو کپی کنید توش و اجرا کنید.

 

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

 

تمرین: کد بالارو تحلیل کنید whistle.gif :ws3:

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

 

 


93-3-15 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:
لینک به دیدگاه

بابت وقفه طولانی منو ببخشید. امتحانا پشت هم افتاده بودن TAEL_SmileyCenter_Misc%20(305).gif


مطالبی که امروز میگم بسیار مهم هستند. وقتی دارید با زبان های برمبنای شی (Object-based) و زبان های شی گرا (Object-oriented) برنامه نویسی میکنید، از کلاس ها و اشیا برای نوشتن بسیاری از کدها بهره میگیرید.

زبان های برنامه نویسی شی گرا مثل Simula، Smalltalk، ++C, Objective-c, eiffel,python,ruby,#C و Realbasic

زبان های برنامه نویسی بر مبنای شی مثل ویژوال بیسیک، جاوااسکریپت و Ada

حالا خیلی مهم نیست که شی گرا فرقش با برمبنای شی چیه.....ادامه میدیم:w16:


Class یا کلاس :

 

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

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

خب حالا کامپیوتر رو در نظر بگیرید. این کامپیوتر یه خصوصیاتی داره. مثلا رنگ کیس، تعداد درایو سی دی، فلاپی میخوره یا نه ...

در واقع یک شی جدید داریم به این صورت با خصوصیات (Properties) مربوط بهش:

 

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

رنگ رو به صورت یک نوشته (رشته یا String) مینویسیم. تعداد درایو یک عدده (Integer) و اینکه فلاپی داره یا یک نوع بولین (Boolean) هستش. وقتی یک متغیر مقدارش یا بله باشه یا خیر، میگیم از نوع بولین هستش.

پس داریم:

 

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

خب نوع متغیرها رو هم نوشتیم.

تا اینجا یک شی ساختیم و خصوصیات (properties) مربوط بهش رو نوشتیم. حالا میخوام روش ها (Methods) مربوط بهش رو هم بنویسیم.روش ها، در واقع متغیرهایی هستند که ما با اونها میتونیم شی رو تنظیم کنیم.

برای مثال تو همین کامپیوتر، میزان نور مانیتور و انتخاب حالت روشن یا خاموش بودن مانیتور هر کدوم یک method هستند.

داریم:

 

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

 

خصوصیت یک شی رو نمیشه تغییر داد ولی متد اون رو میشه تنظیم کرد.برای مثال برای دو تا متد کامپیوتر مقدار تعریف میکنیم:

 

 

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

 

تا اینجا مجموعه ای که داریم به این صورته:

 

 

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

خب حالا میدونیم چی میخوایم بسازیم. ما میخوایم یه کامپیوتر بسازیم که رنگ کیسش مشکی باشه، سه درایو سی دی داشته باشه و فلاپی هم نداشته باشه. وقتی ساخته شد میزان روشناییش رو روی 80 درصد تنظیم میکنیم.

 


:ws3: Let's get started


معرفی دستور Set: برای اضافه کردن یک شئ به برنامه از دستور set استفاده میکنیم.

 

 

با استفاده از set شئ کامپیوتر رو میسازیم. به این صورت:

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

حالا کد بالا رو تحلیل کنیم. اول دستور set رو مینویسیم.بعد یه اسم واسه کامپیوترمون انتخاب میکنیم. من اسمشو گذاشتم objcomputer. بعد یه علامت مساوی. بعد دستور CreateObject رو مینویسیم، یعنی میخوایم یه شئ بسازیم. حالا داخل پرانتز و داخل علامت دابل کوتیشن (") شئ مورد نظرو مینویسیم. میتونیم مشخصاتش رو هم بنویسیم.

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

کد کامل ما این شکلی میشه:

 

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

تو خط اول شئ رو ساختیم. تو خط دوم گفتیم 3 تا درایور داره. تو خط سوم گفتیم رنگش سیاهه. تو خط چهارمم گفتیم نمایش بده که فلاپی داره یا نه

اگه شما این کد رو بنویسید و اجرا کنید ارور میده. میگه شئی به اسم computer پیدا نشد !

خب این یعنی چی ؟

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


93-3-20 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

با سلام دوباره خدمت دوستان عزیزم :icon_gol:

 

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

 

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

 

تو خط اول، ابتدا کلمه If و بعدش شرط مورد نظرمون رو میزاریم. بعدش مینویسیم then

تو خط دوم به بعد کد مورد نظرمون رو مینویسیم که میتونه چند خط باشه.

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

و در انتها از کلمه end if استفاده میکنیم که نشون بدیم کد شرطی ما تا همینجا بوده.

یک فایل جدیدی تو پوشه scripts بسازید و اسمش رو بزارید 4if.vbs

کد زیرو کپی کنید توش و اجرا کنید.

 

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

تو این کد اول یک عدد بزرگتر از 50 از کاربر درخواست میکنیم.اگه اون عدد بزرگتر از 50 بود نشونش میدیم و اگه کوچکتر بود یه پیغام به کاربر میدیم.

 

حالا فرض کنید بین چند تا حالت میخوایم تصمیم گیری کنیم.

 

برای این کار اول کلمه if و بعدش شرط مربوطه و بعدش کد مربوطه

بعد از اون کلمه else if و بعدش شرط و بعدش کد .... به تعداد مورد نیاز از Else if استفاده میکنیم

و در آخر هم از else و بعدش کد و در انتها end if مینویسیم.

فایل بالا رو میرایش کنید و این کد رو به جای قبلی بنویسید.

 

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

 

تحلیل کد:

1- معرفی متغیر n

2- گرفتن یک مقدار برای n از کاربر

3- تشخیص اینکه کاربر عدد وارد کرده است یا یک کاراکتر دیگر.تابع isnumeric رو پایین تر توضیح میدم

خط 4 تا خط 16- تشخیص محدوده n که کاربر وارد کرده

خط 18- else مربوط به اولین if

خط 19- اگر if اول، تشخیص بده که n یه عدد هستش، وارد همون خط چهارم به بعد میشه و تمام. اما اگه تشخیص بده که عدد نیست(مثلا یک حرف مثل s وارد کرده باشیم) میاد تو خط 19 و یه پیام نسبتا محترمانه ! نمایش میده :-)

خط 20- دستور end if که باید در انتهای if نوشته بشه.

 

 

نکته: برای تعریف چند شرط در نوشتن دستور if یا هر جای دیگه که لازم باشه شرط بنویسیم، میتونیم از کلمات and و or استفاده کنیم. کلمه and بین دو تا شرط وقتی استفاده میشه که بخوایم حتما هر دو تا شرط برقرار باشه.مثلا تو کد بالا من میخوام حتما n بین 0 تا 10 باشه پس and استفاده میکنم بین دو تا شرط. کلمه or هم وقتی استفاده میشه که حداقل یکی از دو تا شرط برقرار باشه کافیه. مثلا وقتی مینویسیم name = mina or name = maryam یعنی اگه اسم مینا باشه یا مریم باشه.اگه یکی از این دو تا باشه قبوله.یا اگه هر دوتاش باشه هم قبوله. ولی وقتی مینویسم s=4 and p=3 یعنی حتما s برابر با 4 باشه و p هم برابر با 3

 

 

در واقع ما اومدیم و کد رو دو قسمت کردیم. به این صورت که اگه کاراکتر وارد شده توسط کاربر یک عدد صحیح بود، یه کارای خاصی رو انجام بده و اگه عدد صحیح نبود یه کار دیگه رو انجام بده.

نکته ای که باید توجه کنید اینه که ما میتونیم همیشه داخل if، بازم یه if دیگه بنویسیم و این هیچ مشکلی نداره.

 

معرفی دستور IsNumeric(x): این دستور برای تشخیص اینکه یه کاراکتر خاص، عدد هستش یا نه استفاده میشه.اگه عدد باشه خروجی این دستور میشه True یا همون درست.اگرم عدد نباشه خروجی این دستور میشه False یا غلط.

 

 

تو زبان های برنامه نویسی وقتی از if استفاده میکنیم، اگر شرط نوشته شده مقدارش برابر 1 یا True بشه وارد if میشیم و اگه برابر 0 یا False بشه وارد شرط نمیشیم. فرض کنید میخوایم بررسی کنیم که آیا مقدار n بزرگتر از 5 هستش یا کوچکتر. خب همونطور که میدونید مینویسیم if n

 

 

طبق نکته بالا وقتی مینویسیم

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

یعنی ببین n عدده یا نه. حالا اگه عدد باشه وارد دستورات if میشیم و اگه عدد نباشه میریم به قسمت else. به همین راحتی :whistle: :ws3:

 

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


تمرین یادم رفته بود بنویسم براتون icon_pf%20(34).gif

 

5- کدی بنویسید که یک عدد از کاربر بگیره. اولا تشخیص بده که کاربر عدد وارد کرده یا نه.بعد اگر عدد مثبت بود بنویسه positive و اگر عدد منفی بود بنویسه negative. اگر هم صفر بود بنویسه zero

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 


93-3-26 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

سلام دوستان :icon_gol:

 

تو مثالای قبلی فهمیدیم که دستور now، زمان و تاریخ رو برمیگردونه. کد زیر رو بنویسید و اجرا کنید:

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

 

خب گاهی اوقات ما فقط دقیقه یا فقط روز رو لازم داریم. اینجور مواقع میتونیم یه جور دیگه از دستور now استفاده کنیم.

یه فایل جدید تو پوشه scripts بسازید و اسمش رو بزارید: 5nowfunctions.vbs

 

کد زیرو بنویسید و اجرا کنید:

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

 

 

کلمات year , month , day , hour , minute , second کلمه هایی مربوط به تابع now هستند که وقتی با هم به شکل بالا ادغام بشن میتونیم هر کدوم رو که بخوایم بدست بیاریم.

 

تمرین این پست:

 

6- با استفاده از نکات این پست، کدی بنویسید که ساعت سیستم رو بگیره. بعد اگه ساعت بین 0 تا 8 بود بنویسه MIDNIGHT. اگه بین 8 تا 12 بود بنویسه morning. اگه بین 12 تا 15 بود بنویسه afternoon. بین 15 تا 19 بود بنویسه evening و در نهایت اگه هیچکدم این ها نبود بنویسه it's night

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 


93-3-27 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

 

 

لینک به دیدگاه

سلام رفقای گلم :icon_gol:

 

تو این پست یه مختصری درباره زیربرنامه ها (Sub functions) توضیح میدم. خیلی بحث ساده اما واقعا مهمیه :w16:

 

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

بعضی جاها هم فقط برای اینکه برنامه ما مرتب تر و ترتمیزتر بشه از sub استفاده میکنیم که این دیگه به سلیقه برنامه نویس مربوطه. من خودم همیشه برنامه هامو چند قسمت میکنم و هر کدوم رو تو یه sub جدا مینویسم. مزیت این کار اینه که تغییر برنامه خیلی راحت تر میشه. اگه همه کدا پشت هم باشن شاید با تغییر یه دستور لازم باشه چندین کد دیگه رو هم ویرایش کنید ولی اگه هر قسمت رو جدا کرده باشید فقط قسمت مورد نظرو ویرایش کنید تمومه :a030:

 

یه مثال ساده مینویسیم. یه فایل جدید تو پوشه Scripts بسازید و اسمش رو بزارید 6sub.vbs

کد زیرو داخلش کپی کنید و ذخیره و بعدش هم run کنید.

 

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

 

خیلی راحته. فک کنم خودتون فهمیدید چه شکلی استفاده میشه.دو تا زیربرنامه نوشتیم. یکی به اسم isempty و یکی هم به اسم notempty

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

 

برای تعریف یک زیر برنامه اول کلمه sub رو مینویسیم و بعد اسم زیربرنامه رو به دلخواه مینویسیم.بعدش داخل پرانتز پارامترهای ورودی رو مینویسیم. بعد تو خط های پایینش دستورات اون زیربرنامه رو مینویسیم و بعد از تموم شدنش هم مینویسیم end sub

 

اما پارامتر یعنی چی ؟

 

گاهی اوقات لازمه یه اطلاعاتی به زیربرنامه ها بفرستیم و یه اطلاعاتی هم از خروجی اونا بگیریم.

فایل 6sub.vbs رو باز کنید و اطلاعات قبلیش رو پاک کنید و کد زیرو کپی کنید توش.

 

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

 

نکته: میتوان به جای sub از کلمه function استفاده کرد.

 

تو کد بالا دو تا عدد x و y از کاربر گرفتیم. فرستادیم به تابع adder

دقت کنید لازم نیست اسم چیزایی که میفرستیم به تابع با اسم چیزایی که تو خود تابع نوشتیم یکی باشه. (مثلا ما x,y فرستادیم به تابع ولی خود تابع اومده از m,n استفاده کرده). در حقیقت اون پارامتر اول رو میاد پارامتر اول خودش در نظر میگیره(مثلا میاد x رو بعنوان m در نظر میگیره) و دومی رو بعنوان پارامتر دوم خودش و به همین ترتیب تا آخرین پارامتر.

 

سوال اول: دلیل اینکه به جای m+n، تو آخر کد، از cint استفاده کردیم میدونید چیه ؟

آخر کد بالارو به m+n تغییر بدید و دوباره اجرا کنید تا بفهمید.

 

سوال دوم: اگه به جای function از sub استفاده میکردیم چی میشد ؟ تحقیق کنید ببینید درست جواب میده یا غلط :icon_gol:

 

تمرین این بخش:

 

7- کد بالا رو تحلیل کنید و خط به خط توضیح بدید.

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 

 


93-3-28 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

 

لینک به دیدگاه

با سلام مجدد :icon_gol:

عبارت شرطی if رو گفتیم. یه دستور دیگه هست که برای تصمیم گیری استفاده میشه و اون Select Case هستش.

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

دستور select case نوشتار ساده تری نسبت به if else داره. اما یه محدودت داره و اونم اینه که تو دستور if هر شرطی دلتون بخواد میتونید بنویسید ولی تو دستور select case بعضی وقتا به محدودیت میخورید. حالا اگه استفاده کنید خودتون متوجه میشید. من تجربه خودمو گفتم 5c6ipag2mnshmsf5ju3z.gif

 

یه فایل جدید تو پوشه Scripts بسازید و اسمش رو بزارید 7Select-Case.vbs

کد زیرو کپی کنید داخلش. فایل رو ببندید و اجرا کنید.

 

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

 

تمرین این پست:

 

8- تمرین شماره 5 رو با select case حل کنید تا بفهمید محدودتی که گفتم معنیش چیه.

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 

 


93-3-28 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

بازم سلام رفقای گلم :icon_gol:

 

تو این پست میخوایم قسمتی از تنظیمات نمایش پنجره هارو با هم مرور کنیم.

 

کد زیرو اجرا کنید:

 

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

 

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

 

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

 

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

 

تو کد بالا اومدیم بعد از متن مورد نظر 2 تا ویرگول گذاشتیم و بعدش متن عنوان رو نوشتیم. به این ترتیب یه پنجره باز شد که یه متن داخلش بود و یه عنوان هم داشت. اما این 2 تا ویرگول از کجا اومد ؟؟؟؟

 

حالا کد زیرو بنویسید و اجرا کنید:

 

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

 

خب نتیجه رو فهمیدید ؟

بین اون ویرگول ها عدد 1 رو نوشتیم و دکمه Cancel به پنجره ما اضافه شد.

 

برای افزودن دکمه های دلخواه مختلف به پنجره نمایش داده شده به کاربر، اعداد خاصی تعریف شده که به صورت زیر هستن:

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

 

برای مثال ما میخوایم یه متنی به کاربر نشون بدیم و ازش بخوایم بین سه تا دکمه abort و retry و ignore یکی رو انتخاب کنه.

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

 

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

 

 

خب یه سوالی اینجا ایجاد میشه و اونم اینکه اگه بخوایم طبق انتخاب کاربر یه کار خاصی انجام بدیم چیکار باید کنیم؟

خب تابلوئه که همیشه برای ما مهمه کاربر abort رو انتخاب کنه یا retry رو :ws3:

 

قبل از ادامه بحث یه نکته بگم:

 

نکته: هنگام استفاده از msgbox، اگه فقط قصد ما نمایش یه پیغام برای کاربر باشه، از فرمت زیر استفاده میکنیم:

 

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

 

اما اگه بخوایم بفهمیم که کاربر کدوم دکمه رو فشار داده از فرمت زیر استفاده میکنیم. یعنی پرانتز هم باید بزاریم:

 

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

 

 

 

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

 

روش اول: یک فایل جدید تو پوشه scripts بسازید و اسمش رو بزارید 8msgbox.vbs

کد زیر رو کپی کنید داخلش و اجرا کنید.

 

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

 

همونطور که فهمیدید، قبل از هر کدوم از آپشن ها یه vb اگه بنویسیم میتونیم تشخیص بدیم که کدومش زده شده. برای yes و no هم به ترتیب vbyes و vbno مینویسیم. برای ok و cancel هم به همین ترتیب.

 

روش دوم: برای هر دکمه، یک عدد خاص درنظر گرفته شده. مثلا دکمه cancel معادل با عدد 2 هستش. این مقادیر به این ترتیب هستند:

 

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

 

همون کد بالارو اینبار با اعداد مینویسیم:

 

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

 

نکته: عددهایی که تو دستور msgbox میزاریم تا نوع پنجره رو تعیین کنیم به 4 گروه تقسیم میشن. گروه اول اعداد 0 تا 5. گروه دوم اعداد 16 تا 64. گروه سوم اعداد 256 تا 768 و گروه چهارم هم عدد 4096. برای پنجره های ترکیبی از هر کدوم این گروه ها میتونیم یک عدد انتخاب کنیم و جمعشون رو تو دستور بنویسیم.مثال: اگه بخوایم پنجره ای نشون بدیم با دکمه های مثلا بله و خیر، عدد 4 رو باید وارد کنیم. اگر بخوایم پیامی ساده نشون بدیم که مثلا علامت هشدار داشته باشه، عدد 16 رو باید وارد کنیم. برای پنجره ای که هم دکمه های بله و خیر و هم علامت هشدار داشته باشه میتونیم جمع اینها یعنی عدد 20 رو وارد کنیم.

تو پست بعدی درباره Inputbox و تنظیمات اون هم مفصلا توضیح میدیم :a030:

 

این مطالب تو وب فارسی پیدا نمیشه. امیدوارم مفید باشه براتون :icon_redface: :icon_gol:

 

تمرین این پست:

 

9- کدی بنویسید که از کاربر بپرسه آیا مولتی یوزره یا نه :ws3:. تابلوئه که باید از دکمه های yes و no استفاده کنید دیگه. اگه جواب مثبت بود بنویسه It's a shame :ws3:. اگه منفی بود بنویسه REALLY ??? o-O :ws3:

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 

 


93-3-31 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

عرض سلام مجدد، امیدوارم خوب و سرحال باشید :icon_gol:

 

تو پست قبلی تنظیمات msgbox رو با هم مرور کردیم و تو این پست هم نگاهی به Inputbox و دستورات اون میندازیم. با من همراه باشید :w16:

 

قبل از شروع بحث یه نکته واضح بگم محض اطمینان از اینکه مطلع شده باشید.

 

از MsgBox زمانی استفاده میکنیم که بخواهیم متنی رو به کاربر نمایش بدیم و یا اینکه بین چند گزینه از پیش تعیین شده (مثلا بین retry و ignore و abort) از کاربر سوال بپرسیم.

 

از InputBox زمانی استفاده میکنیم که قرار باشه کاربر یه اطلاعاتی رو به برنامه ما بده و طبق اون اطلاعات کار خاصی انجام بدیم. در واقع از کاربر بخوایم یه نوشته وارد کنه.

 

فرم نمایش کلی تابع Inputbox به این صورت هستش:

 

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

 

اینجا یکی یکی معنی نوشته های داخل پرانتز رو میگم:

 

prompt: متنی هستش که تو پنجره قراره نمایش داده بشه. مثلا کد زیرو اجرا کنیم:

 

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

بخش prompt لازمه و حتما باید نوشته بشه و الا ارور میده برنامه. اگه نیاز نبود متن خاصی رو نشون بدیم به کاربر میتونید اونو خالی بزارید. به این صورت :

 

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

 

title: عنوان پنجره ای هست که نمایش داده میشه. کد زیرو اجرا کنید:

 

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

 

فقط دقت کنید که مثل حالت کار با msgbox وقتی فقط بخوایم یه چیزی رو بپرسیم از کاربر، لازم نیست از پرانتز استفاده کنیم. اگه الان تو کد بالا پرانتز بزارید، ارور میده.

 

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

 

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

 

دیدی گاهی وقتا که میخواید نرم افزار نصب کنید، خودش به صورت پیشفرض میاد مسیر C:/program files رو بهتون نشون میده ؟؟؟ اینجا از همین حالت default استفاده میشه.

 

xpos: در واقع همون فاصله افقی کادر نمایش داده شده از سمت چپ صفحه بر حسب twip هستش. twip یک واحد اندازه گیریه که مقدارش حدود 17 میکرو متره !!

اگه چیزی وارد نکنید مرکز صفحه نمایش رو در نظر میگیره (از نظر افقی). کد زیرو اجرا کنید:

 

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

 

میبینید که فاصله کادر از سمت چپ صفحه نمایش رو برابر با 2000 واحد twip در نظر گرفت.

 

ypos: دقیقا مثل xpos با این تفاوت که فاصله از بالای صفحه نمایش رو نشون میده. کد زیرو اجرا کنید:

 

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

 

یه فایل جدید تو پوشه Scripts بسازید و اسمش رو بزارید 9inputbox.vbs

کد زیرو داخلش کپی کنید و اجرا کنید.

 

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

 

فک میکنم خیلی ساده بود دیگه نه ؟ :w16:

 

تمرین:

 

10- کد بالا رو تحلیل کنید و خط به خط توضیح بدید. آیا به این روش میشه محدودیت select case رو از بین برد ؟؟

 

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

 


93-4-4 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

سلام علیکم :ws3:

تعریف آرایه خیلی مهم و کاربردیه ولی ماتریس کمتر کاربرد داره. ولی دیگه ما وظیفمونه جفتشو بگیم :ws3:

 

اول بزارید من خود آرایه و ماتریس رو تعریف کنم که بفهمید قراره چیکار کنیم :a030:

آرایه: این کیف های سی دی یادتونه ؟ که مثلا 50 تا سی دی توش جا میشد

اون کیف سی دی میشه یه آرایه از سی دی ها :ws3:

 

در واقع یه تعداد شی مختلف رو اگه بغل همدیگه بچینی میشه یه آرایه. به همین راحتی :w16:

 

ماتریس یا آرایه چند بعدی: یه کتابخونه رو در نظر بگیرید. فرض کنید کتابخونه ما 5 طبقه باشه. تو هر طبقه هم مثلا 20 تا کتاب جا میشه. این کتابخونه میشه یه ماتریس با 5 سطر و 20 ستون. که در کل 100 تا کتاب جا میگیره. یا ساده تر بگم. ماتریس یعنی چند تا آرایه با اندازه مساوی رو بچینی زیر همدیگه :w16:

 

خب حالا اینا به چه درد میخورن ؟؟ :ws3:

 

فرض کنید ما یه برنامه قراره بنویسیم برای یه مدرسه. که نمره دانش آموزا رو بگیره و معدلشون حساب کنه. این مدرسه 100 تا دانش آموز داره و هر دانش آموزم 10 تا نمره باید داشته باشه. یه راه اینه که دونه دونه نمره های دانش آموزا رو بگیرید و جمع و ضرب و تقسیم کنید که فک کنم تا سال بعدش طول میکشه کارتون :ws3:

 

ولی یه راه بهترم داریم hapydancsmil.gif

 

ما میایم یه ماتریس تعریف میکنیم که 100 تا ستون داشته باشه و 10 تا سطر. حالا فقط نمره هارو وارد میکنیم تو این ماتریس. بعدش میایم یه حلقه مینویسیم که نمره های هر سطر رو با هم جمع کنه و تقسیم بر 10 کنه. که میشه معدل هر دانش آموز :w16:

یعنی کد جمع و ضرب و تقسیم رو یک بار فقط مینویسیم که 100 بار برای 100 تا دانش آموز مختلف اجرا بشه hapydancsmil.gif

 

خب اگه خوابتون نگرفته بریم سر اصل مطلب :ws3:

 

تعریف آرایه :

 

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

 

توضیح کد بالا: تو خط اول اومدیم یه آرایه تعریف کردیم که 10 تا خونه داره. اسمش رو هم گذاشتیم scores. هر اسمی دلتون بخواد میتونید بزارید دیگه. البته به جز اسم دستورها. مثلا نمیتونید اسم آرایه رو بزارید for . چون for خودش یه دستوره و برنامه اون رو به عنوان دستور میشناسه :w16:

 

تو خط بعدی اومدیم اولین خونه آرایه رو مقداردهی کردیم.

 

دقت کنید وقتی مینویسیم مثلا star(5) یعنی یه آرایه تعریف کردیم به اسم star که پنج تا خونه داره. اولین خونه میشه star(0) و آخرین خونه میشه star(4). یعنی از 0 تا 4 آدرس دهی میشه :w16:

 

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

 

تو خط بعدش ششمین خونه از آرایه رو مقدار دهی کردیم. چون عدد نوشتیم نیازی نیست که " بزاریم اول و آخرش.

 

بقیه خونه های آرایه رو مقدار ندادیم پس خالی میمونن :w16:

 

حالا کد رو اجرا کنید و نتیجه رو ببینید :a030:

 

خب این آرایه بود. حالا میخوایم ماتریس تعریف کنیم.

 

کد زیر تعریف یک ماتریس رو نشون میده که اسمش mat هستش و 4 تا سطر داره و 7 تا ستون:

 

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

 

فک کنم فهمیدید دیگه معنی کد بالا چیه. بنویسید و اجرا کنید همین کد رو :a030:

 

حالا یه فایل جدید تو پوشه Scripts بسازید به اسم 10matris-array.vbs و کد زیرو داخلش کپی کنید:

 

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

 

تمرین این پست:

 

12- کد بالا رو خط به خط تحلیل کنید hanghead.gif

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 


93-4-7 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

سلام دوباره به رفقای عزیزم :icon_gol:

پست قبلی رو نوشتم خسده شدم :ws3:

به همین خاطر تو این پست میخوام فقط معرفی کنم انواع حلقه هارو تا تو پست های بعدی یکی یکی توضیح بدم و مثال حل کنیم ازشون :a030:

 

تو ویژوال بیسیک 4 نوع حلقه داریم که به این صورت هستن:

 

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

 

ترس نداره نگران نباشید ... من اینجام :ws3:

 

خب یکی یکی توضیح مختصری دربارشون بدم ... :a030:

 

For .... Next: یک عدد بهش میدیم و به همون تعداد، دستوراتی که داخلش نوشتیم رو اجرا میکنه.

 

For Each .... Next: یه آرایه یا یه مجموعه بهش میدیم و برای هر شی داخل اون مجموعه، دستورات داخلش رو اجرا میکنه

 

Do .... Loop: یه شرط براش تعریف میکنیم و تا زمانیکه اون شرط درست باشه دستورات داخلش رو اجرا میکنه

 

While .... Wend: این دستور خیلی قدیمی شده و دیگه استفاده نمیشه. به جاش از Do .... Loop استفاده میکنیم.

 

خب بسه دیگه بقیش بمونه پست بعدی :ws3:

 

 

 


93-4-7 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

سلام :icon_gol:

 

امیدوارم تا اینجای آموزش خسته نشده باشید دوستای عزیزم :icon_redface:

 

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

 

بریم سراغ حلقه ها ....


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

 

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

 

کد بالا میاد از عدد اول یعنی n1 تا عدد دوم یعنی n2، دستورات رو اجرا میکنه.

 

مثلا میخوایم پنج بارعدد 4 رو با خودش جمع کنیم. کد ما به این صورت میشه:

 

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

 

بازم میگم که حروف کوچیک و بزرگ فرقی ندارن. یعنی FOR بنویسید یا for یا مثلا fOr هیچ فرقی ندارن با هم :w16:

 

تو دستوری که نوشتیم میاد مقدار i رو برابر 1 در نظر میگیره و بعدش کد رو اجرا میکنه و میرسه به دستور next. وقتی رسید به اینجا مقدار i میشه 2. دوباره دستورات رو به ازای i=2 اجرا میکنه و به همین ترتیب تا وقتی که i برابر 5 میشه.

 

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

 

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

 

این کد میاد متغیر m رو از 0 تا 30 با فاصله های 5 تایی زیاد میکنه. تو هر مرحله مقدار m رو هم نشون میده. فک کنم کامل متوجه شدید دیگه :icon_redface:

 

همین دستورات رو از مقدار زیاد تا کم هم میشه انجام داد. مثال زیرو نگاه کنید:

 

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

 

تو کد بالا مقدار z از 30 تا 0 و تو هر مرحله به اندازه 5 تا کم میشه. دقت کنید چون از زیاد به کم نوشتیم، باید برای عدد step علامت منفی بزاریم که نشون دهنده کم شدن عدد هستش :a030:

 

یه فایل جدید تو پوشه Scripts بسازید به اسم 11for-next.vbs و کد زیرو داخلش بنویسید اجرا کنید:

 

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

 

این کد اولین کد جدی و کاربردی بود که نوشتیم. از این به بعد سعی میکنم به همین صورت مثال های کاربردی بنویسم براتون :a030:

 

تمرین این پست ...

 

13- کد بالا رو تحلیل کنید.

 

14- کدی بنویسید که یک عدد از کاربر بگیره. برای این کار این متن رو نشون بده: How many numbers do you have ?

بعد این متن رو نشون بده: Enter your numbers one by one. عنوان پنجره هم اسم خودتون باشه.

 

بعد به تعداد همون عددی که کاربر وارد کرده، از کاربر عدد بگیره. برای این پنجره ها متنی نوشته نشه و خالی باشه.

 

حالا یه سوال از کاربر بپرسه با این عنوان: ?Sum or multiply . یعنی این اعداد رو جمع کنه یا ضرب ؟

 

اگه کاربر نوشت sum بیاد جمع اون اعداد رو نشون بده و اگه نوشت multiply بیاد ضرب اون اعداد رو نشون بده.

 

به همین راحتی :ws3:

 

اگه کمک خواستید به صورت خصوصی میتونید بپرسید :a030:

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 


93-4-8 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

بازم سلام :icon_gol:

 

این حلقه هم تقریبا شبیه همون حلقه For .... Next نوشته میشه. تفاوتشون در اینه که حلقه For .... Next برای یه تعداد مشخصی که کاربر تعریف میکنه اجرا میشه، ولی حلقه For Each .... Next برای تعداد المان هایی که داخل یک شی یا آرایه هستند اجرا میشه.

فرم کلی نوشتن این حلقه به این صورته:

 

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

درباره دستور Exit for بعدا توضیح میدم :a030:

element یعنی اعضای داخل گروه. و گروه هم مجموعه ای از اشیا هستش که قراره کد ما نوبتی روی تک تکشون اجرا بشه. به جای element هر اسمی میتونید بنویسید. مثال پایین رو بخونید متوجه میشید :w16:

 

یه فایل جدید تو پوشه Scripts بسازید و اسمش رو بزارید 12For-Each-Next.vbs

کد زیرو داخلش کپی و اجرا کنید.

 

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

 

تو مثال بالا یه آرایه تعریف کردیم. تو این آموزش اولین باره که آرایه رو اینجوری تعریف میکنیم. میتونستیم همین آرایه بالا رو به این شکل هم تعریف کنیم:

 

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

 

 

شما با هر کدوم از تعریف های بالا که راحت تر بودید، آرایه رو به همون شکل تعریف کنید :a030:

 

تمرین این پست ...

 

15- کدی بنویسید که 5 بار پشت سر هم از کاربر عدد بگیره. بعد یکی یکی اونها رو به توان 3 برسونه و نشون بده. از یک آرایه 5 تایی و همینطور باید از For Each .... Next استفاده کنید، چون بحثمون در این رابطه بود :icon_redface:

 

به توان رسوندن عدد رو فک کنم بلد باشید. با این حال من یه نمونه مینویسم. کد زیر عدد 5 رو به توان 2 میرسونه.

 

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

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 


93-4-9 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

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

 

از اسمش مشخصه دیگه. وقتی حالتی پیش بیاد که دستور Exit for اجرا بشه، برنامه از حلقه در میاد :a030:

 

یه فایل جدید تو پوشه Scripts بسازید به اسم 13Exit-for.vbs

کد زیرو داخلش کپی کنید و بعدش هم run کنید.

 

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

 

دستور Exit for هم تو حلقه For .... Next میتونه استفاده بشه و هم تو حلقه For Each .... Next :w16:

 

تمرین این پست ...

 

16- کد بالا رو تحلیل کنید و خط به خط توضیح بدید.

 

17- برنامه ای بنویسید که هزار بار یک عدد صحیح تصادفی بین 0 تا 100 تولید کنه. هر وقت یکی از این هزار تا بین 1 تا 5 بود، یه پیام بده !! I found it و دیگه عدد تولید نکنه و بسته بشه ... و اگه بعد از هزار بار هیچ کدوم از اعداد بین 1 تا 5 نشدن، بنویسه ): I didn't Find it

 

تولید کد تصادفی با دستور rnd صورت میگیره و نتیجه این دستور یک عدد بین 0 تا 1 هستش. ما برای تولید عدد صحیح بین 1 تا 100 باید خروجی این دستور رو ضربدر 100 کنیم اول. که دو تا عددش بیان پشت اعشار. حالا اون رو تبدیل به integer کنیم. کد زیرو نگاه کنید:

 

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

 

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 


93-4-9 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

آخرین حلقه رو هم معرفی کنیم و بریم سراغ مباحث بعدی :a030:

 

حلقه Do .... Loop از بقیه حلقه های که معرفی کردیم قدرتمند تره. به این معنی که شما میتونید خیلی راحت تر روش مانور بدید و شرایطش رو تعیین کنید. تو این حلقه با استفاده از دو کلمه until و while میتونیم شرط رو تعیین کنیم. بسته به نیازمون یکی از این کلمات رو بکار میبریم. اینم بگم که این کلمات رو هم میتونیم تو اول حلقه، یعنی بعد از کلمه Do و هم میتونیم تو آخر حلقه، یعنی بعد از کلمه Loop به کار ببریم. خب فکر کنم مانقد بد گفتم که نفهمیدید چی شد :ws3:جلوتر توضیح میدم قضیه چیه :a030:

 

فرم کلی این حلقه این شکلیه:

 

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

 

به این شکل هم میتونیم ازش استفاده کنیم:

 

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

 

بسته به نیازمون یکی از عبارات until و while رو انتخاب میکنیم و شرط رو مقابلش مینویسیم :w16:

 

الان دو تا مثال زیر هیچ فرقی با هم ندارن:

 

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

 

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

 

تفاوت until و while رو خودتون فک کنم میتونید تشخیص بدید تو موقعیت های مختلف. یه حالت کلی هم نمیشه تعریف کرد که بگم اگه این حالت بود از until و اگه این حالت بود از while استفاده کنید. چون خیلی وقتا میشه از جفتشون استفاده کرد. به هر حال من یه حالت رو ذکر میکنم:

 

از کلمه until زمانی استفاده میکنیم که بخوایم یه مقدار مرزی برای یک متغیر تعریف کنیم. مثلا میخوایم تا زمانی حلقه اجرا بشه که مقدار i کوچکتر از 5 هستش. از کلمه while زمانی استفاده میکنیم که بخوایم یه عبارتی درست باشه. مثلا تا وقتی که مقدار i دقیقا برابر 5 هستش کد اجرا بشه :w16:

 

یادتونه برای خارج شدن از حلقه for از دستور exit for استفاده میکردیم ؟؟؟

برای خارج شدن از حلقه Do هم از دستور exit do استفاده میکنیم :w16:

 

یه فایل جدید تو پوشه scripts بسازید به اسم 14Do-Loop.vbs و کد زیرو داخلش کپی کنید.

 

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

 

تابع vartype رو تو پست بعدی معرفی میکنم که چیه کارش :a030:

 

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

تو حلقه دوم هم میاد 3 بار به ازای j برابر با 1 و 2 و 3 از کاربر عدد میگیره. وقتی مقدار J برابر 4 میشه از حلقه خارج میشه :w16:

 

تمرین این پست ....

 

18- کد بالا یه ایراد داره. اون ایراد رو پیدا کنید و کد رو طوری تغییر بدید که درست کار کنه :a030:

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 


93-4-12 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

از این تابع برای تشخیص نوع مقدار ذخیره شده در یک متغیر استفاده میشه. مثلا فرض کنید یک متغیر داریم به اسم x. و نمیدونیم داخلش چی ذخیره شده. مقدار ذخیره شده میتونه یک عدد، یک متن یا کلمه یا حرف، خالی، عدد اعشاری، تاریخ، ساعت و .... باشه.

 

برای تشخیص نوع ذخیره شده در متغیری به اسم r دستور رو به این صورت مینویسیم:

 

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

 

دقت کنید به جای m و r هر اسمی بخواید میتونید بزارید :w16:

 

مقدار m رو با جدول زیر پیدا میکنیم و نوع ذخیره شده رو هم مطابق جدول زیر تشخیص میدیم :w16:

 

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

 

برای مثال اگه کدی که اولش نوشتیم رو اجرا کنید و مقدار m برابر 8 بشه، یعنی یک رشته (String) داخل r ذخیره شده :w16:

 

یه فایل جدید به اسم 15VarType.vbs داخل پوشه Scripts بسازید. کد زیرو توش بنویسید و اجرا کنید و خروجی رو با جدول مقایسه کنید.

 

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

 

 

 


93-4-12 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه
  • 2 هفته بعد...

بعد از یه غیبت نسبتا طولانی سلام :icon_gol:

بابت امتحانات و پروژه ها تمرکز لازم برای ادامه تاپیک رو نداشتم. از عزیزانی که تاپیک رو دنبال میکنن عذر میخوام :icon_redface: :icon_gol:

 

عبارت Option Explicit رو گاهی اوقات در ابتدای کدها می بینید. خب اجازه بدید فلسفه این عبارت رو عرض کنم خدمتتون ...

 

همونطور که میدونید ما میتونیم انواع متغیرهارو با کلمه dim تعریف کنیم. اما شاید متوجه شده باشید که تو بعضی از کدهامون از این کلمه استفاده نمیکنیم و مستقیما متغیر رو با مقدارش تعریف می کنیم.

 

کد زیر معرفی یک متغیر رو با استفاده از dim و بدون استفاده ار اون نشون میده:

 

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

 

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

 

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

 

تو کد بالا اومدیم دو تا متغیر تعریف کردیم و جمعشون رو نشون دادیم.

حالا این یکی کد رو ببینید:

 

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

 

تفاوت کدها رو فهمیدید ؟؟

تو کد بالا اومدیم متغیر lngsecond رو تعریف کردیم ولی وقتی خواستیم رو خط های بعدی ازش استفاده کنیم، به اشتباه اون رو lgnsecond نوشتیم.

به این ترتیب برنامه میاد lgnsecond رو به عنوان یه تابع جدید با مقدار اولیه پیشفرض 0 میشناسه.یعنی عملا شما کدتون ایراد داره !

تو این کد چندخطی ایراد یابی بسیار راحته ولی وقتی شما یه کد 1000 خطی بنویسید دیگه نمیشه حتی با یکی دو ساعت نگاه کردن ایراد رو پیدا کرد icon_pf%20(34).gif

 

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

مفهوم رو فهمیدید ؟؟؟

 

حالا کد زیرو بنویسید و اجرا کنید:

 

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

 

وقتی کد بالا رو اجرا کنید، پیام خطایی که گفتم رو مشاهده میکنید و دقیقا خطی که باید تصحیح بشه رو تو پیغام خطا میبینید :w16:

 

پس از این به بعد سعی کنید کدهاتون رو با این عبارت شروع کنید تا خطایابی برنامه هاتون سریع و راحت بشه :a030:

 

یه فایل جدید تو پوشه Scripts بسازید به اسم 16Option-Explicit.vbs و کد زیرو داخلش کپی و بعدش هم اجرا کنید:

 

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

 

تمرین این پست ....

 

19- کد بالارو تحلیل کنید و خط به خط توضیح بدید.

 

جواب تمرینات در این تاپیک قرار داده میشه:

 

پاسخ تمرینات تاپیک آموزش اسکریپت نویسی در ویژال بیسیک (VBScript)

 

 

 

 


93-4-25 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

سلام :icon_gol:

 

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

 

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

اومدیم یه متغیر به اسم x و با مقدار اولیه 4 تعریف کردیم. بعد اون متغیر رو به تابع Adder1 فرستادیم و اونجا با 5 جمعش کردیم و نشون دادیم. بعد از خارج شدن از تابع، یه بار دیگه هم x رو نشون دادیم. اگه دقت کرده باشید هر دوتاشو 9 نشون داد. یعنی متغیر بعد از تموم شدن تابع مقدارش تغییر کرد. به این حالت میگیم ارسال متغیر به تابع با مرجع (By Reference) و اون رو با دستور ByRef نشون میدیم. وقتی یک متغیر رو با مرجع میفرستیم به یک تابع، تغییرات متغیر در داخل تابع روی مقدار متغیر اولیه تاثیر میزاره. در واقع کدی که بالا نوشتیم رو میتونیم با دستور ByRef به این صورت بنویسیم:

 

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

 

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

اما گاهی اوقات ما نمیخوایم مقدار یک متغیر تغییر کنه. یعنی میخوایم کد رو جوری بنویسیم که وقتی اجرای یک زیربرنامه تموم میشه، مقدار متغیر به صورت خودکار به حالت اولش برگرده. تو این حالت از دستور ByVal استفاده میکنیم. یعنی متغیر رو با مقدار (By Value) به زیربرنامه ارسال میکنیم، نه با مرجع !

کد زیرو بنویسید و اجرا کنید:

 

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

 

اگه این کد رو اجرا کنید میتونید مشاهده کنید که اولین عددی که نمایش داده میشه (که داخل زیربرنامه هستش) عدد 9 و دومین عددی که اجرا میشه (بعد از تموم شدن اجرای زیربرنامه) عدد اصلی ما هستش که همون عدد چهاره !

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

با اینحال منم نوشتم که اگه نتونستید خودتون کدش رو دربیارید، یه نگاه بندازید بهش. این کد مورد نظره:

 

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

 

با اجرا کردن کد، نحوه کار این دستور رو میفهمید.

حالا یه فایل به اسم 17ByRef-ByVal.vbs تو پوشه Scripts ایجاد کنید و دو تا کد بالا رو زیر هم داخلش کپی کنید.

 

 

 


93-4-26 ==> shining star

 


تا پست بعدی ... مراقب خودتون باشید :icon_gol:

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...