PDA

View Full Version : چگونه دانش دلفی را برای یادگیری ویژوال بیسیک به کار بگیریم..



RezaBS
پنج شنبه 07 فروردین 1382, 23:48 عصر
به هر دلیل امکان دارد یک برنامه نویس دلفی تصمیم بگیرد – یا مجبور شود – که با ویژوال بیسیک برنامه بنویسد. در ابتدا اجازه دهید به مساله ای بپردازیم که شاید همه ما به نحوی با آن برخورد کرده ایم، اسم این حالت یا احساس را چه میتوان گذاشت! مشخص نیست، ولی اجازه دهید ساده بگوییم احساس برتری برنامه نویسان زبانهای مختلف نسبت به برنامه نویسان ویژوال بیسیک. هر زبان برنامه نویسی برتریها و ضعفهای مخصوص به خود را دارد. فرض کنیم قرار بر این باشد که یک بازی نوشته شود، برای یک بازی جدی استفاده از ویژوال بیسیک با توجه به سرعت پایین برنامه های کامپایل شده آن منطقی به نظر نمی رسد، خوب در این حالت از دلفی استفاده میشود. یا در زمانی که بخواهیم با یک زبان برنامه نویسی بر اساس کلاسها و اشیاء (Object Oriented) واقعی کار کنیم، واضح است که دلفی یکی از بهترین انتخابهاست و در این مورد ویژوال بیسیک بازنده حقیقی است (در ویژوال بیسیک هر چند از اشیاء استفاده شده است اما مفهوم کلاسها، ارث بری و ... رعایت نشده اند). حال فرض کنیم قرار بر نوشتن برنامه ای ساده برای کار با یک پایگاه داده ای Microsoft Access باشد وباید خیلی سریع هم آماده شود، کدام را انتخاب کنیم؟ جواب یک برنامه نویس دلفی کاملا واضح است! اما شاید اگر در کنار دلفی با ویژوال بیسیک هم کار کرده باشد نظر دیگری داشته باشد. در هر دو انتخاب ما کار با پایگاههای داده ای پیش بینی شده است، هر دو نیز از قابلیتهای معینی برای کار برخوردار هستند که برای نوشتن برنامه ما کافی هستند. اگر با هر دو زبان کار کرده باشید حتما قبول دارید نوشتن این برنامه با ویژوال بیسیک به مراتب سریعتر از دلفی پایان میپذیرد. خواهش میکنم! قبل از اینکه من هدف حمله کفشهای شما قرار بگیرم چند دقیقه ای تحمل کنید و به بقیه بحث هم توجه کنید...
بد هم نیست اگر یک برنامه نویس دلفی با ویژوال بیسیک هم برنامه نویسی کند، ویژوال بیسیک هم نقاط قوتی دارد که گاهی به برنامه نویس کمک میکند. بعضی مواقع برنامه ها با ویژوال بیسیک خیلی سریعتر آماده میشوند و برای برنامه نویسان دلفی یادگیری ویژوال بیسیک آسان است چون به هر حال امکانات و قابلیتهای آن به مراتب کمتر از دلفی است. ویژوال بیسیک یک زبان مبتنی بر اشیاء به معنای واقعی اینگونه زبانها نیست. ویژوال بیسیک از اشاره گرها استفاده نمیکند، و همین آنرا به یک زبان آسان برای کار تبدیل کرده است و البته کمی با قابلیت! اما در همه برنامه ها وجود اشاره گرها و <span dir=ltr>OOP (Object Oriented Programming)</span> ضروری نیست. VB هم یکی از زبانهای<span dir=ltr> RAD(Rapid Application Development)</span> است و آماده کردن برنامه ها با آن به نسبت سریعتر از دلفی است. راستی! گاهی نسخه اجرایی برنامه های ویژوال بیسیک از معادل دلفی آن کم حجم تر میشود! البته دلیل اینست که مستقل نیستند و یک کتابخانه زمان اجرا با حجمی در حدود یک مگا بایت را یدک میکشند (مثلا در VB6 فایل msvbvm60.dll) و این فایل باید در کامپیوتر مورد نظر برای اجرا باشد.
در هر حال آشنایی با VB به عنوان یک زبان برنامه نویسی هم سطح دانش شما را در زمینه برنامه نویسی بالا میبرد و هم میبینید که ویژوال بیسیک هم بدک نیست و فقط یک بیسیک تحت ویندوز نیست و به مراتب بیشتر از تغییر دلفی در مقایسه با پاسکال تحت DOS نسبت به بیسیک قدیمی تغییر کرده است.


