سرفصل های درس مبانی برنامه سازی
- مفاهیم اولیه
- تاریخچهی توسعهی کامپیوتر (سیستمهای عامل، زبانهای برنامه سازی)
- معرفی اجزای اصلی کامپیوتر
- تاریخچه ی ++C/C
- برنامه سازی ساخت یافته و نوشتن کد مهندسی ساز
- ساختار و مراحل ساخت و اجرای برنامه
- محاسبات در کامپیوتر
- سیستمهای عددی (دودویی، ده دهی، مبنای شانزده)
- جمع و تفریق در مبناها
- تبدیل مبناها
- آشنایی با الگوریتم و فلوچارت
- تعریف الگوریتم و مراحل حل مسئله
- اجزای الگوریتم (محاسبات، تصمیم گیری، تکرار)
- نمایش تصویری الگوریتم به وسیلهی فلوچارت
- نمونههایی از چند الگوریتم اولیه
- مقدمات برنامه سازی
- متغیرها، انواع داده
- دستورهای ورودی/خروجی
- آشنایی با کدنویسی خوب (توضیح گذاری، جدانویس)
- محاسبات ریاضی (جمع، تفریق، ضرب، تقسیم، باقیمانده)
- اولویت محاسبات
- مقایسه
- فرمت بندی ورودی/خروجی
- قالببندی خروجی با printf
- کنترل دقت نمایش اعداد در خروجی
- چاپ اعداد صحیح، اعداد ممیزدار، رشتهها، و کاراکترها
- خواندن قالببندی شده از ورودی با scanf
- دستورها
- دستورهای انتخاب (switch ،if/else ،if)
- دستورهای تکرار(do/while ،for ،while)
- تبدیل دادهها
- ثابتها (const)
- عملگرهای منطقی
- عملگر انتخاب
- استفاده از typename
- توابع
- توابع ریاضی
- توابع تصادفی
- توابع زمان
- الگوی توابع (prototype)
- ردههای ذخیره سازی (extern ،register ،static)
- حوزه های تعریف (block ،function ،file)
- پشته در فراخوانی تابع
- توابع بازگشتی
- مقایسه توابع بازگشتی و غیربازگشتی
- پروندههای header
- آزمون و خطایابی برنامه
- استفاده از دستورهای خروجی برای پیدا کردن خطا
- استفاده از امکانات IDE برای پیدا کردن خطا
- آرایه ها
- تعریف و به کارگیری آرایهها
- ارسال آرایه به تابع
- جستجوی دودویی در آرایه
- مرتب سازی آرایه
- آرایههای چندبعدی
- تعریف ثابتها با استفاده از define
- اشاره گرها
- عملگرهای اشاره گری
- فراخوانی با ارجاع توسط اشاره گرها
- استفاده از const در اشاره گرها
- عملگر sizeof
- محاسبات آدرس بر روی اشاره گرها (جمع، تفریق )
- ارتباط بین اشاره گرها و آرایهها
- آرایه ای از اشاره گرها
- کاراکترها و رشتهها
- تبدیل کاراکترها
- توابع رشتهای
- دست کاری رشتهها
- ساختارها
- تعریف ساختار (struct)
- دست رسی به اعضای ساختار
- ارسال ساختارها به توابع
- ایجاد نامهای مترادف با typedef
- نوع دادهی union
- ثابتهای شمارشی (enum)
- عملگرهای بیتی
- آشنایی با زبان ++C
- ورودی و خروجی با استفاده از جویبارها
- فضای نامها، استفاده از using
- عملگر تغییر حوزه “::”
- انواع فراخوانی توابع (با مقدار و با ارجاع )
- توابع درون خط (inline)
- تعریف مقدار پیش فرض در توابع
- سربارگذاری توابع
- آشنایی با ردهها
- ردهها (class)
- اعضای دادهای و توابع عضو
- حوزههای private وpublic
- سازندهها
- مقداردهی اشیاء
- ارسال/دریافت اشیاء به/از توابع
- پروندهها
- خواندن و نوشتن در پروندههای ترتیبی
- جویبارهای ورودی و خروجی
- خواندن و نوشتن در پروندههای تصادفی (اختیاری)
- مباحث اختیاری
- آشنایی با ردههای نمونه نظیر string و vector
- آشنایی با فرایند تولید نرم افزار
- پیش پردازش گرها در C
مقدمه مبانی کامپیوتر و برنامه نویسی
همانطور که میدانید امروزه کامپیوتر به ابزار قدرتمندی تبدیل شده است که بسیاری از فعالیتهای پژوهشی بدون وجود کامپیوتر سخت و غیر ممکن میشود. بهتر است نگاهی کوتاه به نسلهای مختلف کامپیوتر بیندازیم:
- کامپیوترهای نسل اول: در اوایل دهه ۱۹۵۰ ساخته شد، جزو اصلی این کامپیوترها لامپ خلاء بود که حجم بسیار زیادی داشت و انرژی زیادی را مصرف میکرد.
- کامپیوترهای نسل دوم: در اوایل دهه ۱۹۶۰ معرفی شد. در این کامپیوترهای به جای لامپ خلاء از ترانزیستور استفاده کردند.
- کامپیوترهای نسل سوم: در سال ۱۹۶۴ ساخته شد. با مدارات مجتمع یا همان IC ایجاد شدند. ICها باعث افزایش سرعت و کاهش حجم کامپیوتر شده بود.
- کامپیوترهای نسل چهارم: در اواسط سال ۱۹۷۰ با اختراع مدارات مجتمع که با فشردگی بالا انجام میشد، حجم کامپیوترها دوباره کاهش یافت و باعث شد کامپیوترها در خانهها و ادارهها کاربرد داشته باشد.
سیستم کامپیوتری
سیستم کامپیوتری تشکیل شده از سخت افزار و نرم افزار که برای انجام کار خاصی با همدیگر همکاری میکنند. اگر بخواهیم یک معنای علمیتر برای سیستم کامپیوتری تعریف کنیم، این تعریف به این صورت است که هر سیستم کامپیوتری تشکیل شده است از وسایل الکترونیکی و الکترومکانیکی که دادهها را از ورودی دریافت کرده و بعد از انجام عملیات روی دادهها، نتایج را به عنوان خروجی تولید میکند. در شکل زیر یک سیستم کامپیوتری نشان داده شده است:
- داده: به مطالبی که وارد کامپیوتر میشود را داده میگویند. دادهها مثل عدد، حروف، صدا، تصویر و غیره است.
- پردازش: به دستورالعملها و عملیاتی که روی داده انجام میپذیرد پردازش داده میگویند.
- خروجی: به اطلاعاتی که بعد از پردازش دادهها تولید میشود، خروجی گویند.
انواع کامپیوترها
کامپیوترها از نظر قدرت پردازش انواع مختلفی دارد:
- ریز کامپیوترها: ریزکامپیوترها یا همان کامپیوترهای شخصی با قیمت پایین نسبت به کامپیوترهای دیگر و حجم کم وارد بازار شد و بسیار مورد استقبال مردم قرار گرفت.
- کامپیوترهای کوچک: به خاطر قیمت بالای کامپیوترهای بزرگ در سال ۱۹۵۰ کامپیوترهای کوچک به بازار وارد شد. این کامپیوترها در مقایسه با کامپیوترهای بزرگ از توان محاسباتی کمتری برخوردار بودند و در سازمانهای کوچک استفاده میشود.
- کامپیوترهای بزرگ: از نظر قدرت و سرعت از توان بالایی برخوردار هستند، در دانشگاهها و سازمانهای بزرگ برای انجام محاسبات سنگین مورد استفاده قرار میگیرد. توان محاسباتی این کامپیوترها از ابر ریانهها کمتر است.
- ابر رایانهها: از قویترین و گرانترین نوع کامپیوترها است که از سرعت بسیار بالا و قدرت اجرایی بالایی برخوردار است. ابر رایانهها در زمینههای نظامی، تحقیقاتی، فضایی و پروژههای بزرگ علمی مورد استفاده قرار میگیرند.
اجزای کامپیوتر
- نرم افزار: به مجموعهای از برنامهها که برای کاربردی خاص نوشته شدهاند و بدون آنها سخت افزار قادر به انجام کاری نیست.
- سخت افزار: به دستگاههای الکتریکی و الکترونیکی که از آنها کامپیوتر تشکیل شده است را سخت افزار گویند.
سخت افزار کامپیوتر
اجزایی که سخت افزار کامپیوتر را تشکیل میدهد عبارتند از: واحد ورودی و خروجی، واحد حافظه، محاسبه و منطق، واحد کنترل و حافظه جانبی.
- واحد محاسبه ومنطق: همانطور که از نامش پیداست برای انجام عملیات ریاضی مثل جمع، ضرب، تفریق و تقسیم و مقایسه مقدارها، انجام میشود.
- واحد کنترل: این بخش وظیفه کنترل بخشهای مختلف را دارد و این واحد تصمیم میگیرد چه عملی در چه زمانی انجام بگیرد. به طور کلی نظارت و کنترل ورود اطلاعات، ذخیره آن، انتقال اطلاعات و خروج اطلاعات از طریق واحد خروجی بر عهده این واحد میباشد.
- واحد حافظه: نگهداری اطلاعات و دادهها به صورت دائمی و موقتی وظیفه این واحد است که به دو دسته تقسیم میشود: حافظه اصلی و جانبی
- حافظه اصلی: هر برنامه ای که اجرا میشود ابتدا باید وارد حافظه اصلی شود. این حافظه سرعت بالایی دارد. اشکالی که در این حافظه وجود دارد این است که با قطع برق اطلاعات نیز از بین میرود.
- حافظه با دستیابی تصادفی: RAM حافظهای با قابلیت خواندن و نوشتن میباشد که برای ذخیره اطلاعات کاربران استفاده میکنند.
- حافظه فقط خواندنی: ROM حافظهای فقط خواندنی و غیر قابل تغییر؛ از این حافظه که در کارخانه سازنده کامپیوتر پر شده است، دارای دستورالعملی است برای راه اندازی اولیه کامپیوتر.
- حافظه جانبی: سرعت این حافظه نسبت به حافظه اصلی کم است اما اطلاعاتی که ذخیره میشود با قطع برق از بین نمیرود. از انواع مختلف حافظه جانبی میتوان به هارد دیسک، سی دی، DVD و غیره اشاره کرد.
نرم افزار کامپیوتر
در ادامه پست مبانی کامپیوتر و برنامه نویسی نوبت به نرم افزار میرسد. سخت افزارها به تنهایی قادر به اجرای برنامهها نخواهند بود، بنابراین برای به کارگیری سخت افزارها از نرم افزارها استفاده میکنند. نرم افزارهای کامپیوتر به دو دسته تقسیم بندی میشوند:
- نرم افزارهای کاربردی: نرم افزارهایی هستند که برای استفاده کاربران طراحی شده اند مثل نرم افزار WORD، ویرایشگر عکس و غیره.
- نرم افزارهای سیستمی: این نرم افزارها برای ایجاد و اجرای نرم افزارهای کاربردی نوشته و طراحی میشوند و به سه دسته تقسیم میشوند:
- سیستم عامل: سیستم عاملها نرم افزارهایی هستند که بین کاربر و سخت افزار ارتباط ایجاد میکند. یک لحظه فکر کنید اگر سیستم عامل نبود چه اتفاقی میافتاد؟ همه کسانی که با کامپیوتر کار میکنند باید به زبان ماشین با سخت افزار حرف میزدند که خیلی کار مشکلی بود؛ اما با وجود سیستم عامل کاربران به راحتی میتوانند با سیستم ارتباط برقرار کنند. در حال حاضر Windows بیشتر در کامپیوترهای خانگی و اداری استفاده میشود. از سیستم عامل Linux در دانشگاهها و Unix در کامپیوترهای بزرگ مورد استفاده قرار میگیرد. سیستم عامل اندروید نیز که به صورت وسیع و گسترده در موبایلها و تبلتها یافت میشود.
- برنامههای کمکی: برنامه هایی که کمک میکند تا کاربر به آسانی از کامپیوتر استفاده کند. با کمک این برنامه ارتباط کاربر با سخت افزار به راحتی انجام می گیرد. مانند نرم افزارهای ویروس یاب.
- مترجمها: شاید بدانید که زبان کامپیوتر، زبان ماشین است و برنامه نویسی به زبان ماشین مشکل است، بنابراین برای اینکه کامپیوتر بتواند برنامه هایی که به زبان سطح بالا توسط برنامه نویس نوشته شده است، را بخواند و درک کند از مترجم استفاده میکنند؛ پس با توضیحی که دادیم مترجم را اینگونه تعریف میکنیم: مترجم دستورات زبان سطح بالا را به زبان قابل فهم برای کامپیوتر تبدیل میکند. مترجم ها دو نوع هستند: ۱) کامپایلر ۲) مفسر.
سیستم اعداد در مبانی کامپیوتر
اگر یادتان باشد در مقطع ابتدایی اعداد را به صورت ده دهی شمارش میکردند و با یکان و دهگان و صدگان و غیره آشنایی دارید، در ریاضی هر عدد N را به صورت زیر تفسیر میکنند. به عنوان مثال عدد ۹۸۰۶۵ را به صورت زیر نشان میدهد:
میتوان اعداد را در مبناهای مختلف نشان داد؛ بنابراین هر عدد N در مبنای b به صورت زیر نمایش داده میشود:
تبدیل مبناها
یکی از مباحث درس مبانی کامپیوتر و برنامه نویسی تبدیل مبنا است. در تبدیل مبنا یک عدد از مبنای ۱۰ به مبنای دلخواه A، کار سختی نخواهید داشت و با انجام تقسیمهای متوالی به جواب خواهید رسید، به اینصورت که عدد دلخواه را بر A تقسیم می کنید و باقیماندهها را نگه میدارید، سپس این تقسیم را به صورت متوالی انجام میدهید تا اینکه خارج قسمت صفر شود. در انتها باقی ماندههایی را که ذخیره کردید از آخرین باقیمانده تا اولین از چپ به راست بنویسید. برای اینکه بیشتر متوجه توضیحات شوید به مثال زیر دقت کنید:
برای اینکه مبناهای دیگر را به مبنای ۱۰ تبدیل کنید باید عددها را در ارزش مکانی خود ضرب کنید و حاصل ضربها را با یکدیگر جمع میکنید، حالا عدد به دست آمده در مبنای ۱۰ است. به مثال زیر توجه کنید:
الگوریتم در مبانی کامپیوتر و برنامه نویسی
مبانی کامپیوتر و برنامه نویسی به دو بخش تقسیم شده است که بخش اول مبانی و مفاهیم کامپیوتر بود و توضیح داده شد، بخش دوم الگوریتم و فلوچارت است . سیستمهای کامپیوتری برای انجام کار نیاز به برنامه و نرم افزار دارند. برای اینکه کامپیوتر بتواند کار محول شده را انجام دهد باید مراحل کار به صورت دقیق برای سیستم مشخص شود. الگوریتم به معنی روش حل مسئله است.
تعریف الگوریتم را اینگونه بیان کنیم که به مجموعهای از دستورالعملها که مراحل حل مسئله را با جزئیات نشان میدهد که در آن ترتیب مراحل مهم است. در نوشتن الگوریتمها نکاتی مثل ورودی، خروجی، جزئیات، ترتیب مراحل و کارایی مراحل وجود دارد، که باید رعایت شود.
فلوچارت در مبانی کامپیوتر و برنامه نویسی
برای اینکه الگوریتم را بهتر درک کنند و برای آسانتر کردن دستورالعملهای الگوریتم نوشته شده، از شکلهای مختلف استفاده کردند و نام آن را فلوچارت گذاشتند. اگر بخواهیم تعریف سادهای از فلوچارت بیان کنیم به این صورت خواهد بود؛ به مجموعهای از علائم و اشکال ساده که الگوریتم به صورت نماد یا تصویری نشان میدهد فلوچارت گویند.
اگر در حل مسئله بتوانید الگوریتم و فلوچارت را یاد بگیرید به راحتی میتوانید از روی فلوچارت برنامه نویسی کنید. به عبارت سادهتر با استفاده از فلوچارت حل مسئله قدم به قدم انجام میشود. اگر مسئلهای که به شما دادند گرفتن میانگین از ۹ عدد باشد، جمع اعداد و تقسیم حاصل جمع به دست آمده بر تعداد مراحل الگوریتم را نشان میدهد.
در رسم فلوچارت ۵ نماد و شکل وجود دارد که به آن اشاره میکنیم:
- علامت شروع و پایان
- علامت ورودی
- علامت انتساب و جایگزینی
- علامت شرطی
- علامت خروجی
اگر بخواهیم یک نمای کلی از فلوچارت را نشان دهیم به این صورت خواهد بود:
آشنایی با زبان ++C
در آموزش مبانی کامپیوتر و برنامه نویسی، بعد از یادگیری مبانی و مفاهیم و کامپیوتر و آشنایی با الگوریتم و فلوچارت نوبت به یادگیری زبان برنامه نویسی میرسد . زبان برنامه نویسی ++C توسعه یافته از زبان C میباشد بنابراین علاوه بر اینکه ویژگیهای زبان C را درا است خاصیت شی گرایی نیز دارد. سی پلاس پلاس دارای کتابخانهای از کلاس و توابع است که در طول ترم دانشگاهی با این مفاهیم بیشتر آشنا خواهید شد.
الگوریتمی را که نوشته و طرح کردیم توسط کامپیوتر اجرا شود، باید با استفاده از یک زبان سطح بالا در کامپیوتر نوشته شود و پس از برگردانده شدن برنامه به زبان ماشین برای کامپیوتر قابل فهم و اجرا میباشد. اجرای برنامه در زبان سی پلاس پلاس در مرحلههای مختلفی از جمله تولید برنامه، کامپایل، بارگذاری و اجرا انجام میگیرد.
در اجرای برنامه ها خطاهایی به وجود میآید. خطای زمان کامپایل و خطای زمان اجرا از جمله خطاهای به وجود آمده در یک برنامه هستند. به خطای زمان کامپایل خطای نحوی نیز گفته میشود که باعث آن رعایت نکردن دستورات زبان ++C است که در ابتدا به برنامه نویس نشان داده میشود. این خطاها در اثر اشتباه برنامه نویس به وجود میآید که خود برنامه نویس باید این خطاها را پیدا و اشکال زدایی کند.