کمک تدریس | مبانی کامپیوتر و برنامه سازی - دانشگاه شهید بهشتی - ترم اول سال تحصیلی ۹۰-۸۹ | تمرینات سری چهارم ۹ آبان ۸۹ / استاد احمدی فر / عباس نادری

تمرینات سری چهارم


آشنایی با محیط

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

معرفی

چندین کامپایلر مختلف برای سی وجود دارد ، از جمله Visual C , Borland C , Turbo C , GCC , ... که از میان آنها GCC به عنوان کامپایلر استاندارد سی پلاس پلاس شناخته شده است. GCC مخفف عبارت Gnu Compiler Collection است و معمولا کامپایلرهای زبان‌های دیگری را نیز در بر می‌گیرد و بسته بزرگ و قابل توجهی است.

نصب

در سال‌های اخیر GCC که اساسا بر روی لینوکس ایجاد شده بود، به تقریبا تمام سیستم‌های عامل معروف (حتی سیستم‌های عامل موبایل) پورت شده است. جهت داشتن آن بر روی سیستم‌های عامل معمول به صورت زیر می‌توان عمل کرد:

Linux

از آنجایی که لینوکس توزیعات مختلفی (از جمله Ubuntu) دارد، فرآیند داشتن جی سی سی بر روی هرکدام از توزیع‌ها مختلف است. معمولا چون کاربران لینوکس تخصص لازم را دارند، خود می توانند با یک جستجوی ساده نصب آنرا یاد بگیرند. قابل توجه آنکه اکثر لینوکس‌های کامل و بزرگ (که بر روی دی وی دی ارائه می‌شوند) بر روی رسانه اصلی خود جی سی سی را دارا هستند و با نصب کامل لینوکس و یا استفاده از نرم‌افزار Package Manager می‌توان به سادگی آنرا مهیا کرد. برای توزیع محبوب Ubuntu و مشتقات آن، پس از اتصال به اینترنت با دستور زیر در ترمینال می‌توان آخرین نسخه جی سی سی را نصب نمود :

	sudo apt-get install gcc

Mac OS X

نسخه جی سی سی مکینتاش را خود شرکت اپل توزیع می کند. به همراه تمامی رایانه‌های مک خریداری شده دو دی وی دی موجود است که در یکی از آنها نرم‌افزار حجیمی به نام XCode وجود دارد (نام نرم‌افزارهای داخل دی وی دی بر روی آن حک شده است) . XCode در واقع محیط جامع و کامل توسعه نرم‌افزار به تمامی زبان ها برای مکینتاش است که از قدرت بی‌نظیری نیز برخوردار است. با نصب این نرم‌افزار، کامپایلر جی سی سی نسخه مک به سیستم افزوده خواهد شد.

Windows

دو نسخه مختلف جی سی سی برای ویندوز تهیه شده است. یکی از این نسخه‌ها Cygwin نام دارد که به دلیل دشواری نصب و تنظیمات زیاد محبوب نیست و نسخه دیگر MinGW مخفف Minimalist Gnu for Windows که از محبوبیت بیشتری برخوردار است و بسته‌های استاندارد و اولیه جی سی سی را داراست. جهت دریافت این بسته می توانید از سایت رسمی آن به آدرس www.mingw.org استفاده کنید (کمی دشوار) و یا از سایت www.bloodshed.net نرم افزار DevC++ را دریافت نمایید.

نکته : به دلیل اعمال تحریم توسط SourceForge امکان دانلود مستقیم نرم‌افزار DevC++ فراهم نیست، شما می‌توانید آنرا از آدرس http://abiusx.com/archive/temp/devcpp-4.9.9.2_setup.exe دریافت نمایید.

نکته : پس از نصب MinGW باید به صورت دستی آدرس محل نصب آنرا به PATH در ویندوز بیافزایید، در غیر اینصورت امکان استفاده از آنرا خارج از نرم‌افزار DevC++ نخواهید داشت.

نکته : نرم‌افزار DevC++ سالهاست که به روز نمی‌شود و نسخه کامپایلری که به همراه آن است بسیار قدیمی است. توصیه می‌شود اصلا از ویندوز استفاده نکنید!

استفاده

پس از اینکه نصب جی سی سی به اتمام رسید، در ترمینال دو دستور زیر را تست کنید :

	gcc
	no input files
	g++
	no input files

در صورتی که خروجی یکی از این دستورات معادل command not found بود یعنی جی سی سی به طور کامل نصب نشده است. اکنون برای نوشتن و اجرای اولین برنامه خود ، یک فایل متنی باز نمایید (مثلا با استفاده از Notepad یا Vim یا Nano) و داخل آن کد زیر را بنویسید :

	int main() { return 0; }

