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

– مقدمه اي بر دات نت
براي اينكه بفهميم چرا دانت نت به نيازي اساسي براي برنامه نويسي تبديل شده است: بايد بدانيم قبل از دات نت برنامه نويسي چه شرايطي داشته است.
۱-۲ نگاهي به گذشته

IBM PC كه در سال ۱۹۸۱ معرفي شد داراي يك floppy drive بدون ديسك سخت و يك نمايشگر سبز فسفري با ۱۲۸ كيلو بايت رم بود. اين كامپيوتر توسط مجله Time (در حالي كه عكسش روي جلد مجله بود) به عنوان مرد سال معرفي شد. اين كار بسيار عجيبي بود. زيرا روي جلد اين مجله فقط جاي عكس رهبران و انسانهاي مشهور بوده است.
پيشرفت كامپيوتر بقدري سريع بود كه تنها ۲۰ سال بعد, كامپيوتر به چنان دستگاه قدرتمندي تبديل شد كه از اينترنت يا وسايل بي سيم براي ارتباط با ديگر كامپيوتر ها استفاده مي كرد. در حال حاضر همان طور كه مشاهده مي كنيد سيستم هاي كامپيوتري (از جمله خدمات اينترنتي) در تمام ابعاد زندگي انسان نفوذ كرده اند. حتي در ايران كه جزو كشورهاي در حال توسعه است و سيستم مخابراتي مناسبي ندارد اين امر كاملا مشاهده مي شود. اگر چه هنوز ميزان استفاده ما و نحوه آن با كشورهاي صنعتي بسيار متفاوت است. نكته جالب در مورد كاميپوتر اين است كه اين علم در همين جا متوقف نشده است و ما تقريبا هر همپاي پيشرفت سخت افزار, يا نرم افزار هستيم.

همپاي پيشرفت سخت افزار, نرم افزارها و زبانهاي برنامه نويسي هم پيشرفت كردند. بطوري كه در اوايل دهه ۱۹۸۰ برنامه نويسان از زبان c براي كارهايشان استفاده مي كردند. در آن زمان سيستم عامل ها singli task بودند. يعني هر برنامه اي كه اجرا مي شد تمام منابع سيستم عالم را در اختيار ميگرفت و تا زماني كه كار آن برنامه تمام نشده بود, برنامه ديگري نميتوانست اجرا شود. سيستم عامل MS-DOS (كه يك سيستم عامل single Task بود) در اين زمان ارائه شد. MSDOS به دليل استفاده از assembler سيستم عامل پر سرعت و كم حجمي بود. API هاي DPS تنها مجموعه اي از وقفه ها بودند.

در اوايل دهه ۸۰ پايه هاي API هاي ويندوز با استفاده از زبان c نوشته شد. اين API ها مخفيانه طراحي مي شدند تا كسي از نحوه كار آنها با خبر نشود. در آن API ها صدها تابع از نام هاي طولاني و بعضا مرموز وجود داشت. انتقال به ويندوز برنامه نويسي را دچار تحول اساسي كرد. برنامه نويس ها مي بايست براي برنامه هاي خود طراحي گرافيكي نيز انجام داده و از خواص multi tasking نيز استفاده مي كردند. سيستم عاملهاي multi task بر خلاف single task ها اين قابليت را دارد كه چندين برنامه را بطور همزمان اجرا كند. در آن زمان خيلي از برنامه نويسان در برابر استفاده از ويندوز ايستادگي كردند و مي گفتند برنامه نويسي در ويندوز كند, زمان گير و پيچيده است. شايد وقتي قسمت هاي بعدي اين كتاب را ببينيد بگوييد برنامه نويسي در ويندوز بسيار كار ساده اي است, اما در آن زمان ابزارهاي فعلي وجود نداشت, براي يك برنامه ساده هاي كه قرار بود در ويندوز اجرا شود و محيط گرافيكي داشته باشد. بايد هزاران خط كد نوشته مي شد. البته هم اكنون نيز بعضي از برنامه ها براي كنترل دقيق تر از ابزارهاي low level2 ترك استفاده مي كنند.

به دليل اين تغييرات و راحتي در استفاده, ويندوز در بسياري از كامپيوتر هاي روميزي به كار گرفته شد. در سال ۱۹۹۱ اولين نسخه ويژوال بيسيك ارائه شد. زباني ساده كارا براي كساني كه خود را درگير پيچيدگي هاي برنامه نويسي c نمي كردند.

ويژوال بيسيك تاريخ جالبي دارد. زباني كه به آرامي رشد كرد و اكنون به يكي از متداول ترين زبانهاي دنيا تبديل شده است. ويژوال بيسيك ۳ به ما امكان استفاده از بانك هاي اطلاعاتي را مي داد. ويژوال بيسيك ۴ امكان كامپايل كردن برنامه براي سيستم عاملهاي ۱۶ بيتي و ۳۲ بيتي را فراهم كرد, همچنين در اين نسخه امكان نوشتن com يا dll ايجاد شده بود. در نسخه ۱۵ امكان ساختن Activex control ها محيا شد و درآخر, در نسخه ۶ كل برنامه از ابتدا نوشته شد. كامپايلر كه از نسخه ۵ از حالت مفسري درآمده بود سرعت بيشتري به برنامه ها داد. همچنين امكان ساختن control ها براي وب و interface و inheritance نيز اضافه شد.

دنياي كامپيوتر بار ديگر نيز متحول شد و اين بار اينترنت محول اصلي تغييرات است. نياز ما به اينترنت حتي با سال گذشته قابل مقايسه نيست. امروزه اكثر برنامه ها از اينترنت محور اصلي تغييرات است. نياز ما به اينترنت حتي با سال گذشته قابل مقايسه نيست. امروزه اكثر برنامه ها از اينترنت استفاده مي كنند حتي در استراتژي جديد بعضي شركت هاي بزرگ تغيير ايجاد شده و ديگر برنامه ها براي نصب بر روي سي دي ارائه نمي شود و همه چيز web based خواهد بود.
۲-۲ دنياي NET

