آموزش زبان ++C و #C

alprh

کاربر سایت
Sep 28, 2005
690
نام
Alprh The Drawranger
مقدمه :

در اين قسمت مي خواهيم با يك سري از اصول اوليه ي شيء گرايي در سي شارپ كمي آشنا شويم. لازم به ذكر است ، بسياري از مواردي كه در اين قسمت مطرح مي شوند فقط براي آشنايي شما است و در آينده بيشتر بحث و مرور خواهند شد.

آشنايي با فضاهاي نام (NameSpaces) :

فضاهاي نام روشي براي مديريت كد نويسي هستند. براي مثال آنها ايجاد شده اند تا تداخلي بين نام هاي توابع در برنامه شما رخ ندهد. اين مساله در پروژه هاي بزرگ خود را نشان مي دهد و ممكن است دو آيتم در يك پروژه نام هاي يكساني را پيدا كنند. بدين وسيله اين شانس تصادم و تداخل كاهش پيدا مي كند. براي ايجاد يك فضاي نام به صورت زير عمل مي شود:



namespace anyName
{
……..

Class anyClassName
{
……….
}

…….

}



يكي از فضاهاي نام پايه اي در دات نت فريم ورك ، فضاي نام System مي باشد. براي استفاده از آن مي توان از كد زير كمك گرفت :


using System;


تمام فضاهاي نام به صورت پيش فرض public مي باشند و در خارج از كد شما قابل دسترسي هستند. روش استفاده از آنها به صورت زير است:


ProjectName.NameSpace.ClassName.MemberName


نكته :
اگر دقت كرده باشيد هنگامي كه كرسر ماوس را روي هر آيتمي در منوي autocomplete نگه مي داريد و يا آنرا انتخاب مي كنيد يك راهنماي كوچك نمايش داده مي شود كه در حقيقت كامنت مربوط به آن تابع مي باشد. روش نوشتن چنين كامنت حرفه اي كه در منوهاي ويژوال استوديو ظاهر شود به صورت زير است كه بهتر است (!) قبل از هر تابع يا خاصيت يا كلاس و .... نوشته شود


///
///
///
///


كلاس ها :

چون سي شارپ تمام سر و كارش با كلاس ها است بنابراين بايد در مورد نحوه ي تعريف و استفاده از آنها تسلط كافي داشته باشيم.

يك پروژه ي جديد console در VS.NET باز كنيد و نام آنرا در ابتدا ex03 وارد نماييد.
بعد از باز شدن پروژه ، از منوي Project گزينه ي Add class را انتخاب كنيد تا كلاسي جديد به نام clsDate.cs را اضافه نماييم. ساختار فايل ايجاد شده توسط VS.NET به صورت زير است :


using System;

namespace ex03
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here (chashm!)
//
}
}
}


تابع يا متد clsDate كه در اينجا به صورت پيش فرض ايجاد شده است اصطلاحا سازنده (constructor) نام دارد. اين تابع هر بار كه يك شيء جديد از كلاس مي سازيم به صورت خودكار اجرا مي شود.

از اين كلاس مي خواهيم براي نمايش تاريخ/ ساعت و غيره استفاده كنيم.

براي مثال مي خواهيم تاريخ جاري سيستم را به صورت يك خاصيت از اين كلاس دريافت كنيم. براي اين منظور كد زير را به برنامه اضافه مي نماييم:


public string currentSystemDate
{
get
{
return System.DateTime.Today.ToString() ;
}
}


توضيح كد فوق :

خاصيتي را كه مي خواهيم از برنامه دريافت كنيم با كلمه ي كليدي get معرفي مي نماييم. هر چيزي كه اين قسمت برگرداند خروجي currentSystemDate خواهد بود. اين دستور زبان كه در بالا معرفي شد استاندارد است و در همه جا به يك صورت تعريف و بكار برده مي شود. پس شكل آنرا به خاطر بسپاريد.
از كلمه ي كليدي return براي برگرداندن يك خروجي از خاصيت و يا تابع استفاده مي شود.

