close
دانلود فیلم
c++
دانلود کلیه الگوریتمهای درس طراحی الگوریتم

عنوان : دانلود کلیه الگوریتمهای درس طراحی الگوریتم

نوع فایل : cpp

حجم فایل : 50 KB

 

توضیحات:
 الگوریتمهایی مانند الگوریتم پریم - الگوریتم کروسکال - الگوریتم ژنتیک - الگوریتم فلوید - الگوریتم برجهای هانوی - فروشنده دوره گرد ضرب ماتریسها - ماتریس استراسن و...
ادامه مطلب...

مرجع برنامه نویسی

 

نحوه تعریف متغیرها:

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

ادامه مطلب...

آموزش c++

 

در این مطلب  قراره در مورد یکی از زبان های اصلی برنامه نویسی صحبت کنیم. البته سعی میشه به زبان ساده تر گفته بشه که به راحتی قابل فهم باشه.همه ما میدونیم c++ زبان شی گرا یا به اصطلاح object-oriented هست.خب این یه فرق اساسی با زبان c بود ولی چرا نیاز بود که یک زبان برنامه نویسی شی گرا بشه ؟ یا شی گرایی چیه؟زبان c++ شی گراست یعنی در اون اگه میخوایم مثلاٌ درباره یه دستگیره در (!) کد بنویسیم، کاربر استفاده کننده از برنامه ما نباید از مکانیسم داخلی این دستگیره چیزی بفهمه ؛اینکه به طور مثال یه میله داخل یه حلقه باید بچرخه یا چیزای دیگه و طبیعتاٌ وقتی که اندازه این میله هم تغییر کنه و کوچیک و بزرگ شه هم کاربر از وجود اونمطلع نمیشه.

ادامه مطلب...

 

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

ادامه مطلب...

 

C زبان ساخت یافته است و هر برنامه در این زبان شامل یک یا چند تابع است . یکی از این توابع که اسم آن ()main است به عنوان  تابع اصلی برنامه و بقیه توابع بعنوان تابع عرضی هستند . اجرای برنامه با تابع  اصلی ، یعنی ()main شروع می شود.

ادامه مطلب...

 

در محیط گرافیك در زبانهای برنامه نویسی تحتDOS اشكال ساده مثل مستطیل و دایره را می توان با پاك كردن و كشیدن مجدد براحتی جابجا نمود اما حركت اشكال پیچیده با این روش بسیار وقت گیر می باشد بطوریكه پاك كردن و كشیدن دوباره شكل كاملا به چشم می آید. در چنین مواقعی می بایست شكل مورد نظر را كه در داخل یك مستطیل فرضی قرار دارد , وارد یك حافظه كمكی نمود و محتویات این حافظه را در نقطه ای دلخواه در صفحه چاپ كرد.

در ابتدای كار یك متغیر از نوعint تعریف كنید كه اندازه شكل محاسبه شود و در آن قرار گیرد. یك متغیر نیز از نوع*void تعریف كنید كه در واقع بافری است كه رنگ پیكسل های مستطیل در آن به ترتیب قرار می گیرند تا در موقع لزوم به همان ترتیب چاپ شوند:

ادامه مطلب...
برنامه ای بنویسید که به کاربر بگوید یک عدد بین 1 و 99 در نظر بگیرد. سپس از 50 شروع کرده و از کاربر سوال کند که بزرگتر از آن است یا کوچکتر یا مساوی تا به عدد مورد نظر برسد.(به کمکdo while)
ادامه مطلب...

آرايه ای از اشيا

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


مثال. myarray آرايه ای از اشيا است که در برنامه اصلی با چهار عدد مقداردهی شده و نمايش داده می شود.

#include <iostream.h>
class display {
   int number;
public:
   display(int n) {this->number=n;}
   int show() { cout << this->number << endl; }
};
int main() {
   display myarray[4] = {1,2,3,4,};
   for (int i = 0; i < 4 ;i++ )
      myarray[i].show();
   return 0;
}


هر بار که تابع عضوی فراخوانی می شود به طور خودکار اشاره گری به نام this را به شیئی که آن را فراخوانی کرده است ارسال می کند. اشاره گر this يک پارامتر ضمنی برای تمام توابع عضو است و داخل تابع برای رجوع به شیء فراخواننده می تواند مورد استفاده قرار گيرد.