تمام اين تغييرات دست به دست هم دادند تا نيازهايي را به وجود آورند كه در نهايت منتهي به ايجاد دات نت شد. در دات نت كاربران مي توانند اطلاعاتشان را در محيط, زمان, مكان يا هر دستگاهي بازيابي كنند چند سال پيش استفاده از تكنولوژي دات نت مي توانيد براي گوشي تلفن همراه خود برنامه بنويسيد. حتي مايكروسافت تلاش مي كند پاي دانت نت را به دستگاه هاي خود پرداز (ATM) نيز باز كند. در حال حاضر پروژه هاي در دست اجراست كه برنامه هايي كه با دات نت نوشته مي شود را بتواند بر روي سيستم عامل هاي ديگر اجرا كند.

بر اينكه كمي بيشتر با مزاياي دات نت آشنا شويم مثالي از يكي از كاربردي ترين امكانات دات نت را ذكر مي كنم. فرض كنيد برنام تجاري داريم و شركتي از آن استفاده مي كند كه داراي چندين دفتر در سراسر كشور است. پس از مدتي مدير تصميم مي گيرد حقوق گروه خاصي از كارمندان را ۰٫۵ درصد افزايش دهد در مدل قديمي اعمال چنين تغييري مي توانست مشكلاتي به بار آورد, اگر برنامه از DCOM استفاده مي كرد مشكل اول پياده سازي خود DCOM بر روي اينترنت و بستر مخابراتي ايران بود و مشكل دوم بروز رساني آن. در ويندوز همان طور كه مي دانيد DLL ها نصب و در registry كدي براي آنها نوشته مي شود. هر DLL يا COM شماره اي مانند ۱٫۱٫۲٫۰۰۲ براي مشخص كردن نسخه آن است. اگر نسخه جديد DLL ما كه حاوي اطلاعات حقوق است را بدون در نظر گرفتن اين نكته نصب مي كرديم امكان داشت نسخه جديد DLL ما كه حاوي اطلاعات حقوق است را بدون در نظر گرفتن اين نكته نصب مي كرديم امكان داشت نسخه قبلي و جديد باهم تداخل پيدا كنند و برنامه ديگر كار نكند. در دات نت با استفاده از تكنولوژي به نام وب سرويس اين كار به راحتي انجام مي شود. كافي است اطلاعات جديد براي استفاده روي سرور قرار گيرد برنامه هاي دفترهاي سراسر كشور يا online از وب سرويس استفاده مي كنند يا اطلاعات جديد را از آن گرفته و بصورت offline آنها را به كار مي گيرند.

مشكلي كه در بالا براي DLL ها به آن اشاره شد DLL Hell نام دارد, اين مشكل در دات نت رفع گرديده است. DLL هايي كه در دات نت ساخته مي شوند احتياج به نصب شدن ندارند. كافي است فقط آن را كپي كنيم برنامه ما هر مقدار هم بزرگ و پيچيده باشد احتياج به نصب ندارد. كافي است با دستور xcopy آن را كپي كنيم. هر چند توصيه مي شود براي كاربر نهايي (end user) با استفاده از installer يك نسخه آماده نصب بسازيم زيرا برنامه installer مي تواند علاوه بر كپي كردن فايلها برنامه ما, روي دستكتاپ Icon ايجاد كند و برنامه را به programs در منوي start اضافه كند. قبل از دات نت اگر ما برنامه اي را uninstall مي كرديم امكان داشت DLL هايي را كه مربوط به ديگر برنامه ها بود را هم حذف كند واين باعث مي شود برنامه هاي ديگر هم از كار بيافتد. ولي در دات نت هر برنامه مي تواند كپي مخصوص خود را داشته باشد در هنگام uninstall شدن فقط فايلهاي مربوط به همان برنامه حذف مي شود.

۳-۲ توضيحاتي در مورد NET. Framework
NET. Framework برنامه اي است كه به عنوان يك لايه جديد روي سيستم عامل قرار مي گيرد, خود دات نت از لايه هاي مختلفي تشكيل شده است.
قلب دات نت CLR يا common language runtime است. CLR مسئول اجراي برنامه هاست. با استفاده از خصوصيات CLR امكان استفاده از برنامه هايي كه در يك زبان برنامه نويسي نوشته مي شود در زبان ديگر وجود دارد. در دات نت نوع هاي داده ها توسط CLR يكسان سازي شده اند تا در هنگام استفاده از آنها در زبان هاي ديگر مشكل پيش نيايد. البته اين هدف باعث شد بعضي از انواع داده الكترونيكي كه در ويژوال بيسيك ۶ مورد استفاده قرار مي گرفت مانند variant در دات نت حذف شود.

همان طور كه در شكل ۱-۱ مشاهده مي كنيد در بالاترين سطح كامپايلرهاي سي شارپ, ويژوال بيسيك C++ و ديگر زبان ها وجود دارد. در قسمت بعدي CLS يا common language specifications قرار گرفته ات. اين لايه مسئول بررسي اين است كه آيا كامپايلر و زبان خصوصيات پايه اي براي CLR يا تبادل اطلاعات با ديگر CLS ها را دارد يا خير. با اين وسيله تضمين مي شود كه وقتي شركتهاي ديگر زبان يا كامپايلرهاي ديگري برا دات نت بنويسند محصول آنها با ديگر محصولات هماهنگ خواهد بود.
Web serveces مسئول ايجاد محيط كاربري تحت وب (uder interface) است. علاوه بر اين كنترل ارتباط با وي, پروتكل هاي آن, امنيت و ديگر مسائل مربوط نيز بر عهده اين قسمت مي باشد. در دات نت برنامه اي كه براي win 32 app winsows rorm نوشته شود: با كمي تغيير مي تواند تحت وب و در web forms اجرا شود.
در مقابل web services قسمت interfaces قرار دارد. User interface مسئول برقراري ارتباط در محيط ويندوز با استفاده از winsows forms است.

