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

programer

بزرگترن مرجع برنامه نویسی جزوات رشته کامپیوتر

بایگانی
آخرین مطالب
پیوندهای روزانه

۱۰ مطلب در بهمن ۱۳۹۵ ثبت شده است

این کتاب توسط آقایان فرهاد و فرزاد ایمانی تهیه و گردآوری شده و در آن جهت انجام طراحی سایت آموزش کاربردی JavaScript CSS HTML داده شده است که برای شروع یادگیری برنامه نویسی تحت وب کتاب مفیدی است. این کتاب شامل ۷۲۲ صقحه می باشد که لیست سرفصل های آن در ادامه مطلب نیز موجود می باشد.




j


دانلود کتاب

                                  دانلود

ah.ghaderi
۲۷ بهمن ۹۵ ، ۱۶:۵۴ موافقین ۰ مخالفین ۰ ۰ نظر

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


دانلود کتاب

مدرس:استاد یوسفی



                                  دانلود

ah.ghaderi
۲۷ بهمن ۹۵ ، ۱۶:۳۲ موافقین ۰ مخالفین ۰ ۰ نظر

کتاب زبان ماشین و برنامه نویسی سیستم، که نوشته آقای داریوش نیک مهر است یکی دیگر از دروس اصلی رشته کامپیوتر می باشد که در آن به نحوه انجام اعمال محاسباتی در حافظه کامپیوتر و نحوه نوشتن برنامه های سیستمی با استفاده از زبان اسمبلی پرداخته می شود.
این کتاب مرجع درس زبان ماشین و برنامه نویسی سیستم در دانشگاه پیام نور می باشد که در ۱۰ فصل به بررسی و تشریح سیستم های کامپیوتری x86 و نحوه برنامه نویسی آنها با زبان اسمبلی پرداخته است
.


دانلودکتاب

مولف:داریوش نیک مهر

                                  دانلود

ah.ghaderi
۲۷ بهمن ۹۵ ، ۱۶:۲۳ موافقین ۰ مخالفین ۰ ۰ نظر

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

دانلود کتاب

مولف:موریس مانو


  

                                   دانلود

ah.ghaderi
۲۷ بهمن ۹۵ ، ۱۶:۱۱ موافقین ۰ مخالفین ۰ ۰ نظر

برنامه نویسی شی گرا #c

زبان برنامه سازی C#‎ یکی از قدرتمندترین زبان های برنامه سازی است، امروزه Platform.Net یکی از بهترین محیط های تولید محصولات نرم افزاری به شمار می رود و زبان C#‎ یکی از زبان های برنامه سازی شی گرا این Platform است. با به کارگیری برنامه نویسی شی گرا، نرم افزار تولید شده بسیار قابل فهم تر شده، نگهداری و سازماندهی آن اصولی تر و اصلاح و خطایابی آن ساده تر می شود. این موارد از اهمیت خاصی برخوردار هستند چراکه تخمین زده می شود که هشتاد در صد هزینه یک نرم افزار مربوط به دوره نگهداری و ارتقاء آن در چرخه طول عمرش است و ارتباطی با نوشتن و توسعه اولیه نرم افزار ندارد. با تمام این اوصاف، مشخص است که برنامه نویسی شی گرا تبدیل به یکی از کلیدی ترین مفاهیم برنامه نویسی در چند دهه آینده خواهد شد.


                                        دانلود
ah.ghaderi
۲۲ بهمن ۹۵ ، ۱۸:۴۸ موافقین ۰ مخالفین ۰ ۰ نظر

کتاب مهندسی نرم افزار اثر پرفسور راجر اس.پرسمن که یکی از بهترین منابع برای مهندسی نرم افزار هستش و شما میتونید از  لینک زیر دانلود کنید (ترجمه فارسی)

برای دانلود pdfمهندسی نرم افزار برروی لینک زیرکلیک کنید.


          

                                  دانلود

ah.ghaderi
۱۹ بهمن ۹۵ ، ۲۲:۲۴ موافقین ۰ مخالفین ۰ ۰ نظر

سی پلاس‌پلاس

++C (بخوانید سی پلاس‌پلاس) یک زبان برنامه‌نویسی رایانه‌ای همه‌منظوره، شیءگرا، سطح بالا و چندرگه (که از برنامه‌نویسی 

رویه‌ای، تجرید داده‌ها و برنامه‌نویسی شیءگرا پشتیبانی می‌کند)، عمومی و با قابلیت‌های سطح بالا و سطح پایین می‌باشد. این زبان دارای قابلیت‌های انواع داده ایستا، نوشتار آزاد، چندمدلی، معمولاً زبان ترجمه شده با پشتیبانی از برنامه‌نویسی ساخت‌یافته،برنامه‌نویسی شیءگرا، برنامه‌نویسی جنریک است. از آنجا که در سی++ اشیاء را می‌توان ابتدا به ساکن از کلاس‌هایی ایجاد کرد که به هیچگونه سلسله مراتب رده‌ها و وراثت مقید نیستند، لذا سی++ از برنامه‌سازی شیء بنیاد (object-based programming) نیز پشتیبانی می‌کند.[۱] ++C به همراه جد خود C از پرطرفدارترین زبان‌های برنامه‌نویسی تجاری هستند.

++C یک زبان سطح میانی در نظر گرفته می‌شود؛ این زبان دارای قابلیت زبان‌های سطح بالا و پایین به‌صورت هم‌زمان است.

++C توسط بی‌یارنه استراس‌تروپ ریاضیدان دانمارکی در سال ۱۹۷۹ در آزمایشگاه‌های بل (Bell Labs)، برای بهبود زبان سی و بر مبنای آن ساخته شد و آن را «C با کلاس» (C With Classes) نام‌گذاری نمود. در سال ۱۹۸۳ به ++C تغییر نام داد. توسعه با اضافه نمودن کلاس‌ها و ویژگی‌های دیگری مانند توابع مجازی، سربارگزاری عملگرها، وراثت چندگانه، قالب توابع، و پردازش استثناء انجام شد. این زبان برنامه‌نویسی در سال ۱۹۹۸ تحت نام ISO/IEC ۱۴۸۸۲:۱۹۹۸ استاندارد شد. نسخهٔ فعلی استاندارد این زبان ISO/IEC ۱۴۸۸۲:۲۰۱۴ است.[۲][۳]

تاریخچهٔ زبان[ویرایش]

بی‌یارنه استراس‌تروپ و ناشر کتابش-۲۰۱۰

استراس‌تروپ کار بر روی زبان «C با کلاس» را در سال ۱۹۷۹ آغاز کرد. ایدهٔ ساخت این زبان جدید در زمان کار بر روی تز دکترای خود به ذهن استراس‌تروپ خطور نمود. او متوجه شد که سیمولا دارای ویژگی‌هایی مناسب برای ساخت برنامه‌های بسیار بزرگ است اما برای استفادهٔ عملی بسیار کند است اما بی‌سی‌پی‌ال با وجود سرعت بسیار زیاد برای ساخت برنامه‌های بزرگ بسیار سطح پایین است. زمانی که استراس‌تروپ کار خود را در آزمایشگاه‌های بل (Bell Labs) آغاز نمود با مشکل تحلیل هسته یونیکس با توجه به محاسبات توزیع شده روبرو شده بود. با یادآوری تجربیات خود در دوران دکترا، او زبان C را با استفاده از ویژگی‌های سیمولا گسترش داد. C به این دلیل انتخاب شد که یک زبان عمومی، سریع، قابل حمل، و در سطح گسترده‌ای در حال استفاده بود. علاوه بر C و سیمولا زبان‌های دیگری مانند ALGOL ۶۸،ADA، CLU، ML نیز بر ساختار این زبان جدید اثر گذاشت. در ابتدا ویژگی‌های کلاس، کلاس‌های مشتق شده، کنترل نوع قوی، توابع درون‌خطی و آرگومان‌های پیش‌فرض از طریق Cfront به C اضافه شد. اولین نسخهٔ تجاری در سال ۱۹۸۵ ارائه شد.