با VB آشنا شویم

خوب! ویژوال بیسیک همانگونه که از نام آن پیداست بر پایه BASIC ساخته شده است. اما در واقع بسیار گسترده تر از آن است. اجازه دهید طرح کلی VB را بررسی کنیم. در VB بر خلاف دلفی بخش مربوط به unitها را نداریم. علاوه بر این، حتی بخش VAR را برای تعاریف متغیرها نداریم! این کار در هر جای برنامه امکان پذیر است، حتی اگر تمایل ندارید میتوانید اصلا این کار را انجام ندهید. مشخص کردن نوع متغیر در VB به صورت اتوماتیک انجام میشود.

بد نیست یک مثال از قطعه برنامه ای در این دو زبان را بررسی کنیم. یک تابع:

Function AddNumbers&#40; Num1&#58; Integer; Num2&#58; Integer&#41;&#58; Integer;
Var
Num3&#58; Integer;
Begin
Num3 &#58;= Num1 + Num2;
Result &#58;= Num3;
End;

FUNCTION AddNumbers&#40; Num1 AS Integer, Num2 AS Integer&#41; AS Integer
DIM Num3 AS Integer
Num3 = Num1 + Num2
AddNumbers = Num3
END FUNCTION
در کد VB علامت ";" در انتهای دستورات قرار نمیگیرد به این دلیل که VB بر اساس خطوط کار میکند (اصطلاحا Line Based است) یعنی دستورات چند خطی ندارد (البته این مساله راه حلی دارد که از بحث خارج است). نکته دوم و بسیار مهم Begin و End در کد VB مشاهده نمیشود و در واقع مجموعه دستورات پشتیبانی نمیشوند.
روش معرفی متغیرها در VB که در هر جای برنامه امکان پذیر است به صورت زیر میباشد:

Dim &lt;VariableName> As &lt;VariableType>

نکته دیگر اینست که در VB مانند اکثر زبانها و بر خلاف پاسکال از علامت = استفاده میشود ( نه از <span dir=ltr>:=</span> ). همچنین در VB هم - مانند دلفی – مقدار بازگشتی تابع در متغیری با نام خود تابع بازمیگردد.
از بخشهای مهم یک زبان برنامه نویسی دستورات شرطی آن است. در دلفی دستورات با If … Then شروع شده و دستورات در یک مجموعه که با Begin و End مشخص میشوند قرار میگیرند و امکان استفاده از Else هم پیش بینی شده است:

If a = 1 Then
begin
a &#58;= 0;
Text &#58;= ‘Hello World’;
end
Else
a &#58;= a + 1;