Xml Data لايه هاي بعدي هستند. دات نت براي انتقال اطلاعات بر روي وب از xml استفاده مي كند.
Bcl يا Basic Class Library مسئول نگهداري كلاسهاي اصلي دات نت است هر چيزي در دات نت يك كلاس است و همه كلاس ها از كلاس اصلي system منشعب مي شوند (در فصل هاي آينده مطالب كاملي در اين مورد ذكر مي كنيم) اطلاعات كامل تر در مورد CLR و ساختارش, Data, Meta, JIT Compiler را به كتاب پيشرفته موكول مي كنيم.
۳- آشنايي با محيط ويژوال استديو دات نت

۱-۳ نصب ويژوال استوديو دات نت
در ايران نسخه هاي مختلفي از ويژوال استوديو دات نت وجود دارد كه بعضي از آنها كامل نيستند. بعضي نسخه ها مثال ها (samples) را ندارند و بعضي ديگر راهنماي MSDN را. لذا در هنگام نصب بايد اين نكته را در نظر داشته باشيد كه ممكن است در مراحل نصب بعضي فايلها وجود نداشته باشند و برنامه نصب كننده پيغام هاي خطاي زيادي بدهد. بهتر است در صورت مواجه شدن با چنين حالتي از نصب خارج شده, دوباره آن را شروع كنيد, ولي اين بار فراموش نكنيد كه فايلهايي را كه وجود نداشتند انتخاب نكنيد.
اولين مرحله نصب, بروز رساني سيستم شماست. نصب IE6, NET Framework از مراحل اساسي براي دات نت است. البته بايد توجه داشته باشيد كه ويژوال استوديو دات نت بر روي ويندوزهاي NT نصب مي شود و برنامه اي كه با دات نت مي نويسيد بر روي ويندوز ۹۸ با بالا قابل اجرا خواهد بود. ديسك بروز رساني معمولا ديسك آخر از سري سي دي هايي است كه شما خريداري كرديد. وقتي كه ديسك اول فايلهاي برنامه نصاب كپي شد از شما ديسك winsows component update را مي خواهد كه همان ديسك به روز رساني ماست. بعد از بروز رساني و احتمالا با راه اندازي مجدد سيستم دوباره ديسك اول را از شما مي خواهد.

در اين مرحله شما برنامه هايي كه مورد نيازتان است را از ليست انتخاب مي كنيد تا نصب شود. اگر ديسك سخت شما جاي كافي دارد از language tools هر دو زبان ويژوال بيسيك و سي شارپ را انتخاب كنيد, در صورتي كه از كامل بودن ديسكهاي خود مطمئن هستيد اجازه دهيد تمامي برنامه هايي كه خود برنامه نصب كنده انتخاب كرده است نصب شود. مسير و مكاني كه براي كپي شدن فايلها مورد نظرتان است را در سمت راست مي توانيد انتخاب كنيد. همچنين حجمي كه فايلهاي انتخاب شده اشغال ميكند و فضاي خالي پارتيشن ها نيز در سمت راست مشخص است. بعد از انتخاب هاي مناسب, بر روي Install Now كليك كنيد. بستگي به ميزان فايلهايي كه انتخاب كرديد زماني در حدود نيم ساعت طول مي كشد تا برنامه نصب شود و شما پيغام Done را ببينيد.

مرحله بعدي بروز رساني- خود ويژوال استوديو دات نت است. ويژوال استوديو دات نت نيز داراي سرويس پك است كه مي توانيد آن را از سايت مايكروسافت دريافت كنيد.
۲-۳ اجرا
بعد از نصب مي توانيد ويژوال استوديو را از منوي programs انتخاب و اجرا كنيد. در ويژوال استوديو دات نت بر خلاف نسخه هاي قبلي تمامي محيط هاي برنامه نويسي از يك IDE استفاده مي كنند وديگر مانند ويژوال بيسيك ۶ و ويژوال سي ۶ و Inter Dev نيست كه محيط هايي كاملا مجزا داشته باشند شكل ظاهري ويژوال استوديو را بسته به علاقه اي كه داريد مي توانيد انتخاب كنيد به چه صورت باشد.
ما در اينجا همه چيز را همان پيش فرض هاي ويژوال استوديو دات نت انتخاب مي كنيم. البته مي توان همه چيز را براي ويژوال بيسيك تغيير داد, ولي ما معتقديم در دات نت بايد بتوانيم از همه قابليت ها استفاده كنيم و خودمان را محدود به بيسيك يا سي شارپ نكنيم, اعمالي هست كه در يكي آسان تر از ديگري انجام مي شود, پس بهتر است از قابليتهاي هر دو بهره ببريم.

همان طور كه در شكل مي بينيد سه بخش در صفحه اصلي وجود دارد, بخش My Profile نياز به توضيح اضافه ندارد. بخش projects قسمتي است كه آخرين پروژه هاي باز شده را ليست كرده است, همچنين دكمه هايي براي باز كردن پروژه هايي كه در ليست وجود ندارد و ساختن پروژه جديد وجود دارد, در بخش online Resources نيز (در صورتي به اينترنت متصل باشيد) امكاناتي نظير دريافت فايل, نمونه برنامه, اخبار و ديگر عناوين وجود دارد.
حالا براي شروع كار از قسمت projects روي project New كليك كنيد. البته همين كار از منوي file> New> project هم مي توانيد انجام دهيد اين كار از طريق Toolbar از آيكوني كه شكلش را در زير مي بينيد. نيز امكان پذير است.

