.. title: C++ .. slug: cpp .. date: 2015-08-12 10:55:52 UTC+04:30 .. tags: .. category: .. link: .. description: .. type: text Books =================================================================================================== * `C++ from the Ground Up / Herbert Schildt / McGraw-Hill/Osborne (Third Edition 2003) `_ * `Programming principles and practice using C++ / Bjarne Stroustrup / Pearson education 2008) `_ * `The C++ Programming Language / Bjarne Stroustrup / Addison-Wesley (Third Edition 1997) `_ * `Programming with Objects: A Comparative Presentation of Object-Oriented Programming with C++ and Java / Avinash C. Kak / John Wiley & Sons (2003 ) `_ * `Thinking in C++ / Bruce Eckel / Second edition 2000 `_ Online edit, compile, and run ============================================================================== * ``_ * ``_ * https://godbolt.org , https://github.com/compiler-explorer * https://cppinsights.io * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ Compilers ============================================================================== در این بخش فهرست تعدادی از کامپایلرهای مناسب برای انجام تمرین‌ها و پروژه‌های درسی آورده شده است. * `gcc `_ : مشهورترین کامپایلر متن باز و رایگان است که بر روی سیستم عامل‌های گوناگون می‌تواند نصب شود و اغلب به صورت پیش فرض در انواع لینوکس‌ها نصب شده است. در `orwelldevcpp`_ ، `codeblocks`_ و `devcpp`_ گذاشته شده است و به سادگی می‌توان با آن کار کرد. برای کار به صورت خط فرمان در ویندوز `mingw `_ و `cygwin `_ ساخته شده است. * `clang `_ * `digitalmars `_ * `djgpp (for DOS) `_ * `pcc `_ * `open watcom `_ * `Amsterdam Compiler Kit `_ * `open64 `_ * `Borland Cpp 5.5 `_ List of compilers * ``_ Windows Pre-Built Binaries: https://releases.llvm.org/download.html https://github.com/llvm/llvm-project/releases/ Editors ============================================================================== * `geany `_ : `نسخهٔ قابل حمل آن در ویندوز `_ * `notepadpp `_ : این ویرایشگر فقط در ویندوز است ولی به دلیل این که از امکانات پایهٔ ویندوز کمک گرفته است به سادگی می‌تواند در wine در لینوکس نیز اجرا شود. نسخهٔ قابل حمل آن `notepadpp_portable `_ است. * `kate `_ Integrated Development Environments (IDEs) ============================================================================== یکی از مشکل‌هایی که اغلب برنامه نویسان در مبانی برنامه نویسی با آن روبرو هستند به کار بردن ابزارهایی است که بتواند کار آنها را ساده‌تر نماید و به سادگی بتوانند پروژه‌های خود را انجام دهند. البته گزینهٔ شخصی من برای نوشتن کدهای ساده به کار بردن ترکیب `geany`_ به عنوان ویرایشگر و کامپایلر `gcc`_ است. به هر حال چون بیشتر برنامه نویسان مبانی علاقه‌مند هستند که بتوانند تمرین‌ها و پروژه‌های خود را انجام دهند در این بخش پیشنهادهایی به آنها می‌شود که به سادگی بتوانند کار خود را انجام دهند. یکی از مسأله‌هایی که دانشجویان به آن توجه ندارند این است که نوشتن برنامه‌ها با ابزارهایی که روی رایانهٔ آنها نصب می‌شود و اغلب به کار می‌برند این است که شاید دیگران آن ابزارها را به کار نبرند و از سوی دیگر کسی که می‌خواهد برنامهٔ آنها را تحویل بگیرد نتواند آنها اجرا کند زیرا استاندارد را رعایت نکرده‌اند. بنابراین پیشنهاد می‌شود به صورت استاندارد برنامه نویسی کنند تا برنامهٔ آنها بتواند در هر جایی اجرا شود. همچنین به این توجه نمایند که در هنگام تحویل پروژه‌های‌شان بتوانند به سادگی برنامهٔ خود را بر روی رایانه‌هایی تحویل دهند که نیاز است که کامپایلر روی آنها نیست و باید در همان زمان برنامه را روی آن رایانه تغییر دهند و تحویل دهند. بنابراین پیشنهادهایی که برای نوشتن کد به کمک محیط‌های مجتمع اجرا دارم به ترتیب به قرار زیر است: * `orwelldevcpp `_ نسخه‌های تازه‌تری از `DevCpp`_ است. نسخهٔ قابل حمل آن در `Portable orwelldevcpp `_ گذاشته شده است. * `codeblocks `_ این نرم افزار به خوبی بر روی سیستم عامل‌های گوناگون نصب می‌شود و می‌تواند کار خود را انجام دهد. در بخش `Downloads `_ می‌توان نسخه‌‌های گوناگون آن را اجرا نمود. * `Ch `_ : یکی از محیط‌های جالب یکپارچه برنامه نویسی است که شاید بهترین ویژگی آن مفسر بودن آن برای زبان C است که به خوبی مشکل‌های کار با اشاره‌گرها را گزارش می‌کند و البته بدی آن این است که پس از گزارش اخطار برای یک اشاره‌گر یا بیرون زدن از آرایه برای آن حافظه‌ای اختصاص می‌دهد تا برنامه کار خود را ادامه دهد و شاید برنامه نویس متوجه نشود که مشکلی برایش پیش آمده است. این نرم افزار توانمند بر روی سیستم عامل‌های گوناگون اجرا می‌شود و دارای نسخه‌های گوناگونی است. نسخه‌ای که برای انجام کارهای آموزشی بسیار مناسب است ولی نمی‌توان آن را برای کارهای تجاری به کار برد نسخهٔ `student `_ آن است که همراه ویرایشگر `ChIDE `_ است. * `Qt Creator `_ * `kdevelop `_ * `cbuilder `_ * `DevCpp `_ : یکی از محیط‌های اجرای یکپارچه مناسب دیگر است.ولی چند سال است که به روز نشده است و البته مشکل‌هایی دارد. گمان می‌کنم پشتیبانی این نرم افزار از conio.h به دلیل استاندارد نبودن چندان خوب نیست. * `Visual Studio Express `_ : فقط برای سیستم عامل ویندوز است و البته نرم افزار سنگینی است که روی رایانه‌های قدیمی نمی‌تواند اجرا شود. * `xcode `_ : فقط برای سیستم عامل‌های شرکت مکینتاش است. Links =================================================================================================== * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * http://eel.is/c++draft/ * https://www.fluentcpp.com/ Samples =================================================================================================== simple complex number class --------------------------------------------------------------------------------------------------- .. code-block:: cpp #include using namespace std; struct ComplexCls{ double re, img; void input(void){ cout<<"Enter real part of complex number: "; cin>>re; cout<<"Enter imaginary part of complex number: "; cin>>img; } void display(void){ cout< using namespace std; const int n=4 , m=4; void transpose(int a[][m]){ for(int i=0; i>a[i][j]; } } }; int main(){ int a[n][m]; for(int i =0 ;i