IF a = 1 THEN
a = 0
Text = "Hello World"
ELSE
a = a + 1
END IF
تفاوت آشکار است، باز هم عدم استفاده از Begin و End در کد VB، همچنین لزوم وجود END IF در پایان مجموعه شرطی و نکته مهم؛ استفاده از علامت (") در VB برای نمایش عبارات متنی با جای (‘) در دلفی. به نظر میرسد تنها نکته گیج کننده عدم وجود Begin و End باشد. نوبتی هم باشد باید حلقه ها را بررسی کنیم:

For i &#58;= 1 To 100 Do
Begin
a = i * 2;
Text &#58;= ‘Hello World’
End;

FOR i = 1 TO 100
a = i * 2
Text = "Hello World"
NEXT i
اولین تفاوتی که به چشم میخورد عدم استفاده از Do در قالب دستور FOR در VB است. نکته دیگر مشخص شدن انتهای حلقه با استفاده از دستور NEXT است. کلیه دستورات مابین FOR و NEXT در حلقه قرار دارند. اما در مورد Repeat … Until کافیست از Do … Loop Until استفاده شود!
اما مساله بعد Procedureهای دلفی هستند. معادل Procedure دلفی در VB از <span dir=ltr>SUB(Subroutine)</span> استفاده میشود. و باقی مثل تابعی است که در بالا دیدیم و در پایان آن هم از END SUB استفاده میشود.
در توابع VB نکته مهم اینست که متغیر Result نداریم و باید حتما از نام همان تابع برای بازگرداندن مقدار استفاده کرد.
در مورد آرگومانهای توابع و SUBها باید دقت کرد به جای ( ; ) که در دلفی استفاده میشود، اینجا باید (,) را به کار برد و باقی مثل تعریف متغیر در VB بدون استفاده از DIM است.
شاید بد نباشد مثالی از SUB هم ببینید:

SUB MakeSound
Beep
END SUB
به نظر میرسد مسائل اساسی بررسی شدند، باقی به عهده خودتان!
اما نکات زیر را به خاطر داشته باشید:
از ( ; ) در انتهای خطوط استفاده نکنید. همانگونه که گفته شد VB به تغییر خط حساس است، یعنی عبارت زیر نیز ایجاد خطا میکند:

IF &#40;a = 1&#41; AND &#40;b = 2&#41; AND &#40;c = 3&#41;
AND &#40;d = 4&#41; AND &#40;e = 5&#41; THEN
Beep
END IF
و باید به صورت زیر باشد:

IF &#40;a = 1&#41; AND &#40;b = 2&#41; AND &#40;c = 3&#41; AND &#40;d = 4&#41; AND &#40;e = 5&#41; THEN
Beep
END IF
البته همانطور که گفته شد برای ایجاد دستورات چند خطی راه حلی در نظر گرفته شده است و آن استفاده از (_) (Under-line/Underscore) است:

IF &#40;a = 1&#41; AND &#40;b = 2&#41; AND &#40;c = 3&#41;_
AND &#40;d = 4&#41; AND &#40;e = 5&#41; THEN
Beep
END IF
فراموش نکنید در VB امکان استفاده از مجموعه دستورات را ندارید و تنها مجموعه ها عبارتند از:
IF…END IF, FOR…NEXT, DO…LOOP UNTIL, DO…LOOP WHILE, FUNCTION…END FUNCTION, SUB…END SUB

خوب فکر کنم کافی باشد، اگر علاقه مند شدید کتب متعدد ویژوال بیسیک راهنمای خوبی برای شما هستند...
http://www.mcp.com

l4dl4d
سه شنبه 21 شهریور 1391, 11:30 صبح
خوب دوست عزیز به نظر من ویبی خیلی ساده تر از دلفی است و اول ویبی رو یاد بگیرین بهتره
در ضمن کتاب vb in n+1 روز رو به شما پیشنهاد می دم که واقعا ا زhello world رفته تا api و ...
ممنونم

mbshareat
سه شنبه 21 شهریور 1391, 22:42 عصر
من هم تو VB هم تو دلفی ناشی هستم. قبلا با VB کار می کردم
کدی که توی VB می نویسیم ممکنه کوتاهتر باشه.
من قبلا اگه یه برنامه خیلی ساده میخواستم ممکن بود حتی Quick Basic رو بر VB ترجیح بدم.
اما یه مساله مهم هم هست. در روند برنامه نویسی خیلی وقتها نیاز به سرعت بالا داریم. مثلا هنگام کار با فایل.VB در این زمینه به مراتب کندتر از دلفیه.
همین بی نیاز بودن برنامه از فایل جانبی هم مساله مهمیه.
یه مساله قابل توجه دیگه اینه که دلفی خیلی از کامپوننتها رو جلوی چشم آدم میذاره.
البته یونیتهایی که به طور پیشفرض در Uses لیست شدن هم هست ولی توی VB وقتی از یه تابع API و غیره میخوایم استفاده کنیم باید برای برنامه تعریف کنیم.
اما توی VB یا باید بریم کامپوننتها رو به پالت اضافه کنیم یا بریم تو اینترنت بگردیم.
شکل ظاهری محیط طراحی برنامه VB6 هم خیلی قشنگ نیست.(نسخه های جدیدترش رو نمی دونم!)
--
این حرفها رو خیلی جدی نگیرین. اگه قصد ندارین کار حرفه ای انجام بدین و سرعت براتون مهمه VB هم خوبه.
لازم نیست هرکی تا ته خط رو بره. ممکنه یکی فقط بخواد یک کم کارهاش رو با برنامه پیش ببره.
اما بعضی وقتها هم آدم از کدهای سابق در برنامه جاری استفاده می کنه بنابراین بهتره زبان برنامه نویسی قویتر رو استفاده کنه.