C++مجموعهٔ مهندسی نرم‌افزار

سی‌پلاس‌پلاس نوین

جلد اول: بنیادهای زبان و کتابخانهٔ استاندارد

کامبیز اسدزاده
انتشارات آی‌او استریم
C++20C++23C++26

سی‌پلاس‌پلاس نوین

جلد اول: بنیادهای زبان و کتابخانهٔ استاندارد

آموزش جامع زبان سی‌پلاس‌پلاس و اصول مهندسی نرم‌افزار با خط پایهٔ C++20 و پوشش قابلیت‌های C++23 و C++26.

۳۹فصل
۰.۱ویرایش
قیمت۱٬۶۵۱٬۳۰۶ تومان ۸٫۹دلار ۱۵٬۹۴۵جنی +۱,۰۲۴
سرفصل کامل

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

هر فصل با هدف روشن، مثال مستقل و پیوند به موضوع‌های زیست‌بوم طراحی شده است.

۱سی‌پلاس‌پلاس در عصر استانداردهای جدیداین فصل جایگاه زبان، استاندارد و پیاده‌سازی را روشن می‌کند و نشان می‌دهد چرا نسخهٔ استاندارد با نسخهٔ کامپایلر یک مفهوم نیست. زبان، استاندارد و پیاده‌سازی این بخش موضوع‌های زیر را با تعریف دقیق، مثال…رایگان۲از کد منبع تا برنامهٔ اجراییپیش از نوشتن برنامه‌های بزرگ، باید بدانیم ابزارهای ترجمه چگونه کد منبع را به برنامهٔ اجرایی تبدیل می‌کنند و هر دسته از خطاها در کدام مرحله رخ می‌دهد. مدل ترجمه این بخش موضوع‌های زیر را با تعریف دقیق…رایگان۳نخستین برنامهٔ ماژولارماژول‌ها از استاندارد ۲۰ وارد زبان شدند و مرز روشن‌تری میان رابط، پیاده‌سازی و مصرف‌کننده ایجاد می‌کنند. ساختار برنامه این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین…رایگان۴واژگان و ساختار زبانهر برنامه از واحدهای واژگانی، اعلان‌ها، عبارت‌ها و دستورها ساخته می‌شود. شناخت دقیق این عناصر از ابهام در خواندن کد جلوگیری می‌کند. واحدهای واژگانی این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل…قفل۵نوع‌ها، اشیا و مقدارهادستگاه نوع، پایهٔ مدل‌سازی و ایمنی در سی‌پلاس‌پلاس است. در این فصل، تفاوت نوع، شیء، مقدار و نمایش حافظه روشن می‌شود. مفهوم نوع و شیء این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای…قفل۶متغیرها و مقداردهی اولیهمقداردهی اولیه در سی‌پلاس‌پلاس چند شکل دارد و انتخاب نادرست آن می‌تواند به مقدارهای نامشخص یا تبدیل‌های ناخواسته منجر شود. تعریف و مقداردهی این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل…قفل۷عبارت‌ها و عملگرهاعبارت‌ها مقدار تولید می‌کنند و عملگرها روابط میان اشیا را تعریف می‌کنند. خوانایی و صحت عبارت‌ها به درک دقیق قواعد تبدیل و تقدم وابسته است. عملگرهای پایه این بخش موضوع‌های زیر را با تعریف دقیق، مثال…قفل۸کنترل جریان اجراکنترل جریان باید ساختار تصمیم‌گیری را روشن کند، نه اینکه منطق برنامه را در تودرتویی‌های عمیق پنهان سازد. شرط‌ها این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش…قفل۹توابعتابع، کوچک‌ترین مرز رفتاری قابل‌آزمون است. طراحی امضای تابع باید مالکیت، امکان شکست و قرارداد استفاده را آشکار سازد. اعلان و تعریف این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای…قفل۱۰لامبداها و اشیای فراخواندنیلامبداها امکان تعریف رفتار محلی، ترکیب الگوریتم‌ها و ساخت رابط‌های عمومی را بدون تولید کلاس‌های کمکی پراکنده فراهم می‌کنند. ساختار Lambda این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل…قفل۱۱بازگشت، دامنه و طول عمر محلیبسیاری از خطاهای جدی از بازگرداندن ارجاع به شیء منقضی‌شده یا نگه‌داشتن نمایی فراتر از طول عمر منبع به‌وجود می‌آیند. دامنه‌های محلی این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای…قفل۱۲ساختارها و کلاس‌هاکلاس فقط ظرفی برای داده نیست؛ مرزی برای حفظ ناورداها و نمایش یک مفهوم معتبر در دامنهٔ مسئله است. تعریف نوع این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش می‌دهد…قفل۱۳نوع‌های شمارشی، اجتماع‌ها و نوع‌های ترکیبینوع‌های ترکیبی به ما اجازه می‌دهند مجموعه‌ای محدود از حالت‌ها یا چند مؤلفهٔ مرتبط را با معنای روشن مدل کنیم. شمارش‌های دامنه‌دار این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج…قفل۱۴کپی، جابه‌جایی و معناشناسی مقدارنوع‌های مدرن باید رفتار روشن و قابل‌پیش‌بینی در کپی، جابه‌جایی و انتساب داشته باشند. در بسیاری از موارد، بهترین پیاده‌سازی همان Rule of Zero است. اعضای ویژه این بخش موضوع‌های زیر را با تعریف دقیق…قفل۱۵وراثت و چندریختیوراثت تنها زمانی مناسب است که رابطهٔ جایگزینی واقعی وجود داشته باشد. در بسیاری از طراحی‌ها، ترکیب یا چندریختی مبتنی بر مقدار انتخاب بهتری است. وراثت این بخش موضوع‌های زیر را با تعریف دقیق، مثال…قفل۱۶مدل حافظه و طول عمر اشیادر این فصل، حافظه نه به‌عنوان مجموعه‌ای از نشانی‌ها، بلکه به‌عنوان محل ذخیره‌سازی اشیایی با طول عمر مشخص بررسی می‌شود. مدت ذخیره‌سازی این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای…قفل۱۷RAII و مدیریت منابعRAII منابع را به طول عمر اشیا پیوند می‌دهد و آزادسازی را از مسیرهای دستی و شکننده خارج می‌کند. اصل RAII این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش می‌دهد…قفل۱۸مشاهدهٔ غیرمالکانهٔ دادههمهٔ رابط‌ها نباید مالک داده باشند. Viewها امکان مشاهدهٔ ارزان داده را فراهم می‌کنند، اما طول عمر منبع را تضمین نمی‌کنند. مدل ناظر این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای…قفل۱۹قالب‌هاقالب‌ها امکان تعریف الگوریتم و نوع بر اساس ویژگی‌های عمومی را فراهم می‌کنند. هدف، تولید کد عمومی خوانا است، نه انتقال همهٔ تصمیم‌ها به سامانهٔ نوع. قالب تابع این بخش موضوع‌های زیر را با تعریف دقیق…قفل۲۰مفهوم‌ها و محدودیت‌هاConceptها شرط‌های معنایی رابط عمومی را بیان می‌کنند و پیام خطای قالب‌ها را به سطح نیاز واقعی برنامه نزدیک‌تر می‌سازند. تعریف Concept این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای…قفل۲۱محاسبات زمان ترجمهمحاسبه در زمان ترجمه می‌تواند خطاها را زودتر آشکار و بخشی از هزینهٔ زمان اجرا را حذف کند؛ اما استفادهٔ افراطی از آن هزینهٔ ساخت و پیچیدگی را افزایش می‌دهد. عبارت ثابت این بخش موضوع‌های زیر را با…قفل۲۲رشته‌ها، نویسه‌ها و قالب‌بندیپردازش متن باید تفاوت بایت، واحد کد و نویسه را در نظر بگیرد. نوع رشته و شیوهٔ قالب‌بندی باید بر اساس مالکیت و نیاز رابط انتخاب شود. رشته‌های مالک این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل…قفل۲۳آرایه‌ها و ظرف‌های ترتیبیهیچ ظرفی برای همهٔ مسائل بهترین نیست. انتخاب باید بر اساس الگوی دسترسی، جابه‌جایی عناصر، پایداری نشانی و هزینهٔ حافظه انجام شود. آرایه‌ها این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل…قفل۲۴ظرف‌های انجمنیظرف‌های انجمنی دسترسی بر اساس کلید را فراهم می‌کنند. ساختار درختی، هش و چیدمان تخت هرکدام الگوی هزینه و محدودیت متفاوتی دارند. ظرف‌های مرتب این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل…قفل۲۵Iteratorها، الگوریتم‌ها و Rangesالگوریتم‌های استاندارد قصد برنامه را بهتر از بسیاری از حلقه‌های دستی بیان می‌کنند. Ranges نیز ترکیب و محدودسازی ورودی را ساده‌تر می‌سازد. Iteratorها این بخش موضوع‌های زیر را با تعریف دقیق، مثال…قفل۲۶نوع‌های واژگانی استانداردنوع‌های واژگانی، حالت‌هایی مانند نبودن مقدار، چندشکلی محدود، نتیجهٔ موفق یا خطا و مجموعه‌ای ناهمگن از مقدارها را به‌شکل صریح مدل می‌کنند. pair و tuple این بخش موضوع‌های زیر را با تعریف دقیق، مثال…قفل۲۷زمان، فایل‌سیستم و داده‌های تصادفیکتابخانهٔ استاندارد ابزارهای نوع‌امن برای زمان، تاریخ، مسیر و تولید دادهٔ تصادفی فراهم می‌کند که جایگزین کدهای دستی و وابسته به سکو هستند. Chrono این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل…قفل۲۸ورودی، خروجی و جریان‌هاجریان‌ها رابط عمومی خواندن و نوشتن را فراهم می‌کنند. مدیریت وضعیت جریان و جلوگیری از فرض‌های نادرست دربارهٔ ورودی، بخش مهم این فصل است. جریان‌های پایه این بخش موضوع‌های زیر را با تعریف دقیق، مثال…قفل۲۹مدیریت خطاروش گزارش شکست باید بر اساس ماهیت خطا، مرز نرم‌افزار و امکان بازیابی انتخاب شود؛ یک روش واحد برای همهٔ خطاها مناسب نیست. طبقه‌بندی شکست این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل…قفل۳۰تشخیص و مشاهده‌پذیرینرم‌افزار قابل‌نگه‌داری باید هنگام شکست، اطلاعات کافی و امن برای تشخیص علت فراهم کند. Assertionها این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش می‌دهد: assert…قفل۳۱قراردادهای نرم‌افزاریقراردادها پیش‌شرط، پس‌شرط و فرض‌های ضروری اجرای صحیح را به‌صورت مستقیم‌تر در رابط بیان می‌کنند. مفهوم قرارداد این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش…قفل۳۲آزمون و نگه‌داری کدآزمون فقط بررسی خروجی نیست؛ ابزاری برای روشن‌کردن قرارداد، حفظ رفتار و امکان بازآرایی مطمئن است. ساختار آزمون این بخش موضوع‌های زیر را با تعریف دقیق، مثال مستقل، تحلیل خطاهای رایج و تمرین پوشش…قفل۳۳اصول طراحی نرم‌افزارمهندسی نرم‌افزار یعنی مدیریت آگاهانهٔ پیچیدگی. زبان و کتابخانه ابزار هستند؛ کیفیت نهایی به مرزبندی مسئولیت‌ها و تصمیم‌های طراحی وابسته است. مدیریت مسئولیت این بخش موضوع‌های زیر را با تعریف دقیق، مثال…قفل۳۴نقشهٔ قابلیت‌های C++20ماژول‌ها مفهوم‌ها و محدودیت‌ها Ranges Coroutines مقایسهٔ سه‌طرفه std::span std::format تقویم و منطقهٔ زمانی std::jthread و توقف مشارکتی Semaphore، Latch و Barrier Atomic Wait و Notify…قفل۳۵نقشهٔ قابلیت‌های C++23Explicit Object Parameter if consteval std::expected std::print و std::println std::stacktrace std::mdspan std::generator Flat Containers عملیات Monadic برای نوع‌های واژگانی Rangeها و Viewهای جدید…قفل۳۶نقشهٔ قابلیت‌های بنیادین C++26 در جلد اولقراردادهای زبان در سطح مقدماتی std::inplace_vector std::hive توسعه‌های Ranges و الگوریتم‌های استاندارد توسعهٔ امکانات constexpr بهبودهای کتابخانهٔ عددی، متن و هم‌زمانی در سطح موردنیاز جلد اولقفل۳۷کامپایلرها و آزمون قابلیتگزینهٔ انتخاب استاندارد کامپایلر & C++23 & C++26 یا حالت آزمایشی \\قفل۳۸خواندن و مهاجرت کدهای قدیمیهدر، فایل پیاده‌سازی و Include Guard پیش‌اعلان و وابستگی‌های متنی ماکروها و جایگزین‌های نوع‌امن الگوهای پیش از مفهوم‌ها حلقه‌های دستی و مهاجرت به الگوریتم‌ها و Ranges مالکیت خام و مهاجرت به RAII…قفل۳۹روش ساخت این کتابفایل باید با XeLaTeX کامپایل شود: روش پیشنهادی با latexmk: پاک‌سازی فایل‌های میانی: N4861: پیش‌نویس عمومی استاندارد C++20. N4950: پیش‌نویس نهایی عمومی استاندارد C++23. N5050: متن نهایی پیش‌نویس C++26…قفل
بازخورد جامعه

این محتوا برایتان چقدر مفید بود؟

در حال دریافت بازخوردها…