در سال ۱۹۸۳ نام زبان از «C با کلاس» به ++C تغییر یافت. ویژگی‌های دیگر شامل توابع مجازی، سربارگزاری عملگر و نام تابع، ارجاعات، ثوابت، کنترل حافظه توسط کاربر به‌صورت آزاد، کنترل نوع بهتر، و توضیحات یک‌خطی به صورت BCPL با استفاده از «//» نیز به آن اضافه شد. در سال ۱۹۸۵ اولین نسخه زبان برنامه‌نویسی ++C انتشار یافت و مرجع مهمی برای این زبان فراهم شد در حالی که هیچ استاندارد رسمی‌ای وجود نداشت. در سال ۱۹۸۹ ویرایش ۲٫۰ از زبان ++C ارائه شد. ویژگی‌های جدیدی مانند ارث‌بری چندگانه، کلاس‌های انتزاعی، اعضای ایستای توایع، اعضای ثابت تابع، و اعضای حفاظت شده به آن اضافه شد. در سال ۱۹۹۰ «راهنمای مرجع ++C» منتشر شد. این کار بنیان استانداردهای بعدی شد. آخرین ویژگی‌های اضافه شده شامل موارد زیر بودند: قالب توابع، استثناها، فضاهای نام، تبدیلات جدید، و یک نوع داده منطقی.

در حین تکامل ++C کتابخانهٔ استاندارد نیز به‌وجود آمد. اولین نسخهٔ کتاب استاندارد شامل کتابخانهٔ جریانات I/O بود که جایگزین printf و scanf شد. در ادامه مهم‌ترین ویژگی اضافه شده Standard Template Library بوده‌است.

استاندارد زبان[ویرایش]

استاندارد سازی سی++ توسط یک گروه از تشکیلات ISO انجام می‌شود.[۴] تاکنون ۵ نسخه از استاندارد این زبان منتشر شده است؛ و استاندارد C++17 نیز برای انتشار در سال ۲۰۱۷ برنامه ریزی شده است.

سال استاندارد سی++ نام غیر رسمی
۱۹۹۸ ISO/IEC 14882:1998 C++98
۲۰۰۳ ISO/IEC 14882:2003 C++03
۲۰۰۷ ISO/IEC TR 19768:2007 C++07/TR1
۲۰۱۱ ISO/IEC 14882:2011 C++11
۲۰۱۴ ISO/IEC 14882:2014[۵] C++14
۲۰۱۷ هنوز تعیین نشده. C++17


در سال ۱۹۹۸ برای اولین بار پس از سال‌ها کار کمیته مشترک ANSIISO این زبان تحت عنوان ISO/IEC 14882:1998  و نام غیر رسمی C++98 استاندارد سازی شد. بعدها در سال ۲۰۰۳ نسخه جدیدی از استاندارد یعنی ISO/IEC 14882:2003 انتشار یافت و برخی از مشکلات و باگ‌های C++98 در آن رفع شد.

در سال ۲۰۰۵ یک گزارش فنی به اسم «گزارش فنی کتابخانهٔ ۱» (که معمولاً بصورت اختصار TR۱ خوانده می‌شود) منتشر شد که مواردی جدید را برای اضافه کردن به کتابخانه استاندارد در برداشت با این که این گزارش قسمتی از استاندارد نبود ولی بعدها در نسخه بعدی استاندارد یعنی C++11 اضافه شد.

نسخه بعدی با نام غیر رسمی C++11 و استاندارد  ISO/IEC 14882:2011 در تاریخ ۱۲ اوت ۲۰۱۱ مورد تأیید سازمان بین‌المللی استانداردسازی قرار گرفت و جایگزین C++03 شد .

در سال ۲۰۱۴ آخرین نسخه از این زبان تا حال حاضر در در تاریخ ۱۸ آگوست ۲۰۱۴ با نام غیر رسمی C++14 و استاندارد ISO/IEC 14882:2014 منتشر شد. هدف اصلی C++14همانند C++03 رفع مشکلات و همچنین اضافه کردن ویژگی‌ها و بهبود جزیی C++11 بوده است.

انتشار نسخه بعدی استاندارد این زبان با نام غیر رسمی C++17 برای سال ۲۰۱۷ برنامه ریزی شده است.

در حالی که ++C به هیچ مؤسسه‌ای وابسته نیست این مستندات به‌صورت آزادانه در دسترس نیستند. گرچه نسخه‌های نهایی نشده(draft) این اسناد در دسترس همگان قرار می‌گیرد.

نام ++C[ویرایش]

این نام منسوب به ریک ماسکیتی (اواسط ۱۹۸۳) است و برای اولین بار در دسامبر سال ۱۹۸۳ به کار برده شد. در طول مدت تحقیق این زبان بنام «C جدید» و بعدها «C با کلاس» خوانده شد. در علوم کامپیوتر هنوز هم ++C به عنوان ابرساختار C شناخته می‌شود. آخرین نام از عملگر ++ در زبان C (که برای افزایش مقدار متغیر به اندازهٔ یک واحد بکار می‌رود) و یک عرف معمول برای نشان دادن افزایش قابلیت‌ها توسط + ناشی گشته‌است. با توجه به نقل قولی از استراس‌تروپ: «این نام ویژگی‌ها تکاملی زبان در C را نشان می‌دهد.» +C نام زبانی غیرمرتبط به این زبان است.

استراس‌تروپ مبدأ این نام را در فصل اول کتاب خود «زبان برنامه‌نویسی ++C» اشاره می‌نماید که معنی دیگر ++C را می‌توان در ضمائم کتاب جرج ارول بنام ۱۹۸۴ یافت. در سه قسمت از زبان تخیلی Newspeak «کلمات C» برای اشاره به لغات فنی و حرفه‌ای بکار می‌رود. «دو علامت +» برای ایجاد صفات عالی از صفات Newspeak به کار می‌رفت بنابراین ++C به معنای زبانی با بیشترین شباهت به C است.

وقتی که به صورت خصوصی از ریک ماسکیتی در مورد این اسم سؤال شد او در جواب گفت که این اسم بصورت خودمانی در بین آنها به کار می‌رفته‌است و تصور نمی‌کردند که این نام بصورت نام رسمی این زبان درآید.

فلسفه[ویرایش]