فایل را با نام test.cpp ذخیره کنید، داخل ترمینال شوید و با استفاده از دستور cd به پوشه‌ای که فایل برنامه درون آن قرار دارد بروید. با دستورات زیر برنامه کامپایل و اجرا خواهد شد:

	gcc test.cpp
	./a.out

نکته : در ویندوز به جای ./a.out از a.exe استفاده کنید.

اگر هر دوی این دستورات بدون خطا اجرا شدند، شما اولین برنامه خود را نوشته و اجرا کرده‌اید! توجه داشته باشید، دستور اول که مربوط به کامپایل کردن است ممکن است کمی زمان بگیرد. برای ادامه فایل test.cpp را بگشایید و برنامه زیر را درون آن جایگزین کنید:

	#include <iostream>
	int main()
	{
		std::cout << "Hello World" <<std::endl;
		return 0;
	}

برنامه جدید را نیز به همان روش کامپایل و اجرا کنید، با این تفاوت که به جای دستور gcc از دستور g++ استفاده نمایید زیرا این برنامه از ویژگی‌های C++ که در C نیستند استفاده می‌کند و باید با کامپایلر C++ کامپایل گردد. عبارت Hello World باید بر روی خروجی قرار گیرد.

محیط برنامه‌سازی

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

جهت رفع این مشکل، دسته‌ای از برنامه‌های معمولا غول پیکر با نام IDE به معنی Integrated Development Environment یا محیط توسعه چندگانه به وجود آمده‌اند. نرم‌افزار غول پیکر XCode یک نمونه از اینگونه نرم‌افزارهاست که همزمان به شما اجازه انجام تمامی فرآیندهای مورد نیاز را می‌دهد.

IDE های موجود برای زبان سی پلاس پلاس بسیار متنوع و متعدد هستند، ولی در این میان Eclipse گوی رقابت را از دیگران ربوده است. Eclipse که در ابتدا برای زبان جاوا طراحی شده بود، به دلیل امکانات فوق العاده‌اش به زودی توانست به IDE اصلی زبان‌هایی مانند Java, PHP, Python و حتی C++ تبدیل گردد. اکلیپس در واقع کامپایلر هیچ زبانی را در بر ندارد و از کامپایلرهای نصب شده بر روی سیستم بهره می‌گیرد.

اکلیپس در نسخه‌های بیشماری عرضه شده است ولی نسخه استاندارد آن برای توسعه برنامه‌های سی، با نام Eclipse CDT به معنی C Development Tools شناخته می‌شود. این نرم‌افزار را می‌توانید از سایت رسمی Eclipse دانلود کنید. همچنین لازم به ذکر است که اکلیپس برای تمامی سیستم‌های عامل موجود است.

تمرینات

  1. چند IDE

    نام ۱۰ IDE معروف برای کار با GCC را به دست بیاورید. ( دقت داشته باشید که Turbo C نمی‌تواند جزو این لیست باشد زیرا از کامپایلر GCC استفاده نمی‌کند.) سپس دلیل پیدایش هرکدام را ذکر نمایید.

  2. امکانات

    لیست امکاناتی که یک IDE به برنامه‌ساز می‌دهد، تهیه کنید. (بیش از ۱۵ مورد) برای هر عنوان کمی توضیح ذکر کنید.

  3. راه‌اندازی

    محیط برنامه‌سازی Eclipse CDT را برای سیستم خود تهیه و نصب کنید. دقت داشته باشید که برای استفاده از آن می‌بایست GCC و جاوا بر روی سیستم نصب باشند. برنامه زیر را در این محیط بنویسید و اجرا کنید، و معین کنید خروجی آن چیست. دقت داشته باشید که اجرای اولین برنامه بر روی اکلیپس احتمالا برایتان بسیار دشوار خواهد بود (به دلیل تنظیمات و ویژگی‌های متعدد آن) ولی پس از تسلط به آن، دیگر اکلیپس را ترک نخواهید کرد:

    	#include <stdio.h>
    	#include <iostream>
    	using namespace std;
    	
    	int main()
    	{
    		int a=5;
    		cout <<a;
    		cout <<a++;
    		cout <<a;
    		cout <<++a;
    		cout <<endl;
    		a=5;
    		cout << a << a++ << a << ++a <<endl;
    		a=5;
    		printf("%d%d%d%d\n",a,a++,a,++a);
    		return 0;
    	}
  4. نسخه‌ها

    تحقیق کنید که آخرین نسخه رسمی GCC در حال حاضر چه نسخه‌ای است و چه امکاناتی در نسخه جدید به آن افزوده شده است. نتایج را به صورت فایل متنی ارائه دهید.


