تبليغاتX
C++ آموزش
خب بالاخره این جلسه هم اماده شد. اما دیدم حجمش زیاد میشه دو قسمتش کردم. تازه خب بد تر اینه که ازاین به بعد دیر به دیر تر اپدیت می کنم مثلا دو ماهی به یه بار بالاخره یواش یواش درسا سختر می شه و مسئولیت ها بیشتر می شه کارا بیشتر میشه و.... حالا فعلا اینو داشته باشین ببینم چی میشه.

مثال 1: سیستم پنجره ای:

اهداف مثال:

1.آشنایی با نحوه ی حل مساله و پیاده سازی کلاس ها ی لازم.

2.آشنایی عملی با مفهوم کلاس و اشیاء

جلسه ی قبل گفتیم که سیستم پنجره ای یعنی چه اگر به یاد ندارید حتما همین الان انتهای جلسه هجدهم را بخوانید.

 

اهداف کلاس:

گفتیم که در یک چنین سیستمی باید در هر لحظه

1.به پنجره ی فعال دسترسی داشته باشیم.

2.تعداد پنجره های موجود را بدانیم.

3.بتوانیم پنجره های دیگر را فعال کنیم(بین پنجره ها حرکت کنیم)

 

اهداف اشیاء نمونه سازی شده از کلاس(هر پنجره):

لازمه ی اینها این است که

4.هر پنجره بتواند خودش را رسم کند(ایجاد نمود گرا فیکی)

5. ویژگی های اساسی خود را مانند موقعیت قرار گیری در صفحه نمایش(left,top) , طول و عرض و رنگبندی را بداند.

6.بداند آیا پنجره ی فعال خودش است یا خیر.

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

دانلود این جلسه

دانلود سورس کد این جلسه

ادامه ی مطلب فرا موش نشود.


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در یکشنبه هشتم اردیبهشت 1387 و ساعت 1:8 |
متاسفانه با یه اشتباه احماقنه قالب وبلاگم پرید در نتیجه تمال لوگوهای دوستان هم پرید

دوستانی که تبادل لوگو کرده بودن نگران نباشن تاچند روز آینده درستش میکنم

+ نوشته شده توسط سجاد مهدی بیرقدار در یکشنبه پنجم اسفند 1386 و ساعت 23:39 |

جلسات گذشته با مفاهیم اولیه ی شئ گرایی آشنا شدیم این مفاهیم در عین سادگی مفاهیم بسیار پایه ای هستن که به فهم راحت مطالب جلسات آینده کمک بسیاری می کنند. پس بهتر است قبل از مطالعه ی این جلسه مروری بر جلسه ی قبل داشته باشید هر چند مطالب ارائه شده در این جلسه وابستگی چندانی به مطالب پیشین ندارد. اما همین ارتباط کم اندک اندک گسترده شده و مشکلاتی را ایجاد می کند

 

اشاره گر اشیا:

تمامی مفاهیم اشاره گر اشیا مانند اشاره گر استراکچر ها یا همان ساختمان هاست

به تعریف یک اشاره گر از کلاس MyClass توجه نمایید

MyClass *ptrMyObject;

همانطور که می بینید این تعریف هیچ فرقی با تعریف یک اشاره گر استراکچر و یا حتی یک نوع اولیه مثلا intندارد

int *ptrMyInt;

دقت کنید که تا اینجا فقط یک اشاره گر تعریف شده و هیچ شی ساخته نشده ! همچنین این اشاره گر هیچ گونه مقداردهی اولیه نشده پس به محل نامشخصی از حافظه اشاره می کند. در واقع گویی که به یک شئ اشاره می کند.شئ که وجود ندارد! در صورت تلاش برای دستیابی به

ادامه ی مطلب یادتون نره

 دانلود این پست به صورت پی دی افدانلود این پست به صورت پی دی اف


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در یکشنبه پنجم اسفند 1386 و ساعت 23:3 |