آرایه

يک آرايه (array) مجموعه ای از محل های پشت سرهم حافظه است که همگی دارای يک نام می باشند . یک آرایه نوعی متغیر است که بجای ذخیره یک مقدار یکسری از مقادیر هم نوع را ذخیره می کند. هر محل ذخيره سازی در آرا‍يه را يک عنصر آرايه می نامند.

شکل کلی تعريف آرايه به صورت زير است:

DataType array_name[size];

Size تعداد عناصر آرایه است که در کروشه ذکر می شود. DataType نوع عناصر آرايه است که از هر نوع داده ای می تواند باشد.

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

اسم آرايه اشاره گری به اولين عنصر آن است. به عناصر می توان به طور منفرد با اضافه کردن اندیس به اسم آرايه مراجعه کرد. انديس (index) باعث متمايز شدن عناصر آرايه از يکديگر می شود و تعيين می کند عنصر آرايه چندمين محل ذخيره سازی در آرايه است. در ++C انديس آرایه يک عدد صحيح است که از صفر شروع می شود.


مثال. آرايه A که به صورت زير تعريف شده است يک آرايه يک بعدی با 5 عنصر از نوع صحيح است. عناصر آن شامل A[3] , A[2] , A[1] , A[0] و A[4] است.

int A[5];


هنگام دسترسی به عناصر آرايه بعد از اسم آرايه بايد درون کروشه شماره انديس عنصر مورد نظر ذکر شود. عناصر آرايه را می توان توسط دستور انتساب مقداردهی کرد يا مقدار آن را از ورودی درياقت کرد.

A[0] = 10;

cout << "Enter a number:";
cin >> A[1];

با توجه به اينکه تعداد عناصر آرايه معين است برای کارکردن روی کليه عناصر آرايه حلقه های for روش مناسبی هستند.


مثال. در برنامه زير کليه عناصر يک آرايه از ورودی دريافت و سپس نمايش داده می شود.

#include
int main() {
   int A[10];
   for (int k = 0; k < 10; k++) {
      cout << "Enter an integer: ";
      cin >> A[k];
      }
   for (int k = 0; k < 10; k++)
      cout << A[k] << endl;
   return 0;
}


بخاطر داشته باشيد انديس عناصر آرايه با n عنصر از 0 تا n-1 است. اگر به عنصری خارج از اين محدوده دسترسی پیدا کنید کامپایلر خطائی نمی گيرد ولی این می تواند به مشکلات جدی منجر بشود چون ممکن است روی داده برنامه های دیگر درون حافظه تاثير بگذارد.

اگر اندیس آرایه اعشاری باشد کامپايلر آن را به يک عدد صحيح گرد می کند.


مثال. در برنامه زير سعی شده به عنصری خارج از اندازه آرايه دسترسی شود. دستور myarray[10] باعث می شود مقدار 99 در محلی ذخيره شود که 6 خانه بعد از آرایه myarray است این حافظه ممکن است شامل داده لازم برای برنامه دیگر باشد.

#include
int main() {
   int myarray[5];
   myarray[10] = 99;
   cout << myarray[10] << endl;
   return 0;
}


آرایه های یک بعدی

آرايه يک بعدی (1-dimensional array) برای نگهداری ليستی از مقادير استفاده می شود. هر عنصر آرايه يک بعدی از طريق يک انديس مشخص می شود.


مثال. آرايه زير 20 مکان پشت سرهم حافظه را برای مقادير ممیز شناور اختصاص می دهد. اولین مکان با tempreture[0] بعدی با tempreture[1] و.... . آخرین عنصر tempreture[19] است.

float tempreture[20];


آرایه های چند بعدی

می توان بعدهای بیشتری به آرایه داد. در يک آرايه چند بعدی (multidimensional) به بيش از يک عدد برای دسترسی به هر عنصر آرايه نياز است. يک آرايه دو بعدی به 2 انديس و يک آرايه سه بعدی به 3 انديس نياز دارد. محدوديتی برای تعداد ابعاد آرايه در ++C وجود ندارد اما بندرت آرایه بیشتر از دو يا سه بعد دیده شده است.