وقتي صفحه New project باز شود شكلي مانند زير به شما نمايش داده مي شود.
همان طور كه در شكل مي بينيد در سمت چپ نوع كلي پروژه و در سمت راست نوع دقيق آن را مي توانيد مشخص كنيد. انواع كلي مانند پروژه هاي ويژوال بيسيك, پروژه هاي سي شارپ يا پروژه هايي كه براي ساختن برنامه نصاب به كار مي روند مي باشد. وقتي روي هر نوع كلي كليك كنيد انواع پروژه هاي زير مجموعه آن را در سمت راست نمايش مي دهد. در شكل بالا بعضي از انواع پروژه هاي ويژوال بيسيك را مي بينيد, مانند, ASP, NET Web Application, class library, windows Application يا Application smart Device توجه كنيد و با كليك بر روي هر كدام از انواع پروژه ها روش نام گذاري و مكان ذخيره سازي آن نيز تغيير مي كند. در مدل windows Application شما نام پروژه خود را مي نويسيد و جعبه متن location پوشه كلي آن را انتخاب مي كنيد. در شكل زير مدل ASP.NET را مي بينيد كه در آنجا نحوه نام گذاري متفاوت است.
مسيرهايي كه به عنوان مسير پيش فرض وجود دارد. در منوي Tools> Options قابل تغيير است. براي ادامه كار يك winsows Application انتخاب و براي نام از myproject –۰۰۱ استفاده مي كنيم. سپس بر روي كليد ok كليك مي كنيم. محيط ويژوال استوديو بايد مانند شكل زير بشود.

محيط ويژوال استوديو از چند بخش مهم تشكيل شده است
solution Explorer
Toolbox
Server Explorer و محيط كد نويسي و طراحي فرم
۳-۳-solution Explorer
اين قسمت همان طور كه در شكل زير مشخص است نمايش دهنده كليه فايل ها و كلاس هاي پروژه ما در مورد كلاس ها و نحوه ساختن آنها در فصل هاي آينده مطالبي را خواهيم ديد.
در ويژوال استوديو اصطلاحي به نام Solution (راه كار) وجود دارد هر solution مي تواند حاوي تعدادي پروژه باشد. همان طور كه در شكل راست مي بينيد شاخه اصلي درخت فوق يك solution است و Myproject-001 يك پروژه يا يك شاخه از آن, با double click بر روي هر كدام از فايلها يا شاخه هاي درون solution Exporer محتويات آن فايل يا شاخه نمايش داده مي شود.
۴-۳ propertis

قسمت مهم ديگر پنجره properties است. Property به معني خاصيت مي باشد (با اين مفهوم در بحث oop بيشتر آشنا مي شويم), در اين پنجره شما خاصيت هاي هر يك از اجزايي كه بر رويش كليك كرده ايد را مي بينيد. در شكل زير خواص فرم اصلي كه به شكل پيش فرض در پروژه وجود دارد را مي بينيد.
درباره خواص معروف كنترل ها در بخش هاي بعدي توضيحاتي خواهيد ديد ولي در حال حاضر جلوي خاصيت Text عبارت myFirstApp را به جاي Forml مي نويسيم و كليد Enter را مي زنيم. اگر دفت كنيد عنوان فرم ما تغيير كرد.

پنجره ديگري كه دقيقا در همان مكاني كه properties وجود دارد, قرار گرفته است Dynamic Help است. در صورتي كه ويژوال استوديو دات نت را كامل نصب كرده باشيد, هنگام برنامه نويسي يا هنگام ساختن شكل ظاهري فرم يا هر چيزي كه تايپ مي كنيد: اگر ويژوال استوديو اطلاعاتي درباره آن داشته باشد, در آن پنجره نمايش مي دهد. اين امكان در صورتي خوب است كه كامپيوتر بسيار سريعي داشته باشيد زيرا براي هر كلمه اي كه تايپ كنيد ويژوال استوديو MSDN را جستجو مي كند
۵-۳ Toolbox

پنجره اي كه در بخش كناري سمت چپ قرار دارد و اگر موس را روي آن ببرد فعال مي شود و حاوي كنترل هايي براي استفاده بر روي فرم است را Tool box مي نامند.
كنترل هايي كه در اين منو و tab هاي آن وجود دارد را مي توانيد با drag& drop بر روي فرم قرار دهيد براي نمونه يك كنترل از نوع Button را بر روي فرم قرار مي دهيم.
بر روي button يك بار كليك مي كنيم تا خواص آن در پنجره properties نمايش داده شود. جلوي Text به جاي Buttonl عبارت Hello world را تايپ مي كنيم و كليد Enter را مي زنيم.
دو tab ديگر در زير Toolbox قرار دارد, اولي Explorer server است و با دومي در كتاب هاي ASP.NET آشنا مي شويد. در server Explorer ليست سرورهايي مانند SQLServer كه به آنها متصل هستيد يا قبلا متصل شده ايد يا ديگر اجزاي سرويس دهنده ويندوز وجود دارد توضيحات تكميلي در كتاب هاي پيشرفته تر خواهد بود.

همان طور كه مشاهده مي كنيد همه اين پنجره ها در اطراف صفحه به شكلي جاسازي شده اند, مي توانيد با drag & drop آنها را از حالت dock خارج كنيد تا در وسط يا هر جاي ديگر قرار گيرند. البته به شما پيشنهاد مي كنيم تركيب فعلي را تغيير ندهيد, بهترين حالت همين حالتي است كه طراحان- ماكيروسافت ايجاد كرده اند.
محيطي كه در وسط صفحه ديده مي شود همان محيط طراحي فرم است كه بايد شكل ظاهري برنامه خود را نقاشي كنيد. مي توانيد عكس, منو, ليست, جعبه متن و خيلي كنترل هاي ديگر بر روي آن قرار دهيد براي ديدن محيط كد نويسي دو بار بر روي Button كه ساختيم كليك مي كنيم تا شكلي مانند زير ظاهر شود.