در کتاب «طراحی و تکامل ++C» استراستروپ قوانین مورد استفاده در طراحی ++C را بیان می‌نماید. دانستن این قوانین به فهمیدن نحوه عملکرد ++C و چرایی آن کمک می‌کند. جزئیات بیشتر در کتاب قابل دسترسی است:

  • ++C طراحی شده‌است تا یک زبان عمومی با کنترل نوع ایستا و همانند C قابل حمل و پربازده باشد.
  • ++C طراحی شده‌است تا مستقیماً و بصورت جامع از چندین شیوه برنامه‌نویسی (برنامه‌نویسی ساخت‌یافته، برنامه‌نویسی شی‌گرا، انتزاع داده، و برنامه‌نویسی جنریک)
  • ++C طراحی شده‌است تا به برنامه‌نویس امکان انتخاب دهد حتی اگر این انتخاب اشتباه باشد.
  • ++C طراحی شده‌است تا حداکثر تطابق با C وجود داشته باشد و یک انتقال راحت از C را ممکن سازد.
  • ++C از بکاربردن ویژگی‌های خاص که مانع از عمومی شدن است خودداری می‌نماید.
  • ++C از ویژگی‌هایی که بکار برده نمی‌شوند استفاده نمی‌کند.
  • ++C طراحی شده‌است تا بدون یک محیط پیچیده عمل نماید.

کتابخانه استاندارد[ویرایش]

در سال ۱۹۹۸ استاندارد ++C شامل دو بخش هسته زبان و کتابخانه استاندارد ++C است. این کتابخانه شامل بیشتر بخش‌های STLو کتابخانه استاندارد C است. بیشتر کتابخانه‌های ++C در استاندارد وجود ندارند و یا استفاده از تعریف قابلیت پیوند کتابخانه‌ها را می‌توان در زبان‌هایی مانند فرترن، C، پاسکال، بیسیک نوشته شوند. البته با توجه به ویژگی‌های کامپایلر مشخص خواهد شد که کدام زبان را می‌توان استفاده نمود.

کتابخانه استاندارد ++C شامل کتابخانه استاندارد C با یک سری تغییرات برای بهبود عملکرد است. بخش بزرگ بعدی این کتابخانهSTL است. STL شامل ابزار بسیار قدرتمندی مانند نگه‌دارنده‌ها (مانند vector و list)، تکرارکننده‌ها (اشاره‌گرهای عمومی شده) برای شبیه‌سازی دسترسی مانند آرایه الگوریتم‌هایی برای جستجو و مرتب‌سازی در آنها وجود دارند. نقشه‌ها (نقشه‌های چندگانه) (آرایه شرکت‌پذیر) و مجموعه‌ها (مجموعه‌های چندگانه) واسط‌های عمومی فراهم می‌سازند. در نتیجه با استفاده از قالب تابع، الگوریتم‌های جنریک با هر نگه‌دارنده و دارای تکرارکننده عمل نماید. همانند C ویژگی‌های کتابخانه را می‌توان با استفاده از شبه دستور include# شامل یک سرآیند استاندارد اضافه نمود. c دارای ۶۹ کتابخانه استاندارد است که ۱۹ تا از آنها نامناسب تشخیص داده شده‌اند.

استفاده از کتابخانه استاندارد - مانند std::vector یا std::string به جای آرایه‌های C- موجب ایجاد برنامه‌های مطمئن‌تر شده‌است.

STL در آغاز محصولی جداگانه از HP و سپس SGL پیش از ادغام در کتابخانه استاندارد ++C بوده‌است. استاندارد عبارت STL را بکار نمی‌برد بلکه آن را بخشی از کتابخانه می‌داند اما مردم هنوز هم آن را برای جداسازی بخش‌های مختلف کتابخانه با این نام بکار می‌برند. (جریان‌های ورودی/خروجی، جهانی‌سازی، تشخیص، زیرمجموعه کتابخانه C)

بیشتر کامپایلرها کتابخانه استاندارد و STL را پیاده‌سازی می‌نماید. پیاده‌سازی‌های مستقلی نیز همانند STLport نیر وجود دارند. پروژه‌های دیگر نیز پیاده‌سازی‌های خود را از STL با توجه به اهداف خود بوجود می‌آورند.

ویژگی‌های معرفی شده در ++C[ویرایش]

در مقایسه با C زبان ++C ویژگی‌های جدیدی را معرفی نموده‌است مانند تعریف متغیر به عنوان عبارت، تغییر نوع‌های همانند تابع، نو/حذف، نوع داده bool، توابع درون‌خطی، آرگومان پیشفرض، گرانبارسازی عملگر و تابع، فضای نام و عملگر تعیین حوزه ::، کلاس‌ها (شامل تمام ویژگی‌های مربوط به کلاس‌ها همانند وراثت، اعضای تابع، توابع مجازی، کلاس‌های انتزاعی، و سازنده‌ها)، قالب‌ها، پردازش استثناء، کنترل نوع زمان اجرا، عملگرهای سربار شده ورودی (<<) و خروجی (>>) [۶].

برخلاف باور عموم ++C نوع داده ثابت را معرفی ننموده‌است. کلمه const کمی پیش از استفاده از این کلمه در ++C توسط زبان C بصورت رسمی بکار گرفته شد.

در بعضی حالات ++C تعداد کنترل نوع بیشتری نسبت به زبان C انجام می‌دهد. (برای اطلاعات بیشتر بخش «ناهماهنگی با C» را در پایین ببینید)

توضیحات با استفاده از // قبل از زبان C در زبان BCPL معرفی شده بود که مجدداً در زبان ++C به کار گرفته شد.