مثال. آرايه زير دارای دو بعد است که اندازه هر بعد آن 4 است. بنابراين آرايه 16=4×4 عدد صحيح را نگه می دارد. به هر عدد از طریق دو اندیس دسترسی می شود. مثلا عنصر اول myarray[0][0] است.

int myarray[4][4];

آرايه های دو بعدی دارای ساختار جدولی هستند و به صورت مجموعه ای از سطرها و ستون ها ديده می شوند. جدول زیر موقعیت عناصر مثال قبل که دارای 4 سطر و 4 ستون است را نشان می دهد.

0,00,10,20,3
1,01,11,21,3
2,02,12,22,3
3,03,13,23,3

عناصر آرايه صرفنظر از تعداد بعدهای آن سطر به سطر در خانه های پشت سرهم حافظه ذخيره می شوند. برای مطالعه بيشتر درباره روش سطری می توان‍يد به بخش نمايش آرايه در درس ساختمان داده مراجعه نماييد.


 

انواع داده عددی

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

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

انواع متغير عددی در دو دسته کلی قرار می گيرند:

• متغيرهای صحيح، مقاديری را نگه می دارند که بخش کسری ندارند. متغيرهای صحيح خود دو نوع هستند: علامتدار، که می توانند مقادير مثبت و منفی را ذخيره کنند و بدون علامت، که تنها مقادير مثبت را نگه می دارند.
• متغيرهای مميزشناور، مقاديری را که دارای بخش کسری هستند يعنی اعداد حقيقی را نگه می دارند.


عبارات signed، unsigned، short و long اصلاح کننده هائی هستند که برای تغيير و تبديل انواع پايه از قبيل char، int و double اضافه می شوند .

انواع داده ها وابسته به platform کامپيوتر است و ممکن است روی کامپيوترهای مختلف متفاوت باشد، اما C با توجه به استاندارد ANSI موارد زير را تضمين می دهد:

• يک کاراکتر هميشه يک بايت است.
• اندازه short کوچکتر يا مساوی اندازه int است.
• اندازه int کوچکتر يا مساوی اندازه long است.
• اندازه unsigned برابر با int است.
• اندازه float کوچکتر مساوی با اندازه double است.

 

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

نام متغير

هر متغير دارای يک نام است. در زبان C اسامی متغير ها بايد از قوانين زير پيروی کند:

• اسم می تواند شامل حروف، ارقام و کاراکتر زيرخط ( _ ) باشد.
• اولين حرف اسم متغير بايد يک حرف باشد. زير خط هم می تواند در ابتدای اسم متغير بکار برود ولی توصيه نمی شود.
• بزرگ و کوچک بودن حروف مهم است، بنابراين اسامی count و Count به دو متغير جداگانه اشاره دارند. برنامه نويسان اغلب از حروف کوچک برای متغير ها استفاده می کنند و اسامی با حروف بزرگ معمولا برا ثابت ها بکار می رود.
• کلمات کليدی نمی توانند به عنوان نام متغير استفاده شود.


مثال. چند نمونه از اسامی مجاز و غير مجاز در جدول زير ديده می شود:

مجازبودننام متغير
مجازPercent
مجازy2x5__fg7h
مجازannual_profit
مجاز، ولی توصيه نمی شود_1990_tax
غير مجاز، کاراکتر#savings#account
غيرمجاز، کلمه کليدیdouble
غيرمجاز، اولين کاراکتر رقمی9winter

در بعضی کامپايلرها نام متغير می تواند 31 کاراکتر (در ++C استاندارد 1024 کاراکتر) طول داشته باشد؛ يعنی کامپايلر تنها 31 کاراکتر اول نام را درنظر می گيرد. با اين طول می توان نامی برای متغير انتخاب کرد که معنی داده ذخيره شده در آن را منعکس کند.

نام متغير کمک به روشن شدن کاربرد آن برای کسی که source برنامه را نگاه می کند .


مثال. در برنامه ای که پرداخت های وام را محاسبه می کند مقدار بهره را می توان در متغير interest_rate ذخيره کرد.


