آموزشگاه کامپیوتر,آموزشگاههای برتر کامپیوتر,برترین آموزشگاه کامپیوتر,آموزشگاه کامپیوتر پایا,لیست آموزشگاه های کامپیوتر,آموزشگاه فناوری اطلاعات,وب سایت آموزشگاه كامپيوتر,مجتمع فنی
Fa Ar En

آموزش وی بی دات نت VB.Net

معرفی VB.NET

يک برنامه کامپيوتری ، از مجموعه ای دستورالعمل که نوع و نحوه انجام يک فعاليت را برای کامپيوتر مشخص می نمايند ، تشکيل می گردد. دستورالعمل های نوشته شده بعنوان نمونه ممکن است به کامپيوتر اعلام نمايند  که تعدادی از اعداد را با يکديگر جمع  و يا دو عدد را بايکديگر مقايسه و بر اساس نتيجه  بدست آمده ، اتخاذ تصميم نمايد. دستورالعمل های نوشته شده ، صرفا" برای کامپيوتر قابل فهم و اجراء خواهند بود.کامپيوتر دستورالعمل های نوشته شده را اجراء و ماحصل آن رسيدن به اهدافی خواهد بود که بر اساس آن برنامه طراحی و پياده سازی  شده  است . دستورالعمل ها  ، می بايست با استفاده از يکی از زبانها ی برنامه نويسی نوشته شده ( کد ينگ ) و در ادامه در اختيار کامپيوتر قرار داده شوند. زبانهای برنامه نويسی متعددی نظير : فرترن ، بيسيک ، کوبال ، پاسکال، ،C ، جاوا ، ويژوال بيسيک و  ... وجود دارد.
 برنامه نويسی کامپيوتر ، مشابه آموزش گره زدن کفش به کودکان  است . برای نيل به هدف فوق ، می بايست تمامی مراحل لازم  بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل های ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام اين کار برای آنان مشخص شده و بر اساس آن ، امکان نيل به هدف مورد نظر توسط کودکان فراهم می گردد )  . VB.NET ، زبانی است که می توا ن نحوه نيل به يک خواسته را بکمک آن بصورت شفاف ( نظير آموزش گره زدن کفش به کودکان )  مشخص و کامپيوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نمايد. با استفاده از VB.NET ، می توان محصولاتی راايجاد  که زمينه استفاده از آنان  در محيط ويندوز و اينترنت ، وجود خواهد داشت . فراموش نکنيم در زمان فراگيری يک تکنولوژی در ابتدا می بايست شيوه راه رفتن را بياموزيم 
و در ادامه اقدام به دويدن نمود .
VB.NET يکی از زبان های  حمايت شده در دات نت می باشد . با استفاده از زبان فوق علاوه بر اينکه می توان برنامه های مبتنی بر ويندوز را پياده سازی نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ايجاد برنامه های مبتنی بر وب که از تکنولوژی ASP.NET استفاده می نمايند ، نيز وجود خواهد داشت . با توجه به اهميت و جايگاه خاص اين زبان  در دات نت ، مجموعه مقالاتی در رابطه با آموزش اصولی اين زبان آماده شده که بتدريج بر روی سايت قرار خواهند گرفت . در اولين مقاله از اين مجموعه به معرفی اوليه VB.NET خواهيم پرداخت . در ابتدا لازم است با  ويژگی های منحصر بفرد برنامه های مبتنی بر ويندوز در قياس با برنامه های مبتنی بر DOS ، آشنا شده و پس از مروری مختصر به روند شکل گيری نسخه های متعدد ويژوال بيسيک ، با نحوه نصب آن نيز آشنا شويم .

برنامه نويسی مبتنی بر DOS در مقابل ويندوز
برنامه نويسی مبتنی بر  ويندوز دارای تفاوت های عمده ای نسبت به برنامه نويسی سنتی در محيط DOS است.برنامه های  DOS ،  مسيری دقيق و مشخص  را ازابتدا تا پايان دنبال می نمايند . رويکرد فوق ، باعث بروز محدوديت هائی در رابطه با عملکرد برنامه ها  از يکطرف و تحميل محدوديت هائی به کاربران در طی نمودن مسير مشخص شده ، می گردد. از زاويه ای خاص می توان عملکرد  يک برنامه مبتنی بر  DOS را  مشابه قدم زدن در يک راهرو ( سالن )، در نظر گرفت . بمنظور رسيدن به نقطه انتهائی سالن ،  می بايست طول سالن  طی تا به انتهای آن رسيد . در اين راستا از موانع متعدد موجود در مسير ، می بايست عبور تا سرانجام به مقصد مورد نظر رسيد . در زمان پيمودن مسير ، صرفا"   امکان بازنمودن درب های خاصی  ، وجود خواهد داشت . ويندوز ، دنيای جديدی از برنامه نويسی مبتنی بر "رويداد"  را ايجاد نموده است . کليک نمودن موس ، تغيير اندازه پنجره ، تغيير محتويات يک  Textbox ، نمونه هائی از يک "رويداد" می باشند. کدهای  نوشته شده ، نحوه برخورد با يک رويداد را مشخص می نمايد.  برای رسيدن به انتهای يک سالن کافی است بر روی "انتهای سالن " ، کليک نمود و ديگر ضرورتی به پيمودن تمامی مسير تا رسيدن به انتهای سالن نخواهد بود . درصورتيکه به انتهای سالن رسيده باشيم و متوجه گرديم که اين مکان ، محلی نيست که انتظار آن را داشته ايم ، بسادگی می توان مقصد جديدی را برای خود انتخاب ، بدون اينکه ضرورتی به برگشت در نقطه آغازين مسير وجود داشته باشد. برنامه نوشته شده عکس العمل های لازم در ارتباط با حرکت شما  را بهمراه عمليات مربوطه بمنظور تکميل فعاليت ها ی مورد نظر انجام خواهد داد .  با استفاده از VB.NET ، می توان کدهای لازم بمنظور ارائه عکس العمل لازم در زمان تحقق يک رويداد را نوشت .در اين راستا ، برنامه نويسان می توانند  کدهای لازم  در رابطه با رويدادهائی که امکان  تحقق آنها وجود دارد را نوشته تا در زمان بروز رويداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذيرد.در اين زمينه می توان از نوشتن کدهای ديگر بمنظور برخورد با رويدادهای غيرضروری ، صرفنظر کرد. مثلا" ويندوز قادر به تشخيص رويداد"کليک " از "کليک مضاعف " است . اين بدان معنی است که اگر می خواهيد برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رويداد  "کليک" را داشته باشد ، می بايست صرفا" کد مربوط به رويداد " کليک"،  نوشته گردد و الزامی به نوشتن کدهای  لازم بمنظور برخورد با رويداد  "کليک مضاعف" ، وجود نخواهد داشت . در دنيای برنامه نويسی DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام می دهد در صورتيکه در ويندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد .
يکی ديگر از مزايای مهم
  برنامه های  ويندوز ، عدم وابستگی برنامه ها به يک سخت افزار خاص است . ويندوز تمهيدات لازم در خصوص ارتباط با سخت افزار را پيش بينی و برنامه نويسان نياز به آگاهی از نحوه عملکرد يک دستگاه سخت افزاری خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نويسان ضرورتی به آگاهی از  نحوه عملکرد  هر نوع چاپگر ليزری، بمنظور ايجاد خروجی مورد نظر خود در برنامه ها ، نخواهند داشت. ويندوز، امکانات لازم در اين خصوص را از طريق ارائه روتين های عمومی که با درايورهای مورد نظر مرتبط می گردند ، فراهم می نمايد. شايد همين موضوع دليل موفقيت ويندوز باشد .
روتين های عمومی اصطلاحا"
Windows (API ) Application Programming Interface ناميده می شوند .

 تاريخچه ويژوال بيسيک
قبل از معرفی ويژوال بيسيک در سال 1991 ، پياده کنندگان نرم افزار مجبور به تسلط و مهارت در زمينه  استفاده از   ++C   بهمراه  موارد پيچيده ای در اين خصوص  بودند . بدين  ترتيب ، صرفا" افراد خاص آموزش ديده،  قادر به خلق نرم افزارهای قدرتمند  بمنظور اجراء در محيط ويندوز بودند. ويژوال بيسيک ، محدوديت فوق را تغيير و می توان اين ادعا را داشت که امروزه خطوط زيادی از برنامه های نوشته شده  با استفاده از ويژوال بيسيک کد شده است . ويژوال بيسيک ، ظاهر برنامه نويسی تحت ويندوز را با حذف عمليات اضافی برای نوشتن کدهای لازم جهت طراحی بخش رابط کاربر (UI) ، تغيير داده است . در اين راستا ،  زمانيکه بخش رابط کاربر ، ترسيم می گردد ، برنامه نويس می تواند کدهای لازم بمنظور انجام عکس العمل مناسب در رابطه با رويداد ها را به آن اضافه نمايد . زمانيکه ماکروسافت نسخه شماره سه ويژوال بيسيک را ارائه نمود ، مجددا" دنيای برنامه نويسی با تغيير مهمی مواجه گرديد. در اين راستا امکانات مناسبی برای نوشتن برنامه های مبتنی بر بانک های  اطلاعاتی ، در اختيار برنامه نويسان قرار گرفت. ماکروسافت بدين منظور محصول جديدی با نام DAO)Data Access Objects) را ارائه نمود . برنامه نويسان با استفاده از DAO ، امکان انجام عمليات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه های شماره چهار و پنج ، قابليت های نسخه سه را افزايش و اين امکان را  برای  پياده کنندگان نرم افزار فراهم نمود  تا برنامه های خود را جهت اجراء در محيط ويندوز 95 ، طراحی و پياده سازی نمايند . در اين زمينه ، برنامه نويسان قادر به نوشتن  کدهائی گرديدند که امکان استفاده از آنان  توسط ساير پياده کنندگان نرم افزار که از زبانی ديگر استفاده می کردند، فراهم گرديد. نسخه شماره شش ويژوال بيسيک ، روش جديدی بمنظور دستيابی به بانک های اطلاعاتی را ارائه نمود: ADO)ActiveX Data Objects )  . يکی از اهداف اوليه  طراحی  ADO ، امکان دستيابی به بانک های اطلاعاتی برای پياده کنندگان برنامه های مبتنی بر وب است که از تکنولوژی ASP
، استفاده می نمايند.
همزمان با ارائه جديدترين نسخه ويژوال بيسيک که
VB.NET ناميده می شود ، بسياری از محدوديت های مرتبط با ويژوال بيسيک برطرف گرديد . در گذشته  ويژوال بيسيک با انتفادات  فراوان مواجه ( عدم وجود امکانات مناسب در مقايسه با جاوا و يا ++C ) و بسياری آن را نظير يک اسباب بازی در دنيای وسيع زبان های برنامه نويسی می پنداشتند. VB.NET با  غلبه بر مشکلات نسخه های پيشين ، توانسته است در مدت زمان کوتاهی ، بعنوان يک ابزار پياده سازی بسيار قدرتمند مطرح و گزينه ای مناسب برای برنامه نويسان در تمامی سطوح باشد .

نصب VB.NET
برای نصب VB.NET ، از دو رويکرد متفاوت می توان استفاده کرد :

·         نصب بهمراه  ويژوال استوديو دات نت

·         نصب نسخه استاندارد

هر يک از گزينه های فوق ، امکان ايجاد برنامه های مبتنی بر ويندوز را فراهم می نمايند . مراحلی که در ادامه ذکر می گردد ، نحوه نصب ويژوال استوديو را تشريح  می نمايد .

·         مرحله اول : برنامه Setup.exe را از روی CD مربوطه فعال نمائيد.

·         مرحله دوم : جعبه محاوره ای ، مراحل و اولويت های عمليات  نصب را نشان خواهد داد. بمنظور صحت عملکرد  VB.NET ، چندين Component نصب و يا بهنگام خواهند شد . اولين مرحله نصب، بهنگام سازی عناصر (Components) است . بر روی گزينه Windows Component Update ، کليک نمائيد.

·         مرحله سوم : برنامه نصب در ادامه سيستم را بررسی تا نوع عناصری را که می بايست بهنگام گردند، مشخص گردد. دامنه فرآيند بهنگام سازی به وضعيت ماشينی که بر روی آن ويژوال استوديو دات نت نصب می گردد، بستگی خواهد داشت .

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

·         مرحله پنجم : در اين مرحله با فشردن دکمه ! Install Now  ، بهنگام سازی عناصر (Components) آغاز می گردد . با اتمام هر يک از آيتم ها يک Check mark بمنزله اتمام مرحله مربوطه نشان داده می شود  . در مقابل عنصر جاری برای بهنگام سازی نيز يک فلش قرمز رنگ نسان داده می شود.

·         مرحله ششم : پس از بهنگام سازی عناصر ، مجددا" به صفحه اصلی Setup مراجعت و امکان نصب ويژوال استوديو دات نت فراهم می گردد.( کليک نمودن برروی گزينه Visiual Studio.NET )
نکته : در صورتيکه قصد داريد که از طريق ماشين فوق ، يک برنامه تحت وب پياده سازی نمائيد ، لازم است
IIS و FrontPage Extensions  قبلا" نصب شده باشد( بصورت پيش فرض در زمان نصب ويندوز 2000 نصب خواهد شد ) در صورتيکه ويژوال استوديو دات نت ، بر روی کامپيوتری نصب می گردد که دارای سيستم عامل ويندوز 2000 نسخه Professional  است ، با يک پيام خطاء مواجه خواهيم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عمليات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتيکه دکمه Continue ، انتخاب گردد ، در آينده نمی توانيد برنامه های تحت وب را بصورت محلی بر روی کامپيوتر خود پياده سازی نمائيد .

·         مرحله هفتم : نظير اکثر برنامه های نصب ، ليستی از گزينه های موجود ( شامل عناصر ) برای نصب در اختيار شما قرار می گيرد . شما می توانيد ، صرفا" آنچيزی را که بدان نياز داريد ، نصب نمائيد . مثلا" در صورتيکه ظرفيت درايو شما پايين و يا ضرورتی به استفاده از ويژوال ++C دات نت را نداريد ، می توان در اين مرحله از نصب آن صرفنظر کرد. هر گزينه ای که در اين مرحله انتخاب نمی گردد ، می توان در صورت ضرورت آن را در آينده نصب کرد. برای هر يک از امکاناتی  که قرار است نصب گردند ، سه بخش اطلاعاتی متفاوت نمايش داده می شود :
بخش
Feature Properties
. فايل ها ی مورد نظر برای نصب و ميزان فضای مورد نياز را نشان می دهد .
بخش
Feature description . هر Feature چيست و چه عملياتی را انجام می دهد .
بخش
Space Allocation ، وضعيت  فضای ذخيره سازی هارد را  با توجه به گزينه های انتخاب شده ، نشان خواهد داد .
نکته : زمانيکه ويژوال استوديو دات نت ، اجراء می گردد مجموعه ای از اطلاعات بين ديسک و حافظه مبادله می گردد . بنابراين لازم است به ميزان کافی ظرفيت آزاد
  بر روی هارد ديسک وجود داشته باشد ، در اين راستا نمی توان دقيقا" مشخص نمود که به چه ميزان فضای آزاد نياز خواهد بود ولی حداقل يکصد مگابايت توصيه می گردد .

·         مرحله هشتم : ويژوال استوديو دات نت ، شامل مجموعه ای گسترده از فايل های مستندات ( راهنما )  است . در اين مرحله می توان تنظيمات لازم در خصوص اجرای مستندات از طريق CD و يا دايرکتوری نصب شده بر روی هارد را انجام داد . در اين زمينه می توان يک مسير بر روی هارد را مشخص تا مستندات نصب و يا گزينه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روی CD باقی بمانند .