اينجا محيط متني است. محيطي كه بخش اصلي كار ما به عنوان برنامه نويس با آن مي باشد. اين قسمت از ويژوال استوديو دات نت نيز از شكل tab استفاده مي كند, يعني همان طور كه در بالاي شكل مي بينيد نوشته است form 1. Vs [Design] اگر به روي آن كليك كنيد دوباره محيط طراحي شكل ظاهري فرم نمايان مي شود. به همين ترتيب مي توانيد تعداد زيادي فرم يا فايل باز شده داشته باشيد بدون اينكه مزاحم يكديگر باشند. در مورد اينكه هر يك از بخش هاي اين نوشته اي كه مي بينيد بيانگر چه مطلبي است در فصلهاي آينده توضيحاتي خواهيد ديد ولي در اينجا براي اينكه اولين برنامه مان را نوشته باشيم كه خط كد مي نويسيم. بين End sub, private sub ي كه در شكل مشخص است اين خط را مي نويسيم
اگر دقت كرده باشيم وقتي بعد از تايپ Message Box نقطه را تايپ كرديم يك ليست برايمان باز شد و وقتي show را تايپ كرديم عملا مانند اين بود كه show را از ليست انتخاب كنيم. به اين قابليت پيشرفته intellsence مي گويند.

اين يكي از مفيد ترين تكنولوژي هايي است كه مايكروسافت در اختيار برنامه نويسان قرار داده تا تمامي خواص و اجزاي اشيا را به خاطر نسپارند. ويژوال بيسيك بجاي ما خواص اشيا را حفظ مي كند, ما فقط كافي است نگاهي به ليست بيندازيم. البته در مورد اينكه در اين ليست چه چيزهايي نمايش داده يم شود مفصل توضيح خواهيم داد.
حالا اولين برنامه حاضر است, كافي است مانند تمامي نسخه هاي ويژوال بيسيك كليد F5 را بزنيم برنامه ما اجرا مي شود و وقتي بر روي كليد آن كليك كنيم شكلي مانند زير نمايش داده مي شود.

براي اجرا از toolbar شكلي مانند play را هم مي توانيد انتخاب كنيد:
ويژوال استوديو داراي toolbar هاي بسيار زيادي است كه شما به عنوان كاربر حرفه اي ويندوز با اسامي آنها آشنايي داريد.
يكي از مفيد ترين امكانات ويژوال استوديو امكان نماي شماره خط برنامه است. اگر اين قاطعيت بصورت پيش فرض فعال نبود، براي فعال كردن آن به منوي Tools > options مي رويم و در آنجا مطابق شكل زير در قسمت Display علامت چك را براي line Numbers فعال مي كنيم.
۴- مفاهيم پايه

۱-۴ آشنايي با الگوريتمها
هر برنامه كامپيوتري به منظور حل كردن يا چند نوشته مي شود. بعضي از مساله ها را مي توان به راحتي با يك فرمول رياضي حل كرد ولي بسياري از مساله ها با فرمولهاي رياضي قابل حل نيستند. فرض كنيد به ما ده عدد غير تكراري داده شده و از ما خواسته اند عدد x را در آنها پيدا كنيم. راه حلي كه ما استفاده مي كنيم اين است كه ابتدا عدد x را با اولين عنصر از آن ده عدد مقايسه مي كنيم، اگر درست بود مي گوييم اولين عدد x است واگر درست نبود عدد x را با دومين عدد مقايسه مي كنيم. اين كار را آن قدر ادامه مي دهيم تا مقدار يكي از اعداد برابر x باشد يا اينكه به انتهاي ليست اعداد برسيم، به روش حل مرحله به مرحله مساله، الگوريتم مساله مي گويند. كه مبتكر آن خوارزمي، دانشمند ايراني، است.
الگوريتم سه جز پايه دارد. توالي، انتخاب و تكرار.
۱-۱-۴- توالي
گفتيم الگوريتم روش حل مرحله به مرحله يا قدم به قدم يك مساله است. معمولا هر مرحله از الگوريتم را در يك خط جدا مي نويسند و به آن يك دستور مي گويند. دستورات بطور متوالي و پشت سر هم اجرا مي شوند. براي مثال الگوريتم شكستن يك شيشه (!) بصورت زير است:

۱-يك سنگ از روي زمين پيدا كن
۲- سنگ را در دست بگير
۳-شيشه مورد نظر را پيدا كن
۴-هدفگيري كن
۵- سنگ را بطرف شيشه پرتاب كن
۶- پايان
با الگوريتم اجرا كردن ويژوال بيسيك دات نت بصورت زير است
۱- نشانگر موس را روي دكمه start ببر.
۲- كليك كن.
۳- نشانگر موس را روي programs ببر.
۴- كليك كن.
۵- نشانگر موس را روي شاخه Microsort Visual .Net ببر.
۶- كليك كن.
۷- نشانگر موس را روي آيتم Microsoft Visual studio ببر.
۸- كليك كن
۹- پايان
دستورات يك الگوريتم بطور متوالي واز بالا به پايين اجرا مي شون و هر تغييري كه يك دستور در محيط ايجاد كند روي دستورات بعدي تاثير مي گذارد. به الگوريتم زير توجه كنيد:
۱- x را برابر ۲+۳ قرار بده.
۲- Y را برابر ۱۰ قرار برده.
۳- Z را برابر y+x قرار بده .
۴- Z را برابر x-y قرار بده.
۵- پايان

بر طبق آنچه در مورد توالي آموختيم ابتدا x مقدار ۳+۲ مي گيرد بنابراين مقدار آن برابر ۵ مي شود. اين تغيير مقدار x از مقدار قبلي (كه نمي دانيم چند بوده) به مقدار فعلي (عدد ۵) مي تواند روي دستورات بعدي تاثير گذار باشد. دستور دوم مقدار قبلي y را به ۱۰ تغيير مي دهد. و دستور سوم مقدار x و y برابر با ۵ و در z قرار مي دهد. منظور از مقدار x و y آخرين مقداري است كه درآنها قرار گرفته .پس مقدار x برابر با ۵ و y برابر با ۱۰ است. در نتيجه مقدار z برابر با ۱۵ خواهد شد. اين همان تاثير مراحل قبلي روي مرحله بعد از خودش است. خط چهارم نيز ار مراحل قبلي تاثير مي گيرد اما دقت كنيد كه در اين مرحله بار ديگر به z مقدار داده مي شود پس مقدار فعلي z اهميتي ندارد (همانطور كه در مراحل يك ودو، مقدار x و y قبل از مقدار دهي اهميتي نداشت) و z برابر ۵ مي شود

