برنامهسازی سی++
| مدرس: دکتر فرشید شیرافکن | پیشنیاز: – |
| ترم: زمستان | محل برگزاری: کلاس مجازی |
| زمان ارائه: دوشنبه ۱۷:۰۰ تا ۲۰:۰۰ | مشاهده: دریافت لایسنس |
معرفی درس
برنامهسازی سیپلاسپلاس؛ از مبانی برنامهنویسی تا طراحی برنامههای کارآمد
زبان برنامهنویسی سیپلاسپلاس (C++) یکی از زبانهای پرکاربرد در توسعه نرمافزار است که با فراهم کردن امکانات متنوع برای کنترل جریان برنامه، مدیریت و سازماندهی دادهها و طراحی برنامههای شیءگرا، در حوزههایی مانند توسعه نرمافزارهای سیستمی، بازیسازی، برنامههای محاسباتی و پیادهسازی الگوریتمها کاربرد دارد. یادگیری این زبان علاوه بر آشنایی با ابزارهای برنامهنویسی، به تقویت تفکر الگوریتمی و درک بهتر مفاهیم بنیادی علوم کامپیوتر کمک میکند.
در این درس، با اصول برنامهنویسی در سیپلاسپلاس آغاز میکنید و بهتدریج با مفاهیم مهمتری برای طراحی و پیادهسازی برنامهها آشنا میشوید. انواع داده، عملگرها، دستورات شرطی و حلقهها، رشتهها، آرایهها، اشارهگرها و توابع، بخشهای اصلی این مسیر را تشکیل میدهند. همچنین ساختارهای دادهای سادهای مانند ساختارها و نوعهای شمارشی، بازگشت در توابع و کار با فایلهای متنی و دودویی بررسی میشوند تا بتوانید برنامههایی منظمتر و توانمندتر بنویسید.
در ادامه، با مقدمات برنامهنویسی شیءگرا، شامل تعریف کلاس، سازنده، مخرب و وراثت آشنا میشوید. همچنین استفاده از امکانات کتابخانه استاندارد سیپلاسپلاس، مانند بردارها، مجموعهها، نگاشتها، صفها و پشتهها، و آشنایی با پیمایشگرها (Iterators) از دیگر بخشهای درس است. در کنار این مباحث، مفهوم پیچیدگی زمانی الگوریتمها معرفی میشود تا بتوانید علاوه بر درستی برنامه، به کارایی آن نیز توجه کنید.
در پایان این درس چه تواناییهایی کسب میکنید؟
با گذراندن این درس، انتظار میرود بتوانید:
- برنامههای ساده تا متوسط را با استفاده از زبان سیپلاسپلاس طراحی و پیادهسازی کنید.
- از انواع داده، عملگرها، دستورات شرطی و حلقهها برای کنترل جریان اجرای برنامه استفاده کنید.
- رشتهها، آرایههای یکبعدی و دوبعدی، اشارهگرها و توابع را به کار بگیرید.
- با توابع بازگشتی و کاربرد آنها در حل مسائل آشنا شوید.
- دادهها را با استفاده از ساختارها، نوعهای شمارشی و سایر امکانات زبان سازماندهی کنید.
- عملیات خواندن و نوشتن فایلهای متنی و دودویی را انجام دهید.
- مفاهیم پایه برنامهنویسی شیءگرا، از جمله کلاس، سازنده، مخرب و وراثت را درک کنید.
- از ساختارهای دادهای کتابخانه استاندارد سیپلاسپلاس، مانند `vector`، `map`، `set`، `queue` و `stack` استفاده کنید.
- با پیمایشگرها و عملیات متداول روی مجموعههای داده آشنا شوید.
- مفهوم پیچیدگی زمانی را درک کنید و برای ارزیابی کارایی الگوریتمها از آن بهره ببرید.
این درس برای دانشجویان و علاقهمندان به برنامهنویسی و علوم کامپیوتر مناسب است؛ بهویژه افرادی که میخواهند مهارتهای برنامهنویسی خود را تقویت کنند، با زبان سیپلاسپلاس آشنا شوند یا برای مطالعه عمیقتر الگوریتمها و ساختمان دادهها آماده شوند.
پیشنیاز
برای شروع این درس، آشنایی قبلی با زبان سیپلاسپلاس ضروری نیست. بااینحال، آشنایی مقدماتی با مفاهیم برنامهنویسی و حل مسئله میتواند یادگیری را آسانتر کند. افرادی که پیشتر با زبانهایی مانند پایتون برنامهنویسی کردهاند، معمولاً با سرعت بیشتری با مفاهیم اولیه درس ارتباط برقرار میکنند؛ اما مبانی زبان از ابتدا آموزش داده میشود.
سرفصلها
- مفاهیم اولیه (۱ جلسه)
- تاریخچه
- انواع دادهها
- دستورات ورودی و خروجی (cin, cout)
- عملگرها (۲ جلسه)
- عملگرهای ریاضی
- عملگرهای مقایسهای
- عملگرهای منطقی
- عملگرهای انتساب
- عملگرهای بیتی
- تقدم عملگرها
- دستورات شرطی (۱ جلسه)
- دستور if ساده
- دستور if همراه با else
- دستور switch
- دستورات تکرار (حلقهها) (۳ جلسه)
- حلقه for
- حلقه while
- حلقه do-while
- حلقههای تودرتو
- دستورات break, continue
- رشتهها (۱ جلسه)
- آشنایی با رشته
- متدهای کار با رشته مانند
- length
- compare
- substr
- find
- replace
- insert
- erase
- at
- append
- آرایهها (۱ جلسه)
- آرایههای یک بعدی
- آرایههای دو بعدی
- اشارهگر (۱ جلسه)
- معرفی اشارهگر
- اشارهگر به آرایه
- اشارهگر به اشارهگر
- دسترسی به آرایه با اشارهگر
- تابع (۳ جلسه)
- تعریف تابع
- تابعهای بازگشتی
- استراکچر، یونیون و نوع شمارشی (۱ جلسه)
- استراکچر
- استراکچرهای تودرتو
- یونیون (اتحاد)
- نوع شمارشی
- فایل (۲ جلسه)
- ایجاد فایل
- نوشتن در فایل
- خواندن از فایل
- کار با با فایل دودویی و متنی
- مقدمهای بر شیءگرایی (۲ جلسه)
- تعریف کلاس
- سازنده و مخرب
- ارثبری
- دادههای عام (Generics) (۱ جلسه)
- وکتور (بردار)، مپ، مجموعه، صف، پشته و متدهای کار با آنها
- معرفی Iterators, Capacity, Element access, Modifiers
- پیچیدگی زمانی (Time Complexity)
ارزیابی
- تمرینهای برنامهسازی و پروژه: ۱۰ نمره
- آزمون پایانی: ۱۰ نمره
- چالشهای برنامهسازی: ۱ نمره اضافی
منابع
- S. Lippman, J. Lajoie, B. Moo. C++ Primer. 5th Edition, Addison-Wesley Professional, ISBN: 9780133053043.
- B. Stroustrup. The C++ Programming Language. 4th Edition, Addison-Wesley, ISBN: 978-0321563842.
- U. Kirch-Prinz. A Complete Guide to Programming in C++. 1st Edition.