نکات این سری تمرینات : حتما در تمامی روزهایی که برای این تمرینات فرصت دارید، کمی وقت بگذارید. هرچقدر کمتر بر روی این تمرین زمان صرف کنید، در آیند‌ه‌ی برنامه‌نویسی خود دچار مشکل خواهید شد. ابتدا از تمرین ۳ شروع کنید زیرا به احتمال زیاد حین انجام آن با مشکل مواجه خواهید شد و اگر زودتر شروع کنید می توانید با کمک دیگران مشکلات را مرتفع نمایید. تمرین ۱ و ۴ جهت آشنایی هرچه بیشتر شما با وضعیت محیط‌های برنامه‌سازی در دنیای امروز است، ولی تمرین ۲ شما را با امکاناتی که به عنوان یک برنامه‌نویس می‌توانید در اختیار بگیرید آشنا می‌سازد.

نکات کلی تمرینات :

  • اگر تمرینی را اصلاح می‌کنید، پاسخ آنرا در قالب Reply به ای‌میل بررسی ارسال قبلی بفرستید (تا بدنه مکالمات و نتایج قبلی درون ای‌میل جدید نیز باشد)
  • تمامی تمرینات هر سری باید در یک ای‌میل به ای‌میل حل تمرین [email protected] ارسال شوند. دقت کنید به گروه ارسال نکنید.
  • به ازای هر تمرین دقیقا یک فایل باید پیوست ای‌میل باشد. لطفا پاسخ تمرینات را در بدنه ای‌میل ننویسید و به صورت فایل پیوست ضمیمه کنید.
  • عنوان (Subject) ای‌میل باید از فرمت خاصی تبعیت کند:
    Student Name - Student ID - Assignment Set - Revision
    نام دانشجو، شماره دانشجویی، شماره سری تمرین، شماره ارسال . به عنوان مثال :
    Abbas Naderi - 85213151 - Assignment 2 - Revision 1
    شماره تمرین بر اساس هر سری تمرین معین می‌گردد. هر دفعه که پاسخ یک سری خاص از تمرینات را ارسال می‌کنید، شماره ارسال را یکی افزایش دهید. یعنی اگر پاسخ تمرینات سری اول را ارسال کردید، شماره ارسال یک است. پس از آنکه اصلاحاتی در پاسخ‌ها ایجاد کردید و مجددا آنرا ارسال کردید، شماره ارسال را ۲ قرار دهید. در غیر اینصورت تنها آخرین ارسال شما در نتیجه تاثیر می‌گذارد.
  • تمرینات شما پس از ارسال در صف بررسی قرار می‌گیرند. پس از بررسی نتیجه تمرینات به همان ای میل ارسال می‌شود. در صورت لزوم در نتیجه اعلام می‌شود که تمرینات خاصی را مجددا و کاملتر انجام دهید. معمولا بررسی تمرینات سریع انجام می‌شود (کمتر از چند ساعت) اگر در یک هفته پاسخ بررسی به شما ارسال نشد، حتما تمریناتتان به دست من نرسیده است.
  • در صورتی که تمرین خاصی را انجام نداده‌اید، در بدنه ای‌میل ذکر نمایید.
  • در بدنه ای‌میل ذکر نمایید که هر فایل پیوست مربوط به کدام تمرین است (مگر اینکه نام فایلها معین کننده باشد)
  • در نام فایلهای پیوست تنها از کاراکترهای ساده انگلیسی استفاده کنید.
  • لطفا سوالات درسی و غیره را در پاسخ ای‌میل بررسی شده تمرینات نفرستید. عنوان ای‌میل سوالات نباید از فرمت ذکر شده در بالا پیروی کند.
  • هرگز فایل اجرایی به ای‌میل خود پیوست نکنید زیرا ای‌میل به مقصد نخواهد رسید.
  • تمرینات مشابه از ارسال نکردن تمرین نمره بیشتری می‌گیرند ولی در صورتی که تمرین مشابه مشاهده شود، درصدی از نمره تمام افرادی که تمارین مشابه دارند کسر می‌گردد (حتی اگر جداگانه به این نتایج رسیده باشند)
  • اگر پاسخ تمرینی را ارسال کنید، از شما انتظار می‌رود آنرا بلد باشید. بنابراین اگر کوییزها و پرسش‌ها و امتحانات جور دیگری نشان دهند، ناامید کننده‌خواهد بود.

آخرین فرصت ارسال : جمعه ۱۴ آبان ساعت ۲۴
بازگشت

Site Footer

Sliding Sidebar