۲-۱-۴ انتخاب
يكي ديگر از اجزاي پايه يك الگوريتم، انتخاب است. ما در هر مرحله از يك الگوريتم مي توانيم بسته به شرايط تصميم بگيريم كه مرحله بعدي مرحله چندم باشد. الگوريتم روشن كرد كامپيوتر مي تواند به شكل زير باشد.
۱-كليد power كامپيوتر را فشار بده.
۲- كليد power مونيتوز را فشار بده.
۳- پايان
در نگاه اول اين الگوريتم درست بنظر مي رسد. ولي اگر مونيتور يا كامپيوتر روشن باشند، فشار دادن دكمه باعث خاموش شدن آنها مي شود و پس الگوريتم درست كار نكرده است. الگوريتم اصلاح شده با استفاده از انتخاب در زير آمده است:
۱-اگر كامپيوتر خاموش است
۱-۱ كليد power كامپيوتر را فشار بده.
۲- اگر مونيتور خاموش است
۲-۱ كليد power مونيتور را فشار بده.
۳- پايان

اگر شرط مرحله اول برقرار باشد، دستورات زير مجموعه آن انتخاب مي شوند. در غير اينصورت آن دستورات انتخاب نخواهند شد. و دستور بعدي دستور ۲ خواهد بود. براي مرحله دوم نيز شرايط به همين شكل است .
۳-۱-۴ تكرار

سومين جزء پايه از اجزاي الگوريتم، تكرار است. با استفاده از تكرار مي توانيم يك يا چند مرحله (دستور ) از الگوريتم را به تعداد دفعات خاص يا تا وقتي كه شرايطي خاص برقرار شود تكرار كنيم. الگوريتم جستجويي كه در ابتدا بحث مطرح كرديم در زير بشكل ساختيافته تري آمده است.
۱- x و n1 تا n10 را دريافت كن.
۲- I را برابر با ۰ قرار بده.

۳- كارهاي زير را تا وقتي y با x برابر نيست تكرار كن.
۴- I را برابر i+1 قرار بده.
۵- اگر I بزرگتر از ۱۰ است برو به ۵٫
۶- Y را برابر از ۱۰ است برو به ۵ .
۷- I را اعلام كن.
۸- پايان
در اينجا مراحل زير مجموعه ۳ تا وقتي كه y با x برابر نيست اجرا مي شوند.

يك الگوريتم را مي توان مانند اين مثالها به زبان فارسي نوشت، يا به زبان انگليسي يا با يك زبان برنامه نويسي كامپيوتري. وقتي يك الگوريتم به يك زبان برنامه نويسي كامپيوتري بيان شود، به آن برنامه كامپيوتري مي گوييم.
۲-۴- آشنايي با شي گرايي
آشنايي با شي گرايي از اين جهت براي ما لازم است كه ويژوال بيسيك دات نت يك زبان برنامه نويسي شي گرا است و تمام مفاهيم آن بر مبناي شي گرايي بنا نهاده شده.
۱-۲-۴ چرا شي گرايي؟

اواخر دهه ۱۹۶۰ كه شيي گرايي اولين قدمهاي خود را بر مي داشت: زبانهاي برنامه نويسي رويه اي مانند C.pascal و Fortran در اوج قدرت بودند. اين نسل از زبانهاي برنامه نويسي بطور ساده به كامپيوتر مي گويند كه چه كاري را انجام دهد. مثلا يك عدد از ورودي بگير، آن را ۱۰ برابر كن وسپس نمايش بده. به عبارت ديگر اين زبانها (زبانهاي رويه اي) شامل ليستي از دستورات هستند كه بدنبال هم اجرا مي شوند.
اما وقتي همه دستورات بدنبال هم نوشته شود حتي بهترين برنامه نويسها هم نمي توانند ازآن سر در بياورند. پس براي سامان بخشيدن به اين وضعيت هر برنامه را به تعداد زير برنامه (تابع) تقسيم كردند.

هر چند كه اين سازماندهي مشكلات را تا حدودي رفع مي كند اما در برنامه هاي بزرگ، آشفتگي باز هم نمايان مي شوند. مشكل اين روش كجاست؟ در حقيقت مشكل اصلي مربوط به وضعيت داده ها در اين روش برنامه نويسي مي شوند. مشكل اين روش كجاست؟ در حقيقت مشكل اصلي مربوط به وضعيت داده ها در اين روش برنامه نويسي مي شوند. مشكل اين روش كجاست؟ در حقيقت مشكل اصلي مربوط به وضعيت داده ا در اين روش برنامه نويسي است (در يك برنامه كه ۲ را با ۳ جمع مي كند، داده ها ۲ و ۳ هستند و در يك برنامه انبارداري، داده ها كالاهاي موجود در انبار)
۲-۲-۴ كم ارزش بودن داده ها

در برنامه نويسي رويه اي (ساختيافته) داده ها بسيار كم ارزشند وتاكيد بر روي (انجام يك كار) است. همانطور كه گفتيم هر زير برنامه (كاري انجام مي دهد) اما براي ما داده ها بيشتر از توابعي كه كارهايي بر روي آنها انجام مي دهند. اهميت دارند. براي مثال در يك فروشگاه آنچه بيشترين اهميت را دارد، كالاها هستند: نه كسي كه تعداد آنها را مي شمارد ياكسي كه آنها را به مشتري مي دهد.
۳-۲-۴ دسترسي به داده ها

در برنامه نويسي رويه اي اگر تعداد زير برنامه هايي (توابعي) كه مي خواهند به يك داده دسترسي داشته باشند بيشتر از يكي باشد، بايد آن داده بصورت سراسري تعريف شود و در اختيار تمام زير برنامه ها قرار بگيرد. اين وضعيت را مي توان به جا گذاشتن اسناد محرمانه در ورزشگاه صد هزار نفري آزادي تشبيه كرد! هرگز نمي توانيم اطمينان داشته باشيم كه يك داده سراسري فقط توسط زير برنامه هايي كه ما مجاز مي دانيم تغيير داده شود.
۴-۲-۴ عدم شباهت به دنياي واقعي

