مقدمه ای بر سی شارپ : قسمت اول
طی سلسله مقالاتی می خواهیم با C# بیشتر آشنا شویم. فرض این مقالات بر این است که آشنایی مختصری با زبانهای برنامه نویسی دارید ، هر چند کار ما تقریبا از صفر شروع می شود و هدف آن سادگی هر چه بیشتر است.
C# از دو زبان C++ و Java متولد شده است! حاوی بسیاری از جنبه های C++ می باشد اما ویژگی های شیء گرایی خودش را از جاوا به ارث برده است.
C# اگرچه از C++ گرفته شده است اما یک زبان "خالص" شیء گرا (Object oriented) می باشد. هر دو زبان یاد شده جزو زبانهای هیبرید محسوب می شوند اما طراحان C# این مورد را به اندازه ی C++ مهم تلقی نکرده اند. یک زبان هیبرید اجازه ی برنامه نویسی با شیوه های مختلف را میسر می کند. دلیل اینکه C++ هیبرید است ، این است که قرار بوده تا با زبان C سازگار باشد و همین امر سبب گردیده تا بعضی از جنبه های C++ بسیار پیچیده شوند.
زبان سی شارپ فرض اش بر این است که شما می خواهید تنها برنامه نویسی شیء گرا انجام دهید و همانند C++ مخلوطی از برنامه نویسی رویه ایی (Procedural) و شیء گرا را نمی خواهید به پایان برسانید. بنابراین باید طرز فکر خودتان را با دنیای شیء گرایی تطبیق دهید. در ادامه خواهید دید که در سی شارپ هر چیزی شیء است حتی یک برنامه ی سی شارپ.
برنامه ی اول :
Visual studio.net را اجرا کنید و سپس در صفحه ی ظاهر شده New Project را برگزینید. حالا از گزینه ی Visual C# projects قسمت Console applications را انتخاب نمایید. نامی دلخواه همانند ex01 را وارد نموده و سپس Ok نمایید. کد زیر به صورت خودکار برای شما تولید خواهد شد:
using System;
namespace ex01
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
}
}
}
اگر یک سری از مفاهیم آنرا متوجه نمی شوید اصلا مهم نیست! در مقالات آتی تمام این موارد مفصل توضیح داده خواهند شد.
متد استاندارد Main در اینجا قسمتی است که عملیات اصلی برنامه در حالت Console ( شبیه به برنامه های تحت داس اما 32 بیتی ) در آن انجام می شود.
بدون متد Main برنامه های سی شارپ قادر به اجرا نخواهند بود. نوع آن در اینجا void تعریف شده است یعنی این متد خروجی ندارد. حتی اگر برنامه های استاندارد ویندوز را هم بخواهید با C# بنویسید بازهم متد Main حضور خواهد داشت ، هر چند به صورت خودکار ویژوال استودیو آنرا تولید می کند.
فعلا برای پایان قسمت اول از شیء Console و متد WriteLine آن برای نمایش یک جمله ی ساده استفاده می کنیم. راجع به متدها ، متغیرها و غیره در آینده بیشتر صحبت می کنیم.
در آخر برنامه ی ما چیزی شبیه به عبارت زیر می باشد:
using System;
namespace ex01
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Hello C#!");
}
}
}
دکمه ی F5 را فشار دهید تا برنامه اجرا شود.
تعریف متغیرها در سی شارپ:
سی شارپ عناصری را که بکار می گیرد همانند اعداد و کاراکترها ، به صورت نوع ها (Types) طبقه بندی می کند. این انواع شامل موارد زیر می شوند :
نوع های پایه ایی از پیش تعریف شده مانند اعداد و غیره.
نوع های تعریف شده توسط کاربر که شامل STRUCT ها و ENUM ها می شوند.
نحوه ی تعریف متغیرها از نوع های پایه ایی از پیش تعریف شده :
همانطور که می دانید از متغیرها برای نگهداری اطلاعات استفاده می شود. در سی شارپ ابتدا نوع متغیر و سپس نام متغیر و در آخر یک سمی کولون بکار برده می شود. برای مثال :
int a;
که در اینجا متغیر a بعنوان یک متغیر حاوی اعداد صحیح تعریف شده است.
نکته ی مهمی که در اینجا حائز اهمیت است ، مقدار دهی اولیه ی متغیرها می باشد. در غیر اینصورت کامپایلر سی شارپ برنامه را بایک خطا متوقف می کند. دلیل این امر هم این است که از استفاده از متغیرهای بدون مقدار در طول برنامه جلوگیری شود تا میزان خطاهای در حین اجرا کاهش یابد.
نوع های داده ای پایه ی زیر در در سی شارپ به صورت پیش فرض مهیا هستند:
object : نوعی است نامحدود که می تواند تمام انواع دیگر را نیز شامل شود. مثال :
object = null;
string : رشته ؛ در اینجا یک رشته توالی کاراکترهای یونیکد می باشد. مثال :
string s= "hello";
sbyte : نوع داده ایی صحیح 8 بیتی علامت دار.
byte : نوع داده ایی صحیح 8 بیتی بدون علامت. مثال :
sbyte val = 12;
short : نوع داده ایی صحیح 16 بیتی علامت دار.
ushort : نوع داده ایی صحیح 16 بیتی بدون علامت. مثال :
short val = 12;
int : نوع داده ایی صحیح 32 بیتی علامت دار.
unit : نوع داده ایی صحیح 32 بیتی بدون علامت. مثال :
int val = 12;
long : نوع داده ایی صحیح 64 بیتی علامت دار.
ulong : نوع داده ایی صحیح 64 بیتی بدون علامت. مثال :
Long val1 = 12; long val2 = 34L;
کلا در اینجا u به معنای unsigned است.
float : نوع اعشاری با single precision .
double : نوع اعشاری با double precision . مثال :
float val = 1.23f;
bool : نوع داده ایی Boolean که می تواند true و یا false باشد. مثال :
Bool val = true;
char : کاراکتر، دراینجا char یک کاراکتر یونیکد است.
char val = 'h';
به نحوه ی تعریف کاراکتر ها و همچنین رشته ها در سی شارپ دقت کنید.
decimal : نوع داده ایی دسیمال با 28 رقم معنی دار.
decimal val = 1.23M;
یک نکته :
- بهتر است هنگام تعریف یک متغیر ، نامی با مسما برای آن انتخاب شود تا در هنگام کار خواندن کد ساده تر گردد. همچنین رسم شده است که نوع متغیر را به صورت خلاصه به نام متغیر اضافه می کنند. برای مثال بجای FirstName بهتر است بنویسیم strFirstName . به این نوع نگارش Hungarian notation می گویند.
- تمام نوع های پیش فرض تعریف شده در سی شارپ شیء هستند. در آینده بیشتر در این مورد صحبت خواهیم کرد.
مثال این قسمت :
یک برنامه ی console جدید در را VS.NET باز کنید. نام آنرا در ابتدا ex02 انتخاب نمایید. در اینجا می خواهیم دو متغیر رشته ایی و صحیح را تعریف و سپس در خروجی نمایش دهیم.
کد نهایی به صورت زیر می باشد:
using System;
namespace ex02
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
int intVar1 = 0;
int intVar2;
intVar2=1;
int intV3=15 , intV4 = 12;
string strText1 = "abcd";
Console.WriteLine(
"The value for variables are : n intVar1="+intVar1 +
"n intVar2="+ intVar2 +
"n intV3=" + intV3 +
"n intV4=" + intV4 +
"n strText1=" + strText1);
Console.WriteLine("nn Press any key to terminate");
Console.ReadLine(); // pause screen!
}
} }
نکاتی در مورد کد فوق:
- بک اسلش ان ، در زبانهای مشتق شده از سی به معنای new line می باشد.
- در کد فوق نحوه ی تعریف چند متغیر در یک خط و حالتهای مقدار دهی مختلف را ملاحظه می کنید.
- از متد ReadLine برای نگه داشتن خروجی و مشاهده ی آن در اینجا استفاده کردیم.
- عادت کنید به صورت دندانه دار کد بنویسید. اینکار خوانایی کد را صد برابر می کند. در اینجا کدهای داخل متد main ، کاملا چند دندانه از آکولادهای باز و بسته کردن آن جلو تر هستند.
- در کد بالا در متد WriteLine اعداد و رشته ها با هم جمع شده اند! این مورد بدلیل وجود overload های زیاد این تابع و ... میسر گشته است. اصلا به آن دل نبندید! چون در آینده کامپایلر سی شارپ اگر چنین اعمالی را در جاهای دیگری مرتکب شوید به شدت با شما برخورد خواهد کرد!! برای جمع کردن اعداد با رشته ها حتما باید عدد به رشته تبدیل گردد و بعد ... . در این مورد در مقالات بعدی بحث خواهد گردید.
● سایر مقالات مرتبط با این موضوع