براي استفاده از اين خاصيت جديد ، در فايل Class1.cs كه متد main برنامه ي ما در آنجا قرار دارد به صورت زير عمل مي كنيم :


clsDate m_var = new clsDate(); // initialize variable
Console.WriteLine ( m_var.currentSystemDate );
Console.ReadLine();//pause!


توضيح كد فوق :

براي استفاده از يك كلاس بايد يك متغير از آن را تعريف كنيم. در هر زباني يك سري نوع هاي استاندارد مانند int و string و غيره وجود دارند. كلاس هم در حقيقت يك نوع داده ي بسيار بسيار قدرتمند به شمار مي آيد. براي تعريف يك متغير از نوع جديد روش كار مانند سابق است. براي مثال زماني كه يك متغير عدد صحيح را تعريف مي كنيد به صورت زير عمل مي شود :


int i=0;


راي تعريف يك متغير از نوع داده اي كه خودمان تعريف كرده ايم نيز بايد به همين صورت عمل شود.


clsDate m_var = new clsDate();


از كلمه ي كليدي new اينجا به صورت استاندارد براي مقدار دهي اوليه به اين متغير جديد استفاده مي نماييم.

سپس به روش دستيابي به اين خاصيتي كه به كلاس اضافه كرده ايم مي رسيم.


m_var.currentSystemDate


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

عموما از خاصيت ها براي برگرداندن و يا تنظيم يك مقدار ساده استفاده مي شود و در آنها عمليات پيچيده اي مد نظر نمي باشد.

توضيحي در مورد ; () System.DateTime.Today.ToString
استفاده از خواص :

شما به ويژگي هاي يك شيء با استفاده از خواص آن مي توانيد دسترسي پيدا كنيد. يك property عضوي است كه امكان دسترسي به ويژگي شيء يا كلاس را فراهم مي كند. براي مثال طول يك رشته (string) ، سايز يك فونت ، عنوان يك فرم و نام يك مصرف كننده ، خاصيت هستند .
بسياري از اشياء ذاتي دات نت فريم ورك ، خواص مفيد زيادي را به همراه دارند. براي مثال شيء DateTime را در نظر بگيريد. با استفاده از خاصيت Today آن مي توان تاريخ جاري سيستم را بدست آورد. براي استفاده از يك خاصيت لازم است تا كلاس تعريف كننده شيء در برنامه مهيا باشد. منظور همان استفاده از فضاي نام مربوطه مي باشد. پس از وارد كردن فضاي نام كلاس مورد نظر مي توانيد از شيء و خواص آن استفاده كنيد. دو راه وجود دارد يا به صورت كامل تمام موارد بايد ذكر شوند مانند System.DateTime.Now; و يا با وارد كردن فضاي نام System كوتاه سازي صورت مي گيرد.
براي استفاده از هر متد و يا شيء ايي در سي شارپ بايد اين شيء قابل دسترسي باشد. براي مثال شيء Console كه از آن براي چاپ كردن خروجي بر روي صفحه ي نمايش استفاده مي كنيم در فضاي نام System واقع شده است. يا بايد در ابتداي برنامه ذكر كرد using System ; و سپس خيلي راحت از اين شيء استفاده كرد و يا مي توان اينكار را انجام نداد و نوشت : System.Console و الي آخر. با ذكر فضاي نام در ابتدا با استفاده از using مي توان خلاصه نويسي كرد.

نتيجه ي نهايي مثال اين فصل :

محتويات فايل Class1.cs :


using System;

namespace ex03
{
///
/// Summary description for Class1.
///
class Class1
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main(string[] args)
{
clsDate m_var = new clsDate(); // initialize variable
Console.WriteLine ( m_var.currentSystemDate );

Console.ReadLine();//pause!
}
}
}


محتويات فايل clsDate.cs كه به برنامه اضافه كرديم:


using System;

namespace ex03
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here
//
}

public string currentSystemDate
{
get
{
return System.DateTime.Today.ToString() ;
}
}


}
}
 

Police _ 110