بعضی ویژگی‌های ++C بعداً توسط C به کار گرفته شد مانند نحوه تعریف for، توضیحات به شکل ++C (با استفاده از //)، و کلمه inline با وجود اینکه تعریف این کلمه در C با تعریف آن در زبان ++C هماهنگی ندارد. همچنین در C ویژگی‌هایی معرفی شده‌است که در ++C وجود ندارند مانند ماکروهای قابل تغییر و استفاده بهتر از آرایه‌ها به عنوان آرگومان. بعضی کامپایلرها این ویژگی‌ها را پیاده نموده‌اند اما در بقیه این ویژگی‌ها موجب ناهماهنگی می‌گردد.

برنامه Hello World[ویرایش]

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

# include <iostream> // provides std::cout
using namespace std;

int main(int argc, char *argv[])
{
    cout <<"Hello, world!\n"; // prints "Hello world!"
    return 0;
}

ویژگی‌های زبان[ویرایش]

عملگرها[ویرایش]

به بخش عملگرهای سی و سی++ مراجعه نمایید

پیش پردازنده[ویرایش]

++C بطور عمومی در سه فاز ترجمه می‌گردد: پیش‌پردازنده، ترجمه به کد object، پیوند (که دو مرحله آخر به عنوان عمل کامپایل شناخته می‌شود) در اولین مرحله در پیش‌پردازنده، شبه‌دستورات پیش‌پردازنده تغییرات لغوی بر روی کد منبع ایجاد می‌نمایند و آن را به مراحل دیگر تحویل می‌دهند.

شبه دستورات پیش‌پردازنده با استفاده از کاراکتر # قبل از هر گونه فضای خالی آغاز گشته و رشته‌هایی را در کد منبع با فایل یا رشته‌های دیگر با توجه به قوانین تعریف گشته توسط برنامه‌نویس جایگزین می‌نماید. این دستورات معمولاً اعمال زیر را انجام می‌دهند: جایگزینی ماکروها، شمول فایل‌های دیگر (برخلاف ویژگی سطح بالاتر مانند شمول ماجول‌ها/پکیج‌ها/یونیت‌ها/کامپوننت‌ها)، کامپایل شرطی و/یا شمول شرطی. به عنوان مثال:

# include <iostream>

که این دستور تمام سمبل‌ها در فایل سرایند کتابخانه استاندارد iostream را در فایل منبع وارد می‌سازد.

کاربرد معمول دیگر به عنوان ماکرو خوانده می‌شود:

# define MY_ASSERT(x) assert(x)

که کد (MY_ASSERT(x را با (assert(x در فایل منبع جایگزین می‌نماید؛ که این جایگزینی امکان کنترل استفاده از این تابع را در اختیار برنامه‌نویس قرار می‌دهد.

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

علاوه بر شبه‌دستورات معمول تعدادی شبه دستور برای کنترل جریان کامپایل وجود دارد که امکان شمول یا عدم‌شمول قطعه‌ای کد یا سایر ویژگی‌های کامپایل را در اختیار ما قرار می‌دهد.

دستورات پیش‌پردازنده برای کاربردهای عددی نیز به کار می‌رود که هم‌اکنون استفاده از const به جای #define ترجیح داده می‌شود. این کار علاوه بر ایجاد کنترل نوع قوی مانع از گمراهی در فضاهای نام می‌گردد.

هدف کمیته استانداردسازی از بین بردن پیش‌پردازنده‌است اما با توجه به خصوصیت مدولار ++C بعید به نظر می‌آید که این حذف امکان‌پذیر باشد.

قالب‌ها[ویرایش]

قالب‌ها متفاوت با ماکروها هستند. در حالی که از هر دوی این ویژگی‌ها در زمان کامپایل برای ایجاد کامپایل شرطی استفاده می‌شوند قالب‌ها محدود به تغییرات لغوی و متنی نیستند. قالب‌ها با آگاهی از معنا و سیستم نوع در زبان استفاده شده و سایر ویژگی‌های زمان کامپایل می‌توانند از عملیات سطح بالا برای کنترل ترتیب اجرا براساس نوع پارامترها استفاده نمایند. ماکروها کنترل خود را بر کامپایل از طریق ویژگی‌های از پیش تعیین شده انجام می‌دهند ولی قادر به ایجاد انواع جدید و کنترل نوع نیستند و فقط محدود به تغییرات متنی پیش از کامپایل هستند. به زبان دیگر ماکروها کنترل خود را با استفاده از نشانه‌های از پیش تعیین شده انجام می‌دهند اما همانند قالب‌ها نمی‌توانند نشانه‌ها را خود ایجاد نمایند. قالب‌ها ابزاری برای چندریختی ایستا و برنامه‌نویسی جنریک است. مثلاً جایگزین معادل با استفاده از قالب‌ها برای عبارت خطرناک #define max(x, y) ((x)> (y) ? (x) : (y)) در پایین نشان داده شده‌است.

template <typename T>
const T& max(const T& x, const T& y)
{
    return x> y ? x : y;
}

این قالب در سرآیند algorithm تحت عنوان std::max() قابل دسترسی است. معمولاً می‌توان از کلمه کلیدی class بجای typename استفاده کرد.

علاوه بر این قالب‌ها یک ویژگی تورینگ-کامل هستند که به این معناست که هر برنامه قابل محاسبه توسط کامپیوتر را می‌توان با استفاده از فرابرنامه‌نویسی قالب‌ها نوشت.

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

اشیاء[ویرایش]

سی++ چندین ویژگی شی‌گرا را زبان سی معرفی نمود معرفی کلاس چهار ویژگی که در زبان‌های شی‌گرا و بعضاً غیر شی‌گرا حضور دارد یعنی انتزاع، بسته‌بندی، وراثت، و چندریختیرا فراهم کرد. اشیاء نمونه‌های ساخته شده از کلاس در زمان اجرا هستند. می‌توان کلاس را نمونه‌ای از قالب‌ها دانست که چندین مورد از آنها بوجود می‌آید.

بسته‌بندی[ویرایش]

بسته‌بندی به معنای جمع‌آوری عملیات و داده در یک محل می‌باشد. سی++ بسته‌بندی را با ایجاد امکان تعریف هر کلاس به صورت public، private، protected پیاده‌سازی نموده‌است. اعضای private فقط توسط اعضای کلاس و یا کلاس‌ها دقیقاً بیان شده (friend) قابل دسترسی هستند. اعضای protected توسط کلاس‌های ارث برده شده و اعضای کلاس و کلاس‌های friend قابل دسترسی هستند.

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

عموماً توصیه بر این است که تمام اعضا به صورت خصوصی یا حفاظت شده تبدیل گردند و فقط توابعی که باید توسط دیگر کلاس‌ها به عنوان واسط استفاده شوند عمومی باقی بمانند.

وراثت[ویرایش]

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

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

چندریختی[ویرایش]

امکان استفاده از یک واسط برای چندین پیاده‌سازی فراهم می‌نماید و اشیاء در شرایط مختلف رفتار مختلفی از خود نشان می‌دهند.

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

چندریختی ایستا[ویرایش]

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

چندریختی پویا[ویرایش]

چندریختی پویا شامل وراثت و توابع مجازی عضو است.

گرانبارسازی تابع[ویرایش]

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

گرانبارسازی عملگر[ویرایش]

بطور مشابه گرانبارسازی عملگر امکان استفاده از یک عملگر مشخص می‌شود که عملکرد متفاوتی با توجه به عملوندهای خود دارد. این عملگرهای گرانبار شده موجب فراخوانی تابع مشخصی متناسب با آن موقعیت می‌گردند. گرانبارسازی عملگر ترتیب اجرا یا تعداد عملوندهای یک عملگر را تغییر نمی‌دهد. عملگرهای . :: .* ? نمی‌توانند گرانبار شوند.

آرگومان پیش‌فرض[ویرایش]

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

// function with default argument but also an overloaded function
int strcpy(char *str1, char *str2, short unsigned n=65535);
// second overloaded function
int strcpy(char *str1, char *str2);

کد بالا در صورت استفاده از یک آرگومان n برای strcpy درست کامپایل می‌گردد اما اگر آرگومانی تعیین نگردد درست عمل نخواهد کرد. چرا که کامپایلر نخواهد دانست که باید از مقدار پیش‌فرض استفاده نماید یا از تابع بدون آرگومان.

ساختار برنامه‌ها[ویرایش]

ساختار برنامه‌ها در این زبان بدین صورت است که همانند زبان سی، هر برنامه بایستی یک تابع اصلی (main) به عنوان بدنه برنامه داشته باشد. هر برنامه معمولاً از تعداد زیادی فایل تشکیل می‌شود که به هم الحاق می‌گردند (با دستور include) و به این فایل‌های الحاقی، سرآیند (Header) گفته می‌شود. فایل‌های الحاقی حاوی کدها یا نسخه‌های اجرایی کلاس‌ها (مجموعه متغیرها و توابع) می‌باشند که در بدنه اصلی برنامه از آنها استفاده می‌شود. معمولاً هر کلاس (که تعریف یک نوع داده‌ای با متدهای مربوط به آن است) را در یک سرآیند می‌نویسند. هر سرآیند که معمولاً تنها تعاریف (معرفی) کلاس را در خود دارد به همراه فایل‌های پیاده‌سازی به زبان ++C یا پیاده‌سازی‌های کامپایل شده (به صورت فایل اشیاء مانند dll یا so یا ...) می‌تواند به کار برده شود. به مجموعه‌های یکپارچه‌ای از کلاس‌های پیاده‌سازی شده (به صورت فایل‌های سرآیند با پیاده‌سازی‌های کد یا اشیای زبان ماشین) که برای برنامه نویسی به کار می‌روند، یک کتابخانه ++C گفته می‌شود و قدرت اصلی این زبان در امکان به کارگیری کتابخانه‌های آماده می‌باشد. کتابخانه‌های بزرگ ++C مانند STL، MFC، QT و ... مجموعه قدرتمندی برای تولید برنامه در این زبان ایجاد کرده‌اند.[۷]

نمونه برنامه سی پلاس پلاس[ویرایش]

الگوریتمی بنویسید که ارتفاع و قاعده مثلثی را از ورودی گرفته و مساحت آن را محاسبه و در خروجی چاپ کند

# include <iostream>
using namespace std;
int main()
{
     float masahat, ghaede, ertefa;
     cout << "ertefae mosallas ra vared konid: ";
     cin >> ertefa;
     cout << "ghaedeye mosallas ra vared konid: ";
     cin >> ghaede;
     masahat=ertefa*ghaede/2;
     cout << "masahate mosallas: " << masahat << endl;
}

تست کد C++[ویرایش]

برای تست برنامه های نوشته شده با زبان C++ روش های مختلفی وجود دارد، برخی از ویرایگر های مانند visual studio ابزاری برای این منظور دارند ولی برای تست دقیق تر بهتر است از ابزار های با دقت بالا استفاده کرد، بهینه سازی کد و بالا بردن کارایی از مزیت های تست کد است. C/C++Test راهکاری یکپارچه برای خودکارسازی محدوده وسیعی از شیوه های تضمین کیفیت برنامه های تولید شده با زبانهای C و ++C می باشد. C/C++Test قابلیت تولید تست واحد (unit test) و تحلیل سورس-کد (static analysis) تحت زبان ++C را داراست. این ابزار امکان خودکارسازی تست های برنامه نویسی را همراه با اندازه گیری میزان پوشش کد (code coverage) فراهم می سازد. همچنین کیفیت سورس-کد را از ابعاد مختلف کارکردی، کارایی، امنیت و نگهداشت تحلیل می کند. امکان یکپارچه سازی با ابزار SAOTest جهت انجام تست کارکردی و ابزار LoadTest جهت انجام تست کارایی در سطح ماجولهای برنامه نویسی را نیز داراست.[۸]


برای دانلود pdf بررویدانلود کلیک کنید



                              دانلود

ah.ghaderi
۱۳ بهمن ۹۵ ، ۱۱:۴۵ موافقین ۰ مخالفین ۰ ۰ نظر

ماهِ گذشته وقتی پردازنده‌ی Core i7-5775C با اسم رمزِ بِرادوِل را بررسی کردیم، در واقع اولین نگاهمان را به آخرین فناوری ۱۴ نانومتریِ اینتل برای سیستم‌های پی‌سی داشتیم. گذارِ اینتل به پروسه‌ی ساخت ۱۴ نانومتری سخت بود و باعث شد که عرضه‌ی پردازنده‌های برادول آنقدر تاخیر بخورد که دیگر عملا در بازار خرده فروشی هم وجود نداشته باشند.

حتی همین امروز هم تهیه‌ی پردازنده‌ی Core i7-5775C بسیار سخت است و عجیب‌تر از آن هم مقاله‌ای است که قرار شده اکنون و با فاصله‌ی کمی از بررسیِ برادول به آن بپردازیم: امروز را باید روز ورودِ واقعی پردازنده‌های ۱۴ نانومتری اینتل به بازار علامت‌گذاری کرد و این پردازنده‌ها نه از سری برادول، بلکه نسل جدیدترِ  Skylake هستند.

Core i7 6700K 1 Review

سال عرضه

معماری

Tick یا Tock

پروسه‌ی ساخت

2015

Broadwell

Tick

14nm

2013

Haswell

Tock

22nm

2012

Ivy Bridge

Tick

22nm

2011

Sandy Bridge

Tock

32nm

2010

Westmere

Tick

32nm

2008

Nehalem

Tock

45nm

2007

Penryn

Tick

45nm

2006

Conroe

Tock

65nm

از آنجا که برادول یک 'tick' در مدل طراحی و ساختِ "tick-tock" اینتل بود، ابعاد کوچکتر را در کنار برخی بهینه سازی‌های جزیی عرضه می‌کرد، اما اِسکای ِلیک یک 'tock' است و به معنی آن است که بازطراحیِ پردازنده باید راندمان بالاترِ CPU و GPU‌ی مجتمع را همزمان با کاهشِ مصرف توان فرآهم سازد و البته مانند برادول، روی همان روش ساخت ۱۴ نانومتری هم باقی بماند.

رخداد جدید این است که چرخه‌ی مرسوم "tick-tock" اینتل در سال ۲۰۱۶ با ورودِ سومین محصول ۱۴ نانومتری به نام Kabylake شکسته خواهد شد. اینتل می‌گوید که مهاجرتش به تراشه‌های ۱۰ نانومتری دیرتر از موعدِ مورد انتظار خواهد بود و به نیمه‌ی دوم سال ۲۰۱۷ میلادی موکول می‌شود، زمانی که معماری جدیدی با اسم رمزِ Canonlake هم خواهد رسید.

Core i7 6700K 2 Tick Tock

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

برخی تغییرات قابل توجه با ورود اسکای لیک به وقوع می‌پیوندد که بارِزترینِ آنها معرفی سوکت جدید LGA1151 است. همان طور که حتما حدس زده‌اید این سوکت با مدل‌های قبلی سازگار نیست.

Core i7 6700K 3

پس بر خلافِ برادول، تمام کسانی که مادربردهای سری ۹ را دارند، به سادگی قادر به ارتقا به اسکای لیک نخواهند بود و در عوض به مادربرد جدیدی که تراشه‌های سری ۱۰۰ اینتل را پشتیبانی کند نیاز خواهند داشت. کنترل کننده‌ی حافظه‌ی پردازنده‌های اسکای لیک هم همانند سریِ Haswell-E برای پشتیبانی از حافظه‌های DDR4 ارتقا داده شده، اما این پشتیبانی به جای ۴ کانالِ سوکت ۲۰۱۱، تنها به ۲ کانال محدود خواهد بود.

با پردازنده‌های اسکای لیک آشنا شوید

شکی در این نیست که رده‌ی کاملی از پردازنده‌های اسکای لیک در قالب سری‌های مختلفی عرضه خواهند شد، اما فعلا تنها دو پردازنده معرفی شده‌اند. اولین سری که برای حرفه‌ای‌ها طراحی شده‌اند شامل پردازنده‌های دسکتاپیِ Core i7-6700K و Core i5-6600Kمی‌شود.

اینتل مدعی است که این قطعات راندمانی تا ۱۰ درصد بالاتر را نسبت به همرده‌های Haswell خود ارائه می‌کنند. در واقع، اینتل می‌گوید که Core i7-6700K تا ۱۰ درصد سریعتر از 4790K و ۲۰ درصد سریعتر از 4770K خواهد بود، در حالی که دارندگان 3770K می‌توانند تا ۳۰ درصد افزایش راندمان را انتظار داشته باشند.

مدل پردازنده

i7-6700K

i5-6600K

i7-5775C

i7-4790K

فرکانس پایه

4.0GHz

3.5GHz

3.3GHz

4.0GHz

فرکانس توربو

4.2GHz

3.9GHz

3.7GHz

4.4GHz

تعداد هسته‌ها

4

4

4

4

تعداد کل هسته‌های فیزیکی+مجازی

8

4

8

8

گرافیک

HD Graphics 530

HD Graphics 530

Iris Pro 6200

HD Graphics 4600

واحدهای پردازش گرافیکی

24

24

48

20

فرکانس گرافیک

1150MHz

1150MHz

1150MHz

1250MHz

نوع و فرکانس حافظه

DDR4-2133
DDR3L-1600

DDR4-2133
​DDR3L-1600

DDR3-1600

DDR3-1600

کش سطح ۳

8MB

6MB

6MB

8MB

کش سطح ۴

N/A

N/A

128MB

N/A

سوکت

LGA1151

LGA1151

LGA1150

LGA1150

قیمت

$350

$243

$276

$339

Core i7-6700K در فرکانس پایه‌ی ۴ گیگاهرتز کار می‌کند که با فرکانس پایه‌ی 4790K برابر است. اما بیشینه‌ی فرکانس توربوی Core i7-6700K به ۴.۲ گیگاهرتز محدود است، در حالی که 4790K می‌توانست فرکانس تک هسته را تا سقفِ ۴.۴ گیگاهرتز افزایش دهد. همانند 4790K ، 6700K هم کش سطح سومِ ۸ مگابایتی دارد، در حالی که مدل Core i5-6600K کارش را با کش کوچکترِ ۶ مگابایتی انجام می‌دهد، همان میزانی که در مدل قبلی Core i5-4690K وجود داشت.

اسکای لیک همچنان ۲۰ مسیر3.0   PCI Express را پشتیبانی می‌کند، به این معنی که کارتِ گرافیک تکی با ترکیب  16X به پردازنده متصل خواهد شد، در حالی که SLI و Crossfire دو گانه با ترکیبِ 2*X8 فعال خواهد شد.

Core i7 6700K Background Header 1200

همان‌گونه که اشاره شد، پردازنده‌های Core i7-6700K و Core i5-6600K در عین اینکه که می‌توانند از حافظه‌های DDR4-2133 بهره برداری کنند، می‌توانند از حافظه‌های قدیمی‌تر DDR3L-1600 هم استفاده کنند که گزینه‌ی اول به نظر انتخابِ ارجح‌تری خواهد بود.

اسناد عرضه شده نشان می‌دهند که گرافیک مجتمعِ این پردازنده، HD Graphics 530 از دایرکت ایکس ۱۲ و رزولوشن Ultra HD 4K پشتیبانی خواهد کرد و فرکانس کاری ۱۱۵۰ مگاهرتز خواهد داشت. گفته می‌شود که سرعت آن حدود ۴۰ درصد بیشتر از HD Graphics 4000 در پردازنده‌ی Core i7-3770K باشد که البته رقم دقیقی به نظر نمی‌رسد. از نظر ساختار هم این گرافیکِ مجتمع همانند Core i7- 5775C دارای ۲۴ واحد EU، همچنین ۱۶  واحد TMU و ۸ واحد ROP است، اما از کشِ سطح ۴ پرسرعتِ گرافیک Iris Pro 6200 بی بهره است که در نتیجه پهنای باندِ کمتری را در اختیار دارد.

سری K آماده برای اورکلاک

Core i7 6700K 4

نشست مطبوعاتی اینتل شامل اسلایدی بود که "Intel's Overclocking Commitment" یا "تعهدِ اورکلاک اینتل" نامگذاری شده بود. منظور از این بخش، یادآوری محصولاتِ مخصوص اورکلاک این شرکت از سال ۲۰۰۳ و تشریح روند آن تا اکنون بود، تا جایگاهِ این ویژگی را در محصولات اینتل برجسته سازد.

Intel Core i7 6700K 5

اینتل می‌گوید که اورکلاکِ محدوده‌ی کامل فرکانس پایه‌ی BLCK در کنار اورکلاک بهتر حافظه هم اکنون در پردازنده‌های جدید پشتیبانی می‌شود. البته برای این کار به هزینه کردن برای خرید یک مادربرد Z170 نیاز خواهید داشت تا بتوانید به گزینه‌های ضریب پردازنده یا Multiplier باز شده، ولتاژهای مختلف، فرکانسِ پایه و ضرایب مختلفِ سرعت فرکانس حافظه دسترسی داشته باشید.

مشخصات سیستم تست

مادربرد: ASUS Z170 Maximus VIII Hero

پردازنده: (Intel Core i7-6700K (ES Skylake

کارت گرافیک: GeForce GTX 780 Ti

حافظه: 2x4 GB DDR4 2133 MHz (default) and 3200 MHz XMP tested

منبع تغذیه: 1200 Watt Platinum Certified Corsair AX1200i

مانیتور: Dell 3007WFP - QHD up to 2560x1600
ASUS PQ321 native 4K UHD Monitor  at 3840 x 2160

سیستم عامل:Windows 8.1

بنچمارک‌ها

پهنای باند حافظه‌ی DDR4

با استفاده از AIDA64 در فرکانس ۲۱۳۳ به پهنای باندِ بالاتر از ۳۱ گیگابایت بر ثانیه می‌رسیم  و با ماژول‌های۳۲۰۰ مگاهرتز هم به محدوده‌ی هیجان انگیزِ ۴۵ گیگابایت در ثانیه وارد می‌شویم. البته این افزایش پهنای باند در تجربه‌ی کلی کار با سیستم تاثیرِ محسوسی نخواهد داشت، اما در برخی از نرم افزارها مثل آنهایی که برای تبدیل یا Transcode فرمت‌های ویدیویی بکار می‌روند یا بازی‌هایی که به راندمانِ پردازنده محدود هستند، مقداری افزایش راندمان را شاهد خواهید بود.

6700 Memory read 2

6700 Memory write 2

راندمان در تولید محتوا

CineBench 11.5

Intel 6700K CineBench 11.5

CineBench 11.5 یک بسته‌ی آزمایش چند پلتفرمه‌ی واقعی است که بر اساس نرم افزارِ مشهور انیمیشن شرکت MAXON که همان CINEMA 4D باشد استوار است و می‌تواند سیستم‌هایی را که تا سقف ۶۴ هسته‌ی پردازشی (واقعی یا مجازی مانند HT) دارا هستند بکار گیرد. صحنه‌ی تست شاملِ تقریبا ۲۰۰۰ آبجکت است که خود آنها هم در مجموع از بیش از ۳۰۰ هزار چند ضلعی تشکیل شده‌اند.

FryRender

Fryrendrer Intel 6700K

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

بازی با کارت گرافیک مجزا

6700K Bioshock dGPU

در اینجا می‌توانید تفاوتِ راندمان بین Core i7 4770K/4790K و پرچمدار جدید Core i7-6700K را ببینید. مشاهده می‌کنید که راندمان پردازنده‌ی Core i5 جدید ما با پردازنده‌های 4770K/4790 در یک سطح قرار دارد.

6700K 3DMark2013 dGPU 2

3DMark هر چیزی را که برای بنچمارکِ سخت افزارتان لازم دارید با خود دارد. می‌توانید امتیازاتتان را با دستگاه‌های iOS و اندرویدی هم مقایسه کنید.

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

بازی با گرافیک مجتمع

در اینجا راندمان گرافیکِ داخل پردازنده را در رزولوشن‌های 720P و 1080P ملاحظه می‌کنید.

6700K Bioshock iGPU

در اینجا گرافیکِ داخلی Core i7-6700K نزدیک به ۶۵ درصد سریعتر از 4790K در هر دو  رزولوشن 1080P و 720P عمل کرده است و حتی گرافیک مجتمعِ پردازنده‌ی Core i5-6600K هم ۳۸ درصد بهتر از 4790K عمل کرده است. انتخابِ تنظیمات متوسط در گزینه‌های موجود در داخل بازی می‌تواند تفاوت بین پلتفرم‌ها و پردازنده‌ها را به راحتی برجسته سازد.

6700K 3DMark2013 iGPU

در تستِ 3DMARK 2013 هم  Core i7-6700K در بخشِ GPU توانسته امتیاز ۱۱۶۸ را بدست آورد که ۳۰ درصد بهتر از امتیاز ۸۹۷ در پردازنده‌ی 4770K است که پرچمدارِ اول نسل Haswell بوده است.

راندمان اورکلاک

در این بررسی توانستیم به فرکانس قابلِ بوت ۴۹۰۰ مگاهرتز دسترسی پیدا کنیم و برای دسترسی به فرکانس کاریِ پایدار، آن را به ۴۸۰۰ مگاهرتز کاهش دادیم که البته ولتاژ نسبتا بالای ۱/۴۵۰ ولت را لازم داشت.

در ادامه راندمان برخی از بنچمارک‌های قبلی را در دو حالتِ فرکانس پیش فرض و حالت اورکلاک شده خواهید دید.

6700K OverClock 1 2

6700K OverClock 2 2

6700K OverClock 5

6700K OverClock 3 2

 

نتیجه گیری

اجازه دهید ابتدا متذکر شویم قابلیتِ بهینه سازی و اورکلاک بیشتر مادربردها شباهت زیادی به هم دارند و در واقع موفقیت یا شکست اورکلاکِ شما این روزها بیشتر به قدرتِ خنک کننده و کیفیت ASIC پردازنده‌ی شما بستگی دارد تا نوع یا مدل مادربرد. اما در موردِ پردازنده باید گفت که پس از تست‌های ابتدایی با Core i7-6700K روی مادربرد ROG Maximus VIII Hero که قبلا گزارش مراسم معرفی آن در ایران را ارائه کرده بودیم، واقعا تحت تاثیر قرار گرفتیم. شرکتِ اینتل در اینجا تغییری را نسبت به پلتفرم قبلی ایجاد کرده و اجازه داده که هر ۴ هسته‌ی فیزیکی در کمترین حالت با فرکانسِ ۴ گیگاهرتز و در حالت بوست هم همزمان با فرکانس ۴.۲ گیگاهرتز کار کنند. این امر برتریِ کوچکی را در راندمان این محصول، وقتی که نسبت به پردازنده‌های نسل قبلی مقایسه می‌شود، ایجاد می‌کند.

ASUS MAXIMUS VIII Hero Z170

به هر حال Core i7-6700K و Core i5-6600K پردازنده‌های جالبی هستند، اما راندمانِ مدل قویتر ما را بیشتر ذوق زده کرد. در ترکیب با حافظه‌های DDR4، این پردازنده‌ها قدمِ موثری به جلو محسوب می‌شوند. مزیتِ به کار گیری DDR4 فقط در مصرف توانِ کمتر خلاصه نیست، بلکه فرکانس کاری آن است که می‌تواند در سطح خیلی بالاتری نسبت به DDR3 باشد که به پهنای باند بیشتر و راندمان بالاتر در نرم افزارهایی که به حافظه‌ی سریع نیاز دارند منتهی می‌شود.

هر چند که در مورد Core i5-6600K و اینکه برای جانشینی محصولاتِ پیشین گزینه‌ی قابل توجهی باشد ملاحظاتی وجود دارد، اما به پردازنده‌ی Core i7-6700K نگاه مثبت‌تری داریم. در ترکیب با مادربردِ مناسب، ویژگی‌های عالی را در کنارِ راندمان فوق العاده و سطح مصرف توانی معقول بدست خواهید آورد.

اگر قصدِ ارتقای سیستمتان را دارید هم این گزینه‌ها جانشینِ قابل قبولی هستند. البته بستگی دارد که چه امکاناتی را مدنظر داشته باشید. اگر قابلیت‌هایی مثل USB 3.1، پورت‌های بیشتر SATA 3.0، صدای بهتر، کارت شبکه‌ی حرفه‌ای‌تر و بهره گیری از ذخیره سازهای پر سرعتِ M.2 با پهنای باند به شدت افزایش یافته مدنظر شما باشد، پردازنده‌ی اسکای لیک و مادربردهای Z170 ارجحیت بالایی دارند. واقعیت این است که این پلتفرم ممکن است در مجموع تا سقفِ ۲۰ درصد  سریعتر از نسلِ قبلی عمل کند، که البته مقدار قابل توجهی است، اما نه آنقدر که زندگی را تغییر دهد! در بازی‌ها هم همان‌گونه که دیدید، افزایش راندمان محسوسی را نباید انتظار داشته باشید.

برای کاربران حرفه‌ای و تشنه‌ی سرعت باید گفت که هنوز می‌توانید پردازنده‌های Haswell-E با دست کم ۶ هسته‌ی پردازشی را در نظر داشته باشید. پردازنده‌ی Core i7-6700K هم یک پردازنده‌ی دسکتاپی ۱۴ نانومتری فوق العاده با مجموعه دستورالعمل‌های بهینه شده، راندمانِ بهتر، سازگاری با DDR4 و سقف اورکلاکِ مناسب است. شکی نداریم که برخی از شما می‌توانید روی این پردازنده به فرکانسِ ۵ گیگاهرتز نیز دسترسی پیدا کنید.

ترکیب کلی این دو پردازنده‌ی اسکای لیک سریِ K و مادربردی از سری ROG ایسوس بسیار مطبوع است و از بررسی آنها بسیار لذت بردیم. اگر قصد ارتقا با هدف گیمینگ را دارید، این پلتفرم شدیدا توصیه می‌شود. قیمت این دو پردازنده هم نزدیک به همرده‌های نسلِ قبلی تعیین شده و برای Core i7-6700K رقم ۳۵۰ دلار و برای Core i5-6600K هم ۲۴۳ دلار برچسب گذاری است.

ah.ghaderi
۱۳ بهمن ۹۵ ، ۱۱:۳۱ موافقین ۰ مخالفین ۰ ۰ نظر

 HTML5 چیست؟

سلام خدمت همراهان عزیز


 تا چند سال پیش کدنویسان برای کدنویسی پروژه هاشون همگی از HTML4 استفاده میکردند ، اما امروزه با روی کار اومدن HTML5 و پیشرفت چشمگیری که تو این نسخه از HTML میبینیم ، اکثریت از این نسخه ی پیشرفته استفاده می کنند .  نسخه ی ۵ اچ تی ام ال تقریبا همه چیز رو امکان پذیر کرده و هر قابلیتی که بخواین میتونید توی پروژتون پیاده سازی کنید .

 در این نسخه از HTML عناصر حرفه ای جدیدی اضافه شده که به مرور این عناصر رو معرفی میکنیم و نحوه ی کار با اونهارو آموزش میدیم . در ابتدا مرورگرها تا حدودی با این نسخه مشکل داشتند ، اما با توسعه ی مرورگرها ، نسخه ی ۵ محبوب تر از نسخه ی ۴ شناخته شد .

HTML5 از CSS3 بصورت کامل پشتیبانی میکنه ، در این نسخه عناصر و استانداردهایی وجود داره که به شما این امکان رو میده که بتونید یک صفحه ی وب با قابلیت هایی در حد یک صفحه ی طراحی شده با flashh یا سیلورلایت  پیاده کنید . از نظر پیاده سازی افکت ها و مالتی مدیا ، میشه گفت HTML5 فوق العادست و میتونه جایگزین مناسبی برای flash باشه . چراکه flash نیازمند نصب افزونه ها و برنامه های راه اندازی هست که ممکنه به عنوان مثال ، یک موبایل قابلیت نمایش محتویات یه صفحه ی flash رو نداشته باشه ، اما در هر حال قابلیت نمایش یک صفحه ی html5 رو داره .

شما با استفاده از HTML5 و CSS3 میتونید یک صفحه ی کاملا سبک و Full css کدنویسی کنید ، چرا که بسیاری از گرافیک  هارو میتونید با کد پیاده سازی کنید ؛ که این امر در سرعت بارگزاری صفحات بسیار تاثیر گذار خواهد بود  ؛ همچنین میتونید صفحات انعطاف پذیر و واکنش گرا طراحی کنید ، به گونه ای که صفحات در تمامی موبایل ها ، تبلت ها و … به خوبی نمایش داده شوند .

ah.ghaderi
۱۱ بهمن ۹۵ ، ۱۶:۴۲ موافقین ۰ مخالفین ۰ ۰ نظر

آردوینو چیست؟

آردوینو ابزاری است برای تولید کامپیوترهایی که نسبت به کامپیوتر شخصی شما، مقدار بیشتری از دنیای فیزیکی را احساس و کنترل می کنند. این ابزار، یک پلت فرم محاسباتی فیزیکی open-source است که بر اساس یک برد میکروکنترلر ساده تهیه شده، و نیز یک محیط توسعه برای نوشتن نرم افزار جهت کار با برد می باشد.

آردوینو می تواند جهت ایجاد اشیای تعاملی، گرفتن ورودی از تعداد زیادی سوییچ و حسگر، و کنترل تنوعی از لامپ ها، موتورها، و سایر خروجی های فیزیکی به کار گرفته شود. پروژه های آردوینو می توانند مستقل باشند، و یا با نرم افزاری که روی کامپیوتر شما در حال اجراست(مثل Flash ، Processing، MaxMSP)، ارتباط برقرار کند.  شما می توانید بردها را به طور دستی مونتاژ کنید و یا به صورت از پیش مونتاژ شده، خریداری کنید؛ محیط برنامه نویسی open-source را می توانید به صورت رایگان دانلود کنید.

زبان برنامه نویسی آردوینو، یک پیاده سازی از Wiring(یک پلت فرم محاسباتی و فیزیکی مشابه) است، که بر اساس محیط برنامه نویسی چندرسانه ای Processing کار می کند.

چرا آردوینو؟

تعداد زیادی میکروکنترلر و پلت فرم میکروکنترلر دیگر، جهت محاسبات فیزیکی موجود است. بردهای Parallax Basic Stamp، Netmedia's  BX-24، Phidgets، MIT's Handyboard و بسیاری بردهای دیگر، عملکرد مشابهی را ارائه می دهند. کلیه این ابزارها،  جزئیات درهم و برهمی از برنامه نویسی میکروکنترلر را برداشته و آن را در یک پکیج easy-to-use جمع بندی نموده اند. برد آردوینو همچنین فرایند کار با میکروکنترلرها را تسهیل می کند. لیکن مزایایی را برای معلمان، دانش آموزان و مبتدیان علاقه مند در کلیه سیستم های دیگر ارائه می دهد:

  • ارزان -  در مقایسه با سایر پلت فرم های میکروکنترلر، بردهای آردوینو نسبتاً ارزان هستند. ارزان ترین نسخه از ماژول آردوینو می تواند به صورت دستی مونتاژ شود، و حتی ماژول های آردوینو از پیش مونتاژ شده، کمتراز 50 دلار قیمت دارد.
  • مستقل از سیستم عامل (Cross-platform) - نرم افزار آردوینو روی سیستم های عامل ویندوز، مکینتاش OSX و لینوکس اجرا می شود. اکثر سیستم های میکروکنترلر منحصر به ویندوز شده اند.
  • محیط برنامه نویسی شفاف و ساده - محیط برنامه نویسی آردوینو برای استفاده مبتدیان، ساده است، در عین حال جهت استفاده ی کاربران حرفه ای از مزیتها نیز به اندازه کافی منعطف است. برای مدرسان، بر اساس محیط برنامه نویسی Processing به راحتی قابل استفاده است، بدین ترتیب، دانش آموزانی که برنامه نویسی در آن محیط را یاد می گیرند، با ظاهر و باطن آردوینو آشنا خواهند شد.

  • نرم افزار قابل توسعه و open-source - نرم افزار آردوینو به صورت یک ابزار open-source منتشر شده است که برای توسعه توسط برنامه نویسان باتجربه موجود می باشد. این زبان می تواند از طریق کتابخانه های C++ گسترش یابد، و افرای که می خواهند جزئیات فنی را بفهمند، می توانند از آردوینو گریزی به زبان برنامه نویسی AVR C که زبان پایه ی آن است، بزنند. به طور مشابه اگر بخواهید، می توانید مستقیما کد AVR-C را درون برنامه های آردوینو خود درج کنید.
  • سخت افزار قابل توسعه و open-source - آردوینو بر اساس میکروکنترلرهای ATMEGA8 و ATMEGA168 شرکت Atmel پایه ریزی شده اند. طرح ماژول ها تحت لیسانس Creative Commons مجوز گرفته اند، بنابراین طراحان با تجربه مدار، می توانند ماژول خود را ساخته، توسعه داده و آن را بهبود ببخشند. حتی کاربران نسبتاً بی تجربه می توانند یک نسخه بردبوردی از ماژول را جهت فهم شیوه کار آن بسازند و هزینه ای جهت آن نپردازند.
ah.ghaderi
۱۱ بهمن ۹۵ ، ۱۶:۲۵ موافقین ۰ مخالفین ۰ ۰ نظر