سلام خوبین !؟ جاتون خالی تو این بارندگی های اخیر یه قسمت از سقف خونمون اومد پایین یعنی اول چند شب ازش آب چکید و بعدش هم ریخت پایین یکی از نتایجش آبندی شدن سیم تلفنمون بود که سرعت اینتر نتمون حسابی بالا برد در نتیجه بعد از یه هفته تقریبا الان دو باره خوب شده و اومدم آپدیت کنم  

 البته هنوز هم نمیدونم با این سرعت بدرد نخور موفق میشم یا نه!  

نه خیر نمیشه هر چی سعی کردم پی دی اف این جلسه رو آپلود کنم نشد! متاسفم باشه برا چند روز دیگه ببینم چی میشه! من که می دونم آخرش یاید همه ی سیم کشی های تلفن رو عوض کنم !

                             

+ نوشته شده توسط سجاد مهدی بیرقدار در شنبه چهارم اسفند 1386 و ساعت 1:9 |
شرمنده فرصت حل کردنشون و نداشتم

85 83 84

لینک ها تصحیح شد (اگه این پرشینگیگ مسخره بازی در نیاره)

+ نوشته شده توسط سجاد مهدی بیرقدار در سه شنبه شانزدهم بهمن 1386 و ساعت 2:14 |

سلام امید وارم همه خوب باشین.ببخشید که یکمی دیر شد متاسفانه بعد از امتحانات هم کلی کار های جور واجور سرم ریخت و اینجوری شد دیگه


جلسه ی قبل با نحوه ی ساخت یک کلاس ساده و نمونه سازی(ساخت اشیاء) از آن کلاس آشنا شدیم و کلاسی با نام MyClass  برای کار با اعداد کسری ساختیم و در مورد توابع سازنده و مقدار دهی اولیه به فیلدها از طریق توابع سازنده و مفهوم اشاره گر this را بررسی کردیم.

در ادامه به بررسی تابع سازنده ی کپی می پردازیم.

هنگامی که دستور انتساب را بین دو شی اجرا می کنیم

 

تعریف و مقدار دهی اولیهMyClass n1(1,2) , n2(1,4);

دستور انتساب n1=n2;

 

تابعی به نام تابع سازنده ی کپی اجرا میشود در صورتی که این تابع توسط برنامه نویس تعریف نشده باشد کامپایلر شئ سمت راست را به صورت بیت به بیت در شئ سمت چپ کپی می کند که این کار در مواردی نتایج نامناسبی دارد مثلا اگر کلاسمان یک فیلد اشاره گر داشته باشد که به محلی از حافظه اشاره می کند این نوع کپی شدن باعث می شود که فیلد اشاره گر در شئ n1 به همان چیزی اشاره کند که شئ n2 اشاره می کند در واقع به این معنی خواهد بود که یک کپی کامل از شئ n2ایجاد نمی شود در چنین مواردی بسته به نیاز تابع سازنده ی کپی طراحی میشود این تابع به صورت زیر می باشد.

MyClass::MyClass( MyClass& tmp )

{

اعمال لازم برای ایجاد کپی

}

 دانلود این جلسه به صورت pdf در یافت این پست به صورت پی.دی.اف

دانلود سورس کد های این جلسهدریافت سورس کد های این جلسه

ادامه ی مطلب را می توانید در لینک ادامه مطلب بخوانید

به امید موفقیت همگی دوستان فعلا خدا نگهدار


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در سه شنبه شانزدهم بهمن 1386 و ساعت 1:38 |

سلام

خب دیگه برگشتم گفتم بیام این کپک های وبلاگ رو یکمی پاک کنم زشته!

جدا از شوخی امتحاناتو که دادیم حالا باید دعا کنیم مشروط نشیم تازه چی چند روز تعطیلی بین دو ترمون هم که با این برفی که اومد خراب شد!! آخه یازدهم همین ماه بازم امتحان دارمبی خیال چیکار می شه کرد دیگه


جلسه ی شانزدهم