مرسوم است از زيرخط برای جدا کردن متغيرهای چند کلمه ای استفاده شود. يا ازروش نام گذاری کوهانی (camel notation) که حرف اول هر کلمه بزرگ است پيروی می شود.


مثال. متغيری که بهره بانکی را ذخيره می کنذد می تواند به دو صورت interest_rate يا InterestRate تعريف شود.


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

 

برای آشنائی سريعتر با ساختار برنامه ++C يک برنامه ساده کوچک در اينجا ارائه می شود که ممکن است در وحله اول کاملا قابل درک نباشد. توضيحات بيشتر درباره برنامه در دنباله آن داده شده است.


مثال. برنامه Hello.cpp يک پيغام را روی صفحه نمايش می دهد.

/* HELLO.CPP */
#include <iostream>
using namespace std;
int main()
{
   //print hello word on the screen
   cout << "Hello World!n";
   return 0;
}


تابع اصلی

در زبان C برنامه از يک سری تابع (function) تشکيل می شود (توضيحات بيشتر درباره تابع). هر برنامه الزاما يک تابع اصلی به نام main دارد که برنامه از آن شروع به اجرا می کند.

نوع برگشتی تابع در خط اعلان تابع و قبل از نام تابع تعيين می شود. که برای تابع اصلی معمولا نوع صحيح يا int درنظر گرفته می شود. چون برخی از سيستم عامل ها نيازدارند برنامه مقداری را به آنها برگرداند تابع main يک عدد صحيح را بر می گرداند تا سيستم عامل متوجه بشود که همه چيز درست است. البته در بعضی موارد تابع اصلی را می توان به صورت void main() هم تعريف کرد. کلمه void مشخص می کند تابع چيزی بر نمی گرداند.

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

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

int main()
{
   return 0;
}


فايل های ضميمه

معمولا اولين عمل در هر برنامه C++ ضميمه کردن فايل های هدر است. فايل های هدر (include file) فايل هائی شامل تعاريف توابع يا کلاس ها هستند. اگر توابع يا متغيرهائی وجود دارند که در برنامه های مختلف مورد استفاده قرار می گيرند بهتر است در يک فايل هدر قرار داده شوند، سپس فايل هدر در هرجائی که از آن استفاده می شود ضميمه شود.

برای ضميمه کردن يک فايل به برنامه علامت # سپس include و نام فايل ضميمه در داخل < > ذکر می شود.

اولين خط برنامه Hello.cpp فايل هدر iostream.h را ضميمه برنامه می کند.

#include <iostream.h>

تعداد زيادی از فايل های هدر در ++C برای استفاده از توابع کتابخانه ای همراه با نصب کامپايلر در اختيار برنامه نويس قرار می گيرند. يکی از اين فايل ها فايل هدر iostream.h است که توابعی برای عمليات ورودی و خروجی دارد. اگر اين فايل در ابتدای برنامه ضميمه شود کليه کلاس ها و توابع تعريف شده در آن قابل دسترسی هستند.

پسوند .h مشخص مي کند يک فايل هدر است. اگر کامپايلر C را استفاده می کنيد پسوند .h بايد مشخص شود ولی در ++C نياز نيست. البته بهتر است که ذکر شود تا توسط کامپايلرها پشتيبانی شود.


نمايش پيغام

تابع cout برای نمايش داده ها و پيغام ها روی صفحه نمايش بکار می رود. اين توابع در فايل هدر iostream قرار دارد که بايد به برنامه ضميمه شده باشد.

cout << "Hello World!n";

در زبان ++C يک رشته کاراکتری بايد بين دو علامت " " محصور شود

n به کامپايلر می گويد از يک خط جديد شروع کند.


فضای اسمی

فضای اسمی (namespace) اجازه گروه بندی مجموعه ای از توابع يا اشيای سراسری را تحت يک نام می دهد (توضيحات بيشتر درباره فضاهای اسمی). وقتی يک فايل هدر اضافه می شود محتويات آن در فضای اسمی استاندارد std قرار می گيرد. برای دسترسی به کتابخانه های استاندارد درون std بايد از عملگر :: استفاده شود.