ハリール
مدیر انجمن
Sep 29, 2005
7,007
نام
خلیل
نوشته شده توسط Hellgate:london:
سلام
به دوستان خوبم.
اگه کسی هم توی Net. مشکلی داشت اگه بتونم در خدمتیم.
اگه دوستان بخوان اموزش Net. رو میتونیم شروع کنیم.
فکر کنم هم برا من خوبه چون یاداوری میشه و هم برا باقی دوستان.
خوشحال میشم کمک کنم.
به نظر توی این همه برنامه که جوونیام باهاش کار میکردم.هیچ برنامه به قدرت Net. نیست.
انقدر این برنامه از نظر راحتی از نظر User friendly بودن راحته که من به شخصه داشتم شاخ در می یاوردم.
باید در این مورد به ماکروسافت برای این برنامه تبریک گفت.
که الانم نسخه 2005 اون اومده(البته نسخه فاینالش نیست) الان همون 2003 ش هست که باهاش کار میکنن.
برا این کار باید مدیران بگن.تا اموزششو شروع کنم.

سلام محمد رضا جون میشه یه خورده در مورد این نیت توضیح بدید که چیه
چطوری هستش و در چه مواردی استفاده میشه
 

alprh

کاربر سایت
Sep 28, 2005
690
نام
Alprh The Drawranger
ساختارهاي تصميم گيري :

در بسياري از موارد هنگام برنامه نويسي لازم است تا از عبارات شرطي استفاده كنيم. براي انجام اينكار دو روش عمده وجود دارد. استفاده از if و يا switch . از if بيشتر براي مقايسه هايي تكي و كوچك استفاده مي شود و حاصل مقايسه ي آن يا true است و يا false . از عبارت switch هنگامي استفاده مي شود كه مقايسه هاي متعددي بايد در مورد يك مقدار صورت گيرد.
هر دو عبارت if و switch توسط عبارتهايي Boolean كنترل مي شوند ( true و يا false ) . در هنگام استفاده از if اگر عبارت Boolean حاصل اش true باشد اولين قسمت شرط اجرا مي شود و سپس برنامه از انتهاي if ادامه پيدا مي كند. اگر حاصل عبارت Boolean مساوي false باشد كنترل برنامه به قسمت else منتقل مي شود.

مثال :

يك پروژه ي جديد console باز كنيد و نام آنرا ex04 بگذاريد. سپس كد زير را در آن وارد و جرا كنيد :


using System;

namespace ex04
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Enter 1 character to be evaluated");

char cUserInput = (char) Console.Read();

if ( char.IsDigit( cUserInput ) )
Console.WriteLine("The char is a number!");
else
Console.WriteLine("The char is not a number!");

}
}
}


نكاتي در مورد كد فوق :

1- سي شارپ به كوچكي و بزرگي حروف حساس است . براي مثال cUserInput با cUserinput فرق مي كند.
2- حتما بايد بعد از if پرانتزها ذكر گردد.
3- حتما بايد داخل if يك عبارت Boolean ذكر شود مانند if(x>5) .
4- در سي شارپ مقايسه ي تساوي دو عبارت با == و انتساب با = انجام مي شود. ( موارد 1 و 4 مواردي هستند كه اغلب تازه كاران با آن مشكل دارند! ) براي مثال if(i==3) صحيح است اما if(i=3) در سي شارپ معنايي ندارد.
5- اگر بعد از if يك خط كد قرار گيرد نيازي به آوردن آكولاد ها نيست. هنگامي نياز به آكولادها مي باشد كه بيش از يك خط بايد بعد از if قرار گيرد.
6- در سي شارپ همانند اسلاف خودش براي تبديل نوع هاي داده ايي مي توان به صورت زير نيز عمل كرد : (char) Console.Read() ; يعني دريافتي Read به char تبديل مي شود .در اين مورد باز هم صحبت خواهد شد.
7- همانطور كه ذكر شد در سي شارپ همه چيز شيء است حتي نوع هاي پايه ايي مانند char . با استفاده از متد IsDigit آن مي توان چك كرد كه آيا ورودي آن عدد است يا خير؟ ( در مورد متدها صحبت خواهد شد )

