.. title: Fundamental of Programming .. slug: fp .. date: 2015-08-12 22:55:01 UTC+04:30 .. tags: .. category: .. link: .. description: .. type: text Fundamental of Programming books ============================================================================== * Computer science, a first course. by Alexandra I. Forsythe; Keenan, T. A.; Organick, E. I.; Stenberg, W.; New York: Wiley; 2nd edition (1975) * الگوریتم و فلوچارت؛ شهریار رسولی؛ نشر: ارکان دانش (30 مهر، 1390). C books ============================================================================== * Schaum`s Outline of Theory and Problems of Programming with C. Tata McGraw Hill; Second Edition edition (1998) * The C Programming Languag. Brain W. Kernighan and Dennis M. Ritchie, 2nd edition 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 `_ : فقط برای سیستم عامل‌های شرکت مکینتاش است. Especial microcontroller ============================================================================== در این بخش ابزارها و کامپایلرهایی گذاشته می‌شود که برای پردازنده‌ها و کنترلگرهای خاص به زبان C آماده شده‌اند. * `SDCC `_ Sample codes ============================================================================== * `برنامهٔ ضرب دو عدد به کمک ماتریس(این برنامه می‌تواند در فاکتوریل عددها به کار برده شود) `_ * `برنامهٔ جمع دو ماتریس ذخیره شده در یک پروندهٔ متنی `_ * `راه حل دیگری برای جمع دو ماتریس ذخیره شده در یک پروندهٔ متنی با کمک گرفتن از تعدادی از تابع‌های زبان c `_ .. class:: yoosofan-change-ltr .. include:: files/files/course/fp/fp01.c :code: c :number-lines: C and C++ compiler to javascript ============================================================================== * `Emscripten `_ : با این ابزار بسادگی می‌توانید برنامه‌های به زبان C را به زبان جاوااسکریپت تبدیل کنید. * `Cheerp `_ : این ابزار فقط برای زبان C++ است. Links ============================================================================== * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * `Standard of C `_ * `List of links of C `_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * `standard library `_ * `gnu c manual `_ * `C programming language `_ * ``_ * `IEEE-754 (IEEE rounding double numbers standard) `_