يك زير برنامه مشابه چه چيزي در دنياي واقعي است؟ داده ها مشابه چه چيزهايي هستند؟ اجازه بدهيد در مورد يك مثال خاص صحبت كنيم. فرض كنيد مي خواهيم برنامه اي براي كنترل يك آسنانسور بنويسيم. در يك چنين برنامه اي چه توابعي داريم؟ چه داده هايي داريم؟ در يك فروشگاه چطور؟ جواب دادن به اين سوالها واقعا سخت است. چون توابع و داده ها هيچ معادلي در دنياي واقعي ندارند. درحقيقت توابع در برنامه نويسي رويه اي فقط يك تكه از برنامه هستند و دلالت بر انجام يك كار دارند. پس نمي توان براي آنها نمونه اي در دنياي واقعي پيدا كرد.
۵-۲-۴- شي گرايي

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

كلاس (class): در مدرسه ياد گرفتيم كه چطور اشيا را طبقه بندي كنيم. بلوط را در طبقه درختها و گرانيت را در طبقه سنگها قرار مي داديم. مفهم (كلاس) در برنامه نويسي شي گرا مانند مفهوم طبقه است. البته درمودر طبقه بندي، دنياي واقعي با برنامه نويسي شي گرا تفاوت كوچكي دارد. در دنياي واقعي اشيايي كه وجود دارند را طبقه بندي مي كنيم. اما در برنامه نويسي شي گرا اول يك كلاس (طبقه ) تعريف مي كنيم سپس شي را به عنوان نمونه اي از آن كلاس (طبقه) ايجاد مي كنيم (شايد اگر دنياي واقعي را خودمان ايجاد مي كرديم آنجا هم از همين روش استفاده مي كرديم) . به عبارت ديگر يك كلاس مي گويد كه اشياء اين كلاس (طبقه) چه داده هايي دارند. البته كلاس مشخص نمي كند كه اين داده ها چه مقدارهايي دارند. همچنين كلاس تعيين مي كند كه اشيايي كه از اين كلاس ايجاد مي شوند چه متدهايي دارند و چه رويدادهاي مي تواند براي آنها اتفاق بيفتد.

ويژوال بيسيك دات نت استاندارد حدود ۷۰۰۰ كلاس دارد، علاوه بر اينها ما مي توانيم كلاسهاي مورد نياز خودمان را از اينترنت دريافت با خودمان كلاس جديدي ايجاد كنيم.
داده ها: هر شي اطلاعاتي به ما مي دهد. كه به آنها داده (data) مي گوييم، براي مثال شي صندلي در باره رنگ وزنش اطلاعاتي به ما مي دهد. بعضي از اطلاعات يك شي را مي توان تغيير داد مي توانيم رنگ يك صندلي را تغيير دهيم. اما بعضي اطلاعات قابل تغيير نيستند. اطلاعات، در برنامه نويسي شي گرا به دو گروه تقسيم مي شوند. به يك گروه آن فيلد (Field) و به ديگري خاصيت (property) مي گويند. بطور غير رسمي از واژه خاصيت (property) براي فيلد نيز استفاده مي شود.
تذكر: كلاس نمي گويد وزن شي چقدر است كلاس فقط مي گويد كه نمونه هايي از اشياء كه از روي اين كلاس (صندلي) درست مي شوند داده اي به نام وزن دارند كه يك عدد در خود نگهداري مي كند.

متد (Method): كاري كه شي مي تواند انجام دهد. توانايي يا قابليت انجام يك عمل مثلا شي آدم توانايي راه رفتن، شي آسانسور قابليت بالا يا پايين رفتن و شي بستني فروشي توانايي فروختن بستني دارد. متدها بين نمونه هاي مختلف يك كلاس مشتركند و بر خلاف خاصيتها، شي نمي تواند قابليتهايش را تغيير دهد. در عمل متدها همان زير برنامه هاي زبانهاي رويه اي هستند كه بطور سازمان يافته اي در برنامه نويسي شي گرا مورد استفاده قرار گرفته اند. به متدها تابع عضو هم گفته مي شود.
رويداد (event): رويداد ها تغيير وضعيت شي را به ما اعلام مي كنند وقتي در زندگي روزمره مي گوييم: (شيشه شكست) مانند اين است كه در برنامه نويسي شي گرا بگوييم (رويداد شكستن شيشه فعال شد) وضعيت شيشه تغيير كرده است. وقتي كليد برق را فشار مي دهيم وضعيت آن تغيير مي كند و رويداد (فشرده شدن) براي آنها فعال مي شود.
تعريف دقيقتري از شي: شي تركيبي از داده ها، توابع عضو و رويدادها است. به عبارت ديگر: شي يك واحد داده خودشمول است كه توابعي كه براي كار با آن لازم است درون خويش قرار دارد .

۳-۴ مروي بر مشكلات زبانهاي رويه اي
آيا واقعا شي گرايي مشكلات زبانهاي رويه اي را حل كرده است؟ مشكل اول ارزش كم داده ها بود كه اين مشكل حل شده است. چون جز اصلي برنامه نويسي شي گرا (شي) است كه در حقيقت همان داده ما است. مشكل بعدي امنيت دسترسي به داده ها بود. در برنامه نويسي شي گرا هر شي مي تواند داده هاي خود را طوري محافظت كند كه هيچ شي ديگري جز خودش نتواند آنها را تغيي بدهد يا حتي فقط شباهت با دنياي واقعي ماند. اين شباهت بقدري زياد است كه ما براي توضيح دان شي گرايي از دنياي واقعي كمك گرفتيم.

