کتاب C How to Program (چگونه به زبان سی برنامه بنویسیم: با مطالعات موردی در برنامهنویسی برنامهها و سیستمها) نسخه نهم از این کتاب ارزشمند است که درباره زبان برنامهنویسی سی با روشی کاملاً عملی و کاربردی آموزش داده است. این کتاب در 15 فصل برنامهنویسی اصولی زبان سی را آموزش داده و همچنین در مورد برنامهنویسی سیستم و برنامههای کاربردی در دنیای واقعی توضیحات مفیدی داده است.
در ادامه مقدمهای از کتاب C How to Program را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب C How to Program:
ویژگیهای جدید و به روز شده در این نسخه نهم
در اینجا، به طور خلاصه برخی از ویژگیهای جدید و به روز شده این نسخه را مرور میکنیم. بسیاری دیگر وجود دارد. بخشهای بعدی جزئیات بیشتری را ارائه میدهند:
• ما یک نمودار یک صفحهای فهرست مطالب رنگی را در جلد جلوی داخلی اضافه کردهایم که دیدن کل کتاب را از «40000 فوت» برای شما آسان میکند. این نمودار بر معماری مدولار کتاب تأکید میکند و بیشتر مطالعات موردی را فهرست میکند.
• برخی از مطالعات موردی بخشهایی از کتاب هستند که کد منبع کامل را طی میکنند—اینها توسط تمرینهای انتهای فصل پشتیبانی میشوند که ممکن است از شما بخواهد کد ارائهشده در متن را تغییر دهید یا چالشهای مرتبط را انجام دهید.
برخی از آنها تمرینهایی با مشخصات دقیق هستند که باید بتوانید راه حل کد را به تنهایی توسعه دهید. برخی تمرینهایی هستند که از شما میخواهند از وبسایتهایی که حاوی آموزشهای خوبی هستند بازدید کنید. و برخی تمرینهایی هستند که از شما میخواهند از وبسایتهای توسعهدهنده بازدید کنید، جایی که ممکن است کدی برای مطالعه وجود داشته باشد، اما آموزشی وجود ندارد – و ممکن است کد به خوبی توضیح داده نشود. مربیان تصمیم خواهند گرفت که کدام یک از مطالعات موردی برای مخاطبان خاص آنها مناسب است.
ما به استانداردهای C11/C18 پایبند هستیم.
• ما تمام کدها را از نظر صحت در سیستم عاملهای Windows، macOS و Linux به ترتیب با استفاده از آخرین نسخه کامپایلرهای Visual C++، Xcode و GNU gcc آزمایش کردیم و تفاوتهای بین پلتفرمها را ذکر کردیم. برای دستورالعملهای نصب نرمافزار، بخش قبل از شروع را که در این مقدمه دنبال میشود، ببینید.
• ما از ابزار تجزیه و تحلیل کد ایستا clang-tidy استفاده کردیم تا تمام کدهای موجود در نمونه کدهای کتاب را برای پیشنهادات بهبود بررسی کنیم، از موارد ساده مانند اطمینان از مقداردهی اولیه متغیرها تا هشدارهای مربوط به نقصهای امنیتی احتمالی. ما همچنین این ابزار را روی راهحلهای کدی که برای صدها تمرین کتاب در اختیار مدرسان قرار میدهیم، اجرا کردیم. لیست کامل بررسی کدها را میتوانید در https://clang.llvm.org/extra/clang-tidy/checks/list.html پیدا کنید.
• GNU gcc سازگارترین کامپایلر C است. برای فعال کردن کاربران macOS و Windows برای استفاده از gcc در صورت تمایل، فصل 1 شامل یک تست درایو است که نحوه کامپایل برنامهها و اجرای آنها را با استفاده از gcc در ظرف چند پلتفرمی GNU Compiler Collection Docker نشان میدهد.
• ما بیش از 350 تمرین یکپارچه Self-Check را اضافه کردهایم که هر کدام بلافاصله پاسخ خود را دنبال میکنند. اینها برای مطالعه شخصی و برای استفاده در «کلاسهای درس معکوس» ایدهآل هستند (بخش «کلاسهای برگردانده» را بعداً در این پیشگفتار ببینید).
• برای اطمینان از موضوعی بودن محتوای کتاب، تحقیقات اینترنتی گسترده ای در مورد C به طور خاص و دنیای محاسبات به طور کلی انجام دادیم که بر انتخاب مطالعات موردی ما تأثیر گذاشت. ما C را به گونهای نشان میدهیم که قرار است با مجموعهای غنی از برنامههای کاربردی برنامهنویسی و مطالعات موردی برنامهنویسی سیستمها، با تمرکز بر علوم رایانه، هوش مصنوعی، علم داده و سایر زمینهها استفاده شود. برای جزئیات بیشتر به بخش «مطالعات موردی» در این پیشگفتار مراجعه کنید.
• در متن، مثالهای کد، تمرینها و مطالعات موردی، دانشآموزان را با موضوعات فعلی مورد علاقه توسعهدهندگان از جمله نرمافزار منبع باز، مجازیسازی، شبیهسازی، خدمات وب، چند رشتهای، معماری سختافزار چند هستهای، برنامهنویسی سیستم، برنامهنویسی بازی، انیمیشن آشنا میکنیم، تجسم، گرافیک دو بعدی و سه بعدی، هوش مصنوعی، پردازش زبان طبیعی، یادگیری ماشین، رباتیک، علم داده، برنامهنویسی ایمن، رمزنگاری، Docker، GitHub، StackOverflow، انجمنها و موارد دیگر.
• ما به آخرین توصیههای برنامه درسی محاسباتی ACM/IEEE، که شامل پوشش مفاهیم امنیت، علم داده، اخلاق، حریم خصوصی و عملکرد و استفاده از دادههای دنیای واقعی در سراسر برنامه درسی است، پایبند هستیم. برای جزئیات بیشتر به بخش «برنامههای درسی علوم محاسبات و داده» مراجعه کنید.
• اکثر فصلهای ویرایشهای اخیر کتاب C How to Program با بخشهای برنامهنویسی Secure C که بر استاندارد کدگذاری SEI CERT C از گروه CERT مؤسسه مهندسی نرمافزار دانشگاه کارنگی ملون (SEI) تمرکز دارد، پایان مییابد.
برای این نسخه، بخشهای مبتنی بر SEI CERT را تنظیم کردیم. همچنین هر زمان که در مورد یک موضوع امنیتی در متن بحث میکنیم، نمادهای امنیتی را در حاشیه صفحه اضافه میکنیم. همه اینها با تأکید بیشتر اسناد برنامه درسی محاسباتی ACM/IEEE بر امنیت سازگار است. برای فهرستی از اسناد کلیدی برنامه درسی، بخش «برنامههای درسی علوم محاسبات و داده» را در این پیشگفتار ببینید.
• مطابق با رویکرد غنیتر خود در زمینه امنیت، مطالعات موردی را در مورد رمزنگاری کلید مخفی و کلید عمومی اضافه کردهایم. مورد دوم شامل شرح مفصلی از مراحل الگوریتم بسیار محبوب RSA است که نکاتی را برای کمک به شما در ایجاد یک پیادهسازی ساده و در مقیاس کوچک ارائه میدهد.
• مطالعات موردی موجود را بهبود بخشیده ایم و موارد جدیدی را با تمرکز بر هوش مصنوعی و علم داده اضافه کرده ایم، از جمله شبیهسازی با تولید اعداد تصادفی، تجزیه و تحلیل دادههای نظرسنجی، پردازش زبان طبیعی (NLP) و هوش مصنوعی (یادگیری ماشینی با رگرسیون خطی ساده). علم داده در آخرین اسناد برنامه درسی محاسباتی ACM/IEEE تاکید شده است.
• تمرینهایی اضافه کردهایم که در آنها دانشآموزان از اینترنت برای تحقیق در مورد مسائل اخلاقی و حریم خصوصی در محاسبات استفاده میکنند.
• ما مطالعه موردی عملکرد چند هستهای خود را تنظیم کردیم. همچنین هر زمان که در مورد یک موضوع مربوط به عملکرد در متن بحث میکنیم، نماد عملکرد را در حاشیه نشان می دهیم.
• ما صدها نکته توسعه نرمافزار نسخه قبلی را مستقیماً در متن ادغام کردیم تا تجربه خواندن روانتری داشته باشیم. ما خطاهای رایج و شیوههای خوب مهندسی نرمافزار را با نمادهای حاشیه جدید فراخوانی میکنیم.
• ما پیوست خود را در مورد الگوریتمهای مرتبسازی اضافی و تجزیه و تحلیل الگوریتمهای دارای O Big به وضعیت کامل فصل ارتقا دادیم (فصل 13).
• برنامهنویسان C اغلب متعاقباً یک یا چند زبان شی گرا مبتنی بر C را یاد میگیرند. ما یک پیوست اضافه کردیم که مقدمه ای دوستانه برای مفاهیم و اصطلاحات برنامهنویسی شیگرا ارائه میکند. C یک زبان برنامهنویسی رویهای است، بنابراین این ضمیمه به دانشآموزان کمک میکند تا تفاوتهای تفکر بین توسعهدهندگان C و افرادی را که به زبانهایی مانند C++، Java، C#، Objective-C، Swift و دیگر زبانهای شیگرا برنامهنویسی میکنند، درک کنند. ما کارهای زیادی مانند این را در کتاب انجام میدهیم تا دانش آموزان را برای صنعت آماده کنیم.
• اکنون چندین مطالعه موردی شما را به استفاده از کتابخانهها و ابزارهای منبع باز رایگان میکشاند.
• ما یک مطالعه موردی اضافه کردیم که تجسم را با gnuplot انجام میدهد.
• مقدمه نسخه قبلی برای برنامهنویسی C++ را حذف کردیم تا جایی برای صدها تمرین یکپارچه بررسی خودکار و مطالعات موردی برنامهنویسی برنامههای کاربردی و سیستمهای برنامهنویسی جدیدمان ایجاد کنیم.
• این نسخه جدید در اندازه فونت و اندازه صفحه بزرگتر برای خوانایی بیشتر منتشر شده است.
گشتی در کتاب C How to Program
نمودار فهرست مطالب روی جلد جلوی داخلی، معماری مدولار کتاب را نشان میدهد. مدرسان میتوانند به راحتی محتوا را با دورهها و مخاطبان مختلف تطبیق دهند. در اینجا یک توضیح مختصر فصل به فصل ارائه میکنیم و نشان میدهیم که مطالعات موردی کتاب در کجا قرار دارند.
برخی از نمونههای داخل فصل و برخی تمرینهای پایان فصل هستند. برخی کاملاً کدگذاری شده اند. برای دیگران، شما راه حل را توسعه خواهید داد. فصلهای 1 تا 5 موضوعات برنامهنویسی C مقدماتی سنتی هستند.
فصلهای 6 تا 11 موضوعات میانی هستند که پایان عالی علوم کامپیوتر 1 و دورههای مرتبط را تشکیل میدهند. فصلهای 12 تا 15 موضوعات پیشرفته برای دورههای اواخر CS1 یا اوایل دورههای CS2 هستند.
در اینجا لیستی از مطالعات موردی موضوعی، چالشبرانگیز و اغلب سرگرمکننده وجود دارد.
مطالعات موردی برنامهنویسی سیستمها
• نرمافزار سیستمها – ساخت رایانه شخصی شما (به عنوان یک ماشین مجازی)
• نرمافزار سیستمها – کامپایلر خود را بسازید
• برنامهنویسی سیستمهای جاسازی شده – رباتیک، گرافیک سهبعدی و انیمیشن با شبیهساز Webbots
• عملکرد با مطالعات موردی برنامهنویسی برنامهنویسی برنامه چند نخی و چند هستهای
• توسعه الگوریتم-تکرار ضد کنترل
• توسعه الگوریتم – تکرار کنترل شده توسط نگهبان
• توسعه الگوریتم – بیانیههای کنترل تو در تو
• شبیهسازی بازی – سنگ، کاغذ، قیچی
• شبیهسازی اعداد تصادفی-برهم زدن کارت و معامله
• شبیهسازی اعداد تصادفی – لاکپشت و نژاد خرگوش
• مقدمهای بر علم داده – تحلیل دادههای نظرسنجی
• پردازش فایل با دسترسی مستقیم – ساختن یک سیستم پردازش تراکنش
• تجسم جستجو و مرتبسازی الگوریتمها – جستجوی باینری و مرتبسازی ادغام.
• هوش مصنوعی/علم داده-پردازش زبان طبیعی («چه کسی واقعاً آثار ویلیام شکسپیر را نوشته است؟»)
• هوش مصنوعی/علم داده—یادگیری ماشین با کتابخانه علمی گنو («آمار میتواند فریبنده باشد» و «آیا میانگین دمای ژانویه در شهر نیویورک در قرن گذشته افزایش یافته است؟»)
• برنامهنویسی بازی – بازی Cannon با کتابخانه raylib
• برنامهنویسی بازی — بازی SpotOn با کتابخانه raylib
• چند رسانه ای: صدا و انیمیشن – مسابقه لاک پشت و خرگوش با کتابخانه raylib
• امنیت و رمزنگاری – پیادهسازی یک کلید رمزی Vigenère و رمزنگاری کلید عمومی RSA
• تجسم متحرک با raylib – قانون اعداد بزرگ
• خدمات وب و ابر – دریافت گزارش آب و هوا با استفاده از خدمات وب libcurl و OpenWeatherMap، و مقدمه ای بر ساخت Mashup با سرویسهای وب.
چه دانشآموزی باشید که حس کتاب درسی مورد استفاده خود را دریافت می کند، یا یک مربی که برنامه درسی درسی خود را برنامه ریزی می کند یا یک توسعهدهنده نرمافزار حرفهای که تصمیم میگیرد چه فصولی را هنگام آماده شدن برای یک پروژه بخوانید، مرور اجمالی فصل زیر به شما کمک می کند تا بهترین تصمیمات
بخش 1: مبانی برنامهنویسی شروع سریع
فصل 1 کتاب C How to Program، مقدمهای بر کامپیوتر و C، دانشآموزان تازهکار را با حقایق و ارقام جذاب درگیر میکند تا آنها را در مورد مطالعه کامپیوتر و برنامهنویسی کامپیوتر هیجانزده کند.
این فصل از کتاب C How to Program شامل روندهای فعلی فناوری، مفاهیم سخت افزاری و نرمافزاری و سلسله مراتب دادهها از بیتها تا پایگاههای داده است. این زمینه را برای بحثهای برنامهنویسی C در فصلهای 2-15، ضمیمهها و مطالعات موردی یکپارچه فراهم می کند.
ما در مورد انواع زبان برنامهنویسی و فناوریهای مختلفی که احتمالاً هنگام توسعه نرمافزار استفاده میکنید، بحث میکنیم. ما کتابخانه استاندارد C را معرفی میکنیم—کارکردهای موجود، قابل استفاده مجدد، با کیفیت بالا و عملکرد بالا برای کمک به شما در جلوگیری از «اختراع مجدد چرخ». بهرهوری خود را با استفاده از کتابخانهها برای انجام وظایف مهم و در عین حال نوشتن تعداد کمی دستورالعمل افزایش خواهید داد. ما همچنین اینترنت، شبکه جهانی وب، “ابر” و اینترنت اشیاء (IoT) را معرفی میکنیم که زمینه را برای توسعه برنامههای کاربردی مدرن فراهم میکند.
درایوهای آزمایشی این فصل نحوه کامپایل و اجرای کد C را با آن نشان میدهد
• ویژوال سیپلاسپلاس مایکروسافت در ویژوال استودیو در ویندوز،
• Xcode اپل در macOS
• gcc گنو در لینوکس.
ما 147 نمونه کد کتاب را با استفاده از هر محیط اجرا کرده ایم. ما همچنین GNU gcc را در ظرف Docker مجموعه کامپایلر GNU نشان میدهیم. این به شما امکان میدهد جدیدترین کامپایلر GNU gcc را روی ویندوز، macOS یا لینوکس اجرا کنید—این مهم است زیرا کامپایلرهای گنو عموماً همه (یا اکثر) ویژگیها را در آخرین استانداردهای زبان پیادهسازی میکنند. برای دستورالعملهای نصب کامپایلر، بخش قبل از شروع را ببینید.
برای اطلاعات بیشتر در مورد این ابزار مهم توسعه دهنده، بخش Docker را بعداً در این مقدمه ببینید. برای کاربران ویندوز، ما به دستورالعملهای گامبهگام مایکروسافت اشاره میکنیم که به شما امکان میدهد لینوکس را در ویندوز از طریق زیرسیستم ویندوز برای لینوکس (WSL) نصب کنید. این روش دیگری برای استفاده از کامپایلر GNU gcc در ویندوز است.
شما متوجه خواهید شد که “داده بزرگ” چقدر بزرگ است و چقدر سریع حتی بزرگتر میشود. این فصل از کتاب C How to Program با مقدمهای بر هوش مصنوعی (AI) پایان مییابد – یک همپوشانی کلیدی بین حوزههای علوم کامپیوتر و علوم داده. هوش مصنوعی و علم داده احتمالاً نقش مهمی در حرفه محاسباتی شما دارند.
فصل 2 کتاب C How to Program، مقدمهای بر برنامهنویسی C، اصول C را ارائه میدهد و ویژگیهای کلیدی زبان، از جمله ورودی، خروجی، انواع دادههای اساسی، مفاهیم حافظه کامپیوتر، عملگرهای حسابی و تقدم آنها، و تصمیمگیری را نشان میدهد.
فصل سوم، توسعه برنامههای ساختاریافته، یکی از مهم ترین فصلها برای مبتدیان برنامهنویسی است. بر حل مسئله و توسعه الگوریتم با عبارات کنترل C تمرکز دارد. الگوریتمها را از طریق پالایش از بالا به پایین، گام به گام، با استفاده از عبارات انتخاب if و if…else، عبارت while برای تکرار کنترلشده و کنترلشده توسط نگهبان، و عملگرهای افزایش، کاهش و تخصیص توسعه خواهید داد. این فصل سه مطالعه موردی توسعه الگوریتم را ارائه میکند.
فصل 4 کتاب C How to Program، کنترل برنامه، سایر دستورات کنترلی زبان سی for, do…while, switch, break, continue – و عملگرهای منطقی ارائه میکند. ویژگی کلیدی این فصل، خلاصه برنامهریزی ساختاریافته آن است.
فصل 5 کتاب C How to Program، توابع، ساخت برنامه را با استفاده از توابع موجود و سفارشی به عنوان بلوکهای سازنده معرفی میکند. ما تکنیکهای شبیهسازی را با تولید اعداد تصادفی نشان میدهیم.
ما همچنین در مورد انتقال اطلاعات بین توابع و نحوه پشتیبانی پشته و فریمهای پشته فراخوانی تابع از مکانیسم فراخوانی/بازگشت تابع بحث میکنیم.
ما رفتار بازگشتی خود را آغاز میکنیم. این فصل از کتاب C How to Program همچنین اولین مطالعه موردی شبیهسازی ما را ارائه میکند – سنگ، کاغذ، قیچی، که با تمرینهای پایان فصل تقویت میشود.
بخش 2: آرایهها، اشارهگرها و رشتهها
فصل 6 کتاب C How to Program، آرایهها، ساختار داده آرایه داخلی C را برای نمایش لیستها و جداول مقادیر ارائه میکند. شما آرایهها را تعریف و مقداردهی اولیه میکنید و به عناصر جداگانه آنها ارجاع میدهید.
ما در مورد انتقال آرایهها به توابع، مرتبسازی و جستجوی آرایهها، دستکاری آرایههای چند بعدی و ایجاد آرایههای با طول متغیر که اندازه آنها در زمان اجرا تعیین میشود بحث میکنیم.
فصل 13، تفکر علوم کامپیوتر: الگوریتمهای مرتبسازی و Big O، الگوریتمهای مرتبسازی پیچیدهتر و با کارایی بالاتر را مورد بحث قرار میدهد و مقدمهای دوستانه برای تحلیل الگوریتمها با نماد Big O در علم کامپیوتر ارائه میکند. فصل 6 اولین مطالعه موردی علم داده ما را ارائه میکند – مقدمهای بر علم داده: تجزیه و تحلیل دادههای نظرسنجی.
در تمرینات، ما همچنین دو مطالعه موردی برنامهنویسی بازی با گرافیک، صدا و تشخیص برخورد و مطالعه موردی برنامهنویسی سیستمهای جاسازی شده (Robotics with the Webbots Simulator) را ارائه می دهیم.
فصل 7 کتاب C How to Program، اشاره گرها، قدرتمندترین ویژگی C را ارائه میدهد. اشارهگرها برنامهها را فعال میکنند.
• انجام مرجع گذرا،
• توابع را به توابع دیگر، و
• ساختارهای داده پویا را ایجاد و دستکاری کنید که در فصل 12 به تفصیل آنها را مطالعه خواهید کرد.
این فصل از کتاب C How to Program مفاهیم اشاره گر را توضیح می دهد، مانند اعلان نشانگرها، مقداردهی اولیه نشانگرها، دریافت آدرس حافظه یک متغیر، اشارهگرها، محاسبات اشارهگر و رابطه نزدیک بین آرایهها و اشارهگرها.
این فصل اولین تمرین مطالعه موردی نرمافزار سیستمی ما را ارائه میدهد – ساخت کامپیوتر خود با شبیهسازی. این مطالعه موردی یک موضوع ضروری معماری کامپیوتر مدرن – ماشینهای مجازی را معرفی میکند.
فصل 8 کتاب C How to Program، کاراکترها و رشتهها، توابع پردازش رشته، کاراکتر و بلوک حافظه کتابخانه استاندارد C را معرفی میکند. شما از این قابلیتهای قدرتمند استفاده خواهید کرد.
فصل 11 کتاب C How to Program، پردازش فایل، در حالی که شما از طریق مطالعه موردی پردازش زبان طبیعی (NLP) کار میکنید. خواهید دید که رشتهها با اشارهگرها و آرایهها ارتباط نزدیکی دارند.
بخش 3: ورودی/خروجی فرمت شده، ساختارها و پردازش فایل
فصل 9 کتاب C How to Program، ورودی/خروجی فرمتشده، ویژگیهای قالببندی قدرتمند توابع scanf و printf را مورد بحث قرار میدهد. هنگامی که این توابع به درستی مورد استفاده قرار میگیرند، به ترتیب دادهها را از جریان ورودی استاندارد و دادههای خروجی را به جریان خروجی استاندارد وارد میکنند.
فصل 10 کتاب C How to Program، ساختارها، اتحادیهها، دستکاری بیتها و شمارشها، ساختارها (ساختارها) را برای تجمیع اقلام داده مرتبط در انواع سفارشی، اتحادیهها برای به اشتراکگذاری حافظه بین متغیرهای متعدد، تایپدفها برای ایجاد نام مستعار برای انواع دادههای از قبل تعریف شده، عملگرهای بیتی برای دستکاری فرد معرفی میکند.
بیتهایی از عملوندهای انتگرال و شمارش برای تعریف مجموعهای از ثابتهای اعداد صحیح نامگذاری شده. بسیاری از برنامهنویسان C به مطالعه C++ و برنامهنویسی شیگرا ادامه میدهند. در C++، ساختارهای C به کلاسهایی تبدیل میشوند که برنامهنویسان C++ از آنها برای ایجاد اشیاء استفاده میکنند. ساختارهای C فقط حاوی دادهها هستند. کلاسهای C++ میتوانند حاوی دادهها و توابع باشند.
فصل 11 کتاب C How to Program، پردازش فایل، فایلهایی را برای نگهداری طولانی مدت دادهها، حتی زمانی که کامپیوتر خاموش است، معرفی میکند. گفته میشود که چنین دادههایی “دائم” هستند. این فصل نحوه ایجاد، به روز رسانی و پردازش فایلهای متنی و فایلهای باینری را توضیح میدهد.
ما هم پردازش فایل با دسترسی متوالی و هم با دسترسی تصادفی را در نظر میگیریم. در یکی از تمرینهای موردی ما، دادهها را از یک فایل مقدار جدا شده با کاما (CSV) میخوانید. CSV یکی از محبوبترین فرمتهای فایل در جامعه علم داده است.
این فصل از کتاب C How to Program مطالعه موردی بعدی ما را ارائه میکند – ایجاد یک سیستم پردازش تراکنش با دسترسی تصادفی.
ما از فایلهای دسترسی تصادفی برای شبیهسازی انواع قابلیتهای دسترسی مستقیم با سرعت بالا که سیستمهای مدیریت پایگاه داده با قدرت صنعتی دارند، استفاده میکنیم.
این فصل همچنین اولین مطالعه موردی هوش مصنوعی/علم داده ما را ارائه میکند که از تکنیکهای پردازش زبان طبیعی (NLP) برای شروع بررسی این سوال بحثبرانگیز استفاده میکند، “واقعاً چه کسی آثار ویلیام شکسپیر را نوشته است؟” دومین مطالعه موردی هوش مصنوعی/علم داده – یادگیری ماشین با کتابخانه علمی گنو – چهارگانه Anscombe’s را با استفاده از رگرسیون خطی ساده بررسی میکند.
این مجموعهای از چهار مجموعه داده کاملاً متفاوت است که دارای آمار توصیفی اولیه یکسان یا تقریباً یکسان هستند. این بینش ارزشمندی را برای دانشآموزان و توسعهدهندگانی که برخی از مبانی علم داده را در این کتاب درسی علوم رایانه میآموزند، ارائه میدهد. سپس مطالعه موردی از شما میخواهد که یک رگرسیون خطی ساده را بر روی دادههای میانگین دمای ژانویه شهر نیویورک در 126 سال اجرا کنید تا مشخص شود که آیا روند سرمایش یا گرم شدن وجود دارد یا خیر.
بخش 4: الگوریتمها و ساختارهای داده
فصل 12 کتاب C How to Program، ساختارهای داده، از ساختارها برای تجمیع اقلام داده مرتبط به انواع سفارشی، typedefها برای ایجاد نام مستعار برای انواع تعریف شده قبلی، و ساختارهای داده پیوند یافته پویا که میتوانند در زمان اجرا رشد کرده و کوچک شوند استفاده میکند – لیستهای پیوندی، پشتهها، صفها و درختهای باینری. میتوانید از تکنیکهایی که یاد میگیرید برای پیادهسازی سایر ساختارهای داده استفاده کنید.
این فصل از کتاب C How to Program همچنین تمرین مطالعه موردی سیستم-نرمافزار بعدی ما – ساخت کامپایلر خود را ارائه میکند. ما یک زبان سطح بالا ساده و در عین حال قدرتمند را تعریف خواهیم کرد. شما چند برنامه با زبان سطح بالا مینویسید که کامپایلر شما آنها را به زبان ماشین کامپیوتری که در فصل 7 ساخته اید کامپایل میکند.
کامپایلر خروجی زبان ماشین خود را در یک فایل قرار میدهد. کامپیوتر شما زبان ماشین را از فایل در حافظه خود بارگذاری میکند، آن را اجرا میکند و خروجیهای مناسب را تولید میکند.
فصل 13 کتاب C How to Program، تفکر علوم رایانه: الگوریتمهای مرتبسازی و Big O، برخی از موضوعات کلاسیک علوم رایانه را معرفی میکند. ما چندین الگوریتم را در نظر میگیریم و نیازهای پردازنده و مصرف حافظه آنها را با هم مقایسه میکنیم.
ما مقدمهای دوستانه برای نماد Big O در علم کامپیوتر ارائه میدهیم که نشان میدهد یک الگوریتم بر اساس تعداد مواردی که باید پردازش کند، چقدر سخت ممکن است برای حل یک مشکل کار کند. این فصل از کتاب C How to Program شامل مطالعه موردی تجسم مرتب سازی ادغام با عملکرد بالا است.
پوشش بازگشتی ما (فصل 5)، آرایهها (فصل 6)، جستجو (فصل 6)، ساختارهای داده (فصل 12)، مرتبسازی (فصل 13) و Big O (فصل 13) محتوای خوبی را برای دوره ساختار داده C ارائه میدهد.
قسمت 5: پیش پردازنده و موضوعات دیگر
فصل 14، Preprocessor، ویژگیهای اضافی پیشپردازنده C را مورد بحث قرار میدهد، مانند استفاده از #include برای کمک به مدیریت فایلها در برنامههای بزرگ، استفاده از #define برای ایجاد ماکروها با و بدون آرگومان، استفاده از کامپایل شرطی برای مشخص کردن بخشهایی از برنامه که همیشه نباید انجام شود.
کامپایل شود (به عنوان مثال، کد اضافی فقط در طول توسعه برنامه استفاده میشود)، پیامهای خطا را در طول کامپایل شرطی نشان میدهد، و از اظهارات برای آزمایش درست بودن مقادیر عبارات استفاده میکند.
فصل 15 کتاب C How to Program، موضوعات دیگر، موضوعات دیگر C را پوشش میدهد، از جمله پشتیبانی چند رشتهای (موجود در GNU gcc، اما نه Xcode یا Visual C++)، فهرستهای آرگومان با طول متغیر، آرگومانهای خط فرمان، کامپایل کردن برنامههای فایل منبع چندگانه، اعلانهای خارجی برای متغیرهای سراسری در فایلهای دیگر، نمونههای اولیه تابع، محدود کردن دامنه با استاتیک، فایلهای ساخت، خاتمه برنامه با خروج، پسوندهای اعداد صحیح و حرفهای ممیز شناور، مدیریت سیگنال، توابع تخصیص حافظه پویا calloc و realloc و انشعاب بدون قید و شرط با goto.
این فصل از کتاب C How to Program مطالعه موردی نهایی ما را ارائه میکند – عملکرد با سیستمهای چند رشتهای و چند هستهای.
این مطالعه موردی نشان میدهد که چگونه میتوان برنامههای چند رشتهای ایجاد کرد که سریعتر (و اغلب بسیار سریعتر) در معماریهای کامپیوتری چند هستهای امروزی اجرا شوند. این یک مطالعه موردی مهم برای کتابی در مورد C است که نوشتن برنامههای با کارایی بالا برای آن مهم است.
ضمیمهها
ضمیمه A کتاب C How to Program، نمودار اولویت اپراتور، اپراتورهای C را به ترتیب اولویت بالاتر به پایین فهرست میکند.
ضمیمه B، مجموعه کاراکترهای ASCII، کاراکترها و کدهای عددی مربوط به آنها را نشان میدهد.
ضمیمه C کتاب C How to Program درباره چندنخی و چند هستهای، Multithreading/Multicore و سایر موضوعات C18/C11/C99، شامل مقداردهی اولیه تعیین شده، لفظهای مرکب، نوع bool، اعداد مختلط، اضافات به پیشپردازنده، کلیدواژه محدود، تقسیم عدد صحیح قابل اعتماد، اعضای آرایه انعطافپذیر، محدودیتهای آرام در مقداردهی اولیه کل میشود، ریاضی عمومی را تایپ کنید، توابع درون خطی، بازگشت بدون عبارت، شناسه از پیش تعریف شده __func__، ماکرو va_copy، سرصفحههای C11، کلمه کلیدی _عمومی (نوع عبارات عمومی)، تابع quick_exit،
پشتیبانی از Unicode®، مشخصکننده تابع _noreturn، عبارات نوع ژنریک، پیوست L: قابلیت تجزیه و تحلیل و رفتار تعریفنشده، کنترل تراز حافظه، ادعاهای استاتیک، انواع ممیز شناور و تابع timespec_get.
پیوست D کتاب C How to Program، مقدمهای بر مفاهیم برنامهنویسی شی گرا، مروری دوستانه از اصطلاحات و مفاهیم برنامهنویسی شیگرا ارائه می کند. پس از یادگیری زبان C، احتمالاً یک یا چند زبان شیگرا مبتنی بر C – مانند C++، Java، C#، Objective-C یا Swift- را نیز یاد خواهید گرفت و از آنها در کنار هم با C استفاده خواهید کرد.
پیوستهای آنلاین
ضمیمه E کتاب C How to Program، سیستمهای اعداد، سیستمهای اعداد باینری، اکتال، اعشاری و هگزادسیمال را معرفی میکند.
ضمائم F–H کتاب C How to Program، با استفاده از دیباگر ویژوال استودیو، استفاده از دیباگر GNU gdb و استفاده از دیباگر Xcode، نحوه استفاده از قابلیتهای اشکالزدایی اولیه سه کامپایلر ترجیحی ما را برای یافتن و تصحیح مشکلات زمان اجرا در برنامههای خود نشان میدهد.
سرفصلهای کتاب C How to Program:
- Cover
- Title Page
- Copyright
- Dedication
- Contents
- Preface
- Before You Begin
- Chapter 1. Introduction to Computers and C
- Chapter 2. Intro to C Programming
- Chapter 3. Structured Program Development
- Chapter 4. Program Control
- Chapter 4. Program Control
- Chapter 6. Arrays
- Chapter 7. Pointers
- Chapter 8. Characters and Strings
- Chapter 9. Formatted Input/Output
- Chapter 10. Structures, Unions, Bit Manipulation and Enumerations
- Chapter 11. File Processing
- Chapter 12. Data Structures
- Chapter 13. Computer-Science Thinking: Sorting Algorithms and Big O
- Chapter 14. Preprocessor
- Chapter 15. Other Topics
- A. Operator Precedence Chart
- B. ASCII Character Set
- C. Multithreading/Multicore and Other C18/C11/C99 Topics
- D. Intro to Object-Oriented Programming Concepts
- Index
جهت دانلود کتاب C How to Program میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.