جلسه ی قبل گفتیم که کار کردن با دنیایی از اشیا بسیار کاراتر و ساده تر از کار با دنیایی از توابع و متغیر های سر گردان است. و گفتیم که برای ساخت اشیا در دنیای واقعی نیاز به نقشه ای از شی مورد نظر داریم و در دنیای رایانه این نقشه به عنوان کلاس شناخته می شود.بعد از تعریف نقشه یا همان کلاس می توانیم اشیا متعدی از روی نقشه بسازیم. نتیجه این که  برای داشتن هر شی در برنامه فقط کافیست یک بار و فقط یک بار نقشه ی دقیق آن را تحت عنوان کلاس تعریف کنیم و بعد از آن هر تعداد از شی مورد نظر در برنامه درست کنیم

اما برای تعریف یک کلاس باید تمام قطعات مورد نیاز و روابط آنها را باهم مشخص کنیم تا اشیا ساخته شده از کلاس مذکور بتوانند به درستی وظایف خود را انجام دهند. اما قطعات درون کلاس چه چیز هایی هستند ؟

خیلی ساده! توابع و متغیر ها قطعات یک کلاس یا یک شي هستند که در اصطلاح به عنوان اعضا کلاس شناخته می شوند. مثلا تابع عضو  که البته برای متغیر های عضو بیشتر می گویند فیلد.

 به طریقه تعریف یک کلاس توجه کنید

 دانلود این جلسهدانلود این پست به صورت پی دی اف

دانلود سورس کد های  برنامه ی این جلسه دانلود برنامه ی این جلسه

ادامه ی مطلب را می توانید در لینک ادامه مطلب بخوانید

خب فعلا  سعی می کنم در اسرع وقت آپدیت کنم


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در دوشنبه یکم بهمن 1386 و ساعت 1:13 |
سلام

ایندفعه دیگه شر مندتونم

می خوام بگم فعلا خدا نگهدار همتون تا پایان امتحانات این ترم کلی از درس هام مونده که نخوندم

کتاب ۵۰۰ صفحه ای یکی از درس هام همین امروز اومد دستم پیام نوره دیگه !!!!(پیام بدبختی فلاکت و هر چی که دلتون بخواد!!!)

خلاصه این که تا ۲۰/۱۰ نمی تونم آپدیت کنم اما خود ۲۰/۱۰ منتظر باشین

برمیگردم

سلام مجدد و موقت! برنامه امتحاناتم یکمی تغییر کرد چون بازم پیام نوره دیگه بنابراین ۲۶/۱۱ برمیگرم

ولی این دفع دیگه حتمیه!

+ نوشته شده توسط سجاد مهدی بیرقدار در چهارشنبه هفتم آذر 1386 و ساعت 17:19 |

در این جلسه.سعی میکنم مقدمات نیاز به شی گرایی را به گونه ای ملموس با کمک بررسی کامل. مسئله ی معروف برج هانوی بیان کنم

 

صورت مسئله ی برج هانوی:

فرض کنید سه میله داریم که برروی میله ی سمت چپ تعداد nحلقه با انداره های مختلف به صورت نزولی از پایین به بالا قرار داده شده و می خواهیم این حلقه هارا با شرایط زیر از میله ی سمت چپ به میله ی سمت راست منتقل کنیم

1.در هر جابجایی فقط یه حلقه را می توانیم جابجا کنیم

2.حق قرار دادن حلقه بزرگتر بر روی حلقه ی کوچکتر را نداریم

(روشن است که برای این منظور باید از حلقه ی وسط به عنوان یک محل قرارگیری موقت حلقه ها استفاده کنیم)

 

 

خب برای انتقال حلقه ی I از سمت چپ به راست باید تمام حلقه های روی حلقه ی I را به میله ی وسط منتقل کنیم و بعد حلقه ی I  را به میله ی سمت راست منتقل کنیم و بعد از آن حلقه هایی که روی میله ی وسط است به میله ی سمت راست منتقل کنیم اما مشکلی که وجود دارد این است که نمی توانیم تمام حلقه های قبل از حلقه ی I را در یک حرکت جابجا کنیم بنا براین باید اول حلقه ی i-1را جابجا کنیم این خود نیز نیازمند مراحل کاملا مشابه با حلقه Iاست پس باید حلقه ی i-2را جابجا کنیم و این روند تا جابه جایی حلقه ی دوم ادامه دارد.

 

