دانشگاه شهید بهشتی
دانشکده مهندسی برق و کامپیوتر
ترم دوم ۹۰-۸۹

برنامه‌سازی پیشرفته

گروه درسی بر روی گوگل
تارنامه ارسال تمرینات
استاد : دکتر آزاده منصوری
برنامه‌سازی پیشرفته - دانشگاه شهید بهشتی - ترم دوم سال تحصیلی ۹۰-۸۹ | تمرینات سری پنجم
آخرین به روز رسانی : ۲۵ فروردین ۹۰

تمرینات سری پنجم


کتابخانه‌ها و کامپایل پروژه

  1. تمرین اول : کامپایل ساده

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

    توجه : در این تمرین نباید فایلی اضافه نمایید یا نام فایلها را تغییر دهید، یعنی کلاس‌ها را به دو بخش header/body تقسیم نکنید. همچنین برای کامپایل کردن باید از دستورات ساده زیر استفاده نمایید :
    g++ code1.cpp
    ./a.out
    g++ code2.cpp
    ./a.out	
    
  2. تمرین دوم : کامپایل پیشرفته

    مجددا کدهای اولیه (نه خروجی تمرین اول)‌ را طوری تغییر دهید که با کامپایل پیشرفته کامپایل و اجرا شوند. دقت داشته باشید که در کامپایل پیشرفته ابتدا باید هر کلاس جداگانه آبجکت گیری شود و سپس همه به یکدیگر لینک گردند، بنابراین جدای include و تغییرات ساده سوال قبل، می‌بایست کلاس‌ها را به header/body تقسیم نمایید و در دو فایل جداگانه قرار دهید. خروجی این تمرین ۱۰ فایل خواهد بود. علاوه بر این ده فایل، یک فایل متنی دیگر نیز شامل تمام تراکنش‌ها در ترمینال (کامپایل تک تک فایلها و لینک نهایی و اجرای برنامه) اضافه کنید و هر ۱۱ فایل را فشرده کرده به عنوان پاسخ تمرین ارسال نمایید.

  3. تمرین سوم : استفاده از کتابخانه‌های موجود

    کد برنامه sniffex.c برنامه‌ایست که با استفاده از کتابخانه pcap و زبان سی، پس از اجرا ده بسته تراکنشی شبکه را دستگیر کرده و به شما نمایش می‌دهد سپس بسته می‌شود. آنرا کامپایل و اجرا کنید و کلیه مراحل را ارسال نمایید، یعنی از هنگامی که ترمینال را برای کامپایل برنامه باز می‌کنید تا انتهای اجرای کامل برنامه، تمام محتویات ترمینال را به عنوان پاسخ ارسال کنید (با یک کپی پیست ساده)

    لازم به ذکر است که برای اجرای این برنامه باید کتابخانه pcap را از اینترنت برای سکوی خود تهیه نمایید، آنرا کامپایل کنید تا آبجکت فایل آن تهیه گردد و سپس با استفاده از نکاتی که در کلاس آموخته‌اید، آنرا به فایل کد sniffex.c لینک نمایید.

    راهنمایی : برای این تمرین حتی لازم نخواهد بود فایل sniffex.c را باز کنید.
    نکته : دقت داشته باشید چون این برنامه جهت اجرا باید کنترل کارت شبکه را در دست بگیرد، احتیاج به اجازه مدیریت سیستم دارد، بنابراین آنرا با دسترسی root اجرا نمایید. در سیستم های لینوکسی اینکار به این طریق انجام می‌پذیرد :
    #have compiled sniffex.c and a.out is ready now
    sudo ./a.out
    #sudo means "super user do"
    
    در ویندوز نیز اگر نسخه ویندوز دسترسی را بر روی فایلها اعمال می‌کند، کافیست با راست کلیک گزینه Run As Administrator را کلیک کنید.
  4. تمرین چهارم (امتیازی) : کتابخانه‌های قالب دار

    فایلهای کد DynamicArray.h و LinkedArray.h را به header/body تفکیک نمایید. اکنون با دستور زیر آنها را کامپایل کرده آبجکت فایل تهیه کنید :

    g++ -c DynamicArray.cpp
    g++ -c LinkedArray.cpp
    
    اگر تا اینجای کار برنامه شما خطایی دارد، آنرا اصلاح کنید تا به درستی کامپایل شود. سپس سعی کنید برنامه تست تمرین چهار را به این دو فایل لینک نمایید.
    1. خطاهای ایجاد شده به چه دلیل هستند؟
    2. دو راه حل برای آن پیدا کنید و حداقل یکی را به کار ببندید
    3. مزایا و معایب این راه‌حل ها را مطرح نمایید و نتیجه بگیرید

    پیوست‌ها

    code1.cpp
    prime.h
    sieve.h
    code2.cpp
    basicMaths.h
    advancedMaths.h
    sniffix.c
    فایل فشرده شامل ۷ فایل فوق : assg5_src.zip

    نحوه ارسال

    پاسخ سوالاتی که حل کرده‌اید در قالب قبلی به آدرس [email protected] ارسال کنید. فایل‌هایی که ذکر نشده را فشرده سازی نکنید و خود فایل‌های برنامه را پیوست کنید. آخرین فرصت ارسال تمرینات این سری جمعه ۲ اردیبهشت ساعت ۱۲ ظهر خواهد بود.

    بازگشت

Site Footer

Sliding Sidebar