استفاده از switch :

بهتر است اين مورد را با يك مثال دنبال كنيم.
پروژه ي سي شارپ جديدي به نام ex05 در حالت console در VS.NET باز كنيد. دراينجا مي خواهيم يك كلاس جديد تعريف كرده و توسط خاصيتي كه در آن ايجاد مي كنيم متوجه شويم روز جاري مطابق سيستم چه روزي است .
يك كلاس جديد از منوي پروژه ،‌با استفاده از گزينه ي Add class به برنامه اضافه كنيد و نام آنرا در ابتدا clsDate بگذاريد.


using System;

namespace ex05
{
///
/// Summary description for clsDate.
///
public class clsDate
{
public clsDate()
{
//
// TODO: Add constructor logic here
//
}

public string systemDayOfWeek
{
get
{

string res="";
switch( System.DateTime.Now.DayOfWeek.ToString())
{
case "Saturday" :
res = "شنبه";
break;

case "Sunday" :
res = "يک شنبه" ;
break;

case "Monday":
res = "دوشنبه";
break;

case "Tuesday":
res = "سه شنبه";
break;

case "Wednesday":
res = "چهار شنبه";
break;

case "Thursday":
res = "پنج شنبه";
break;

case "Friday":
res = "جمعه" ;
break;
}

return res ;
}

}


}
}


هنگام ذخيره كردن اين كد ويژوال استوديو به شما اخطار مي دهد كه كد داراي حروف يونيكد است. از منوي فايل گزينه ي advanced save options را انتخاب كنيد. در اينجا مي توان نوع ذخيره سازي را يونيكد انتخاب كرد.

براي استفاده از كلاس فوق مانند مطالبي كه در قسمت قبل گفته شد عمل مي كنيم :


using System;

namespace ex05
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
clsDate m_var = new clsDate();
Console.WriteLine( m_var.systemDayOfWeek );
Console.ReadLine();

}
}
}


هر چند حالت console يونيكد را پشتيباني نمي كند ولي اصل برنامه براي ما مهم است و در آينده بيشتر از آن استفاده خواهيم كرد.

همانطور كه ملاحظه كرديد اگر از switch استفاده نمي شد بايد از 7 عدد if ‌استفاده مي گرديد كه اصلا ظاهر حرفه اي و شكيلي نداشت!
با استفاده از عبارت زير كار مقايسه شروع مي شود. روز سيستم در يافت شده و وارد بدنه ي switch مي گردد. سپس توسط case ها چك مي شود تا تساوي آن با عبارت بعد از case به اثبات برسد.


switch( System.DateTime.Now.DayOfWeek.ToString())


اگر هر كدام از عبارات بعد از case صحيح بودند كار پس از آن كه در اينجا انتساب است انجام شده و سپس توسط break كنترل برنامه از switch خارج مي شود و ادامه ي كار دنبال مي گردد.
اگر هيچكدام از case ها صحيح نبودند مي توان از گزينه ي default هم در صورت نياز استفاده كرد. اين حالت در يك چنين مواقعي اجرا مي گردد.
 

Miesam

کاربر سایت
Sep 23, 2005
6,142
نام
Miesam Sh
با اینکه هیچی از این زبان حالیم نیست عشقم اینکه که یاد بگیرم
چرا که نه بکشش بالا ما هم شاید یک در هزار یاد گرفتیم خدارو چه دیدی
 

gamer220

