يك زبان برنامه نويسي چيست؟
از يك نگاه، ميتوانيم بگوييم كه يك زبان برنامه نويسي به چيزي گفته ميشود كه توانايي تـصميم گيـري داشـته باشـد . كامپيوترهـامعمولا خيلي سريع و با دقت ميتوانند تصميم گيري كنند اما متاسفانه، فقط در زمينه هاي بسيار ساده ميتوانند اين كار را انجا م بدهند.مثلا “آيا اين عدد بزرگتر از سه است؟” و يا “آيا اين ماشين آبي است؟” .
اگر شما بخواهيد يك تصميم گيري پيچيده را به وسيله كامپيوتر انجام دهيد، ابتدا بايـد آن را بـه قـسمتهاي كـوچكتري كـه توسـطكامپيوتر قابل فهم باشد تقسيم كنيد . معمولا براي فهميدن اين كه چگون ه يك تصميم گيري پيچيده را به چند قسمت سـاده تقـسيمكنيد ميتوانيد از الگوريتم ها استفاده كنيد .
براي نمونه يك مسئله كه حل آن براي كامپيوتر خيلي سخت است، تشخيص چهره انسانها است . شـما نميتوانيـد بـه يـك كـامپيوتربگوييد كه “آيا اين عكس تصويري از ماري است؟ “، بلكه باي د اين مسئله را به چند مسئله كوچكتر كه توسـط كـامپيوتر قابـل فهـم باشد تقسيم كنيد تا كامپيوتر بتواند به آنها پاسخ صحيح بدهد .
سوالاتي كه شما ميتوانيد از كامپيوترها بپرسيد و بر اساس آنها تصميم گيري كنيد معمولا داراي جواب بله و يا خيـر هـستند . ايـن دوجواب معمولا با عنوان درست و غلط و يا 0 1 و نيز در نظر گرفته مي شوند . در زمان نوشتن نرم افزار نمي توانيد بر اساس پاسـخ بـه سوال “10 در مقايسه با 4 چه قدر بزرگتر است؟” تصميم گيري كنيد. بلكه بايد اين سوال را به صورت “آيا 10 از 4 بزرگتـر اسـت؟ “بپرسيد. تفاوت اين دو سوال بسيار ري ز و در عين حال مهم است . جواب سوال اول به صورت بله و يا خير نيست اما جواب سـوال دومبه اين صورت است . البته همانطور كه ميدانيد كامپيوتر قادر است به سوال اول هم پاسخ بدهد، امـا بـر اسـاس ايـن پاسـخ نميتـوان تصميم گيري كرد . براي پاسخ سوال اول كامپيوتر مقدار 4 را از 10 كم ميكند و حاصل را نگهداري ميكنـد تـا شـما بتوانيـد از آن درقسمتهاي ديگر برنامه خود استفاده كنيد .
ممكن است كه فكر كنيد تصميم گيري فقط بر اساس بله و يا خير يك محدوديت است، اما واقعاً اين طور نيـست . حتـي در زنـدگيروزمره نيز تصميم هايي كه مي گيريم نوعي از بله و خير است. وقتي شما ميخواهيد راجع به موردي تصميم بگيريـد، يـا آن را قبـول ميكنيد (بله، درست و يا ) 1 يا آن را رد ميكنيد (نه، غلط يا ).در اينجا از #C به عنوان زبان برنامه نويسي خود استفاده ميكنيد، اما همانطور كه ميدانيد جنبه مهم برنامه نويسي اين استكه زبان مورد استفاده در آن مهم نيست . در حقيقت مي توانيم بگوييم برنامه نويسي مستقل از زبان برنامه نويسي اسـت . هـر برنامـهاي، با هر شكل و ظاهري كه باشد و هر زباني كه نوشته شده باشد، از متدها (توابع و زيربرنامه ها: چندين خط كد كه يـك الگـوريتم خاص را اجرا ميكنند و) متغيير ها (مكاني براي نگهداري و تغيير داده هاي برنامه ها ) تشكيل شده است .
متغيير ها :
متغيير مكاني است كه شما در طول كار الگوريتم خود مقداري را در آن ذخيره مي كنيد . بعدها شما مـي توانيـد بـر اسـاس مقـدار آن متغيير تصميم گيري كنيد (براي مثال “آيا اين متغيير برابر 79 است؟” و يا “آيا اين متغيير بيشتر از 4 است؟”) يا عمليـات رياضـي ومحاسباتي بر روي آن انجام دهيد ( مثلا “متغيير را با 2 جمع كن.” و يا “متغيير را در 6 ضرب كن”) يا چيزهاي ديگر .
كار با متغيير ها :
قبل از اينكه درگير متغيير ها در كد شويم بهتر است كه به الگوريتم زير توجه كنيد :
)1 يك متغيير به نام n ايجاد كنيد و مقدار 27 را در آن ذخيره كنيد .
)2 متغيير n را با عدد 1 جمع كنيد و حاصل را مجدداً در n قرار دهيد.
)3 مقدار متغيير n را به كاربر نشان دهيد.
در اين الگوريتم شما يك متغيير به نام n ايجاد كرده و مقدار 27 را در آن قرار مي دهيد . اين مـورد بـه ايـن معنـي اسـت كـه شـمامقداري از حافظه ي كامپيوتر را كه مربوط به برنامه شما است گرفته ايد و مقدار 27 را در آن قـرار داده ايـد . ايـن قـسمت از حافظـه كامپيوتر مقدار 27 را براي شما نگه خواهد داشت تا زماني كه آن را تغيير دهيد و يا به برنامه بگوييد كه ديگر به آن نيازي نداريد .در مرحله دوم شما يك عمليات جمع انجام مي دهيد . در اين مرحله، مقدار متغيير n را از گرفته و آن را بـا عـدد 1 جمـع مـي كنيـد .سپس آن را مجدداً در n قرار مي دهيد. بعد از پايان اين عمليات قسمتي از حافظه كه متغيير n را نگهداري مي كند، حاوي مقدار خواهد بود .
در مرحله آخر مي خواهيد به كاربر مقدار n را نشان دهيد. براي اين كار مقدار متغيير n را از حافظـه كـامپيوتر خوانـده و آن را بـراي كاربر در صفحه نمايش نشان مي دهيد .فكر نكنم چيزي در اين الگوريتم نامفهوم باشد كه متوجه آن نشده باشيد . همه چيز واضح است! البته، كـد ايـن كـار در ويـژوال #C مقداري رمزي تر به نظر مي رسد. در بخش “امتحان كنيد” زير، بيشتر در رابطه با كار با متغيير ها در #C آشنا خواهيد شد .
امتحان كنید كار با متغيير ها
)1 با انتخاب گزينه File New Project از منوي ويژوال استوديو، يك پروژه جديد را ايجاد كنيـد .در پنجره New Project از قسمت سمت راست Windows Application را انتخاب كنيـد و درقسمت نام پروژه Variables را وارد كنيد. سپس روي OK كليك كنيد. (شكل )3-1
)2 پنجره Form1 را مقداري كوچكتر كنيد و سپس از جعبه ابزار يك كنترل Button روي آن قـر ار دهيـد . خاصـيتText آن را به Add 1 to intNumber و خاصيت Name آن را به btnAdd تغييـر دهيـد . فـرمشما بايد مشابه شكل 3-2 شود .
)3 روي دكمه فرمان دو بار كليك كنيد تا تابع مربوط به رويداد Click دكمه فرمان با نـام btnAdd_Clickباز شود. كدهاي مشخص شده در زير را به آن اضافه كنيد .
private void btnAdd_Click(object sender, EventArgs e)
{
int intNumber;
intNumber = 27;
intNumber = intNumber + 1;
MessageBox.Show(
“Value of intNumber + 1 = ” + intNumber,
“Variables”);
}
شكل3-1
شكل3-2
)4 برنامه را اجرا كنيد و بر روي دكمه Add 1 to intNumber كليك كنيد. كادر پيغامي هماننـد شـكل 3-3نمايش داده ميشود .
شكل3-3
چگونه كار مي كند؟
برنامه از بالاترين خط شروع مي شود، يكي يكي خطها را اجرا ميكند و به سمت پايين مي آيد . خط اول يك متغييـر جديـد بـه نـام intNumber ايجاد ميكند .
int intNumber;
int در #C يك كلمه كليدي است . همانطور كه در فصل يك گفتم كلمه كليدي، به كلمه اي گفته ميشود كه براي ويـژوال #C معني خاصي دارد . مانند دستورات . كلمه كليدي int، كه مخفف كلمه integer به معنـاي عـدد صـحيح اسـت، نـوع مقداري كه مي خواهيم در اين متغيير ذخيره كنيم را به ويژوال #2005 C ميگويد. اين كلمات كه بـراي مـشخص كـردن نـوع داده مورد نظر استفاده ميشوند، به “نوع داده ا ي” معروف هستند. فعلا همين كافي است كه بدانيد، ايـن نـوع داده اي بـه ويـژوال #C ميگويد كه شما ميخواهيد يك عدد صحيح را در اين متغيير قرار دهيد .
نكته: كلمه int براي تعريف نوع داده اي عدد صحيح در #C از زبان ++C گرفته شده است. در #C بعضي از كلمـات كليـديكه مربوط به كار با اعداد هستند، از زبان ++C گرفته شده اند، مانند كلمات كليدي مربوط به تعريف اعداد صحيح، اعـداد اعـ شاري،اعداد صحيح بزرگ و ..
بعد از اين كه نوع داده اي متغيير خود را مشخص كرديم، بايد نامي را به آن اختصاص دهيم تا در طول برنامه براي دسترسي بـه آن،از آن نام استفاده كنيم . در اين برنامه نام intNumber را براي متغيير انتخاب كرده ايم . توجه كنيد كه در نامگذاري اين متغييراز نماد گذاري مجارستاني كه در فصل يك توضيح دادم استفاده كرده ايم . در اينجا كلمه int مخفف عبارت Integer استو مشخص مي كند كه اين متغيير يك عدد صحيح را در خود نگهداري مي كند . كلمه Number هم نـام خـود متغييـر اسـت . درطول برنامه ديديد كه اين متغيير يك عدد صحيح را در خود نگهداري ميكند، پس اين نام براي آن مناسب است .دستور نوشته شده در خط بعدي، مقدار متغيير intNumber را در آن قرار مي دهد . به عبارت ديگر در ايـن خـط مقـدار درintNumber قرار مي گيرد .
نكته : مي ميتوان مقدار يك متغيير را هنگام تعريف نيز به آن بدهيم. مثلاً در برنامه ي بالا به جاي اينكه در يك خط متغيير را تعريف كنيم و در خط بعد مقدار 27 را به آن اختصاص دهيم، مي توانستيم به صورت زير در يك خط هم متغيير را تعريف كرده و هم بـه آنمقدار بدهيم :
int intNumber = 27;
دستور خط بعدي، عدد يك را با مقدار متغيير intNumber جمع ميكند :
intNumber = intNumber + 1;
اگر از ديد رياضي به اين دستور نگاه كنيد ممكن است اشتباه به نظر برسد . اما در حقيقت كاري كه اين دستور انجام ميدهد، اين استكه مقدار متغيير intNumber را با عدد 1 جمع ميكند و حاصل را مجددا در intNumber ذخيره ميكند .خط آخر يك كادر پيغام را به كاربر نمايش ميدهد كه در آن مقدار متغيير intNumber + 1 نوشته شده است. عبـارتي كـه اين كادر پيغام نمايش ميدهد به صورت مجموع رشته ي “= Value of intNumber + 1” و مقـدار كنـونيintNumber است. همچنين عنوان اين پنجره را نيز “Variables” قرار ميدهيم تا با نام برنامه هماهنگ شود :
MessageBox.Show(
“Value of intNumber + 1 = ” + intNumber,
“Variables”);
توضيحات و فضاهاي خالي :
هنگامي كه كد يك نرم افزار را مي نويسيد، بايد بدانيد كه شما يا شخص ديگري در آينده ممكن است بخواهد اين كد را تغيير دهـد .بنابراين وظيفه شماست كه تا جايي كه ممكن است كد را قابل فهم كنيد .
توضيحات :
توضيحات بخشي از برنامه هستند كه به وسيله كامپايلر ويژوال #2005 C ناديده گرفته مي شـوند . يعنـي شـما مـي توانيـد در ايـنقسمت از برنامه، هر چه مي خواهيد و به هر زباني كه مي خواهيد بن ويسيد و نيازي نيست كـه قواعـد خاصـي را رعايـت كنيـد . ايـن قسمت فقط به برنامه نويسي كه در حال مطالعه كد برنامه است كمك مي كند تا راحت تر بفهمد آن قـسمت از برنامـه در حـال چـه كاري است .
نكته: همه زبانها قابليت نوشتن توضيحات را دارند، اما نوع مشخص كردن توضيحات در زبانهاي مختلف متفاوت است .
اما سوال اينجاست كه شما چه موقع به نوشتن توضيحات نياز داريد؟خوب، اين مورد بر حسب موقعيتهاي مختلف فرق مي كند، اما بهعنوان يك قانون كلي مي توانيم بگوييم كه بهتر است به الگوريتم خودتان دقت كنيد . برنامه اي كه در “امتحان كنيد ” قسمت قبـل نوشتيم داراي الگوريتم زير بود :
)1 يك مقدار را براي intNumber تعريف كن .
)2 مقدار 1 را به intNumber اضافه كن.
)3 مقدار جديد intNumber را به كاربر نشان بده.
مي يتوانید توضيحات را به كد برنامه قبلي اضافه كنيد تا با قسمتهاي الگوريتم هماهنگ شود :
// Define a variable for intNumber
int intNumber;
// Set the initial value
intNumber = 27;
// Add 1 to the value of intNumber
intNumber = intNumber + 1;
// Display the new value of intNumber
MessageBox.Show(
“Value of intNumber + 1 = ” + intNumber,
“Variables”);
در ويژوال #2005 C توضيحات خود را با دو كاراكتر اسلش (//) شروع مي كنيد . هر متني كه بعد از اين دو كاراكتر تا انتهـاي آن خط، قرار بگيرد به عنوان توضيح در نظر گرفته خواهد شد . بنابراين، حتي اگر در يك خط كدي وجود داشـته باشـد و شـما در اواسـط خط از // استفاده كنيد، متن بعد از آن به عنوان توضيح در نظر گرفته ميشود. مانند :
intNumber = intNumber + 1; // Add 1 to value of intNumber
اين مورد منطقي هم هست، زيرا فقط توضيحات بعد از علامت // قرار مي گيرند . توجه كنيد كه توضيحات كد قبلي، كـم و بـيش مشابه الگوريتم برنامه هستند ي. ك تكنيك خوب براي اضافه كردن توضيح به برنامه اين است كه آن قسمت از الگوريتم برنامه كه در حال نوشتن كد آن هستيد را در چند كلمه توضيح دهيد .
اگر در قسمتي از برنامه نياز داشتيد كه از بيش از يك خط توضيح استفاده كنيد، مي توانيد به جاي اينكه در ابتـداي هـر خـط از //استفاده كنيد، در جايي كه توضيحات شروع مي شوند از علامت */ استفاده كنيد. به اين ترتيب ويژوال #C تمام مـتن بعـد از ايـن علامت را تا هنگامي كه به علامت /* برسد به عنوان توضيح در نظر مي گيرد. براي مثال مي توانستيم تمام توضيحات نوشته شدهدر برنامه قبلي را در يك قسمت به صورت زير وارد كن :مي
/* 1) Define a variable for intNumber
2) Set the initial value
3) Add 1 to the value of intNumber
4) Display the new value of intNumber */
int intNumber;
يكي ديگر از روشهاي توليـد بلاكهـاي توضـيحات بـراي متـده اي برنامـه، اسـتفاده از ويژگـي درونـي XML Document
Comment در ويژوال استوديو 2005 است . براي استفاده از اين ويژگي، مكان نما را در خط خالي بالاي متد مـورد نظرتـان قـراردهيد و سه كاراكتر اسلش (///) تايپ كنيد. يك بلاك توضيحات، همانند كد زير، به صورت اتوماتيك نمايش داده ميشود .
/// <summary>
///
/// </summary>
/// <param name=”sender”></param>
/// <param name=”e”></param>
private void btnAdd_Click(object sender, EventArgs e)
{
اما نكته اي كه در مورد اين ويژگي جالب است، اين است كه ويژوال استوديو 2005 مقـادير مربـوط بـه قـ سمت name را در ايـنبلاك ها بر اساس نام متغيير هاي متد شما كامل مي كند . اگر در متد هيچ پارامتري نداشـته باشـيد، قـسمت <param> از ايـنبلاك توضيحات حذف مي شود .
هنگامي كه اين بلاك توضيحات را ايجاد كرديد، مي توانيد يك خلاصه از عملكرد متد را در قسمت summary وارد كنيـد و يـاهر توضيح اضافي كه قبل از فراخواني متد بايد در نظر داشت را نيز در اين بلاك بنويسيد . اگر متد شـما مقـداري را برگردانـد بخـش<return> هم به اين بلاك اضافه مي شود كه مي توانيد در رابطه با مقدار بازگشتي از متد، در آن توضيحاتي بنويسيد .توضيحات داخل برنامه عم وماً براي درك بهتر كد مورد استفاده قرار مي گيرند، چه براي يك برنامه نويس كه تـا كنـون كـد شـما رانديده است چه براي شما اگر مدت زمان طولاني كد را مرور نكرده باشيد و اكنون بخواهيد آن را تغيير بدهيد . در كـل توضـيحات بـه نكاتي راجع به برنامه اشاره ميكنند كه در نگاه اول به كد مشخص نيستند و يا در مورد عملكرد كد خلاصه اي را بيـان مـي كننـد تـا برنامه نويس بتواند بدون دنبال كردن خط به خط كد از عملكرد آن قسمت مطلع شود .
هر برنامه نويس روشهاي خاص خودش را براي توضيح نوشتن دارد . اگر شما براي يك شركت بزر گ كار مي كنيد، يا مدير شما بر كد نويسي استاندارد تاكيد داشته باشد، به شما گفته ميشود كه توضيحات خود را در چه قالبهايي بنويسيدو يا اينكه در كدام قسمت از كد توضيح بنويسيد و در كدام قسمت ننويسيد