مثال. وقتی iostream در برنامه ضميمه شده است برای دسترسی به تابع cout از اين کتابخانه بايد فضای اسمی std قبل از آن و بدنبالش علامت :: تعيين شود:

Std::cout <<"Hello World!n";

البته به سادگی می توان با استفاده از عبارت using فضای اسمی مورد استفاده را در برنامه تعيين کرد و به عناصر درون std تنها با صدازدن نامشان دسترسی پيدا کرد.

وقتی پسوند .h اضافه می شود نيازی به اضافه کردن فضای اسمی استاندارد نيست ولی به طور معمول بهتر است که از استاندارد ANSI/ISO تبعيت بشود و فضای اسمی std توسط عبارت using تعيين شود.

نکته. کامپايلرهای قديمی عبارت using را قبول نمی کنند.


توضيحات

توضيحات (comment) عباراتی هستند که هنگام ترجمه ناديده گرفته می شوند. توضيحات شرح مرحله به مرحله از عمليات برنامه را برای برنامه نويس، يا هر فردی که روی کد برنامه کار می کند، ارائه می دهد.

در ++C دو روش برای ساختن توضيح وجود دارد؛ يک روش که برای توضيحات کوتاه است با علامت // شروع می شود. کامپايلر از اين علامت تا انتهای خط را به عنوان توضيح درنظر می گيرد.

روش ديگر که معمولا برای توضيحات طولانی تر استفاده می شود بستن توضيحات بين علائم /* */ است.

//print hello word on the screen
/* This is my first program in C++ */

نکته. توضيحات يک خطی به دنبال علامت // تنها در کامپايلرهای ++C قابل استفاده است.

 

++C بر مبنای زبان برنامه نويسی C است. زبان C در سال 1972 در آزمايشگاه Bell Telephone نوسط Dennis Ritchie به عنوان زبان پياده سازی برای سيستم عامل يونيکس طراحی شد. مقدار زيادی از برنامه نويسی يونيکس با زبان C انجام شده است. C در نتيجه تکوين پروسه ای است که با يک زبان قديمی تر به نام BCPL شروع شده بود. زبان BCPL زبانی بر اساس زبان B بوده است که توسط Ken Thompson در آزمايشگاه Bell طراحی شده بود.

به دليل اينکه C زبان قدرتمند و انعطاف پذيری بود، سريعا گسترش پيدا کرد. برنامه نويسان شروع به استفاده از آن برای انواع برنامه ها کردند. سازمان های مختلف شروع به پياده سازی نسخه های C خود شدند. تا اينکه در سال 1983، ANSI استاندارد C را تنظيم کرد که به عنوان ANSI Standard C شناخته می شود. کامپايلرهای بعدی C از اين استاندارد پيروی کردند.

زبان برنامه نويسي ++C بر اساس زبان C توسط Bjarne Stroustrup ابداع شد. آنچه امروزه ++C ناميده مي شود از سال 1979 آغاز شده است. نسخه اوليه آن "C with classes" ناميده شد که بعدا به ++C تغيير کرد. ++C کليه ويژگی های زبان C را داراست. تفاوت بين آنها اينستکه ++C شي گرائی را پشتيبانی می کند. البته پيشرفت های ديگری هم دارد برای مثال کار با رشته ها و سروکارداشتن با خطاها در آن قوی تر است.

نسخه اول ++C ابتدا در AT&T در سال 1983 استفاده شد. اولين نسخه تجاری آن در اکتبر 1985 به بازار آمد. در سال 1998 ANSI و ISO متفقا ++C را استاندارد کردند. به همين دليل اغلب ++C محض را ANSI Standard ++C يا ISO Standard ++C می نامند.

با تکامل ++C يک کتابخانه استاندارد هم با آن شکل گرفت. اولين کتابخانه استاندارد ++C کتابخانه stream I/O بود که امکاناتی برای جايگزينی توابع قديمی C مانند printf و scanf مهيا کرد. بعد از آن مهمترين کتابخانه استاندارد کتابخانه Standard Template بود.

توجه داشته باشيد که کد C در کامپايلر ++C کامپايل می شود اما عکس آن صادق نيست و کد ++C لزوما در کامپايلر C کامپايل نمی شود.

به کانال تلگرام سایت ما بپیوندید