کاربر سایت
Sep 29, 2005
301
من با آقا سامان صحبت کردم و قرار شد از این به بعد آموزش کامل زبان های برتر برنامه نویسی مثل c و ++c رو به صورت کتاب الکتورنیکی تدریس کنم ، اکثر بچه ها به زبان های برنامه نویسی زیاد آشنا نیستند و نمیتونند از زبان c شروع کنند ، الته شدن که میشه ولی براشون سنگینه . من تصمیم گرفتم از زبان vb شروع کنم . به نظر من vb بهترین زبان برای شروع یادگیری برنامه نویسی هست و من از مبتدی تا پیشرفته شروع میکنم به تدریس این زبان . اولین درس رو هم نوشتم و دادم آقا سامان تا ببینند و نظرشونو بدم و میتونم این قول رو به شما میدم که بچه هایی که دوست دارن برنامه نویسی یاد بگیرند رو به جایی برسونم که بتونن برنامه ای رو که دوست دارند ، بنویسند . بعد از تموم کردن vb میریم سروقت c .
 

Saman

Administrator
Sep 22, 2005
1,069
آرين، براي وي بي يه تاپيك جداگونه بزن و آموزش زبان سي رو توي همين تاپيك شروع كن.قبلا از لطف و كمكي كه به سايت مي كني ممنونم.شايد يه روز تمام اين مطالب رو بصورت يه كتاب الكترونيكي با نام تو و آرم بازي سنتر گذشاتيم براي صفحه ي اول.

دوستان ديگه هم همراهي كنند ممنون مي شيم.

راستي من برنامه نويسي رو با 18 پاس كردم ! خدا رو شكر ;)
 

gamer220

کاربر سایت
Sep 29, 2005
301
نوشته شده توسط Saman:
آرين، براي وي بي يه تاپيك جداگونه بزن و آموزش زبان سي رو توي همين تاپيك شروع كن.قبلا از لطف و كمكي كه به سايت مي كني ممنونم.شايد يه روز تمام اين مطالب رو بصورت يه كتاب الكترونيكي با نام تو و آرم بازي سنتر گذشاتيم براي صفحه ي اول.

دوستان ديگه هم همراهي كنند ممنون مي شيم.

راستي من برنامه نويسي رو با 18 پاس كردم ! خدا رو شكر ;)

همین کارو میکنم .... آموزش c رو میخوام همزمان با ++vc شروع کنم ، برای نوشتن کدهای c تو محیط داس امکان داره بچه ها مشکل پیدا کنند . ++vc با ++c تفاوتی نداره ( از نظر ساختار کدها ) فقط فرقشون محیطشونه که ++vc تحت win و ++c تحت داس هست . برای همین میخوام به بچه ها یاد بدم کد های c رو تو محیط ++vc بنویسند و در کنارش رشته های کوچکی از زبان ++c رو هم یاد بگیرند تا کلی بریم سر ++c. فقط سریع تر به من اطلاع بدید که مقالاتو بزارم یا نه .
 

rolis63

کاربر سایت
Sep 25, 2005
51
سلام دوسته عزيز gamer220 من هم خيلي دوست دارم برنامه نويسي رو ياد بگيرم ولي باور کن كه نميدونم از کجا بايد شروع کنم يعني نميدونم چه برنامه اي احتياج دارم پس خواهش ميکنم كه کامل توضيح بده كه اول از همه از چه برنامه اي برايه برنامه نويسي بايد استفاده کنم آخر از همه هم يک سوال برام پيش اومده كه ميخوام بپرسم ولي اميدوارم كه کسي بهم نخنده چون واقن هيچ علمي از اين سوال ندارم من ميخوام Mac OS X v10.4رو روي دستگاهم بريزم يعني ميخوام با مکينتاش کار کنم ولي نميدونم كه ميشه اونو رو هر دستگاهي اجرا کرد يا نه اگه اره رو چه نوع دستگاهي ولي اگه نه خوب كه هيچ در آخر هم خيلي متشکرم كه فقط تلاش برا بهبوديه سايت مي كنيد فعلن يا علي
 

Mohammad

Aquatic Guru
Administrator
Sep 23, 2005
675
نام
محمد
من بالاخره بعد از چند ترم مجبور شدم برنامه نویسی بردارم ! از هفته پیش شروع شد
++c
کوچکترین چیزی هم از برنامه نویسی نمیدونم ! زودتر شروع کنید :)
 

gamer220