·         مرحله نهم : پس از انتخاب عناصر مورد نظر برای  نصب  ، با فشردن دکمه ! Install Now ، عمليات نصب آغاز می گردد . مدت زمان نصب ، بستگی به موارد انتخابی  و نوع سيستم دارد . مثلا"  نصب تمام ويژوال استوديو دات نت بهمراه تمامی مستندات بر روی يک ماشين با دارا بودن 256 مگابايت حافظه اصلی، سرعت  650 مگاهرتز و دوازده گيگابايـت هارد ديسک  ،  حدود يک ساعت طول خواهد کشيد .

·         مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزينه Service Release ، بررسی لازم در خصوص بهنگام سازی  انجام می گيرد . اين عمليات از طريق اينترنت انجام خواهد شد . در اين زمينه به يک خط پرسرعت و مطمئن نياز خواهد بود .

پس از انجام مراحل فوق ، ويزوال استوديو دات نت بر روی سيستم نصب و محيط لازم برای نوشتن برنامه های VB.NET فراهم شده است .

               

اولين برنامه VB.NET  بکمک ويژوال استوديودات نت

در اين مقاله قصد داريم به بررسی نحوه ايجاد يک برنامه ساده در محيط ويژوال استوديو دات نت  با استفاده از VB.NET بپردازيم . برنامه فوق ، نام کاربر را از طريق يک TextBox اخذ و يک پيام مناسب در اختيار قرار می دهد . در برنامه فوق ، هدف دنبال نمودن مراحل و آشنائی با برخی مفاهيم اوليه و در عين حال مهم بمنظور ايجاد برنامه ها  در محيط  ويژوال استوديو دات نت است .

مراحل ايجاد برنامه :

مرحله اول : برنامه ويژوال استوديو دات نت را فعال نمائيد. 
مرحله دوم : از طريق منوی File  گزينه New Project 
را انتخاب نمائيد .
مرحله سوم : جعبه محاوره ای New Project ، فعال می گردد . در ادامه  گزينه Visual Basic Projects را از طريق پانل سمت چپ ( Project Types) و گزينه Windows Application را از طريق پانل سمت راست ( Templates ) انتخاب نمائيد.در صورتيکه قصد ذخيره سازی پروژه را در يک محل غير از مسير پيش فرض داريد ، می توان در محل Location Box ، کليک و مسير دلخواه را مشخص کرد. در محل مربوط به نام پروژه ، نيز نام دلخواه خود را وارد نمائيد . با فشردن دکمه OK ، عمليات انجام شده را تاييد نمائيد.

مرحله چهارم : ويژوال استوديو دات نت ، در ادامه يک Windows Application خالی را ايجاد می نمايد. در اين مورد خاص ، برنامه FirstVB ، شامل يک پنجره خالی بوده که يک فرم ويندوز (Windows Form ) است . نام پيش فرض فرم فوق ، Form1.vb است .

  

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

مرحله پنجم : پس از ايجاد اوليه فرم ، می توان اقدام به تغيير نام مورد نظر نمود. ( نام پيش فرض Form1.vb  است ) . در پنجره Solution Explorer ، ودر پنجره Properties window ، صفت FileName فرم را از Form1.vb به MyForm.vb تغيير داده  و پس از فعال نمودن کليد Enter ، می توان ماحصل کار را می توان مشاهده نمود .

مرحله ششم : پس از تغيير نام فايل مربوط به فرم ، نام فايل بصورت اتوماتيک در پنجره Solution Explorer بهنگام می گردد .( MyForm.vb )

مرحله  هفتم  : در ادامه بر روی فرم مورد نظر در پنجره اصلی کليک نمائيد. پنجره Properties به Form Properties ( در مقابل File Properties ) تغيير می نمايد. همانگونه که مشاهده می نمائيد ، پنجره Properties ، در اين مورد با پنجره مربوطه در حالت قبل  دارای تفاوت های عمده ای است . در حقيقت علت اين تفاوت ماحصل نتيجه دو نمايش متفاوت از يک فايل مشابه است . زمانيکه نام فرم در پنجره Solution Explorer  فعال است ( Highlighted ) ، صفات فيزيکی مرتبط با فايل نمايش داده می شوند. زمانيکه فرم در Design View ، فعال ( highlighted ) است ، صفات ويژوال و منطقی مربوط به فرم نمايش داده می شود. فراموش نکنيم که صفات ، يک مجموعه اشياء خاص از داده های داخلی است . پنجره Properties ، اين امکان را فراهم می آورد که بسادگی مجموعه ای از صفات کنترلی را استفاده کرد. اين نوع صفات بنوعی مربوط به شکل ظاهری و يا رفتار المان ها می باشند . همانگونه که در شکل زير مشاهده می نمائيد ، صفات در گروه های خاصی طبقه بندی شده اند . Appearance ,Accessibility ,Behavior نمونه ای از گروه بندی انجام شده در رابطه با صفات می باشد .

در زير گروه Appearance ، صفاتی نظير Backcolor ( رنگ زمينه فرم ) ، Font ( شکل ظاهری فونت استفاده شده برای فرم ) ، Text ( نام مورد نظری که در ميله عنوان نمايش داده می شود )  وجود دارد . صفات فوق ، صرفا" نمونه هائی در اين زمينه بوده  که مسئول تبين شکل ظاهری يک فرم می باشند .
صفتی با نام
FormBorderStyle ، به ويندوز نحوه رسم فرم را اعلام می نمايد . در اين حالت خاص ، مقدار Resizable در نظر گرفته شده است . بدين ترتيب زمانيکه ، فرم نمايش داده می شود ، کاربر قادر به تغيير اندازه آن خواهد بود ( نظير اکثر برنامه های ويندوز ) .

