در بخش قبل با تکنولوژی .NET و زبان برنامه نویسی C# آشنا شدید در این بخش با مفاهیم اولیه برنامه نویسی با سی شارپ آشنا می شوید. مفاهیمی مثل روش تعریف متغیر، انواع داده ها، عملگرها، ساختارهای شرطی، ساختارهای تکرار، آرایه ها و توابع را در این بخش خواهید دید. در بخش بعد اولین برنامه ویژوال به زبان سی شارپ را ایجاد خواهید کرد .
اصول برنامه نویسی با سی شارپ
برای برنامه نویسی سی شارپ باید بدانید که :
1- بین حروف کوچک وبزرگ تفاوت وجود دارد .
2- بعد از هر دستور العمل علامت ; (سمیکالن) قرار می گیرد .
3- هر بلاک از دستورات داخل یک جفت آکولاد {}نوشته می شود .
4- همه ی دستورات داخل توابع نوشته می شود .
5- سی شارپ به شدت شی گراست و همه توابع داخل کلاس ها نوشته می شوند.
6- متغیر ها قبل از استفاده باید تعریف شده و هم مقدار دهی شوند.
7- توضیحات بعد از علامت // یا بین علامت های /* و */ قرار می گیرند.
متغیرها در سی شارپ
در C# هر متغیر قبل از استفاده باید صریحاً تعریف شده و نوع آن تعیین گردد. برای تعریف متغیر به شکل زیر عمل می شود:
Datatype identifier;
مثال:
int x;
نکته مهم: قبل از اینکه بتوانیم از متغیر x در عبارت ها استفاده کنیم باید به آن مقدار بدهیم.
x = 5;
به جای تعریف فوق می توان نوشت:
int x=5;
قلمرو دسترسی به متغیرها
قلمرو متغیر محدوده ای است که می توان در آن ناحیه به متغیر دسترسی داشت. سه دسته متغیر عبارتند از:
• فیلد یا متغیر عضو: متغیر تعریف شده در داخل کلاس – در تمامی بخش های کلاس(یعنی در داخل همه توابع) قابل استفاده است.
class Form1 {
public int x;
private float y;
…
}
مثل متغیر x و y که داخل کلاس Form1 تعریف شده اند. متغیر x بصورت عمومی(public) تعریف شده پس هم در داخل کلاس From1 و هم در داخل کلاس های دیگر قابل شناسایی و استفاده است. در حالی که متغیر y بصورت خصوصی(private) تعریف شده و تنها در محدوده کلاس Form1 قابل استفاده می باشد.
• متغیر محلی : داخل متد تعریف می شود و تنها در داخل همان متد قابل استفاده است.
• متغیر محلی تعریف شده در داخل یک بلاک: فقط در داخل همان بلاک برنامه قابل استفاده است مثل:
for ( int i=0 ; i {
…
}
انواع داده ها در سی شارپ
در C# انواع داده به دو دسته تقسیم می شوند:
1. انواع مقداری
2. انواع ارجاعی
متغیر از نوع داده مقداری ، مقدارش را مستقیماً ذخیره می کند در حالی که متغیر ازنوع داده ارجاعی ، یک ارجاع به مقدار را ذخیره می کند.
مثال نوع داده مقداری:
int i,j;
i = 5; j=46;
که i و j هر کدام فضای حافظه خود و مقدار خودشان را دارند.
مثال نوع داده ارجاعی:
با فرض اینکه Vector نوع داده ارجاعی باشد:
Vector x,y;
که هر دوی x و y به یک مکان مشترک از حافظه مراجعه می کنند که حاوی آن شیء (Vector) است. مگر اینکه اجرا کنیم:
x=new Vector();
که در این صورت فضای جداگانه ای برای x در نظرگرفته خواهد شد.
هنگام تعریف متغیر از نوع ارجاعی بهتر است برای پیشگیری از اشکال بصورت زیر تعریف شود:
Vector y=null;
تا y به هیچ شیئی مراجعه نکند مگر اینکه صریحا“ شیء با دستور new ایجاد شود.
Y = new Vector();
در زبان C# انواع داده ساده مثل int,float,bool و long مقداری هستند در حالی که انواع داده پیشرفته تر و از جمله کلاس هایی که خودمان تعریف می کنیم از نوع ارجاعی هستند.
انواع مقداری از پیش تعریف شده
انواع داده های مقداری که در C# قابل استفاده هستند عبارتند از:
انواع داده صحیح:
int : 32-bit
short : 16-bit
long : 64-bit
byte : 8-bit
انواع داده اعشاری:
float : 32-bit
double : 64-bit
decimal : 128-bit
نوع بولین:
bool ( true – false )
نوع کاراکتری:
char ( 16-bit Unicode)
نوع رشته ای:
string ( 16-bit Unicode for any character)
ساختارهای شرطی و تکرار در سی شارپ
با توجه به اینکه ساختارهای شرطی و تکرار در اینجا هم مشابه زبان سی پلاس پلاس است که دانشجویان با آنها آشنایی دارند. تنها به معرفی آنها بسنده می کنیم:
ساختارهای شرطی:
- ساختار switch
- ساختار if..else
- ساختار if
switch (عبارت محاسباتی یا متغیر ) {
case مقدار 1 : دستورات 1;break;
case مقدار 2 : دستورات 2;break;
…
Default: دستورات پیش فرض ; break;
}
} if ( عبارت شرطی) {
دستوراتی که در صورت برقرار بودن شرط اجرا می شوند
}else {
دستوراتی که در صورت برقرار نبودن شرط اجرا می شوند
{
if ( عبارت شرطی) {
دستوراتی که در صورت برقرار بودن شرط اجرا می شوند
}
ساختارهای تکراری در سی شارپ
- ساختار for
- ساختار do..while
- ساختار while
آرایه ها در سی شارپ
برای تعریف آرایه بصورت زیر عمل می کنیم:
نوع داده [] متغیر= new نوع داده [تعداد خانه ها];
مثال: تعریف آرایه A از نوع اعشاری به طول 10
float[] A=new float[10];
اندیس های آرایه همیشه از صفر شروع می شوند و هر خانه آرایه با استفاده از نام آرایه و اندیس آن خانه تعیین می شود:
array-name[ index ] = value ;
برای تعریف آرایه با مقدار اولیه از روش زیر استفاده می شود، مثال :
int[] list={45 , 65 ,67, 34 , 100 , 4 ,5 };
مثال: محاسبه مجموع عناصر
int s=0;
for ( int i=0 ; i {
s = s+ list[i] ;
}
حلقه foreach به ما اجازه می دهد در میان آیتم های موجود در یک مجموعه یا آرایه گردش کنیم. مجموعه یک شیء است که شامل سایر اشیاء می باشد. از این حلقه تنها برای خواندن عناصر آرایه استفاده می شود و امکان تغییر محتوای آرایه را نمی دهد.
مثال: محاسبه مجموع عناصر با استفاده از حلقه تکرار foreach
int s=0;
foreach (int x in arr)
s = s+ x;
در سی شارپ متدهای مختلفی وجود دارد که به همراه نام آرایه می توان فراخوانی کرد:
// تعریف آرایه با مقداردهی اولیه
int[] A={12 , 56 , 3 , 23, 65 , 67 , 71 ,26 };
int s,m,max,min;
s = A.Sum(); // محاسبه مجموع عناصر
m = A.Average(); // محاسبه میانگین
max = A.Max(); // محاسبه بزرگترین عنصر
min = A.Min(); // محاسبه کوچکترین عنصر
توابع در سی شارپ
یک تابع عبارت است از تعدادی دستور که داخل یک بلاک دارای نام قرار گرفته اند. این دستورات برای حل بخشی از مساله نوشته شده و می توانند به دفعات فراخوانی شوند.
شکل کلی تابع بصورت زیر است :
public | private data-type func-name( parameters )
{
…
[ return نتیجه برگشتی; ]
}
مثال : تابعی برای دریافت دو عدد اعشاری به عنوان پارامتر و برگرداندن مجموع آندو
public float sum( float a , float b) {
float s=0;
s = a + b ;
return s;
}
برای فراخوانی تابع فوق می نویسیم :
float s;
s = sum ( 4.6 , 65.8 );
کلمه publicو private دسترسی به تابع یا متغیر عضو کلاس را تعیین می کنند. اگر تابع یا متغیری بصورت private تعریف شود فقط از داخل همان کلاس خودش قابل شناسایی و استفاده خواهد بود ولی توابع و متغیرهای public از داخل کلاس های دیگر هم می توانند شناسایی و استفاده شوند.