دانلود این پست به صورت پی.دی.اف دانلود پی.دی.اف این مطلب

دانلود سورس برنامه برج هانوی

 

 ادامه ی مطلب یادتون نره

 


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در چهارشنبه بیست و سوم آبان 1386 و ساعت 12:34 |
سلام  خوبین ؟ من برگشتم. داشتم یه پست خفن برای شروع مباحث شی گرایی درست می کردم کار طولانی شد حالا فعلا اینو داشته باشین تا اونی که گفتم چند روز آینده آماده شه. یکی از دوستان هم منبع برای ساختمان داده خواسته بود که من نمیشناسم(شرمنده)

آز آن جا که استراکچر ها انقدر ساده هستند که فقط با مثال قابل درک اند در این جلسه چند تابع ساده و مفید برای کار با استراکچرها را بررسی می کنیم

در این توابع از همان استراکچر personکه در جلسات قبل تعریف نمودیم استفاده می کنند.

struct date{

 int yy,mm,dd;

};

 

struct person{

 char name[40];

 date tt;

 float grade;

};

 

نکته:

نکته مهمی که یادم رفت بگم اینه که تعریف استراکچر ها باید قبل از تابع main باشند واین یک قاعده ی عمومی است و نه یک قاعده ی کلی یعنی ممکن است گاهی استراکچری جای دیگری تعریف شود.که بعنوان یک دانشجو با این حالت مواجه نخواهید شد(به احتمال زیاد)

 

در کلیه ی مثال ها فر ض می کنیم استراکچری از نوع personبه نام myvarداریم

مثال1:

تابع خواندن یک استراکچر از صفحه کلید.

void read(person *p){

 cin>>p->name;

 cin>>p->grade;

 cin>>p->tt.dd;

 cin>>p->tt.mm;

 cin>>p->tt.yy;

}

1.فرا خوانی این تابع به صورت read(&myvar);خواهد بود.

2.آرگمان تابع به صورت اشاره گر تعریف شده چرا که باید مقادیر خوانده شده به برنامه ی اصلی بر گردانده شود.

3.به نحوه ی دسترسی به فیلدهای اشاره گر pتوجه کنید .(استفاده از عملگر(<-))

4.بعد از دسترسی به فیلد ttبرای دسترسی به فیلد های dd,mm,yyاز عملگر نقطه استفاده شده چرا که tt یک استراکچر است نه یک اشاره گر.

 

باز نویسی تابع بالا با استفاده از رفرنس ها بجای اشاره گر

void read(person &p){

 cin>>p.name;

cin>>p.grade;

cin>>p.tt.dd;

cin>>p.tt.mm;

cin>>p.tt.yy;

}

فرا خوانی این تابع به صورت read(myvar);می باشد.

 

مثال 2:

تابع تعویض محتویات دو استراکچر:

void swap(person *p1,person *p2){

person tmp=*p1;

*p1=*p2;

*p2=tmp;

}

1.مانند همه اشاره گر ها برای دسترسی یه محتویات اشاره گر استراکچرها باید ار عملگر ستاره استفاده کنیم.

2.آرگمان ها به صورت اشاره گر هستند چون باید تغییرات به برنامه ی اصلی منتقل شود.

3.فراخوانی این تابع به صورت swap(&myvar1,&myvar2);است

 

باز نویسی لین تابع با رفرنس ها:

void swap(person &p1,person &p2){

person tmp=p1;

p1=p2;

p2=tmp;

}

3.فراخوانی این تابع به صورت swap(myvar1, myvar2);است

 

دانلود پی.دی.اف این پست دانلود این پست به صورت پی.دی.اف

فعلا

 

 


ادامه مطلب
+ نوشته شده توسط سجاد مهدی بیرقدار در پنجشنبه هفدهم آبان 1386 و ساعت 21:41 |