مرحله هشتم : عنوان فرم ايجاد شده ، همچنان Form1 می باشد . اين چندان جالب نخواهد بود و می بايست با توجه به جايگاه فرم در يک برنامه ، نام مناسبی را برای انتخاب نمود. بدين منظور صفت Text را در بخش Appearance ، پيدا نموده و آن را به " اولين فرم نمونه " ، تغيير نام دهيد ( نام فوق ، کاملا" اختياری است ) . پس از فشردن Enter ، نام در نظر گرفته شده ، بعنوان عنوان فرم در نظر گرفته می شود .

با توجه به اينکه ، می خواهيم عنوان فرم از راست به چپ نمايش داده شود، در بخش Appearance ، صفت RightToLeft را انتخاب و مقدار آن را "yes " در نظر می گيريم .

مرحله نهم : با اتمام مراحل پيشين ، مرحله اوليه  کار خود را به اتمام رسانده ايم( ايجاد بخش ويژوال يک فرم )  . با فشردن دکمه Start ( از طريق منوی Debug و يا فعال نمودن کليد F5 ) ، برنامه اجراء خواهد شد . پس از اجرای برنامه ، ما شاهد يک فرم خالی با عنوان "اولين فرم نمونه " ، خواهيم بود.

مرحله دهم : با اتمام مراحل اوليه آماده سازی بخش ويژوال فرم ، ما  صرفا"  يک فرم با عنوانی خاص و خالی را ايجاد نموده ايم . فرم ها با توجه به جايگاه خاص خود ( عنصر کليدی بمنظور طراحی بخش رابط کاربر يک نرم افزار مبتنی بر ويندوز ) ، می بايست تعامل بيشتری را با مخاطب خود پيدا نمايند. بدين منظور ، می بايست از مجموعه ای کنترل ( Label , TextBox , Button ,... ) بر روی يک فرم استفاده کرد . در اين راستا می توان از پنجره Toolbox استفاده نمود . بمنظور فعال نمودن پنجره فوق ، می توان از منوی View | Toolbox  ، آيکون مربوطه بر روی ميله استاندارد و يا فشردن کليدهای Ctrl + Alt + X  استفاده نمود. Toolbox ، بمنظور نمايش امکانات مربوطه از يک فرمت مبتنی بر Tab استفاده و امکانات موجود را در گروه هائی نظير Windows Forms , Components  , Data  گروه بندی و نمايش می دهد . Toolbox ، ليست عناصر موجودی  را که می توان آنها  را برروی يک فرم مستقر نمود ، نمايش می دهد .  کنترل هائی نظير : Textbox , Button  و ساير موارد را می توان از طريق Toolbox انتخاب و  در ادامه زمينه استقرار آنها بر روی يک فرم را فراهم آورد . در اين مثال ، ما صرفا" قصد استفاده از کنترل هائی را از طريق Windows Forms Tab داريم .

در اين محل ، ما شاهد ليستی از کنترل های استاندارد دات نت ، در رابطه با فرم های ويندوز می باشيم . کنترل ها را می توان با هر اولويتی بر روی فرم مستقر نمود. بنابراين مشکلی نخواهد بود اگر ما  کنترل Label  را بعد از کنترل TextBox اضافه نمائيم و يا کنترل Button را قبل  از هر دو اضافه نمائيم .

مرحله يازدهم : در اين مرحله می خواهيم کنترل های لازم را بر روی فرم اضافه نمائيم . درصورتيکه همچنان پروژه در حالت اجراء است ، آن را متوقف نموده و از آن وضعيت خارج شويد ( ساده ترين روش کليک نمودن بر روی دکمه x در قسمت بالای سمت راست می باشد و يا STOP debugging  )

مرحله دوازدهم : در ابتدا يک کنترل Label را به فرم اضافه می نمائيم . بدين منظور بر روی Lable در پنجره Toolbox کليک نموده تا در مرحله اول انتخاب و در ادامه زمينه استقرار آن بر روی فرم ، فراهم گردد . بدين منظور Cursor را بر روی فرم قرار داده و با کليک نمودن و نگهداری دکمه موس می توان محل و اندازه Lable بر روی فرم را مشخص نمود. با Double Click نمودن بر روی يک کنترل در Toolbox نيز می توان کنترل را بر روی فرم مستقر نمود.( در صورت لزوم می توان محل و اندازه کنترل بر روی فرم را  نيز تغيير داد).

مرحله سيزدهم : پس از استقرار کنترل Label  بر روی فرم ، می بايست نام و متنی که بهمراه آن نمايش داده می شود را  تغيير داد. پنجره Properties در سمت راست Designer ، به Label1  تغيير و به شما اعلام می نمايد که می توانيد صفات مربوط به اين کنترل را تنظيم نمائيد.در پنجره Properties ، صفت Text مربوط به Label  را به " لطفا" نام خود را وارد نمائيد" ، تغيير و صفت (Name) ، را به lblName تغيير نام دهيد .

مرحله چهاردهم : در اين مرحله قصد داريم بر روی فرم ، يک Textbox ، اضافه نمائيم . عمليات اضافه نمودن کنترل فوق ، مشابه مرحله قبل بوده و پس از استقرار کنترل بر روی فرم ، با استفاده از پنجره Properties ، صفت Name را به txtName  و مقدار مربوطه به صفت Text را پاک کرده تا در زمان نمايش Textbox ، مقداری از قبل در آن وجود نداشته باشد .

مرحله پانزدهم : در اين مرحله کنترل Button را از طريق Toolbox ، انتخاب و با روشی مشابه بر روی فرم قرار می دهيم . در ادامه با استفاده از پنجره Properties ، صفت Name آن را به "OK"  و صفت Text آن را به "تست" تغيير می دهيم .

مرحله شانزدهم : در اين مرحله مشابه مرحله قبل يک Button ديگر را بر روی فرم قرار داده و صفت Name آن را به btnExit و صفت Text آن را "خروج" ، در نظر می گيريم . پس از اتمام مراحل سه گانه اخير ( چهاردهم ، پانزدهم و شانزدهم ) ، شکل فرم پس از اجرای برنامه بصورت زير خواهد بود :

مرحله هيفدهم : تا اين مرحله صرفا" فرم مورد نظر خود را بهمراه کنترل های موردنياز بر روی آن ، ايجاد نموده ايم .در ادامه می بايست کدهای لازم بمنظور انجام عمليات مورد نظر خود را به فرم اضافه نمائيم . بمنظور افزودن کد های مورد نظر در رابطه با يک کنترل ، بر روی کنترل مورد نظر ، Double Click ، نموده و در ادامه شاهد نمايش "اديتور کد " ، در پنجره اصلی خواهيم بود .

در اين حالت ما شاهد نمايش Tab ديگر در پنجره اصلی نيز خواهيم بود ( Code Tab و Design Tab ) .

با استفاده از کنترل های مربوط به Desgin Tab ، فرم را "رسم" کرده ايم ( طراحی بخش ويژوال فرم انجام شده است ) و با استفاده از Code Tab ، کدهای مورد نظر را بمنظور تبين رفتار عناصر مورد نظر ، می نويسيم . در اين رابطه لازم است بدين نکته توجه گردد که  از فايل مجزائی برای کدها استفاده نمی گردد . تعاريف ويژوال بهمراه کدهای مربوطه (Code Behind) ، هر دو در يک فايل و با نام MyForm.vb ( در اين مثال خاص ) ، ذخيره می گردند. با استفاده از Design View ، می توان بصورت ويژوالی با برنامه مرتبط گرديد ( رسم فرم ) و با استفاده از Code View و نوشتن حجم اندکی از کدهای مورد نظر ، می توان عمليات خود را پياده سازی نمود. در اين مرحله ، ما شاهد نمايش دو Pull-down در قسمت بالای پنجره نيز می باشيم . امکان فوق ، مسيری کوتاه برای مراجعه به بخش های متفاوت کدهای نوشته شده را فراهم می آورد. درصورتيکه Pull-down  سمت چپ ( Form1) را باز نمائيد ، ليستی از اشياء موجود در برنامه خود را مشاهده خواهيد کرد . در صورتيکه Pull-down سمت راست (Declerations ) را باز نمائيد ، ليستی از توابع و روتين های تعريف شده را مشاهده خواهيد کرد . ( زمانيکه تعداد اشياء و روتين های استفاده شده زياد گردد ، با استفاده از امکان فوق ، می توان بسرعت در محل مربوطه مستقر و عمليات خود را انجام داد ) .

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

مرحله نوزدهم : بمنظور افزودن کدهای مورد نظر خود بر روی Design view کليک نموده تا مجددا" فرم نمايش داده شود. در ادامه بر روی دکمه "تست" ( يکی از Button های موجود بر روی فرم ) ، Double Click نمائيد. بدين ترتيب پنجره مربوط به "کد" ، مجددا" فعال و کدهای اوليه نمايش داده می شود. کدهای اوليه ای که مشاهده می گردد بمنزله پوسته "رويداد" کليک در رابطه با دکمه انتخاب شده می باشد. در ادامه ( مرحله بيستم ) ، می بايست کدهای مورد نظر خود را در اين محل  مستقر کرد . کدهای فوق ، اصطلاحا" Event handler ناميده می شوند . به کدهای فوق ، Event Procedure ، نيز گفته می شود.

پوسته مربوط به رويداد کليک

 Private Sub OK_Click (ByVal sender As SystemObject , ByVal  e As _
                       System.EventArgs ) Handles OK_Click
 End Sub

Sub ، نمونهای از يک Keyword است . در دنيای برنامه نويسی ، يک Keyword ، کلمه ای است که به  VB.NET انجام يک کار خاص را گوشزد می نمايد. دراين حالت خاص ، واژه Sub ، به VB.NET اعلام می نمايد که اين يک روتين است . هر آنچيزی که بين خطوط Private Sub و End Sub ، قرار می گيرد ، روتين Event مربوطه را تشکيل می دهد . رونين فوق در صورت فشردن دکمه "تست"  توسط کاربر ، ماموريت خود را آغاز و عمليات تعريف شده را انجام خواهد داد.

مرحله بيستم : در اين مرحله مطابق جدول زير ، کدهای لازم را در روتين مربوطه بمنظور برخورد مناسب با  رويداد کليک (مربوط به دکمه "تست" ) ، مستقر می نمائيم .

Event handler مربوط به رويداد کليک دکمه " تست"

Private Sub OK_Click (ByVal sender As SystemObject , ByVal  e As _
    System.EventArgs ) Handles OK_Click
    MessageBox.Show ( "Hello ,    " & txtName.Text  , "Congratulation Message" )
 End Sub

مرحله بيست و يکم : پس از افزودن کدهای مورد نظر در رابطه با رويداد کليک مربوط به دکمه "تست" موجود بر روی فرم ، مجددا" به Design Tab مراجعت و بر روی دکمه "خروج" ، Double Click می نمائيم . بدين ترتيب مجددا" در پنجره مربوط به درج کد مستقر شده و می توانيم کدهای مربوط به رويداد کليک مرتبط با دکمه "خروج" را درج نمائيم .

Event handler مربوط به رويداد کليک دکمه " خروج"

Private Sub ExitButton_Click (ByVal sender As SystemObject , ByVal  e As _
     System.EventArgs ) Handles ExitButton_Click
     Me.Dispose( )
 End Sub

مرحله بيست و دوم : با رسيدن به مرحله فوق ، عمليات نوشتن کدها به اتمام رسيده و می توان نتايج عمليات خود را ذخيره نمود ( File|Save ) .  در ادامه بمنظور اجرای برنامه نوشته شده ، دکمه Start ( از طريق منوی Debug) را فعال می نمائيم . پس از فشردن دکمه فوق ، عمليات ترجمه آغاز می گردد . در صورتيکه به پنجره Output ( در قسمت پائين صفحه ) نگاهی را داشته باشيم ، شاهد مجموعه ای از فعاليت ها ی در حال انجام ، خواهيم بود. ويژوال استوديو دات نت ، کدهای نوشته شده را کمپايل می نمايد. کمپايل ، فرآيندی است که بر اساس آن VB.NET  ، کدهای نوشته شده توسط شما را به زبانی ( فرمی ) که قابل فهم برای کامپيوتر باشد ، تبديل می نمايد .

مرحله بيست و سوم : پس از فعال شدن برنامه ، ما شاهد نمايش فرم طراحی شده در مراحل قبل بوده و می توان در ادامه در بخش مربوطه ، نام مورد نظر خود را وارد و بر روی دکمه "تست" ، کليک نمود.

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

مرحله بيست و پنچم : با فشردن دکمه "خروج" ، می توان از برنامه خارج شد( با توجه به اينکه در مرحله بيست و يکم ، تکليف اين رويداد را روشن کرده بوديم ، خاتمه دادن به حيات برنامه ! ) .

               

                           

دستيابی به بانک اطلاعاتی Access با استفاده از VB.NET
در اين مقاله قصد داريم به نحوه  بازيابی و نمايش اطلاعات موجود در يک بانک اطلاعاتی Access اشاره نمائيم . هدف از مقاله فوق ، پرداختن به تمامی رويکردهای موجود در اين زمينه نبوده و صرفا" به معرفی يکی از گزينه های موجود در اين زمينه اشاره خواهد شد. در اين راستا از تکنولوژی های ASP.NET ، ADO.NET و VB.NET استفاده خواهد شد . از کلاس های  OleDbConnection ، OleDbCommand و OleDbDataReader  مربوط به  ADO.NET  بمنظور انجام عمليات لازم در ارتباط با بانک اطلاعاتی ، از ASP.NET بمنظور ايجاد فرم وب و ارائه داده با استفاده از کنترل سرويس دهنده Table و از زبان VB.NET بمنظور نوشتن دستورالعمل های مورد نظر استفاده می گردد .
در ابتدا لازم است با سه کلاس
ADO.NET که در ادامه از آنان استفاده خواهد شد ، بيشتر آشنا شويم :

  • کلاس OleDbConnection . شی فوق ، يک اتصال منحصر بفرد با يک منبع داده را  ايجاد می نمايد. در رابطه با يک بانک اطلاعاتی سرويس گيرنده / سرويس دهنده ، اين امر معادل يک اتصال شبکه به سرويس دهنده است . با توجه به قابليت های حمايت شده توسط native OLE DB Provider ، برخی از متدها و يا خصلت ها مربوط به شی OleDbConnection ممکن است در دسترس و قابل استفاده نباشد . زمانيکه نمونه ای  از OleDbConnection ايجاد می گردد ، تمامی خصلت های مربوطه ، مقدار اوليه خود را دارا خواهند بود . پس از اتمام عمليات موردنظر در ارتباط با بانک اطلاعاتی ،  می بايست با فراخوانی Close و يا Dispose اقدام به  غير فعال نمودن  اتصال ايجاد شده با بانک اطلاعاتی مربوطه نمود.
  • کلاس OleDbCommand .  يک عبارت SQL و يا Stored procedure را بمنظور اجراء در رابطه با يک منبع داده ارائه می نمايد. کلاس فوق از متدهای زير بمنظور اجرای دستورات در رابطه با يک منبع داده استفاده می نمايد.
     ExecuteReader  . متد فوق ، دستوراتی را اجراء می نمايد که خروجی آنان شامل سطرهائی خواهد بود.
     ExecuteNonQuery . باعث اجرای دستوراتی نظير SQL INSERT,DELETE,UPDATE و SET
    خواهد شد .
     ExecuteScalar  . بازيابی صرفا" يک مقدار از يک بانک اطلاعاتی
  • کلاس OleDbDataReader . متد فوق ، امکان خواندن سطرهائی از داده موجود در يک منبع داده را فراهم می نمايد( فقط بسمت جلو)  . بمنظور ايجاد يک OleDbDataReader ، می بايست متد ExecuteReader مربوط به شی OleDbCommand فراخوانده شود. ماداميکه OleDbDataReader در حال استفاده است (اتصال مرتبط OleDbConnection ) ، عمليات ديگری را در ارتباط با OleDbConnection  نمی توان انجام داد .

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

  • نصب يکی از نسخه های ويندوز 2000 و يا نسخه ويندوز 2003
  • نصب IIS 
  •  نصب فريمورک دات نت نسخه 1.0 ,يا نسخه 1.1
  • يک بانک اطلاعاتی نمونه اکسس نظير Northwind

ايجاد يک برنامه وب ASP.NET با استفاده از VB.NET
بمنظور ايجاد يک برنامه وب ASP.NET با استفاده از VB.NET مراحل زير را دنبال می نمائيم :

  •  اجرای برنامه ويژوال استوديو دات نت
  • از طريق منوی File ، گزينه New و در ادامه Project را انتخاب نمائيد .
  •  در جعبه محاوره ای New Project ، در بخش Project Types گزينه Visual Bacic Projects را انتخاب ( کليک ) و در ادامه ASP.NET Web Application  را انتخاب نمائيد .  
  •  در فيلد Location ، بجای نام پيش فرض #WebApplication ، نام TestAccessDB را انتخاب نمائيد . در صورتيکه از يک سرويس دهنده محلی استفاده میگردد ، می توان  نام سرويس دهنده را http://localhost در نظر گرفت . بدين ترتيب در فيلد Location ، آدرس مربوطه بصورت زير نشان داده خواهد شد : http://localhost/TestAccessDB

ايجاد يک فرم وب نمونه 
در نمونه کد نوشته شده از کنترل سرويس دهنده Table مربوط به ASP.NET استفاده شده که بصورت پويا يک نمايش ساده از داده بازيابی شده را نشان خواهد داد. ASP.NET ، مجموعه متنوعی از کنترل های انعطاف پذير را ارائه که می توان از آنان با توجه به رويکردهای متفاوت در رابطه با نمايش داده استفاده نمود. بمنظور ايجاد يک فرم وب در پروژه ايجاد شده در مرحله قبل ، مراحل زير را دنبال می نمائيم :

  • اضافه نمودن يک فرم جديد با نام DataSample.aspx  به برنامه وب ASP.NET در ويژوال استوديو دات نت . بمنظور انجام خواسته فوق ، دو مرحله زير را دنبال می نمائيم :
    مرحله يک : در
    Solution Explorer ، بر روی گره Project کليک سمت راست نموده و گزينه Add  و در ادامه گزينه Add Web Form انتخاب گردد.
    مرحله دو : درفيلد
    Name ، نام DataSample.aspx را درج و در ادامه گزينه Open انتخاب گردد .

  • از طريق Toolbox مربوط به Web Forms Tab ، يک Table ASP.NET Server Control را انتخاب ( Drag ) و بر روی صفحه aspx . مستقر نمائيد ( در حالت Desgin view ) .

  • در Properties نام ID را به DisplayTable تغيير دهيد .

  • در Solution Explorer ، بر روی صفحه aspx . ، کليک سمت راست نموده و گزينه View Code را انتخاب نمائيد .
  •  مرجع namespace زير را در بالاترين قسمت فايل کلاس code-behind وارد نمائيد .

  

Imports System.Data.OleDb

  • کد زير را در ارتباط با رويداد  Page_load در نظر می گيريم :

Page_Load Event handler

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

استفاده از يک متغير رشته ای بمنظور ذخيره سازی Connectionstring'

  Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
  "Data Source=C:\MyDB\NWIND.MDB"

ايجاد يک شی OleDbConnection و ارسال مقدار متغير ConnectionString '

  Dim cn As OleDbConnection = New OleDbConnection(connectString)

فعال نمودن Connection'

  cn.Open()

استفاده از يک متغير بمنظور ذخيره عبارت SQL'

  Dim selectString As String = "SELECT CustomerID, ContactName, Phone FROM Customers"

ايجاد يک شی OledbCommand'
در اين خط متغير عبارت SQL و شی OleDbConnection ، ارسال می گردد '

  Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn)

ارسال CommandText به Connection و ايجاد يک OleDbDataReader '
OleDbDataReader  از نوع " فقط بسمت جلو " خواهد بود'

  Dim reader As OleDbDataReader = cmd.ExecuteReader()

تنظيم عرض جدول '

  DisplayTable.Width = Unit.Percentage(90.0)

ايجاد يک سطر جديد برای اضافه نمودن عنوان جدول'

  Dim tableHeading As TableRow = New TableRow()

ايجاد و اضافه نمودن سلول های  شامل ستون Customer ID  '

  Dim customerIDHeading As TableHeaderCell = New TableHeaderCell()
  customerIDHeading.Text = "Customer ID"
  customerIDHeading.HorizontalAlign = HorizontalAlign.Left
  tableHeading.Cells.Add(customerIDHeading)

ايجاد و اضافه نمودن سلول های  شامل ستون Contact Name   '

   Dim contactNameHeading As TableHeaderCell = New TableHeaderCell()
   contactNameHeading.Text = "Contact Name"
   contactNameHeading.HorizontalAlign = HorizontalAlign.Left
   tableHeading.Cells.Add(contactNameHeading)

ايجاد و اضافه نمودن سلول های  شامل ستون Phone   '

    Dim phoneHeading As TableHeaderCell = New TableHeaderCell()
    phoneHeading.Text = "Phone"
    phoneHeading.HorizontalAlign = HorizontalAlign.Left
    tableHeading.Cells.Add(phoneHeading)

    DisplayTable.Rows.Add(tableHeading)

تکرار در بين داده انتخابی نتايج و افزودن داده برای هر يک از ستون های مورد نظر در جدول '

    While(reader.Read())
       Dim detailsRow As TableRow = New TableRow()
       Dim customerIDCell As TableCell = New TableCell()
       customerIDCell.Text = reader("CustomerID").ToString()
       detailsRow.Cells.Add(customerIDCell)
       Dim contactNameCell As TableCell = New TableCell()
       contactNameCell.Text = reader("ContactName").ToString()
       detailsRow.Cells.Add(contactNameCell)
       Dim phoneCell As TableCell = New TableCell()
       phoneCell.Text = reader("Phone").ToString()
       detailsRow.Cells.Add(phoneCell)
       DisplayTable.Rows.Add(detailsRow)
    End While

بستن  Connection'

    reader.Close()
   cn.Close()
End Sub

  • مقدار متغير ConnectString در ابتدای کد نوشته شده فوق را تغيير و آن را به محلی که بانک اطلاعاتی موجود است ، اشاره دهيد .
  •  از طريق منوی File ، گزينه Save All را انتخاب تا فرم وب و ساير فايل های مرتبط با پروژه ، ذخيره گردد .
  • از طريق منوی Build ، گزينه Build Solution را بمنظور ايجاد پروژه ، فعال نمائيد.
  • در Solution Explorer ، بر روی DataSample.aspx کليک سمت راست و در ادامه گزينه View in Browser را انتخاب نمائيد . در ادامه صفحه در مرورگر نمايش و شامل داده موجود در بانک اطلاعاتی مربوطه است .

اشکالات و خطاهای احتمالی
درزمان اجراء ، ممکن است با خطائی مانند زير مواجه شويم :

The Microsoft Jet database engine cannot open the file 'C:\MyDB\NWIND.MDB'.
 It is already opened exclusively by another user, or you need permission to view its data.

  • خطای فوق ، اغلب بدليل عدم داشتن مجوز لازم بمنظور دستيابی به فايل ( فايل بانک اطلاعاتی با انشعاب mdb . ) می باشد . بصورت پيش فرض ،  ASP.NET تحت ASPNET account  در فريمورک دات نت نسخه يک و يا NetworkService  در فريمورک دات نت نسخه 1،1 اجراء می گردد.در اين رابطه لازم است تغييرات لازم در رابطه با  مجوز دستيابی به فايل mdb . و فولدری که شامل فايل است ، اعمال گردد .
  • از نصب عناصر مورد نياز Microsoft Jet database بر روی سيستم ، مطمئن گرديد. در صورتيکه MDAC 2.6 نصب شده باشد ( Microsoft Data Access Components 2.6) ، عناصر Jet را شامل نمی گردد . در چنين مواردی می بايست آخرين نسخه Jet 4.0 Service Pack ، بر روی سيستم نصب گردد.

               

               

بررسی اعتبار داده ها  توسط VB.NET در  فرم های وب
فريمورک دات نت ، شامل مجموعه ای از کنترل های لازم بمنظور بررسی اعتبار و صحت  داده های ورودی است که با استفاده از آنان در  فرم های وب و ASP.NET  ، می توان  داده  ورودی توسط  کاربر در هر يک از  فيلدهای موجود بر روی يک فرم وب را بررسی و در صورت عدم رعايت شرايط لازم ، پيام خطاء مناسبی را ارائه نمود. در اين مقاله  به  تشريح نحوه استفاده از کنترل های صحت داده ، خواهيم پرداخت .

