کتاب آنلاین
کاری از دکتر داود حسن زاده
آخرین بروزرسانی: ۱۴۰۲/۰۸/۲۱
این کتاب به منظور آشنایی دانشجویان با برنامهنویسی به زبان C و کاربرد آن در مباحث مقدماتی محاسبات عددی تألیف شده و بسیاری از سرفصلهای درس مبانی برنامهنویسی کامپیوتر که در دانشگاهها تدریس میشود در این کتاب گنجانده شده است. مطالب کتاب شامل مواردی از برنامهنویسی کامپیوتر به زبان C از سطح مقدماتی تا تقریباً سطح متوسط است. هدف این کتاب آموزش حرفهای مباحث محاسبات عددی نیست بلکه فقط به جایگاه علم برنامهنویسی کامپیوتر در پیادهسازی الگوریتمهای روشهای عددی با زبان C اشاره خواهیم کرد.
درباره این کتاب آنلاین
این کتاب به منظور آشنایی دانشجویان با برنامهنویسی به زبان C و کاربرد آن در مباحث مقدماتی محاسبات عددی تألیف شده و بسیاری از سرفصلهای درس مبانی برنامهنویسی کامپیوتر که در دانشگاهها تدریس میشود در این کتاب گنجانده شده است. مطالب کتاب شامل مواردی از برنامهنویسی کامپیوتر به زبان C از سطح مقدماتی تا تقریباً سطح متوسط است. هدف این کتاب آموزش حرفهای مباحث محاسبات عددی نیست بلکه فقط به جایگاه علم برنامهنویسی کامپیوتر در پیادهسازی الگوریتمهای روشهای عددی با زبان C اشاره خواهیم کرد.
این کتاب شامل 11 فصل است. در فصل 1 تاریخچهای کوتاه از کامپیوتر، برنامهنویسی کامپیوتر و مطالب کوتاهی در مورد معماری کامپیوتر و اجزای اساسی آن بیان میشوند. طراحی و تحلیل الگوریتمها، اساس برنامهنویسی کامپیوتر را تشکیل میدهد. به این دلیل، فصل 2 به بیان مقدماتی الگوریتمها اختصاص یافته است. تلاش شده که با بیان مثالهای متنوع و گنجاندن تمرینهای گوناگون، تسلط خواننده در طراحی الگوریتمها افزایش یابد. البته هدف این کتاب، ورود به مباحث تخصصی طراحی و تحلیل الگوریتمهای پیشرفته نبوده بلکه فقط ذهن خواننده را آماده ورود به مباحث پیچیدهتر میسازد. فصلهای 3 تا 11 نیز به آموزش زبان برنامهنویسی C اختصاص دارد و خواننده در آنها با چگونگی پیادهسازی الگوریتمها به زبان C آشنا میشود. با رشد سریع سختافزار و نرمافزارهای کامپیوتری، امروزه برنامهنویسی کامپیوتر نقش بسیار اساسی در دنیا علم بازی میکند. امروزه، بسیاری از مسائل پیچیده علمی توسط برنامهنویسی کامپیوتر با دقت و سرعت بالایی قابل حل هستند. بیشتر این روشها در شاخهای از علم با نام محاسبات عددی که بین ریاضیات و کامپیوتر مشترک بوده و کاربرد گستردهای در علوم مهندسی دارد، قرار میگیرد. به دلیل این اهمیت، بخشهایی از کتاب را به کاربرد برنامهنویسی در محاسبات عددی اختصاص دادهایم. در واقع واحد درسی مبانی برنامهنویسی کامپیوتر پیشنیاز واحد درسی محاسبات عددی در دانشگاهها است. لذا مطالعه برخی از مطالب مقدماتی از محاسبات عددی در این کتاب، میتواند پیشذهنیت مناسبی را از اهمیت برنامهنویسی کامپیوتر در اذهان دانشجویان ایجاد کند.
اگرچه این کتاب به ارائه مطالب مقدماتی از دنیای طراحی الگوریتم و برنامهنویسی به زبان C میپردازد، با وجود این، بخشهایی از فصول کتاب با عنوان «مطالعه بیشتر» نامیده شدهاند. در این بخشها تلاش شده است که گاهی با معرفی منابع پیشرفته و گاهی با مطرح کردن پروژههایی ساده، مخاطب به مطالعه و تفکر بیشتر پیرامون مطالب آن فصلها ترغیب شود. انجام پروژههای ساده برنامهنویسی همواره به ایجاد انگیزههای لازم برای تفکر بیشتر در طراحی الگوریتم و تلاش برای پیادهسازی آن یاری میرساند. در بخشهای مذکور، چند پروژه ساخت بازی کامپیوتری ساده در قالب تمرینات گام به گام ارائه شده است. در این پروژهها از تمام مطالب آن فصل و مفاهیم فصلهای قبل از آن استفاده میشود و لذا انجام آنها به یادگیری عمیق مطالب این کتاب منجر میشود.
شمارهگذاری مثالها، الگوریتم و تمرینها نیز از سبک فارسی پیروی میکند. منظور از مثال~2.4.1، دومین مورد (مثال) متعلق به بخش چهارم از فصل اول است. هنگام اشاره به شماره منابعی که در انتهای کتاب لیست شدهاند آنها را در داخل یک جفت [ ] قرار میدهیم. پس، منظور از [5]، مرجع شماره پنج از قسمت منابع کتاب است. از آنجا که انجام تمرینهای با سطوح مختلف، یکی از مراحل مهم یادگیری برنامهنویسی کامپیوتر است، تمرینهای متنوعی با سطوح مختلف (از آسان به سخت) در کتاب گنجانده شده است. برای به چالش کشیدن ذهن خواننده مشتاق، تمرینهای سختی نیز در برخی از فصلهای کتاب وجود دارند.
امیدوارم این کتاب مورد توجه مخاطبان گرامی قرار گیرد. از آنجا که هیچ تلاشی بیعیب و نقص نیست، از استادان بزرگوار، همکاران ارجمند و دانشجویان عزیز تقاضا دارم که من را از راهنماییها و نظرات ارزشمند خویش در اصلاح این کتاب آگاه سازند.
فهرست مطالب کتاب
فهرست مطالب کتاب.
سخنی با مخاطب.
پیش از آنکه برنامهنویسی کامپیوتر را در این کتاب شروع کنیم، در این فصل تاریخچه مختصری را در مورد کامپیوتر و برنامهنویسی کامپیوتر ارائه میدهیم. ضمن بیان تاریخچه کامپیوتر از گذشته تاکنون، اجزای مختلف کامپیوترهای امروزی را شرح میدهیم. همچنین به بیان تاریخچه کوتاهی پیرامون زبانهای برنامهنویسی (از زبانهای ماشینی سطح پایین تا زبانهای شئگرا امروزی) میپردازیم. مطالب این فصل: تاریخچه، معماری کامپیوتر، RAM، CPU ، دستگاههای ورودی-خروجی، دستگاههای ذخیرهسازی، دستگاههای ارتباطی، زبانهای برنامهنویسی، محیط توسعه مجتمع، مطالعه بیشتر، تمرینهای مروری.
کامپیوترها ابزارهای بسیار مهمی برای حل مسائل مختلف طبق الگوهای مشخص هستند. هر برنامه کامپیوتری مجموعهای از دستورات است که کامپیوتر بر اساس آن باید گامهایی را طی کند. این دستورات بر اساس الگوی مشخصی که آن را «الگوریتم» مینامیم پیادهسازی میشوند. لذا پیش از آنکه بتوانیم برنامهای بنویسیم باید با طراحی الگوریتم آشنا شویم. یک کامپیوتر فقط وسیلهای برای حل مسئله بوده و به تنهایی نمیتواند مسئله را حل کند. بلکه این شما هستید که با تحلیل درستی از مسئله و ارائه الگویی مناسب، به کامپیوتر میگویید که چه مراحلی را برای حل مسئله طی کند. مطالب فصل: آغاز به کار با الگوریتمها، عبارات شرطی و حلقههای تکرار، استفاده از آرایهها، جستجو در آرایهها، مطالعه بیشتر، تمرینهای مروری.
در فصل 2 با مقدمات طراحی الگوریتم آشنا شدیم و چندین الگوریتم را نیز ارائه کردیم. گام بعدی، پیادهسازی الگوریتم است. منظور از «پیادهسازی الگوریتم»، تبدیل هر خط از الگوریتم به یک یا چند دستور از زبان برنامهنویسی مورد نظر است. در این فصل ویژگیهای مختلف زبان C و موضوعات بنیادی برای یادگیری زبان C مطرح خواهد شد. مطالب فصل: نشانهها، کلمات کلیدی و شناسهها، ثابتها، متغیرها، دستورالعملها در زبان C، دستورالعمل تعریف نوع دادهها، انواع دادههای اصلی، تعریف نوع داده، انتساب مقادیر به متغیرها، دستورالعملهای حساب، نمایش دودویی و نمایش ممیز شناور، نمایش دودویی اعداد، نمایش ممیز شناور، عملگرها در C، عملگرهای حسابی، عملگرهای رابطهای، عملگرهای منطقی، عملگرهای انتساب، عملگرهای افزایش و کاهش پلهای، عملگر شرطی، عملگرهای خاص، تعریف ثابتهای نمادین، مطالعه بیشتر، تمرینهای مروری.
در این فصل با نحوه ورود دادهها از صفحه کلید و چاپ آنها روی صفحه نمایش در C آشنا میشویم. بسیاری از زبانهای سطح بالا دارای دستورات داخلی ورودی و خروجی هستند. با وجود این، زبان C هیچ دستور ورودی و خروجی داخلی ندارد. بنابراین، همه عملیاتهای ورود و خروج دادهها توسط برخی از توابع مانند scanf و printf صورت میپذیرند.
هنگام نوشتن برنامهها، گاهی لازم است که ترتیب اجرا دستورات را تحت شرایط مشخصی تغییر دهیم یا لازم است که یک یا چند دستورالعمل بارها تا برآورده شدن یک شرط مشخص اجرا شوند. از اینرو، لازم است که تصمیماتی بگیریم و مشروط به نتیجه آنها، دستورات مقتضی را اجرا کنیم. به عبارت دیگر، نیاز داریم که یک مجموعه از دستورالعملها را در یک شرایط خاص اجرا کرده و یک مجموعه کاملاً متفاوت از دستورالعملها را تحت شرایط دیگری اجرا کنیم.
تاکنون با نحوه ساختار کنترل متوالی و کنترل شرطی برنامهها آشنا شدهایم. در این فصل، با ساختار کنترل حلقهای در C آشنا میشویم. از حلقهها برای اجرای مکرر یک یا چند دستور تا برآورده شدن شرط مشخصی استفاده میشود. دستورات موجود در یک حلقه تا زمانیکه معیار توقف حلقه برآورده نشده یا حلقه به تعداد معینی تکرار نشده باشند، تکرار و اجرا میشوند.
در این فصل، آرایهها، انواع آنها و رشتهها را مطالعه خواهیم کرد و چگونگی تعریف یک آرایه و دسترسی به عناصر آرایهها را بیان میکنیم. یک «آرایه»، گروهی از دادههای مرتبط به هم و با یک نام مشترک هستند.
یک تابع، مجموعهای از دستورات است که به منظور اجرای کار مشخصی تعریف میشوند.
یکی از ویژگیهای بسیار مهم زبان C اشارهگرها هستند. همانطور که در فصل 3 بیان شد، کامپیوترها دادهها و دستورالعملها را در حافظه ذخیره میکنند. حافظه کامپیوتر یک مجموعه از سلولهای متوالی ذخیرهسازی است. هر یک از این سلولها (که یک بایت نامیده میشوند) دارای آدرسی یکتا است. این آدرس، یک عدد است. معمولاً آدرسهایی که به مکانهای حافظه داده میشود اعدادی متوالی هستند. در این فصل پیرامون ارتباط متغیرها و آدرس آنها در حافظه بحث میکنیم.
در فصل 7 دیدیم که میتوان از آرایهها برای ذخیره دادهها از نوع یکسان مانند int یا float استفاده کرد. اگر بخواهیم دادههایی با انواع متفاوت را با یک نام مشترک ذخیره و نمایش دهیم، آنگاه آرایهها آنقدرها نیز مفید نیستند. به این دلیل ساختمانها را معرفی میکنیم. ساختمانها از انواع دادههای ثانویه هستند و از آنها برای نمایش یک خانواده از دادهها با انواع متفاوت استفاده میکنیم. بهعنوان مثال، میتوان مشخصات یک دانشجو مانند نام، نام خانوادگی، آدرس، شماره تلفن، شماره دانشجویی، نمرات دروس و معدل وی را در یک ساختمان ذخیره کرد. توجه کنید که برای ذخیره نمره دانشجو به متغیری از نوع float نیاز داشته ولی برای ذخیره نام وی به یک رشته نیاز داریم. در حالت کلی، استفاده از ساختمانها برای گروهبندی دادههایی که از نظر منطقی به هم وابستهاند مفید است. مانند موارد بالا که همگی مربوط به یک دانشجو است.
تاکنون توابع ورودی و خروجی کنسولی را به منظور ورود و خروج دادهها مطالعه کردیم و برنامههایی را توسط آنها نوشتهایم. اما در کاربردهای دنیای واقعی، حجم دادههایی را که باید پردازش یا مدیریت کنیم بسیار بزرگ بوده و روشهای ورود و خروج کنسولی، به تنهایی مفید نیستند. بدین منظور از فایلها برای ذخیرهسازی و خواندن دادهها روی دیسکها استفاده میشود. لذا فایل یک مکان روی دیسک است که دادههای مورد نظر در آن ذخیره میشوند.
مراجع
واژهنامه
راهنمای خرید و مطالعه
این یک کتاب آنلاین است و مانند سایر محصولات پنجره علم به صورت PDF ارائه نمیشود. لذا قابل دانلود نیست. برای مطالعه این کتاب آنلاین، ابتدا باید آن را خریداری کنید و سپس از طریق صفحه کاربری خود در پنجره علم و در بخش «خریدهای من» روی گزینه «کتابهای آنلاین من» کلیک کنید.
خرید کتاب آنلاین چه مزیتی دارد؟