خوراک پی سی کدنویس

ورود کاربران

آمار سایت

اعضا : 135
محتوا : 67
پیوندها : 6
بازدیدهای محتوا : 59185

حاضرین در سایت

 38 مهمان حاضر

برای نمایش بهتر سایت، از مرورگر استاندارد فایرفاکس استفاده کنید! مرورگر اینترنت اکسپلورر متعلق به دهه گذشته است!

firefox icon

Valid XHTML 1.0 Transitional Valid CSS!

مطالعه موردی کلاسها: آرایه پویا

توجه: باز شدن در یک پنجره جدید. PDFچاپنامه الکترونیک

نوشته شده توسط مدیر سایت چهارشنبه 27 آبان 1388 ساعت 23:28

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

تعریف این کلاس در لیست زیر آمده است:

ادامه مطلب: مطالعه موردی کلاسها: آرایه پویا

 

تمرین ششم درس برنامه نویسی پیشرفته

توجه: باز شدن در یک پنجره جدید. PDFچاپنامه الکترونیک

نوشته شده توسط مدیر سایت سه شنبه 26 آبان 1388 ساعت 13:22

در برنامه نمایش تصویر دیدیم که می توان مختصات نقطه ای که تصویر از آنجا نقاشی شود و طول و عرضی که باید اشغال کند را به دلخواه تغییر داد. می خواهیم این پارامترها را از کاربر بگیریم. یعنی دو مختصات x و y که نقطه شروع را تعیین کنند و دو پارامتر طول و عرض که طول و عرض نمایش تصویر را مشخص کنند. برای این منظور یک دیالوگ به برنامه نمایش تصویر اضافه کنید که چهار پارامتر فوق را از کاربر بگیرد (مثلا یک منوی تنظیمات اضافه کنید که با کلیک روی آن دیالوگ فوق باز شود) ضمنا این چهار پارامتر را به صورت باینری در یک فایل با نام settings.bin ذخیره کنید و در اجرای بعدی برنامه آنها را خوانده و اعمال کنید.  برای دیدن مثال، ادامه مطلب را ببینید.

ادامه مطلب: تمرین ششم درس برنامه نویسی پیشرفته

 

مثال پانزدهم: برنامه نمایش تصویر

توجه: باز شدن در یک پنجره جدید. PDFچاپنامه الکترونیک

نوشته شده توسط مدیر سایت سه شنبه 26 آبان 1388 ساعت 13:16

مثال پانزدهم از درس برنامه نویسی پیشرفته

در این مثال به کمک MFC یک برنامه تک سندی (SDI) ایجاد کرده ایم که قابلیت بازکردن و نمایش تصاویر را دارد.

دانلود کد برنامه نمایش تصویر در ویژوال C++ 2008

   

پروژه درس برنامه نویسی پیشرفته C++

توجه: باز شدن در یک پنجره جدید. PDFچاپنامه الکترونیک

آخرین به روز رسانی در سه شنبه 26 آبان 1388 ساعت 10:07 نوشته شده توسط مدیر سایت جمعه 22 آبان 1388 ساعت 19:46

پروژه اول (احتمالا 9 نمره):

به کمک MFC یک پروژه‌ی مبتنی بر دیالوگ بنویسید که یک رشته ریاضی از کاربر بگیرد و آن را تحلیل و ترسیم کند.
امکاناتی که باید برنامه داشته باشد:

  • رشته مذکور می تواند شامل عملگرهای اصلی، عملگر توان ^، پرانتز و توابع sin, cos, tan, log, log10, sqrt, abs, sinh, cosh و tanh باشد.
  • تقدم عملیات به کمک پرانتزها رعایت شود.
  • تعیین محدوده‌ی نمایش منحنی (مقادیر حداقل و حداکثر برای محورهای x و y)
  • امکان نمایش گراف به سه صورت: خطی، نقطه ای و میله ای
  • امکان نمایش و عدم نمایش علائم راهنمای گراف (برچسبهای محور x و y، عنوان محورها، گرید زمینه گراف)
  • وجود گرافی در زیر گراف اصلی برای نمایش تبدیل فوریه گراف رسم شده.
  • قابلیت باز کردن فایل صوتی فشرده نشده (wav) و نمایش کامل سیگنال و تبدیل فوریه آن
  • اختیاری: قابلیت بزرگنمایی در راستای محور افقی (1 نمره اضافی)

مثالی از یک رشته ورودی احتمالی:

2*sin(x) + (3x^2+3)*8^(1/3)+2*sqrt(log10(x))

پروژه دوم (احتمالا 10 نمره):

به کمک MFC یک پروژه چند سندی بنویسید که بتواند تصاویر را باز کند و قابلیتهای زیر را داشته باشد:

  • امکان باز کردن تصاویر با فرمتهای jpg، bmp، png و gif
  • امکان چرخش تصویر ورودی با زاویه دلخواه
  • امکان تغییر اندازه (resize) دلخواه
  • امکان تغییر میزان روشنایی و کنتراست تصویر
  • امکان نمایش تصویر به صورت رنگی، خاکستری و سیاه سفید
  • امکان گرفتن تبدیل فوریه دو بعدی و نمایش آن
  • امکان اعمال یک فیلتر دلخواه 5*5 به تصویر و نمایش خروجی آن
  • امکان باز کردن چندین تصویر
  • اختیاری: قابلیت دریافت تصویر از اسکنر (1 نمره اضافی)

نکته: به طور مستقیم حق استفاده از کتابخانه هایی غیر از MFC‌ را ندارید
راهنمایی: برای باز کردن تصاویر می توانید از کلاس CImage واقع در فایل سرآیه‌ی AtlImage.h استفاده کنید.

نحوه ارزیابی:
1. میزان کامل بودن امکانات خواسته شده
2. نحوه نوشتن کد: خوانایی، استفاده درست از اشاره گرها، توابع و کلاسها
3. بهینه بودن کد: از نظر سرعت اجرا و مدیریت حافظه (عدم نشت حافظه)
4. نحوه طراحی رابط کاربری: سهولت و زیبایی
5. مدیریت استثنائات (ورودیهای نامناسب مثلا اگر کاربر به جای 2*sin(x) عبارت 2sinx وارد کند)

 

تفاوت ارسال پارامترهای تابع به صورت مقدار، ارجاع و اشاره گر

توجه: باز شدن در یک پنجره جدید. PDFچاپنامه الکترونیک

نوشته شده توسط مدیر سایت چهارشنبه 20 آبان 1388 ساعت 18:36

در زبان C++ به سه صورت می توان پارامترهای یک تابع را ارسال کرد: توسط مقدار (value)، توسط ارجاع (reference) و توسط اشاره گر (Pointer)

ارسال پارامتر به صورت مقدار

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

ادامه مطلب: تفاوت ارسال پارامترهای تابع به صورت مقدار، ارجاع و اشاره گر

   

صفحه 2 از 12