کنترل های سرويس دهنده  اعتبار داده
کنترل های سرويس دهنده اعتبار داده  ، امکان بررسی صحت داده  مرتبط با يک کنترل سرويس دهنده ورودی نظير يک TextBox را فراهم و در صورتيکه ماحصل بررسی بعمل آمده ، مثبت نباشد ، يک پيام خطاء نمايش داده خواهد شد. هر يک از کنترل های اعتبار داده ، عمليات خاصی را در ارتباط با بررسی صحت داده ها انجام خواهند داد . مثلا" می توان با استفاده از CompareValidator ، عمليات بررسی صحت داده ها را در ارتباط با يک مقدار خاص  انجام و يا با استفاده از کنترل RangeValidator  يک  محدوده قابل قبول از مقادير مورد نظر در ارتباط با يک فيلد ورود اطلاعات  را انجام داد. در چنين مواردی ، حتی می توان با استفادده از کنترل CustomValidator ، شرايط خاص مورد نظر خود برای بررسی صحت داده ، تعريف و ايجاد نمود. با توجه به اينکه ، پيام خطاء در کنترل اعتبار داده نمايش داده می شود، می توان مکان مورد نظر برای نمايش پيام خطاء را نيز مشخص کرد . در اين راستا ، همچنين می توان با استفاده از کنترل ValidationSummery 
، خلاصه ای از نتايج تمامی کنترل های بررسی صحت داده ها را نمايش داد .
عمليات بررسی صحت داده در يک صفحه زمانی محقق خواهد شد که يک کنترل
Button نظير Button,ImageButton و يا LinkButton کليک گردد . در اين رابطه می توان با مقدار دهی False به خصلت CausesValidation ، باعث ممانعت در رابطه با بررسی صحت داده گرديد . روش فوق ، در مواردی نظير فشردن يک دکمه Cancel و يا Clear استفاده می گردد ( در چنين مواردی عملا" ما قصد بررسی صحت داده را نخواهيم داشت ) . مقدار خصلت فوق ، بصورت پيش فرض در ارتباط با يک Button  از نوع Cancel  و يا Clear مقدار False در نظر گرفته خواهد شد . 

در نمونه مثالی که در ادامه تشريح و به بررسی آن خواهيم پرداخت از چهار کنترل اعتبار داده استفاده شده است که لازم است در ابتدا مختصرا" با عملکرد هر يک از آنان آشنا شويم .

  • RequiredFieldValidator . کنترل فوق ، مقدار يک کنترل ورودی را بمنظور حصول اطمينان از درج داده در فيلد مورد نظر توسط کاربر ، بررسی می نمايد . در صورتيکه مقدار مشخص شده در فيلد مورد نظر نسبت به مقدار اوليه خود تغيير نکرده باشد ،بمنزله عدم صحت و اعتبار داده بوده و نشان دهنده اين موضوع است که کاربر در فيلد مربوطه داده مورد نظر را وارد ننموده است . در حقيقت در چنين شرايطی الزامی برای درج داده در ارتباط با يک کنترل ورودی بوجود آمده و کاربر نمی تواند فيلد مربوطه را بدون اعمال تغييرات ( درج داده ) رها نموده و نسبت به آن بی تفاوت باشد . مقدار پيش فرض، يک رشته خالی ( "" ) بوده  و نشاندهنده اين واقعيت است که می بايست مقداری در آن درج تا در آزمون بررسی صحت داده موفقيت حاصل گردد . در اين رابطه فضاء خالی اضافه شده در ابتدا و انتهای کنترل ورودی حذف و در ادامه عمليات بررسی صحت داده انجام خواهد شد . بدين ترتيب از درج فضای خالی در کنترل ورودی برای بررسی صحت داده ممانعت بعمل می آيد . در برخی موارد لازم است که در مقابل مقدار پيش فرض (رشته خالی) برای يک کنترل ورودی از مقدار اوليه مورد نظر خود استفاده نمائيم ( با توجه به سياست های طراحی بخش رابط کاربر ) . استفاده از روش فوق ، در مواردیکه دارای يک مقدار پيش فرض در ارتباط با يک کنترل ورودی بوده و قصد داريم که کاربر را ملزم به انتخاب يک مقدار ديگر نمائيم ، توصيه می گردد . مثلا" می توان از يک کنترل ListBox بهمراه يک Entry انتخاب شده بصورت پيش فرض که شامل دستورالعمل هائی برای کاربر بمنظور انتخاب يک آيتم از ليست است ، استفاده نمود . در چنين مواردی لازم است که کاربر يک آيتم ديگر موجود در ليست را از طريق کنترل انتخاب  و در اين رابطه نمی بايست کاربر آيتمی را انتخاب نمايد که شامل دستورالعمل است . بدين ترتيب در صورتيکه کاربر همان مقدار اوليه پيش فرض را انتخاب نمايد ، کنترل RequiredFieldValidator ، پيام خطاء مورد نظر خود را نمايش خواهد داد . بمنظور مشخص نمودن مقدار اوليه يک کنترل ورودی، می توان از خصلت InitialValue استفاده کرد.
    با توجه به سياست های طراحی رابط کاربر ، می توان از چندين
    Validator  در ارتباط با يک کنترل ورودی مشابه و يکسان استفاده نمود. مثلا"  می توان از يک کنترل  RequiredFieldValidator ، بمنظور حصول اطمينان از درج داده در کنترل مورد نظر استفاده و در همان حال از کنترل ديگری نظير RangeValidator نيز استفاده تا اين اطمينان ايجاد گردد که ورودی درج شده در کنترل مورد نظر در محدوده قابل قبول و مجاز می باشد .
  • کنترل ValidationSummary . کنترل فوق ، امکان ارائه اطلاعات مختصر در رابطه با تمامی کنترل های بررسی صحت داده موجود در يک صفحه وب و در يک موفقعيت ( مکان ) را فراهم می نمايد. خلاصه  اطلاعات موردنظر را می توان با استفاده از روش های متفاوتی نظير : يک پاراگراف ، يک ليست و يا يک Bulleted list . ارائه نمود. نحوه نمايش اطلاعات با استفاده از خصلت DisplayMode مشخص خواهد شد .پيام خطاء نمايش داده شده در کنترل ValidationSummary برای هر يک از کنترل های بررسی صحت داده موجود در صفحه ، توسط خصلت ErrorMessage مربوط به هر يک از کنترل ها ، مشخص می گردد . در صورتيکه خصلت ErrorMessage مربوط به کنترل بررسی صحت داده ، مقداردهی نگردد، هيچگونه پيام خطائی در ارتباط با آن کنترل خاص توسط کنترل ValidationSummary نمايش داده نخواهد شد. برای مشخص نمودن عنوان گزارش خطاء، می توان از خصلت HeaderText استفاده کرد. بمنظور کنترل نمايش اطلاعات کنترل ValidationSummary ، می توان از خصلت ShowSummary استفاده نمود . برای نمايش خلاصه اطلاعات مورد نظر در يک Message Box می توان مقدار خصلت ShowMessageBox را True در نظر گرفت .
  • کنترل RegularExpressinoValidator . کنترل فوق ، بمنظور تطبيق داده ورودی در يک کنترل ورودی با يک الگوی تعريف شده توسط يک عبارت ، استفاده می گردد . کنترل فوق ، امکان بررسی لازم در خصوص دنباله کاراکترهای مورد انتظار نظير آدرس های پست الکترونيکی ، شماره های تلفن و يا کد پستی  را فراهم می نمايد . با استفاده از خصلت ValidationExpression ، عبارت مورد نظر بمنظور بررسی صحت داده کنترل ورودی،  تعريف و مشخص می گردد . گرامر عبارت بررسی صحت داده بر روی سرويس گيرنده و سرويس دهنده با يکديگر متفاوت است . در سرويس گيرنده ، بمنظور مشخص نمودن عبارت مورد نظر از گرامر Jscript و بر روی سرويس دهنده از گرامر Regex استفاده می گردد . با توجه به اينکه، گرامرعبارات Jscript زير مجموعه ای از گرامر Regex می باشد ، توصيه می گردد از گرامر Jscript برای تعريف عبارت مورد نظر خود استفاده تا شاهد نتايج يکسانی بر روی سرويس گيرنده و سرويس دهنده باشيم .
  •  کنترل CompareValidator . کنترل فوق، مقدار ورودی در يک کنترل ورودی را با مقدار ديگر مقايسه می نمايد . از خصلت ControlToValidate  برای مشخص نمودن کنترل ورودی اول و از خصلت ControlToCompare برای مشخص نمودن کنترل ورودی دوم که می بايست با يکديگر مقايسه گردند ، استفاده می شود .درصورتيکه ماحصل مقايسه يکسان  باشد، از مقدار مشخص شده توسط خصلت ControlToCompare ، استفاده می گردد .

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

ايجاد يک برنامه وب ASP.NET با استفاده از VB.NET
بمنظور ايجاد يک برنامه وب ASP.NET با استفاده از VB.NET مراحل زير را دنبال می نمائيم :

  •  اجرای برنامه ويژوال استوديو دات نت
  • از طريق منوی File ، گزينه New و در ادامه Project را انتخاب نمائيد .
  •  در جعبه محاوره ای New Project ، در بخش Project Types گزينه Visual Bacic Projects را انتخاب ( کليک ) و در ادامه ASP.NET Web Application  را انتخاب نمائيد .  
  •  در فيلد Location ، بجای نام پيش فرض #WebApplication ، نام ValidationData را در نظر می گيريم . در صورتيکه از يک سرويس دهنده محلی استفاده می گردد ، می توان  نام سرويس دهنده را http://localhost در نظر گرفت . بدين ترتيب در فيلد Location ، آدرس مربوطه بصورت زير نشان داده خواهد شد : http://localhost/ValidationData

ايجاد يک فرم وب نمونه  
 بمنظور ايجاد يک فرم وب در پروژه ايجاد شده در مرحله قبل ، مراحل زير را دنبال می نمائيم :

  • اضافه نمودن يک فرم جديد با نام ValidUser.aspx  به برنامه وب ASP.NET در ويژوال استوديو دات نت . بمنظور انجام خواسته فوق ، دو مرحله زير را دنبال می نمائيم :
    مرحله يک : در
    Solution Explorer ، بر روی گره Project کليک سمت راست نموده و گزينه Add و در ادامه گزينه Add Web Form انتخاب گردد.
    مرحله دو : درفيلد
    Name ، نام ValidUser.aspx را درج و در ادامه گزينه Open انتخاب گردد .
  • در ادامه،  کدهای زير را  پس از استقرار در پنجره نمايش HTML مربوط به ValidUser.aspx ،  بين تگ های شروع و پايان مستقر می نمائيم .

تگ های HTML درج شده در ValidUser.aspx

<table>
<tr width="100">
<td>
نام
</td>
<td><input id="txtUserName" type="text" size="20" maxlength="15" runat="server" NAME="txtUserName">*
</td>
</tr>
<tr width="100">
<td>
آدرس پست الکترونيکی
<td><input id="txtEmail" type="text" size="35" maxlength="30" runat="server" NAME="txtEmail">
(<A>Ino@Srco.ir</A>)
</td>
</tr>
<tr width="100">
<td>
رمز عبور</td>
<td><input id="txtPassword" type="password" size="15" maxlength="10" runat="server" NAME="txtPassword">*
</td>
</tr>
<tr width="100">
<td>
تايپ مجدد رمز عبور</td>
<td><input id="txtConfirmPassword" type="password" size="15" maxlength="10" runat="server" NAME="txtConfirmPassword">*
</td>
</tr>
</table>

  • کنترل های RequiredFieldValidator ، بررسی لازم در خصوص داده ورودی برای هر يک از فيلدهای موردنظر در ارتباط با کنترل های مشخص شده را انجام خواهد داد . در اين رابطه کنترل های  RequiredFieldValidator را در ارتباط با فيلدهای UserName و Password به فرم اضافه می نمائيم . در ValidUser.aspx ، و پنجره HTML  مستقر و  کد زير را بعد از تگ <Table/> اضافه می نمائيم .

<asp:RequiredFieldValidator id=valUserNameRequired
ControlToValidate=txtUserName ErrorMessage="
نام کاربر می بايست وارد شود" EnableClientScript=true Display=None Runat=server/>
<asp:RequiredFieldValidator id=valPasswordRequired
ControlToValidate=txtPassword ErrorMessage="
رمز عبور می بايست وارد شود" EnableClientScript=true Display=None Runat=server/>
<asp:RequiredFieldValidator id=valConfirmPasswordRequired
ControlToValidate=txtConfirmPassword ErrorMessage="
تائيد مجدد رمز عبور می بايست وارد شود"
EnableClientScript=true Display=None Runat=server/>

  • فيلدهای رمز عبور تاکيد مضاعفی  است که کاربر دومرتبه و بدرستی رمز عبور خود را وارد نمايد. کنترل CompareValidator محتويات دو فيلد را با يکديگر مقايسه و در صورت عدم يکسان بودن آنان ، پيام خطائی نمايش داده  خواهد شد . در اين رابطه از يک کنترل CompareValidator بمنظور بررسی صحت ( يکسان بودن ) فيلدهای رمز عبور استفاده شده است . بدين منظور پس از استقرار در پنجره HTML مربوط به فرم وب ValidUser.aspx ، کد زير را پس از کنترل های اضافه شده در مرحله قبل ، به فرم مورد نظر اضافه می نمائيم .

<asp:CompareValidator id=valComparePassword
ControlToValidate=txtConfirmPassword ErrorMessage="
فيلدهای رمز عبور می بايست يکسان باشند" ControlToCompare=txtPassword Display=None
EnableClientScript=true Runat=server/>

  • در برخی موارد لازم است از نوع خاصی بررسی صحت و اعتبار داده استفاده گردد . فيلد آدرس پست الکترونيکی در مثال فوق ، نمونه ای در اين زمينه است . در اين رابطه از کنترل RegularExpressionValidator استفاده تا اين اطمينان حاصل گردد که کاربران فرمت اوليه برای درج يک آدرس پست الکترونيکی را رعايت نموده اند . محتويات فيلد فوق مجددا" بر اساس يک عبارت ( تعريف يک الگو ) بررسی شده و در صورتيکه محتويات مورد نظر با عبارت تعريف شده مطابقت نداشته باشد ، يک پيام خطاء نمايش داده خواهد شد.  در اين رابطه لازم است که يک کنترل RegularExpressionValidator بر روی فرم اضافه تا فرمت داده آدرس پست الکترونيکی ورودی توسط کاربر را بررسی و از صحت و رعايت فرمت مورد نظر اطمينان حاصل گردد .  بدين منظور پس از استقرار در پنجره HTML مربوط به فرم وب ValidUser.aspx ، کد زير را پس از کنترل های اضافه شده در مرحله قبل ، به فرم مورد نظر اضافه می نمائيم .

<asp:RegularExpressionValidator ID=valEmailAddress
ControlToValidate=txtEmail ValidationExpression=".*@.*\..*" ErrorMessage="
آدرس پست الکترونيکی درست نمی باشد"
Display=None EnableClientScript=true Runat=server/>

  • در ادامه ، بر روی فرم ValidUser.aspx ، يک دکمه "ارسال" را اضافه می نمائيم .بدين ترتيب به کاربر اجازه داده خواهد شد تا صفحه مورد نظر را برای سرويس دهنده ارسال و عمليات بررسی صحت و اعتبار داده درج شده در هر يک از فيلدهای موجود بر روی فرم ، انجام شود.   بدين منظور پس از استقرار در پنجره HTML مربوط به فرم وب ValidUser.aspx ، کد زير را پس از کنترل های اضافه شده در مرحله قبل ، به فرم مورد نظر اضافه می نمائيم .

<br>
<input type=submit id=cmdSumbit value=submit runat=server/>

  • در نهايت ، از يک کنترل ValidationSummary بمنظور نمايش تمامی خطاهای بوجود آمده در يک ناحيه خاص بر روی فرم استفاده می شود. بدين منظور پس از استقرار در پنجره HTML مربوط به فرم وب ValidUser.aspx ، کد زير را پس از دکمه "ارسال" اضافه شده  در مرحله قبل ، به فرم مورد نظر اضافه می نمائيم .

<br><br>
<asp:ValidationSummary id=ValSummary HeaderText="The following
errors were found:" ShowSummary=True DisplayMode=List Runat=server/>

  • پس از اتمام مراحل فوق ، با اتتخاب گزينه Save  ، فرم وب ايجاد شده ذخيره و در ادامه می توان با استفاده از منوی Debug و گزينه Start ، امکان ايجاد و اجرای برنامه وب را فراهم نمود.

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

در صورتيکه کاربر، دو رمز عبور را وارد که با يکديگر يکسان نمی باشند  ، پيام خطاء زير ارائه خواهد شد .

در صورتيکه کاربر يک آدرس پست الکترونيکی را وارد که دارای فرمت مناسب  نباشد ، ، پيام خطاء زير نمايش داده خواهد شد .

               

                                 

ذخيره سازی اطلاعات در VB.NET ( بخش اول )
يکی از مهمترين مسائل موجود در هر زبان برنامه نويسی ، نحوه ذخيره و بازيابی اطلاعات مورد نياز يک برنامه است . فرض کنيد ، قصد نوشتن برنامه ای را داشته باشيم که در آن از کاربران بخواهيم نام خود را وارد نمايند . پس از درج نام توسط کاربران ، اطلاعات فوق را  چگونه می بايست ذخيره  نمود تا امکان استفاده از آنان در برنامه ، فراهم گردد؟. چگونه می توان اقدام به ذخيره سازی داده هائی با محتوياتی خاص نظير : "اعداد" و يا " تاريخ " نمود؟. نحوه بازيابی اطلاعات ذخيره شده به چه صورت است ؟  در پاسخ به تمامی سوالات فوق ، می بايست  به جايگاه بسيار مهم "متغيرها " در يک زبان برنامه نويسی ، اشاره نمود .
متغيرها يکی از مفاهيم اوليه و در عين حال بسيار مهم در دنيای برنامه نويسی می باشند . با استفاده از متغيرها يک نام (
label
) به ناحيه ای از حافظه نسبت داده شده و امکان ذخيره سازی نوع خاصی از داده در آن فراهم می گردد . هر يک از زبان های برنامه نويسی دارای امکانات و مجموعه قوانينی به منظور تعريف ، نسبت دهی و دستابی به محتويات يک متغير می باشند .با استفاده از متغيرها ، امکان انجام عمليات متفاوتی نظير محاسبات رياضی ، پردازش بر روی رشته ها ، شمارش طول يک عبارت ، در يک برنامه فراهم می گردد .
VB.NET ، زبانی قدرتمند در ارتباط با نوع داده ها می باشد . در زمان تعريف يک متغير ، می بايست نوع داده مربوطه را نيز مشخص نمود (نظير String,Integer و يا Date )  .پس از تعريف يک متغير و نوع آن ، نحوه برخورد با داده ( نحوه ذخيره و بازيابی و انجام عمليات مجاز بر روی آن ) ، مشخص می گردد.
در اين مقاله قصد داريم به بررسی امکانات
VB.NET به منظور ذخيره سازی اطلاعات  پرداخته و در اين راستا با نوع های متفاوت داده و جايگاه هر يک از آنان ، آشنا شويم .

متغير چيست ؟
متغير ، مرجعی برای مراجعه به يک محل خاص در حافظه بوده که برنامه نويس برای مراجعه به آن يک نام خاص را تعريف و مشخص می نمايد . از مکان های فوق به منظور ذخيره سازی اطلاعات و استفاده از محتويات مربوطه در يک برنامه استفاده می گردد. در حقيقت متغيرها ، اطلاعاتی را بطور حقيقی در خود ذخيره نمی نمايند بلکه ما را به سمت محل ذخيره سازی و در نهايت يافتن اطلاعات ، هدايت می نمايند
  .
مثال : در مثال زير سه متغير به منظور ذخيره سازی يک رشته
Text ، يک مقدار عددی و يک تاريخ ، تعريف و مقداردهی شده اند .

Dim    City As String
Dim    Counter As Integer
Dim    PublishDate As Date
City = "Tehran"
Counter = 190
PublishDate = #6/15/2004#

پس از تعريف هر متغير ، امکان نسبت دهی يک مقدار به آن ، مشاهده اطلاعات ذخيره شده ، بازيابی اطلاعات و يا درج اطلاعات جديد در آن ، فراهم می گردد.متغيرها از جمله عناصر ضروری برای ذخيره سازی داده در يک زبان برنامه نويسی بوده و VB.NET نيز از اين قاعده مستثنی نخواهد بود .

تعريف يک متغير
همانگونه که در مثال قبل مشاهده گرديد ، قبل از انتساب  مقدار به يک متغير، می بايست  اقدام به تعريف متغير و مشخص نمودن نوع داده  آن نمود . پس از تعريف يک متغير و مشخص نمودن نوع آن ، نحوه برخورد با آن در برنامه مشخص خواهد شد. با استفاده از فرآيندی موسوم به Declaration ، اقدام به تعريف متغيرها و نوع آنان ، می گردد. تعريف متغيرها ، يکی از نکات مهم در دنيای برنامه نويسی است . در زما ن ايجاد صفحات پويا با استفاده از ASP.NET و توسط زبان های برنامه نويسی نظير VB.NET و يا 
سی شارپ ، می بايست تمامی متغيرها قبل از استفاده دريک برنامه و يا صفحه وب ، تعريف گردند .
در
VB.NET برای تعريف يک متغير از کليد واژه Dim  ( اقتباس شده از واژه Dimension
) ، استفاده می گردد.
مثال : در مثال زير ، يک متغير رشته ای با نام
strCityName ، تعريف و در ادامه مقدار " Teharn"  ، به آن نسبت داده شده است . 

Dim strCityName  As String
strCityName = "Tehran"

در زمان تعريف يک متغير بطور همزمان می توان مقداری را به آن نيز نسبت داد ( تعريف و مقداردهی همزمان ) :

Dim strCityName  As String = "Tehran"

امکان تعريف همزمان چندين متغير هم نوع  در يک سطر نيز وجود دارد : ( تعريف همزمان چندين متغير با نوع يکسان )

Dim strCityName1 , strCityName2 , strCityName3 As String
strCityName1 = "Tehran"
strCityName2 ="Ahwaz"
strCityName3 = "Shiraz"

درادامه می توان به هريک از متغيرهای تعريف شده ، مقدار مورد نظر را نسبت داد .
مثال کاربردی : در اين مثال در ابتدا سه متغير را تعريف و پس از مقداردهی مناسب هر يک از آنان ، نتايج را با يک فرمت مناسب در خروجی نمايش خواهيم داد ( يک صفحه
ASPX ) .

مرحله اول : فعال نمودن ويرايشگر صفحات وب و تايپ دستورات زير :

<Script Language= "vb" runat="server">
Sub Page_Load ( )
  Dim ArticleTitle As String
  Dim ArticleNumber As Integer
  Dim PublishDate As Date
  ArticleTitle = "
ذخيره سازی اطلاعات در VB.NET ( بخش اول ) "
  ArticleNumber = 190
  PublishDate = #6/15/2004#
  Label1.Text = ArticleTitle
  Label2.Text = ArticleNumber
  Label3.Text = PublishDate
  End Sub
</Script>
<html dir="rtl">
  <head>
    <title>
ايجاد متغير </title>
 </head>
  <body>
عنوان مقاله   :
   <asp:label id="Label1" runat="server" />
    <br>
شماره مقاله :
    <asp:label id="Label2" runat="server" />
    <br>
تاريخ انتشار مقاله :
     <asp:label id="Label3" runat="server" />
   </body>
</html>

مرحله دوم : ذخيره نمودن برنامه فوق در فايلی با نام TestVariable.aspx
مرحله سوم : فعال نمودن فايل  TestVariable.aspx در مرورگر

مرحله چهارم : برگشت به برنامه فوق و افزودن يک خط جديد ( استفاده از يک متغير که قبلا" تعريف نشده باشد )

    ...
   Dim  PublishDate As Date
   ArticleTitle = "
ذخيره سازی اطلاعات در VB.NET ( بخش اول ) "
   ArticleNumber = 190
   PublishDate = #6/15/2004#
   ArticleAuthor = "
مديريت وب "
    ...
   Label1.Text = ArticleTitle
   ...

مرحله پنجم : ذخيره نمودن برنامه فوق در فايلی با نام TestVariable.aspx
مرحله ششم  : فعال نمودن  فايل TestVariable.aspx در مرورگر

همانگونه که مشاهده می شود ، در خط شماره نه (خطی که از متغير ArticleAuthor ، استفاده شده است ) به دليل استفاده از متغيری که قبلا" اقدام به تعريف آن نشده است با يک خطاء مواجه خواهيم شد. به منظور برطرف نمودن خطای فوق ، می بايست متغير ArticleAuthor تعريف و در ادامه مقدار مورد نظر در آن ذخيره گردد.

توضيحات مثال :

  • در برنامه فوق ، در ابتدا اقدام به تعريف سه متغير شده است . ما قصد داريم که از text در متغير ArticleTitle استفاده نمائيم ، بنابراين آن را به صورت String تعريف کرده ايم . شماره مقاله يک عدد صحيح است و بدين منظور و برای نگهداری مقدار مربوطه از  متغيری با نام  ArticleNumber و نوع صحيح استفاده شده است . از متغير PublishDate ، که از نوع Date تعريف شده است به منظور ذخيره  تاريخ نشر يک مقاله، استفاده شده است .

Dim  ArticleTitle As String
Dim  ArticleNumber As Integer
Dim  PublishDate As Date

  • پس از تعريف هر يک از متغيرها ، می توان به هر يک از آنان مقدار مورد نظر را نسبت داد :  مقدار " ذخيره سازی اطلاعات در VB.NET ( بخش اول ) " ، به متغير ArticleTitle نسبت داده شده است . در اين رابطه ، مقدار مورد نظر بين علامت کوتيشن قرار داده شده است . بدين ترتيب به VB.NET اعلام می شود که ما قصد نسبت دهی يک text  به يک متغير را داريم . در صورتی که تمايل به انتساب يک مقدار عددی به متغيری را داشته باشيم ، می بايست علامت کوتيشن را حذف نمائيم. در متغيردوم ، مقداری صحيح و عددی به  ArticleNumber ، نسبت داده شده است . در نهايت مقداری از نوع Date  به متغير PublishDate ، نسبت داده شده است .

ArticleTitle = " ذخيره سازی اطلاعات در VB.NET ( بخش اول ) "
ArticleNumber = 190
PublishDate = #6/15/2004#

  • در ادامه ، سه کنترل <asp:label> ، و با نام Label1,Label2 و Label3 ايجاد و مقدار خصلت Text هر يک از آنان ، محتويات هر يک از سه متغير تعريف شده، در نظر گرفته شده است .

Label1.Text = ArticleTitle
Label2.Text = ArticleNumber
Label3.Text = PublishDate

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

Dim ArticleAuthor As String

انواع نوع های ساده
VB.NET دارای دوازده نوع داده متفاوت بوده که می توان آنان را به سه گروه عمده تقسيم نمود : نوع های عددی ، نوع های حرفی ( متنی ) و نوع های متفرقه . در بخش دوم اين مقاله به بررسی هر يک از آنان خواهيم پرداخت .

               

               

               

ذخيره سازی اطلاعات در VB.NET ( بخش دوم )
در بخش اول اين مقاله به جايگاه متغيرها در يک زبان برنامه نويسی اشاره و با نحوه تعريف آنان در  VB.NET آشنا شديم . در بخش دوم اين مقاله به بررسی انواع نوع های ساده در VB.NET خواهيم پرداخت .

انواع نوع های ساده ( Simple Data Types )
VB.NET دارای دوازده نوع داده متفاوت بوده که می توان آنان را به سه گروه عمده تقسيم نمود : نوع های عددی ، نوع های حرفی ( متنی ) و نوع های متفرقه . در ادامه به بررسی هر يک از گروه های فوق ، خواهيم پرداخت ( در اين مقاله نوع Object بررسی نخواهد شد و در مقالاتی جداگانه به اين نوع داده ، خواهيم پرداخت ) . 

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

Dim IntegerNumber1 As Integer
Dim DecimalNumber2 As Decimal
Dim FloatingPointNumber3 As Float
IntegerNumber1 = 75
DecimalNumber2  = 3.14
FloatingPointNumber3 = -1.4E02

نوع های عددی ، يکی از انواع داده متداول در VB.NET بوده که خود به هفت نوع  متفاوت تقسيم می گردند :

  • Integer : برای تعريف متغيرهائی که دارای مقادير صحيح می باشند ، استفاده می گردد( 3 ، 12 ، 5 - ) .  متغيرهائی از اين نوع ، قادر به نگهداری مقادير صحيح  بين  2،147،483،648 - تا 2،147،483،647  ، می باشند .  برای اعداد خارج از محدوده فوق ، نوع long  در نظر گرفته می شود.
  • Byte : متغيرهائی از اين نوع ، قادر به نگهداری مقاديرصحيح بين ، 0 تا 255 ، می باشند . از نوع فوق به منظور انجام عمليات پايه و ساده رياضی استفاده می گردد . ( مثلا" شمارنده هائی در برنامه که مقدار آنان حداکثر 255 می باشد) . برای ذخيره سازی اين نوع متغيرها  صرفا" يک بايت حافظه در نظر گرفته می شود.
  • Short : نوع فوق ، شکلی خاص از نوع Integer می باشد. متغيرهائی از اين نوع قادر به نگهداری محدوده کمتری از اعداد صحيح ( بين  32،768 - تا 32،767   )  در مقايسه با نوع Integer می باشند .
  • Long : نوع فوق شباهت زيادی به نوع Integer  داشته با اين تفاوت که امکان ذخيره سازی محدوده بيشتری از اعداد را فراهم می نمايد. يک متغير از نوع Long قادر به ذخيره سازی مقاديربين  9،223،372،036،854،775،808 - تا  9،223،372،036،854،775،807 ، می باشد .
  • Single : متغيرهائی از اين نوع ، قادر به نگهداری اعداد اعشاری با دقت معمولی ودر محدوده زير می باشند : 

محدوده نوع Single

 -3.402823E38 to  -1.401298E-45

 اعداد  منفی

1.401298E-45  to   3.402823E38

 اعداد  مثبت

  • Double : متغيرهائی از اين نوع ، قادر به نگهداری اعداد اعشاری با دقت مضاعف و در محدوده زير می باشند :

محدوده نوع Double

-1.79769313486232E308 to -4.94065645841247E-324

 اعداد  منفی

4.94065645841247E-324 to 1.79769313486232E2308

 اعداد  مثبت

  • Decimal : متغيرهائی از اين نوع ، قادر به نگهداری اعداد اعشاری تا حداکثر بيست و هشت رقم اعشار می باشند.

محدوده نوع Decimal

 +/- 79،228،162،514،264،337،593،543،950،335

حداکثر: با لحاظ نمودن صفر رقم اعشار

+/- 7.9228162514264337593543950335

حداکثر: با لحاظ نمودن بيست و هشت رقم اعشار

گروه دوم : نوع های حرفی ( متنی )
برای ذخيره سازی محتويات متنی ، از دو نوع داده String و Char استفاده می شود:

  • نوع String : متغيرهائی از اين نوع ، همه چيز را به عنوان text در نظر می گيرند ولو اين که مقدار مورد نظر شامل حروف و  اعداد و يا صرفا" اعداد و يا تاريخ باشد . دستور زير متغيری از نوع  string و با نام CityName را تعريف و در ادامه   مقدار "Tehran" ، به آن نسبت داده می شود.

Dim CityName As String
CityName = "Tehran"

  • همانگونه که قبلا" اشاره گرديد ، برای نسبت دهی يک مقدار به متغيرهائی از نوع string ، از کوتيشن استفاده می شود.انجام عمليات رياضی بر روی رشته ها ، مجاز نخواهد بود (حتی در صورتی که محتويات آنان عددی باشد) . مثلا" در صورتی که تصميم به جمع دو رشته "12" و "14" را با يکديگر داشته باشيم ، مقدار  "26"  بدست نخواهد آمد. در چنين حالتی ، ماحصل جمع دو رشته مقدار  "1412" ، خواهد بود . چراکه رشته Number2 با Number1 را جمع کرده ايم در صورتی که رشته Number1 با Number2 جمع شود ، مقدار " 1214 " را خواهيم داشت .

Dim Number1 As string
Dim Number2 As string
Dim Number3 As string
Number1 = "12"
Number2 = "14"
Number3 = Number2 + Number1  ' Result :  "1412"

  •  نوع Char نوع فوق ، نسبت به نوع String متفاوت بوده و در آن  text به عنوان يک عدد ، ذخيره می گردد. بدين ترتيب ، امکان ذخيره سازی صرفا" يک کاراکتر در يک متغير، فراهم می گردد. در چنين حالتی می توان يک عدد بين صفر تا 65535 را ذخيره نمود. در صورتی که قصد نمايش محتويات يک متغير از نوع char را داشته باشيم ،  صرفنظر از نحوه ذخيره سازی ، يک کاراکتر text ، نمايش داده می شود . کد زير ، نحوه تعريف و نسبت دهی يک مقدار به متغيری از نوع char را نشان می دهد( حرف 'C' ،  پس از کوتيشن ، نشاندهنده اين موضوع است که متغير از نوع  Char می باشد) .

Dim Letter As Char
Letter = "Q"C    ' This would be stored as 81

گروه سوم : نوع های متفرقه 
دو نوع داده ديگر در  VB.NET وجود دارد که می توان آنان را در اين گروه قرار داد :

  •  نوع Date : متغيرهائی از اين نوع ، قادر به نگهداری تاريخ و زمان می باشند . برای ذخيره تاريخ می بايست از فرمت  mm/dd/yy استفاده  گردد. مقدار نسبت داده شده به يک متغير از نوع Date توسط علائم " # " ، محصور می گردد . متغيرهائی از نوع Date ، قادر به ذخيره سازی تاريخ تا سال 9999 می باشند .

Dim Date1 As Date
Date1 = # 12/ 07 / 2004#

  • از متغيرهای نوع Date می توان به منظور ذخيره سازی زمان نيز استفاده نمود :

Dim Time1 As Date
Time1 = #16:25:05#

  • نوع Boolaen : متغيرهائی از اين نوع می توانند دارای مقدار True و يا False باشند . در VB.NET در صورتی که مقادير فوق را به نوع صحيح تبديل نمائيم ، مقادير 1 - و صفر را خواهيم داشت . زمانی که ساير نوع های عددی را به مقادير Boolaen تبديل می نمائيم ، مقدار صفر به False و ساير مقادير به True تبديل خواهند شد . زمانی که مقادير Boolean را به ساير نوع های داده تبديل می کنيم ، False مقدار صفر و True مقدار يک را دارا خواهد بود. علت اين که در مواردی که True تبديل به نوع صحيح در VB.NET می گردد مقدار 1 - و زمانی که به ساير نوع ها تبديل می گردد ، مقدار 1 + را دارا می باشد ، به حمايت از کدهای نوشته شده قبلی در ويژوال بيسيک برمی گردد .

Boolean Value

Numeric value

True
False

 -1 / +1
 0

  • از متغيرهای Boolean ، می توان به منظور نگهداری وضعيت يک متغير استفاده نمود.  در صورتی که مقدار اينچنين متغيرهائی True نباشد ، قطعا" مقدار آنان False خواهد بود.  بدين ترتيب می توان از اين نوع متغيرها در موارد متعدد و متناسب با شرايط موجود استفاده و پس از اتخاذ تصميم ، عمليات مورد نظر را دنبال نمود.

Dim  Done As  Boolean
Done = False
If   Done = False then  
       ...
Else
      ...

  • مقدار False و يا True ، نمی بايست بين کوتيشن قرار داده شوند .

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

  • استفاده از اسامی نظير DateStart و يا DateEnd بمراتب بهتر از اسامی StartDate و يا EndDate می باشد ، چراکه اسامی فوق در صورت جستجوی متغيرها بر اساس حروف الفبائی،  به دنبال هم نمايش داده می شوند .
  • متغيرهائی نظير Price ،Name و Number  گيج کننده می باشند . چراکه معمولا" در برنامه ها بيش از يک مورد از آنان وجود دارد نظير : NameFirst ,NameLast, PriceBuy و PriceSell .
  • استفاده از اسامی مشابه نوع داده ها ، مجاز نمی باشد . مثلا" تعريف متغيری با نام Integer ، مجاز نخواهد بود .
  • برای نامگذاری متغيرها از اسامی خلاصه شده ای  که اقتباس شده از کلمات متفاوتی می باشند، استفاده نگردد . مثلا" استفاده از متغيری با نام  FDOM که اقتباس شده از کلمات First Day Of  Month می باشد ، يک انتخاب مناسب نخواهد بود ، چراکه FDOM می تواند مخفف کلمات متعددی باشد .
  • در اکثر زبان های برنامه نويسی انتخاب يک نام برای متغير تابع مجموعه مقررات و محدوديت هائی است . در VB.NET تمامی متغيرها می بايست با يک حرف شروع شده و نمی بايست نام در نظر گرفته شده شامل نقطه و يا فضای خالی باشد . پيشنهاد می گردد به منظور افزايش خوانائی يک برنامه،  صرفا" از علامت Underscore ( _ )  به همراه نام يک متغير استفاده گردد .
  • VB.NET نسبت به حروف بزرگ و کوچک حساس نمی باشد . مثلا" متغيرهائی با نام counter و COUNTER  مشابه در نظر گرفته خواهند شد .برخی از زبان های برنامه نويسی نظير سی شارپ و يا Jscript.NET ، نسبت به حروف بزرگ و کوچک حساس بوده و متغيرهائی با نام counter و COUNTER ، به عنوان دو متغير جداگانه در نظر گرفته می شوند .

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

 Data Type

 Prefix

 Example

Boolean

bln

blnMember

Byte

byt

bytByte

Char

chr

chrChar

Date

dat

datToday

Double

dbl

dblDouble

Decimal

dec

decDecimal

Integer

int

intSalary

Long

lng

lngLong

Single

sng

sngSingle

Short

sho

shoShort

String

str

strTextBox

در اين رابطه از روشی ديگر با نام   Short Hungarain notation  استفاده می گردد . برای آگاهی از جزئيات اين روش می توانيد از آدرس  MSDN    ، استفاده نمائيد .

               

             

               

               

               

ذخيره سازی اطلاعات در VB.NET ( بخش سوم )

 آنچه تاکنون گفته شده است :

  • بخش اول :  جايگاه متغيرها در يک زبان برنامه نويسی و نحوه تعريف آنان در VB.NET
  • بخش دوم : بررسی انواع نوع های ساده در VB.NET

در بخش سوم اين مقاله با عملگرها ، عمليات بر روی متغيرهای رشته ای ، ثوابت و نوع های داده ساختيافته  نظير آرايه ، آشنا خواهيم شد.

عملگرها ( Operators )
استفاده از متغيرها در يک زبان برنامه نويسی زمانی مفيد خواهد بود که بتوان بر روی آنان عملياتی را انجام داد . به منظور انجام عمليات  بر روی متغيرها ، نيازمند استفاده از "عملگرها" می باشيم . "عملگر" ، علامتی است که مسئوليت انجام يک عمليات از قبل تعريف شده را بر روی "اپراندهای " خود و توليد نتيجه مورد نظر ، برعهده دارد . اگر 1+2 = X باشد ، "X " يک متغير ، "="  يک عملگر و مقادير يک و دو ، اپراندهای آن می باشند .

عملگر نسبت دهی
عملگر "=" ، متداولترين و شناخته ترين عملگر استفاده شده در دنيای برنامه نويسی است.از عملگر فوق به منظور نسبت دادن مقدار به يک متغير استفاده می گردد. ( متغير در سمت چپ و مقدار متغير در سمت راست عملگر "=" ،قرار می گيرد) .

Dim intNumber1  As Integer
intNumber1 = 7447

VB.NET هيچگونه تاکيد و يا اجباری در خصوص تعداد فضای خالی ( Space ) استفاده شده در دو طرف علامت "=" ندارد.برنامه نويسان به منظور افزايش خوانائی برنامه ، می توانند  به تعداد مورد نظر از فضای خالی استفاده نمايند .

 Dim intNumber  As Integer
 intNumber =     3

عمليات رياضی
در VB.NET ارزيابی يک عبارت از سمت راست به چپ ، انجام می شود. مثلا" در عبارت  intNumber1 = intNumber1 + 1  ، در ابتدا مقدار intNumber1 + 1 ، محاسبه شده و در ادامه مقدار بدست آمده در متغير intNumber1 ، ذخيره می گردد . علامت "=" ، وظيفه يک عملگر نسبت دهی را برعهده داشته  و پس از محاسبه مقدار مورد نظر  آن را به  متغير intNumber1 نسبت می دهد .

Dim intNumber 1  As Integer
 intNumber1= 2
 intNumber1 =  intNumber1 + 1 

عملگرهای محاسباتی
در VB.NET از عملگرهای محاسباتی زير استفاده می شود :

کاربرد

عملگر

 جمع

 +

 تفريق

-

 ضرب

*

 تقسيم

/

 توان

^

 منفی

 -

 باقيمانده

MOD

مثال : در برنامه زير ، دو متغير به اسامی intNumber1 و intNumber2 تعريف و پس از انتساب مقدار مورد نظر به هر يک از آنان ، مقادير دو متغير با يکديگر جمع و حاصل در متغيری ديگر و با نام intNumber3 ، ذخيره می گردد .

Dim intNumber1   As Integer
Dim intNumber2   As Integer
Dim intNumber3   As Integer

intNumber1 = 14
intNumber2 = 12
intNumber3 =  intNumber1 + intNumber2  

به منظور مشخص نمودن اولويت انجام محاسبات در يک عبارت ، می توان از پرانتر استفاده نمود . مثلا" در کد زير ، در ابتدا مقدار موجود در متغير  intNumber2 بر عدد شش تقسيم و در ادامه  مقدار به دست آمده به متغير intNumber1 اضافه شده و در نهايت ، نتيجه بدست آمده در متغيری با نام intNumber3 ذخيره می گردد( استفاده از پرانتز در يک عبارت ، باعث افزايش خوانائی برنامه نيز می گردد ) .

Dim intNumber1   As Integer
Dim intNumber2  As Integer
Dim intNumber3  As Integer

intNumber1= 14
intNumber2 = 12
intNumber3 =  intNumber1 + (intNumber2 /6 )  

مثال : در برنامه زيراز يک رابطه ساده رياضی به منظور محاسبه ميزان ماليات ، استفاده شده است .

<Script language="vb"  runat="server">
 Sub Page_Load ( )
    Dim intEarn As Integer
    Dim intTax  As Integer
    Dim decTotal As Decimal
    intEarn = 150
    intTax = 10
    decTotal = intEarn - ( ( intEarn / 100 ) * intTax )
    Display1.Text = intEarn
    Display2.Text = ( intEarn / 100 ) * intTax
    Display3.Text = decTotal
End Sub
</Script>

<html dir="rtl">
<head>
  <title>
استفاده از عملگرها در يک عبارت رياضی </title>
</head>
<body>
 
ميزان دستمزد :  <asp:label  id="Display1" runat="server" /><Br>
 
ماليات : <asp:label  id="Display2" runat="server" /><Br>
 
مبلغ پرداختی پس از کسر ماليات   :  <asp:label  id="Display3" runat="server" />
</body>
</html>

پس از ذخيره برنامه فوق در فايلی با نام TestTax.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :

توضيحات  : در برنامه فوق ، از سه متغير به اسامی intEarn  (به منظور ذخيره  ميزان دستمزد)  ، intTax ( به منظور ذخيره نرخ محاسبه ماليات )  و decTotal ( به منظور ذخيره مبلغ خالص پرداختی ) ، استفاده شده است .

Dim intEarn As Integer
Dim intTax  As Integer
Dim decTotal As Decimal

در ادامه ، مقادير مورد نظر به متغيرهای  intEarn ( مقدار 150 )  و  intTax  ( مقدار 10 ) ، نسبت داده شده است .

 intEarn = 150
 intTax = 10

به منظور محاسبه مبلغ قابل پرداخت ، در ابتدا ميزان ماليات با توجه به نرخ مشخص شده ( 10 درصد) ، محاسبه و پس از کسر مبلغ فوق از ميزان دستمزد ، حاصل در متغير  decTotal ، ذخيره می گردد.  از پرانتر به منظور مشخص نمودن اولويت محاسبات ، استفاده شده است .

 decTotal = intEarn - ( ( intEarn / 100 ) * intTax )

در نهايت ، مقادير  decTotal ،  intEarn و ميزان ماليات محاسبه شده به خصلت text هر يک از کنترل های label1,label2 و label3  نسبت داده شده است ( Display1 ، Display2 و Display3 ) .

 Display1.Text = intEarn
 Display2.Text = ( intEarn / 100 ) * intTax
 Display3.Text = decTotal

عمليات بر روی  رشته ها
با استفاده از عملگر "+" می توان دو متغير از نوع  integer را با يکديگر جمع نمود . در صورتی که دارای دو متغير از نوع string باشيم و بخواهيم دو رشته فوق را با يکديگر ترکيب نمائيم از فرآيندی با نام Concatenation ، استفاده می شود . در دات نت به منظور اتصال رشته ها و الحاق آنان به يکديگر از دو روش مختلف استفاده می گردد : .

  • روش اول : در اين روش ، رشته دوم به انتهای رشته دوم اضافه شده و رشته ای جديد ايجاد می گردد . بدين منظور از عملگر "&" ( ampersand ) ، استفاده می شود .

Dim strTest As String 
strTest = " Test " & "VB.NET"

  • ماحصل ترکيب دو رشته فوق ، TestVB.NET بوده که به متغير strTest نسبت داده می شود. در VB.NET به صورت اتوماتيک از فضای خالی ( Space ) استفاده نمی گردد و در صورت لزوم می توان به ميزان دلخواه فضای خالی را به عنوان يک رشته استفاده و آن را با ساير متغيرها ، ترکيب نمود . در مثال زير سه رشته که يکی از آنان Space ( که خود نيز يک رشته است ) ، می باشد با يکديگر ترکيب شده اند.

Dim strTest  As String 
strTest = " Test " & "   " & "VB.NET"

  • ماحصل ترکيب سه رشته فوق ، Test   VB.NET بوده که به متغير strTest  نسبت داده می شود .
  • روش دوم : در اين روش برای اتصال رشته ها به يکديگر از عملگر "=+" ، استفاده می گردد . ( در متغير strTest مقدار : " TestString   TestString   TestString   TestString   " ، ذخيره می گردد).

Dim strTest  As String 
Dim strFirst As String

strFirst ="TestString   "
strTest += strFirst 
strTest += strFirst
strTest += strFirst

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

کاربرد

عملگر

 مساوی

 =

 کوچکتر

>        

 کوچکتر يا مساوی

=>

 نامساوی

<>        

 بزرگتر

<        

 بزرگتر يا مساوی

 =<

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

Dim strName1 As String 
Dim strName2  As String

strName1="Test1"
strName1="HHH"
If  strName1 < strName2 Then Display1.Text = " Test1"
If  strName2 < strName1 Then Display1.Text = " HHH"

ثوابت
ثوابت ، به منزله  متغيرهائی می باشند که مقدار نسبت داده شده به  آنان در زمان اجرای برنامه تغيير نمی نمايد. "نرخ محاسبه ميزان ماليات " ، نمونه ای در اين زمينه بوده که  مقدار آن به ندرت تغيير می نمايد. در زمان فروش يک کالا و به منظور محاسبه ميزان ماليات مربوطه ، ممکن است به دفعات به آن مراجعه گردد . حتی اگر نرخ محاسبه ماليات تغيير يابد ، شما صرفا" مجبور به اعمال تغييرات در يک مکان ، خواهيد بود. 
استفاده از "ثوابت " ، خوانائی يک برنامه را افزايش و باعث تسهيل در امر نگهداری يک برنامه می گردد .
اکثر زبان های برنامه نويسی روش خاصی را به منظور تعريف "ثوابت " ، در اختيار برنامه نويسان قرار می دهند . در
VB.NET به منظور تعريف يک ثابت از کليد واژه Const استفاده می گردد ( معمولا" اسامی ثوابت ، به صورت "حروف بزرگ " ، در نظر گرفته می شوند ).

Const TAXRATE = 10

پس از تعريف يک ثابت ، در صورتی که در ادامه برنامه قصد تغيير مقدار نسبت داده شده به آن را داشته باشيم ، با يک پيام خطاء مواجه خواهيم شد .

نوع های داده ساختيافته
 نوع های ساده ، صرفا" قادر به ذخيره سازی يک آيتم اطلاعاتی می باشند . در صورتی که قصد ذخيره چندين آيتم اطلاعاتی مرتبط به هم در يک برنامه را داشته باشيم ، می بايست از "نوع های داده ساختيافته " ، استفاده گردد. VB.NET  دارای امکانات متعددی به منظور ذخيره نمودن اينگونه اطلاعات است ( از اشياء ديکشنری تا جدول hash و XML ) . در ادامه با  "آرايه ها"  که ساده ترين نوع در اين زمينه می باشند ، آشنا می شويم .

آرايه ( Array )
از آرايه ها به منظور ذخيره سازی مجموعه ای از اقلام اطلاعاتی مرتبط به هم در متغيرهائی که همگی دارای يک نام بوده و توسط يک ايندکس عددی اضافه شده به انتهای آنان شناسائی می گردند، استفاده می شود. دستورات زير نحوه تعريف يک آرايه و نسبت دهی مقدار به هر يک از عناصر آن را نشان می دهد .

Dim StrName ( 5 ) As String
StrName(0) = "AAA"
StrName(1) = "BBB"
StrName(2) = "CCC"
StrName(3) = "DDD"
StrName(4) = "EEE"
StrName(5) = "FFF"

اولين ايندکس يک آرايه، صفر در نظر گرفته می شود ( Zero based ) . در مثال فوق ، شش عنصر و به ترتيب در مکان های صفر تا پنج آرايه ، ذخيره می گردند .

تعريف يک آرايه
آرايه ها نظير متغيرها می بايست با استفاده از کليد واژه Dim تعريف گردند . تعريف يک آرايه مستلزم تعريف يک پارامتر اضافی ديگر به منظور مشخص نمودن اندازه آن است . دستور زير يک آرايه با اندازه پنجاه و از نوع String  را تعريف می نمايد . تمامی المان های آرايه می بايست از نوع String باشند .

Dim  Strarray1 (49) As String

آرايه های چند بعدی
در مواردی که اطلاعات دارای ماهيتی دوبعدی و مرتبط به هم می باشند ، می توان از يک آرايه دوبعدی به منظور ذخيره آنان استفاده نمود . مثلا" در صورتی که قصد ذخيره مجموعه ای از اطلاعات مرتبط به هم  نظير نام و نام خانوادگی را داشته باشيم ، می توان از يک آرايه دوبعدی استفاده نمود. به منظور تعريف يک آرايه دو بعدی می بايست يک پارامتر ديگر را در زمان تعريف آرايه نيز مشخص نمائيم . دستورات زير نحوه تعريف و مقداردهی  يک آرايه دو بعدی 4 * 4 از نوع  string را نشان می دهد ( امکان ذخيره حداکثر شانزده عنصر در اين آرايه وجود خواهد داشت ) .

Dim  strArray1 (3,3) As String
 ...
strArray (0,0)  = "AAA"
strArray (0,1)  = "BBB"
 ...

در VB.NET امکان تعريف يک آرايه حداکثر شصت بعدی وجود خواهد داشت . استفاده از آرايه های بيش از سه بعد توصيه نشده و در صورت نياز می توان از ساير راهکاری موجود نظير بانک های اطلاعاتی ، استفاده نمود .

خلاصه
در مجموعه مقالاتی که با عنوان " نحوه ذخيره سازی اطلاعات در
VB.NET " ، ارائه گرديد با موارد زير آشنا شديم :

  • جايگاه استفاده از متغيرها در يک برنامه
  • نحوه تعريف متغير در VB.NET  و استفاده از آنان در صفحات ASP.NET
  • بررسی انواع نوع های داده ساده
  • نحوه انجام عمليات  بر روی متغيرها و انجام برخی محاسبات ساده با استفاده از عملگرهای محاسباتی و مقايسه ای
  • بررسی نوع های داده ساختيافته و نحوه استفاده از يک آرايه در برنامه

                 

               

                

ساختارهای کنترلی  در VB.NET ( بخش اول )

در زمان نوشتن يک برنامه کامپيوتری با استفاده از هر زبان برنامه نويسی نظير VB.NET  می توان از ساختارهای متفاوتی به منظور کنترل روند اجرای کدها ، استفاده نمود .  ساختارهای فوق  را می توان به سه گروه عمده تقسيم نمود :

  • ساختارهای تصميم گيری ( اتخاذ تصميم در خصوص اجراء و يا عدم اجرای خط و يا خطوطی از برنامه )
  • ساختارهای تکرار  ( اجرای يک و يا مجموعه ای  کد به دفعات مورد نياز )
  • ساختارهای پرش ( توقف روند جاری اجرای يک برنامه  و پرش به يک محل و اجرای يک بلاک کد خاص )

در مجموعه مقالاتی که در اين رابطه ارائه خواهد شد به بررسی هر يک از ساختارهای فوق در VB.NET  و نحوه استفاده از آنان به منظور ايجاد صفحات ASP.NET خواهيم پرداخت .
در بخش اول اين مقاله با هر يک از ساختارهای فوق به صورت اجمالی آشنا خواهيم شد.
 

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

بلاک های اسکريپت
زمانی که کدهای ويژوال بيسيک همراه يک صفحه وب آورده می شوند ، می بايست توسط يک بلاک اسکريپت ، مشخص گردند . يک بلاک اسکريپت ، بخشی از يک صفحه است که توسط تگ <script > و با فرمت زير مشخص می گردد :

<script runat="server" [language="vb|Visual Basic"] >

...Visual Basic code

</script>

خصلت runat=server ، نشاندهنده اين موضوع است که اسکريپت های نوشته شده می بايست توسط کامپيوتر سرويس دهنده وب وقبل از ارسال صفحه برای کامپيوتر سرويس گيرنده ، اجراء گردند. خصلت فوق ، همچنين بين اسکريپت های سرويس دهنده و اسکريپت های سرويس گيرنده و يا مرورگر ، تفاوت قائل می شود ( اسکريپت های سمت سرويس گيرنده معمولا" با استفاده از جاوااسکريپت نوشته می گردند ) .
خصلت
Language ، زبان استفاده شده به منظور نوشتن اسکريپت ها را مشخص می نمايد . با توجه به اين که ويژوال بيسيک زبان پيش فرض برای نوشتن اسکريپت های سمت سرويس دهنده می باشد ، استفاده از خصلت فوق می تواند اختياری باشد ( در صورتی که از زبان ويژوال بيسيک برای نوشتن اسکريپت ها استفاده می نمائيم ) .
يک بلاک اسکريپت را می توان در هر محلی از صفحه وب مستقر و در صورت نياز از چندين بلاک اسکريپت استفاده نمود. (در اغلب موارد يک بلاک اسکريپت کفايت خواهد کرد). در اکثر موارد ، ترجيج داده می شود که اسکريپت ها در ابتدای صفحه مستقر گردند ( قبل از هر کد
HTML ) . علت استقرار اسکريپت ها در ابتدای صفحه ، تشخيص اين موضوع است که سرويس دهنده در ابتدا اسکريپت ها را اجراء خواهد کرد ( قبل از انجام هر گونه عمليات مرتبط با عناصر موجود بر روی يک صفحه وب ) .

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

<script runat="server">

Sub Page_Load

...Visual Basic statements

End Sub


</script>

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

انواع ساختار شرطی
در اين رابطه از دو ساختار عمومی استفاده می گردد :

  • If ...Then ...Else : از ساختار فوق به منظور اجرای يک و يا چندين مجموعه خط کد پس از بررسی يک  و يا چندين شرط ، استفاده می گردد . مثلا" فرض کنيد در يک صفحه وب که مسئوليت نمايش اخبار را برعهده دارد ، قصد داشته باشيم در خصوص نمايش اخبار بين المللی و يا ورزشی ، اتخاذ تصميم نمائيم . از ساختار If ...Then می توان به منظور انتخاب عباراتی به منظور اجراء که ماحصل مقايسه های پيچيده ای  نظير عباراتی که از عملگرهای AND ,OR و يا NOT ، می باشند ، استفاده نمود .
  • Select Case : از ساختار فوق به منظور اجرای يک و يا چندين مجموعه خط با توجه به وجود حالات متفاوتی که يک متغير می تواند داشته باشد ، استفاده می گردد . مثلا" در يک صفحه وب که مسئوليت نمايش اخبار را برعهده دارد ، می توان از چندين آيکون که نشاندهنده نوع اخبار می باشند ، استفاده نمود . پس از کليک نمودن کاربر بر روی هر يک از آيکون ها ، اخبار مربوط به آن گروه خاص  نمايش داده می شود (سياسی ، تجاری ، ورزشی و يا اخبار مربوط به تکنولوژی) .

مروری بر ساختارهای تکرار
با استفاده از ساختارهای تکرار امکان اجرای مجموعه ای از خطوط ( کدها)  به دفعات مورد نياز ، فراهم می گردد .

انواع ساختار تکرار
در اين رابطه از سه ساختار عمومی استفاده می گردد :

  •  For...Next : از ساختار فوق به منظور تکرار خط و يا مجموعه ای از خطوط استفاده می گردد . در اين ساختار ، در ابتدا نسبت به دفعاتی که می بايست کدهای مورد نظر تکرار گردند ، شناخت لازم وجود دارد . برای مشخص نمودن دفعاتی که می بايست دستورات تکرار گردند ، می توان از توابع متفاوتی نظير Sizeof استفاده نمود .
  • Do While : از ساختار فوق به منظور تکرار خط و يا مجموعه ای از خطوط در مواردی که در زمان طراحی نسبت به دفعاتی که می بايست دستورات اجراء گردند ، آگاهی لازم وجود ندارد ، استفاده می گردد. در چنين مواردی لازم است که در ساختار تکرار نسبت به ادامه تکرار دستورات ، اتخاذ تصميم شود . بدين منظور شرط و يا شروط خاصی بررسی و ماداميکه نتيجه مثبت ( درست ) باشد ، دستورات تکرار می گردند .
  •  Fo ...Each : از ساختار فوق به عنوان گزينه ای مناسبتر  نسبت به For...Next در مواردی که  دارای مجموعه ای  از آيتم ها می باشيم و نمی دانيم چند مرتبه می بايست  عمليات تکرار انجام شود ، استفاده می گردد .

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

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

  • Subroutines : اين نوع برنامه ها را می توان با فراخوانی نام آنان به خدمت گرفت . پس از فراخوانی هر روتين مجموعه کدهای موجود در آنان اجراء شده و در ادامه کنترل به دستور پس از محل فراخوانی روتين برمی گردد .
  • Function : عملکرد اين نوع روتين ها مشابه Subroutine بوده و تنها تفاوت موجود ، برگرداندن يک مقدار به برنامه و يا محل فراخوانی تابع است .

ساختارهای  اشاره شده ، به منزله ستون فقرات هر برنامه ای  می باشند که  با ASP.NET نوشته می گردد .
 در ادامه با انواع عملياتی که می توان توسط هر يک از ساختارهای فوق انجام داد ، بيشتر آشنا می شويم :

مثال يک  :

خواسته

می خواهيم در خصوص نمايش صفحه A و يا صفحه B اتخاذ تصميم نمائيم .

راه حل

استفاده از ساختار تصميم گيری

علت ؟

ما صرفا" می خواهيم يکی از دو احتمال موجود را بررسی نمائيم  .

  

مثال دوم :   

خواسته

 نمايش ليست اعضای يک کلوپ شامل نام ، نام خانوادگی ، آدرس و ساير اطلاعات ذيربط

راه حل

استفاده از ساختار تکرار

علت ؟

ما نيازمند اجرای مجموعه کد مشابهی ( بازيابی اطلاعات مربوط به هر يک از اعضاء )  به دفعات مشخص می باشيم . ( تکرار برای هر يک از اعضاء تا زمانيکه ليست تمامی اعضاء نمايش داده شود . )

  

مثال سوم   

خواسته

 نمايش داده در يک جدول

راه حل

 ساختار تکرار

علت ؟

 ما نيازمند اجرای کد مشابهی ( ايجاد يک سطر در جدول ) به منظور ايجاد تمامی سطرهای مورد نياز می باشيم .

  

مثال چهارم :

خواسته

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

راه حل

 استفاده از يک Subroutine

علت ؟

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

  

مثال پنچم :

خواسته

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

راه حل

 استفاده از يک تابع

علت ؟

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

               

               

               

               

ساختارهای کنترلی  در VB.NET ( بخش دوم )

در بخش اول اين مقاله با اسکريپت های ويژوال بيسيک و ساختارهای کنترلی در VB.NET به صورت اجمالی آشنا شديم . در بخش دوم به بررسی ساختارهای تصميم گيری ، خواهيم پرداخت .
همانگونه که قبلا" اشاره گرديد ، با استفاده از ساختارهای تصميم گيری ، يک و يا چندين شرط بررسی و بر اساس نتايج بدست آمده ، دستور و يا دستوراتی اجراء و يا از اجرای دستور و يا دستوراتی صرفنظر می گردد . در
VB.NET از دو روش متفاوت  در اين رابطه استفاده می گردد : 

  • If ...Then : تعداد مسيرهائی را که می توان پس از بررسی يک عبارت شرطی انتخاب نمود ، اندک است  .
  • Select Case :تعداد مسيرهائی را که می توان پس از بررسی يک عبارت شرطی انتخاب نمود ، زياد است  . 

مثلا" در صورتی که در يک برنامه قصد طرح اين پرسش از کاربران را  داريم که :  " آيا می خواهيد قرار ملاقات خود را از طريق تلفن ، نهائی نمائيد ؟"قطعا" پاسخ به سوال فوق دو گزينه بيشتر نخواهد داشت (  پاسخ مثبت ( True ) و منفی ( False ) ) . بنابراين می توان در چنين مواردی از ساختار If...Then استفاده نمود . ولی در صورتی که از کا ربر پرسش شود که : " آيا می خواهيد قرار ملاقات خود  را از طريق تلفن ، فاکس و يا  Email ، نهائی نمائيد ؟" ، با توجه به تعداد گزينه های موجود ، ترجيح داده می شود که از ساختار Select Case استفاده شود .
قبل از پرداختن با جزئيات نحوه استفاده از ساختارهای فوق ، لازم است با برخی عملگرها که از آنان به منظور ايجاد عبارات شرطی استفاده می شود،بيشتر آشنا شويم .

عملگرهای مقايسه ای
عملگرهای مقايسه ای در VV.NET عبارتند از :

کاربرد

عملگر

 مساوی

 =

 کوچکتر از

>        

کوچکتر يا مساوی 

=>

 نامساوی

<>        

 بزرگتر

<        

 بزرگتر يا مساوی

 =>

عملگرهای منطقی
در VB.NET از عملگرهای منطقی متعددی استفاده می شود. جدول زير برخی از متداولترين آنان را نشان می دهد :

مثال

کاربرد

عملگر

  If  A=1 AND B=2 Then 

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

 AND

If  A=1 OR  B=2 Then

 درصورت درست بودن يکی از عملوندها ، شرط مورد نظر ارزش درست را پيدا خواهد کرد

OR

If  NOT A=1 Then

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

NOT

اولويت عملگرهای فوق به ترتيب OR,AND,NOT می باشد .

ساختار If...Then  

ساختار فوق دارای چهار بخش اساسی است :

  • يک عبارت که شامل يک و يا چندين شرط است که ماحصل آن True و يا False خواهد بود .
  • کد لازم  در صورتی که نتيجه عبارت شرطی ، درست باشد .
  • کد لازم در صورتی که نتيجه عبارت شرطی نادرست باشد ( اختياری )
  • يک عبارت که نشاندهنده پايان ساختار است .

برای ايجاد ساختار If...Then ازروش های متفاوتی استفاده می گردد . برای انتخاب گرامر مناسب می بايست به دو سوال فوق پاسخ داده شود  :

  • در مواردی که  نتيجه عبارت شرطی  False  گردد ، قصد انجام کار( و يا کارهای )  خاصی را داريد ؟ 
  • در صورتی که نتيجه عبارت شرطی درست باشد ، قصد اجرای بيش از يک دستور را داريد ؟

If..Then : ساده ترين روش استفاده ازساختار تصميم گيری است . در صورت استفاده از ساختار فوق و در مواردی که نتيجه عبارت شرطی نادرست ( False ) باشد ، نمی توان دستور ويا دستوراتی را اجراء نمود .

 If  A=1 Then TestMessage.Text = " نتيجه عبارت شرطی ، درست است "

در صورتی که قصد داشته باشيم پس از بررسی  عبارت شرطی و درست بودن آن بيش از يک دستور را اجراء نمائيم ، می بايست پس از درج دستورات مورد نظر ، از يک End If در قسمت پايانی دستورات ،  استفاده نمائيم .

If  A=1 Then
      TestMessage.Text = "
در صورت درست بودن شرط ، دو دستور اجراء می گردد "
       B = 2
End If

If...Then...Else : از ساختار فوق در مواردی که قصد داشته باشيم پس ازبررسی عبارت شرطی و با توجه به نتيجه آن ( درست و يا نادرست ) دستورات خاصی را اجراء نمائيم ، استفاده می شود . 

If  A=1 Then
      TestMessage.Text = "
در صورت درست بودن شرط ، اجراء می گردد"
Else
      TestMessage.Text = "
در صورت نادرست بودن شرط ، اجراء می گردد
End If

If...Then ...ElseIf  : با اين که استفاده از ساختار فوق به منظور تصميم گيری بندرت انجام می شود ، ولی در موارد خاصی لازم است که از اين ساختار استفاده شود. با استفاده از ساختار فوق می توان عبارات شرطی متفاوتی را با يکديگر ترکيب و بر اساس نتايج بدست آمده ، دستور و يا دستورات خاصی را با توجه به وضعيت بوجود آمده ، اجراء نمود .  بدين منظور لازم است که هر يک از حالات موجود را با استفاده از ElseIf  از يکديگر جدا نموده و در نهايت تمامی ساختار را با استفاده از End If  به پايان رساند .

If  A=1 Then
      TestMessage.Text = " A=1" 
ElseIf  A=2 Then
      TestMessage.Text = " A=2 " 
ElseIf  A=3 Then
      TestMessage.Text = " A=3 " 
End If

مثال : نحوه استفاده از ساختار If...Then
در اين مثال کامپيوتر عددی را به صورت تصادفی توليد نموده و از شما درخواست می شود که اين عدد را تشخيص دهيد  .

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

 <script language="vb" runat="server">
Sub Page_Load()
Dim theNumber As Integer
Dim theGuess As Integer

theNumber = int(10 * rnd) + 1

If Page.IsPostBack Then
   theGuess = Guess.SelectedItem.Valu

  If theGuess > theNumber then
    Message.Text = "<BR><BR>
شما عدد بزرگتری را تشخيص داده ايد <BR>عدد مورد نظر " &_
     "<B>" & theNumber & " </B>" & "
می باشد "
  End If

   If theGuess < theNumber then
     Message.Text = "<BR><BR>
شما عدد کوچکتری را تشخيص داده ايد <BR>عدد مورد نظر " &_
      "<B>" & theNumber & " </B>" & "
می باشد "
  End If

  If theGuess = theNumber then
    Message.Text = "<BR><BR>
حدس شما صحيح است"
  End If
End If
End Sub
</script>

<html dir=rtl>
<head></head>
<body>
<form runat="server">
چه عددی را بخاطر سپرده ام ؟
  <asp:dropdownlist id="Guess" runat="server">
    <asp:listitem>1</asp:listitem>
    <asp:listitem>2</asp:listitem>
    <asp:listitem>3</asp:listitem>
    <asp:listitem>4</asp:listitem>
    <asp:listitem>5</asp:listitem>
    <asp:listitem>6</asp:listitem>
    <asp:listitem>7</asp:listitem>
    <asp:listitem>8</asp:listitem>
    <asp:listitem>9</asp:listitem>
    <asp:listitem>10</asp:listitem>
</asp:dropdownlist><br><br>
  <input type="submit" value="
تشخيص عدد">
   <asp:label id="message" runat="server"/>
</form></body></html>

 مرحله دوم :  پس از ذخيره کد فوق در فايلی با نام ifthen.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :

مرحله سوم : انتخاب عدد مورد نظر و کليک بر روی دکمه "تشخيص عدد "

توضيحات :

  • با استفاده از کنترل <asp:dropdownlist> که اعداد يک تا ده را نمايش می دهد از کاربر خواسته ايم که عددی را انتخاب نمايد .
  • در کد نوشته شده دو متغير به اسامی theNumber و theGuess تعريف که از آنان به منظور ذخيره عدد توليد شده تصادفی  و عدد حدس زده شده توسط کاربر استفاده می گردد .
  • برای توليد اعداد تصادفی از تابع ()rnd استفاده شده است. تابع فوق ، يک عدد اعشاری بين صفر و يک را توليد می نمايد . برای داشتن يک عدد تصادفی بين يک تا ده ، می بايست عدد توليد شده  را در ده ضرب نمود . بدين ترتيب يک عدد بين صفر تا ده توليد می شود .
  • با استفاده از ساختار If...Then بررسی لازم در خصوص عدد انتخاب شده توسط کاربر و مقايسه آن با  عدد تصادفی توليد شده انجام و بر اساس آن پيام مناسبی  به کاربر ارائه خواهد شد .

ساختار Select Cast
يکی از چالش های استفاده از ساختار If...Then در مواردی است که قصد داشته باشيم  تعداد سه و يا بيش از سه وضعيت را بکمک آن مقايسه نمائيم . مثلا" در صورتی که بخواهيم يک کاربر را بر اساس انتخاب انجام شده به شش صفحه وب مجزاء هدايت نمائيم ، استفاده از ساختار If...then علاوه بر اين که کد برنامه را ناخوانا خواهد کرد ، سرعت اجرای کد نوشته شده نيز کندتر می گردد. در چنين مواردی می توان از ساختار Select Case استفاده نمود .

مثال : نحوه استفاده از ساختار Select Case

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

<script language="vb" runat="server">
  Sub Page_Load()
     If Page.IsPostBack Then
     Select Case(Destination.SelectedItem.Value)
       Case "
تهران":
          Message.Text = "
شما شهرستان تهران را برای مسافرت انتخاب نموده ايد"
       Case "
اهواز":
          Message.Text = "
شما شهرستان اهواز را برای مسافرت انتخاب نموده ايد"
       Case "
شيراز":
         Message.Text = "
شما شهرستان شيراز را برای مسافرت انتخاب نموده ايد"
      Case else
        Message.Text = "
شما شهرستان مورد نظر را انتخاب ننموده ايد"
    End Select
  End If
End Sub
</script>

<html dir=rtl>
<head></head>
<body>
  <form runat="server">
   
کدام شهرستان را برای مسافرت انتخاب می نمائيد ؟ <br><br>
    <asp:radiobuttonlist id="destination" runat="server">
      <asp:listitem>
تهران</asp:listitem>
      <asp:listitem>
اهواز</asp:listitem>
      <asp:listitem>
شيراز</asp:listitem>
   </asp:radiobuttonlist><br><br>
   <input type="submit" value="
ارسال درخواست"><br><br>
  <asp:label id="message" runat="server"/>
</form>
</body>
</html>

 مرحله دوم :  پس از ذخيره کد فوق در فايلی با نام selectcase.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :

مرحله سوم : انتخاب گزينه  مورد نظر و کليک بر روی دکمه " ارسال درخواست "

توضيحات :

  • با استفاده از کنترل <asp:radiobuttonlist> ، مجموعه ای از گزينه ها ارائه شده است .
  • با استفاده از ساختار Select Case بررسی لازم در خصوص گزينه انتخاب شده توسط کاربر انجام و متناسب با آن پيام خاصی در کنترل lablel نمايش داده می شود .
  • در صورتی که به هر دليلی يکی از گزينه های ارائه شده،  انتخاب نشود و يا خطای خاصی اتفاق افتاده باشد که داده انتخابی با هيچيک از موارد ذکر شده در ساختار Select Case مطابقت ننمايد ، بخش Case else ساختار Select Case انتخاب و دستورات موجود در اين بخش اجراء خواهند شد .

               

               

               

               

ساختارهای کنترلی  در VB.NET ( بخش سوم )

 آنچه تاکنون گفته شده است :

  • بخش اول : بررسی اجمالی ساختارهای کنترلی در VB.NET
  • بخش دوم : بررسی ساختارهای تصميم گيری

در بخش سوم به بررسی ساختارهای تکرار ، خواهيم پرداخت
VB.NET دارای چندين ساختار تکرار است :

·                                 For...Next

·                                 Do...While

·                                 Do...Until

·                                 For...Each

در اغلب موارد صرفا" از دو ساختار فوق ، استفاده می گردد . Do...While و Do...Until دارای عملکردی مشابه با يک تفاوت اساسی می باشند. از ساختار For...Each در زمان کار با آرايه ها و يا  Collections ، استفاده می شود. ( Collection يک شی است که خود شامل اشياء ديگری است ) .

ساختار For...Next
ساختار فوق دارای سه بخش اساسی است :

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

شکل عمومی ساختار For...Next :

For   LoopCounter = StartValue To EndValue
     .....
دستورات تکرارشونده  ....
Next LoopCounter

مثال زير نحوه استفاده از ساختار For...Next را نشان می دهد :

For   intCounter = 1 To 5
    Message1.Text = Message.Text1 & " Test Looping Structures " & "<br/>"
Next  intCounter

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

مثال : نحوه استفاده از ساختار For...Next
در اين مثال با ارائه يک DropDownlist و بر اساس انتخاب کاربر ، يک دستورالعمل  تکرار می گردد .

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

 <script language="vb" runat="server">
Sub Page_load()
  Dim number As Integer
  Dim counter As Integer
  If Page.IsPostBack then
    number = numberSelection.SelectedItem.value
    Message1.Text = ""
  For counter = 1 to number
    Message1.Text = Message1.Text & "
نحوه استفاده از ساختار تکرار " & "<br/>"
  Next counter
 End If
End Sub
</script>


<html dir=rtl>
<head>
<title>Loop Example</title>
</head>
<body>
<form runat="server">
لطفا" يک عدد را انتخاب نمائيد : <br><br>
<asp:dropdownlist id="numberSelection" runat="server">
   <asp:listitem >1</asp:listitem>
   <asp:listitem>2</asp:listitem>
   <asp:listitem>3</asp:listitem>
   <asp:listitem>4</asp:listitem>
   <asp:listitem>5</asp:listitem>
</asp:dropdownlist>
<br><br>
<input type="Submit" Value="
ارسال درخواست"><br><br>
<asp:label id="message1" runat="server"/>
</form>
</body>
</html>

 مرحله دوم :  پس از ذخيره کد فوق در فايلی با نام ForLoop.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت :

مرحله سوم : انتخاب عدد مورد نظر و کليک بر روی دکمه "ارسال درخواست "

ساختار Do...While
از ساختار فوق در مواردی استفاه می گردد  که نسبت به تعداد دفعاتی که می بايست فرآيند تکرار انجام شود ، شناخت اوليه ای وجود نداشته باشد .در ابتدا عبارت شرطی بررسی و در صورتی که ارزش آن TRUE باشد ، حلقه تکرار خواهد شد.
شکل عمومی ساختار
Do...While :

ِDo While  Expression test
     .....
دستورات تکرارشونده  ....
Loop  

ساختار Do...Until
همانگونه که در ساختار Do...While مشاهده گرديد ، عبارت شرطی در ابتدای حلقه قرار گرفته و پس از بررسی و در صورت درست بودن ، دستورات موجود در حلقه اجراء خواهند شد . با استفاده از ساختار Do...Until می توان عمليات بررسی شرط را در انتهای حلقه و پس از يک بار اجرای قطعی دستورات تکرار شونده ، انجام داد.
شکل عمومی
  ساختار Do...Until :

ِDo While  
     .....
دستورات تکرارشونده  ....
Loop  Until  Expression test

ساختار For...Each
ساختار فوق دارای عملکردی مشابه For...Next می باشد. با اين تفاوت که از آن  به منظور انجام عمليات مورد نظر در ارتباط با  هر يک از عناصر درون يک آرايه و يا يک Collection استفاده می گردد .

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

 <script language="vb" runat="server">
Sub Page_load()
   Dim Item As String
  
Dim StrArticles(2) As String
   StrArticles(0) = "
ساختارهای کنترلی - بخش اول "
   StrArticles(1) = "
ساختارهای کنترلی - بخش دوم "
   StrArticles(2) = "
ساختارهای کنترلی - بخش سوم "
  For Each Item In StrArticles
       Message.Text = Message.Text & Item & "<BR>"
Next
End Sub
</script>

<html dir=rtl>
<head>
<title>Loop Example</title>
</head>
<body>
<form runat="server">
<asp:label id="message" runat="server"/>
</form>
</body>
</html>



آدرس آموزشگاه کامپیوتر پایاتلفن تماس با آموزشگاه کامپیوتر پایاکانال تلگرام آموزشگاه پایا
مرکز آموزش های تخصصی پایا برگزار کننده دوره های آموزش کاربردی و تضمینی و مهارت های ویژه مشاغل
Top Computer Training School & IT Academy | in Iran , Tehran | Computer Skills Training | Computer tutorials | IT tutorials | Computer institute | Amoozeshgah Computer Paya
All Right Reserved 2005 - 2015- Designed by Institute of Computer PAYA -  Parviz Tariveh   email: info@PayaIT.com
تماس با آموزشگاه کامپیوتر پایاآموزشگاه کامپیوتر پایا