۱-۳-۴- مقايسه با ميز غذا خوري
رابرت لي فور در كتاب برنامه نويسي با c++ خودش براي نشان دادن تفاوت برنامه نويسي شي گرا و رويه اي از يك ميز غذا خوري استفاده كرده است.
يك مهماني با ۳۰ مهمان (تابعها) با تصور كنيد كه همه دور يك ميز نشسته اند و غذا (داده ها) بين آنها روي ميز است دست همه مهمانها به همه غذا ها مي رسد و بخاطر همين هيچوقت از ديگري براي برداشتن غذا كمك نمي خواهند يكي از مهمانها مي خواهند كباب را از آنطرف ميز بردارد وبشقابش يكي ديگر مي خورد. آستين يكي در خورشت فرو مي رود و ديگري بجاي اينكه سوپ را در بشقاب خودش بريزد روي دست بقل دستي مي ريزد. اين وضعيتي است كه در برنامه هاي رويه اي پيش مي آيد. حال فرض كنيد كه بجاي يك ميز ۳۰ نفره از ۶ ميز ۵ نفره استفاده شود. و غذاهاي مختلفي روي ميزها چيده شود. مهمانها سر ميزهايي مي نشينند كه به غذاي آن علاقه بيشتري دارند و هر كدام كه غذاي ميز ديگر را خواستند، از يكي از كساني كه سر آن ميز نشسته است مي خواهند كه غذا را به آنها بدهد. اين وضعيت شبيه وضعيت برنامه نويسي شي گرا است.
۲-۳-۴- شي ما چه جزيياتي لازم دارد؟

آيا براي ايجاد يك شي بايد همه جزييات آن شي را ايجاد كنيم؟ جواب منفي است. ما از شي فقط چيزهايي را ايجاد مي كنيم ه به آنها احتياج داريم. در يك برنامه ي بستني، به يك بستني فروشي احتياج داريم. بستني فروشي طول، عرض، ارتفاع، آدرس، رنگ در، شكل كاشي هاي ديوار، رنگ سقف، تعداد بستني، تعداد نون بستني، تعداد كارمندف تعداد و حجم يخچال و هزار و يك داده ديگر دارد. اين شما هستيد كه تشخيص مي دهيد كدام داده براي شي بستني فروشي در برنامه لازم ولازم و كدام اضافه است. در حقيقت ما قبول مي كنيم كه دنياي واقعي پيچيده تر از آن است كه بتوانيم آن را بطور كامل ايجاد كنيم. پس با حذف كردن بعضي بخشهاي اضافه (كه به كار ما مربوط نيست) به بخشهاي باقيمانده بيشتر مي پردازيم. به داده اي كه اينگونه خلاصه شده است، داده مجرد يا انتزاعي (abstract) هم گفته مي شود. به داده مجرد بعلاوه توابع مورد نيازش يك (نوع داده مجرد (Abstract Type) مي گويند. حال مي توانيم بگوييم كه كلاس يك نوع داده مجرد (انتزاعي ) است.
۳-۳-۴- آيا شي بايد در دنياي واقعي وجود داشته باشد؟
جواب خير است. زبان برنامه نويسي هيچ اهميتي نمي دهد كه شيي كه ما ايجاد مي كنيم در دنياي واقعي وجود دارد يا خير و هيچ اطلاعي هم در اين باره نمي دهد. اگر هم شي مانند آنچه مي خواهيد ايجاد كنيد در دنياي واقعي وجود دارد لازم نيست حتما شي شما همان مشخصات را داشته باشد. شايد شما كاملا در اين زمينه آزادي عمل داريد.
تذكر: در نهايت اينكه هر چند زبانهاي شي گرا به شما اين قابليت را مي دهند كه برنامه هاي شي گرا بنويسيد ولي اين كاملا به طرز فكر شما بستگي دارد و اينكه تا چه حدي شي گرا كار كنيد. عملا مي توان در يك زبان شي گرا هم كاملا رويه اي برنامه نوشت. در اين صورت بسياري از قابليتهاي زبان را بكار نبرده ايد.
۴-۴- داده هاي پايه در VB-NET
گفتيم شي نمونه اي از يك كلاس مي باشد و از طرفي، شي از داده ها و توابع تشكيل شده است. داده هايي كه در ايجاد يك شي استفاده مي شوند انواع مختلفي دارند، پركاربردترين و عمومي ترين اين داده ها پايه هستند، در اين فصل با داده هاي پايه در VB.NET آشنا خواهيم شد و خواهيم ديد كه NB.NET امكان ايجاد چه داده هايي را به ما مي دهد. يا به عبارت ديگر چه نوع داده هايي پايهاي در VB.NET تعبيه شده است. بعضي از انواع داده اصلي در VB.NET عبارتند از:
نوع داده براي ذخيره يك مقدار نمونه
Short عدد صحيح كوچك ۳۰۰۰۰
Integer عدد صحيح بزرگ ۱۲۳۰۰۰۰۰۰
Long عدد صحيح بسيار بزرگ ۱۸۴۴۶۷۴۴۰۷۳۷۰۹۵۰
Single عدد صحيح اعشاري ۴۵۰٫۴۳۵۰
Double عدد اعشاري با دقت مضاعف ۷٫۹۲۲۸۱۶۲۵۱۴۲۶۴۳۳۵
Char كاراكتر يونيكد (د)
String رشته از كاراكترهاي يونيكد، يك متن (visual Basic. NET)
Boolean مقدار false)) يا (true) true
1-4-4- نوع داده هاي صحيح

هر داده از نوع داده صحيح مي تواند يك عدد صحيح مي تواند يك عدد صحيح در خود نگه دارد. اعداد صحيح، اعدادي هستند كه مي توانند مثبت يا منفي باشند ولي نمي توانند اعشار داشته باشند. ويژوال بيسيك سه نوع داده براي ذخيره كردن اعداد صحيح در نظر گرفته است. تفاوت نوع داده هاي صحيح مختلف باهم در اندازه عددي است كه مي توانند در خود نگه دارند و حافظه اي كه اشغال مي كنند است.