.. title: مبانی برنامه نویسی .. slug: fp .. date: 2015-08-12 22:55:01 UTC+04:30 .. tags: .. category: .. link: .. description: .. type: text کتاب‌های مبانی الگوریتم نویسی ============================================================================== * نخستین درس در علم كامپیوتر (جلد اول)؛ ناشر : مركز نشر دانشگاهی، نویسندگان: فورسایت، كینان، اورگانیك، ستنبرگ؛ ترجمه : احمد توحیدی، محمد روغنی، ناصر قاسم آقایی، مصطفی كرمانی؛ ویراسته : عفت خضرائی، ابراهیم نقیب‌زاده مشایخ؛ تاریخ اولین چاپ : 1377؛ چاپ آخر : چاپ سوم - 1389. * الگوریتم و فلوچارت؛ شهریار رسولی؛ نشر: ارکان دانش (30 مهر، 1390). کتاب‌های زبان C ============================================================================== * مبانی کامپیوتر و برنامه نویسی به زبان C؛ محمد داورپناه جزی؛ نشر: دانشگاه صنعتی اصفهان، دفتر انتشارات (21 دی، 1390). * نظریه و مسائل برنامه نویسی به زبان ‭ C‬(سی)؛ نوشته بایرون اس؛ گاتفرید؛ ترجمه خدایار صادقی؛ ویراستار امیربانو قاسمی‌نژاد؛ قم: سازمان تحقیقات، آموزش و ترویج کشاورزی؛ ۱۳۷۱ کامپایل و اجرای برخط ============================================================================== .. class:: yoosofan-change-ltr * ``_ * ``_ * https://godbolt.org , https://github.com/compiler-explorer * https://cppinsights.io * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ کامپایلرها ============================================================================== در این بخش فهرست تعدادی از کامپایلرهای مناسب برای انجام تمرین‌ها و پروژه‌های درسی آورده شده است. * `gcc `_ : مشهورترین کامپایلر متن باز و رایگان است که بر روی سیستم عامل‌های گوناگون می‌تواند نصب شود و اغلب به صورت پیش فرض در انواع لینوکس‌ها نصب شده است. در `orwelldevcpp`_ ، `codeblocks`_ و `devcpp`_ گذاشته شده است و به سادگی می‌توان با آن کار کرد. برای کار به صورت خط فرمان در ویندوز `mingw `_ و `cygwin `_ ساخته شده است. * `clang `_ * `digitalmars `_ * `djgpp (for DOS) `_ * `pcc `_ * `open watcom `_ * `Amsterdam Compiler Kit `_ * `open64 `_ * `Borland Cpp 5.5 `_ فهرستی از کامپایلرها * ``_ ویندوز Pre-Built Binaries: https://releases.llvm.org/download.html https://github.com/llvm/llvm-project/releases/ ویرایشگرها ============================================================================== * `geany `_ : `نسخهٔ قابل حمل آن در ویندوز `_ * `notepadpp `_ : این ویرایشگر فقط در ویندوز است ولی به دلیل این که از امکانات پایهٔ ویندوز کمک گرفته است به سادگی می‌تواند در wine در لینوکس نیز اجرا شود. نسخهٔ قابل حمل آن `notepadpp_portable `_ است. * `kate `_ محیط‌های یکپارچهٔ اجرا (IDE) ============================================================================== یکی از مشکل‌هایی که اغلب برنامه نویسان در مبانی برنامه نویسی با آن روبرو هستند به کار بردن ابزارهایی است که بتواند کار آنها را ساده‌تر نماید و به سادگی بتوانند پروژه‌های خود را انجام دهند. البته گزینهٔ شخصی من برای نوشتن کدهای ساده به کار بردن ترکیب `geany`_ به عنوان ویرایشگر و کامپایلر `gcc`_ است. به هر حال چون بیشتر برنامه نویسان مبانی علاقه‌مند هستند که بتوانند تمرین‌ها و پروژه‌های خود را انجام دهند در این بخش پیشنهادهایی به آنها می‌شود که به سادگی بتوانند کار خود را انجام دهند. یکی از مسأله‌هایی که دانشجویان به آن توجه ندارند این است که نوشتن برنامه‌ها با ابزارهایی که روی رایانهٔ آنها نصب می‌شود و اغلب به کار می‌برند این است که شاید دیگران آن ابزارها را به کار نبرند و از سوی دیگر کسی که می‌خواهد برنامهٔ آنها را تحویل بگیرد نتواند آنها اجرا کند زیرا استاندارد را رعایت نکرده‌اند. بنابراین پیشنهاد می‌شود به صورت استاندارد برنامه نویسی کنند تا برنامهٔ آنها بتواند در هر جایی اجرا شود. همچنین به این توجه نمایند که در هنگام تحویل پروژه‌های‌شان بتوانند به سادگی برنامهٔ خود را بر روی رایانه‌هایی تحویل دهند که نیاز است که کامپایلر روی آنها نیست و باید در همان زمان برنامه را روی آن رایانه تغییر دهند و تحویل دهند. بنابراین پیشنهادهایی که برای نوشتن کد به کمک محیط‌های مجتمع اجرا دارم به ترتیب به قرار زیر است: * `orwelldevcpp `_ نسخه‌های تازه‌تری از `DevCpp`_ است. نسخهٔ قابل حمل آن در `Portable orwelldevcpp `_ گذاشته شده است. * `codeblocks `_ این نرم افزار به خوبی بر روی سیستم عامل‌های گوناگون نصب می‌شود و می‌تواند کار خود را انجام دهد. در بخش `Downloads `_ می‌توان نسخه‌‌های گوناگون آن را اجرا نمود. * `Ch `_ : یکی از محیط‌های جالب یکپارچه برنامه نویسی است که شاید بهترین ویژگی آن مفسر بودن آن برای زبان C است که به خوبی مشکل‌های کار با اشاره‌گرها را گزارش می‌کند و البته بدی آن این است که پس از گزارش اخطار برای یک اشاره‌گر یا بیرون زدن از آرایه برای آن حافظه‌ای اختصاص می‌دهد تا برنامه کار خود را ادامه دهد و شاید برنامه نویس متوجه نشود که مشکلی برایش پیش آمده است. این نرم افزار توانمند بر روی سیستم عامل‌های گوناگون اجرا می‌شود و دارای نسخه‌های گوناگونی است. نسخه‌ای که برای انجام کارهای آموزشی بسیار مناسب است ولی نمی‌توان آن را برای کارهای تجاری به کار برد نسخهٔ `student `_ آن است که همراه ویرایشگر `ChIDE `_ است. * `Qt Creator `_ * `kdevelop `_ * `cbuilder `_ * `DevCpp `_ : یکی از محیط‌های اجرای یکپارچه مناسب دیگر است.ولی چند سال است که به روز نشده است و البته مشکل‌هایی دارد. گمان می‌کنم 7پشتیبانی این نرم افزار از conio.h به دلیل استاندارد نبودن چندان خوب نیست. * `Visual Studio Express `_ : فقط برای سیستم عامل ویندوز است و البته نرم افزار سنگینی است که روی رایانه‌های قدیمی نمی‌تواند اجرا شود. * `xcode `_ : فقط برای سیستم عامل‌های شرکت مکینتاش است. پردازنده‌های ویژه ============================================================================== در این بخش ابزارها و کامپایلرهایی گذاشته می‌شود که برای پردازنده‌ها و کنترلگرهای خاص به زبان C آماده شده‌اند. .. class:: yoosofan-change-ltr * `SDCC `_ برنامه‌های نمونه ============================================================================== * `برنامهٔ ضرب دو عدد به کمک ماتریس(این برنامه می‌تواند در فاکتوریل عددها به کار برده شود) `_ * `برنامهٔ جمع دو ماتریس ذخیره شده در یک پروندهٔ متنی `_ * `راه حل دیگری برای جمع دو ماتریس ذخیره شده در یک پروندهٔ متنی با کمک گرفتن از تعدادی از تابع‌های زبان c `_ .. class:: yoosofan-change-ltr .. include:: files/files/course/fp/fp01.c :code: c :number-lines: کامپایلر C و C++ به جاوااسکریپت ============================================================================== * `Emscripten `_ : با این ابزار بسادگی می‌توانید برنامه‌های به زبان C را به زبان جاوااسکریپت تبدیل کنید. * `Cheerp `_ : این ابزار فقط برای زبان C++ است. وب‌گاه‌هایی دربارهٔ زبان C ============================================================================== .. class:: yoosofan-change-ltr * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * `Standard of C `_ * `List of links of C `_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * ``_ * `standard library `_ * `gnu c manual `_ * `C programming language `_ * ``_ * `IEEE-754 (IEEE rounding double numbers standard) `_ * `آموزش زبان C `_ * `ویکی‌بوک `_ * `برنامه نویس `_