کاربر سایت
Sep 29, 2005
301
نوشته شده توسط rolis63:
سلام دوسته عزيز gamer220 من هم خيلي دوست دارم برنامه نويسي رو ياد بگيرم ولي باور کن كه نميدونم از کجا بايد شروع کنم يعني نميدونم چه برنامه اي احتياج دارم پس خواهش ميکنم كه کامل توضيح بده كه اول از همه از چه برنامه اي برايه برنامه نويسي بايد استفاده کنم آخر از همه هم يک سوال برام پيش اومده كه ميخوام بپرسم ولي اميدوارم كه کسي بهم نخنده چون واقن هيچ علمي از اين سوال ندارم من ميخوام Mac OS X v10.4رو روي دستگاهم بريزم يعني ميخوام با مکينتاش کار کنم ولي نميدونم كه ميشه اونو رو هر دستگاهي اجرا کرد يا نه اگه اره رو چه نوع دستگاهي ولي اگه نه خوب كه هيچ در آخر هم خيلي متشکرم كه فقط تلاش برا بهبوديه سايت مي كنيد فعلن يا علي

سلام دوست خوب ، منم خوشحالم که شما میخواید برنامه نویسی یاد بگیرید و من همه جوره در خدمت شما هستم . Mac کلا یک سیستم جداست .... یعنی شما برای استفاده از Mac os باید یک سیستم کاملا جدا که قسمت زیادی از قطعاتش تولیدی خود apple هست رو بخرید و استفاده کنید و راه دیگه ای هم نداره . برای برنامه نویسی ، میتونید از زبان vb شروع کنید که مقالش رو در اینجا قرار دادم :
http://bazicenter.com/forums/showthread.php?p=28795#post28795

برای شروع برنامه نویسی با vb شما میتونید یک visual studio خریداری کنید که شامل vb هم میشه و در این برنامه شروع به نوشتن برنامه کنید . برای c هم میتونید از Borland c استفاده کنید یا microsoft c و برای ++c هم میتونید از microsoft c_c++ استفاده کنید ، برای ++vc هم از خود ++vc که در vs هست .
 

rolis63

کاربر سایت
Sep 25, 2005
51
سلام ببخش اسمت رو نميدونم ولي ميخوام بگم كه من مشکله دانلود کردن ندارم فقط اسمه کامله برنامه رو بده و بگو اين فايلي رو كه برا دانلد گزاشتي با کدوم يکي از اين برنامه ها انجام بدم فلان يا علي
 

mostafa_cpp

کاربر سایت
Jan 29, 2006
977
نام
مصطفي
نوشته شده توسط Miesam:
با اینکه هیچی از این زبان حالیم نیست عشقم اینکه که یاد بگیرم
چرا که نه بکشش بالا ما هم شاید یک در هزار یاد گرفتیم خدارو چه دیدی

عشق خالي فايده اي نداره ، پشتكار هم لازمه
 

gamer220

کاربر سایت
Sep 29, 2005
301
نوشته شده توسط rolis63:
سلام ببخش اسمت رو نميدونم ولي ميخوام بگم كه من مشکله دانلود کردن ندارم فقط اسمه کامله برنامه رو بده و بگو اين فايلي رو كه برا دانلد گزاشتي با کدوم يکي از اين برنامه ها انجام بدم فلان يا علي

من آرین هستم ، حتما اگه لینکشو پیدا کردم برات میزارم ... از مطالب استفاده کن .. یک درس جدید هم الان اضافه کردم .
 

Miesam

کاربر سایت
Sep 23, 2005
6,142
نام
Miesam Sh
خب پشته کارم هست یک زره ولی نمیشه دیگه وقت نمیشه مصطفی جون بابا یکی شروع کنه ما بیایم یک چیزی یاد بگیریم حوصلم سر رفته
راستی میگم مدیرای این سایت از دم همشون یک رشته قبول شدن؟؟؟
 

کاربرانی که این قسمت را مشاهده می‌کنند

Top
رمز عبور خود را فراموش کرده اید؟
or ثبت‌نام سریع از طریق سرویس‌های زیر