مبانی برنامه‌سازی

Fundamentals of Programming

شماره درس: ۴۰۱۵۳ تعداد واحد: ۳
مقطع: کارشناسی نوع درس: نظری
پیش‌نیاز: – هم‌نیاز: –

اهداف درس

هدف از این درس، آشنایی دانش‌جویان با برنامه‌سازی به زبان سی، نوشتن کد مهندسی‌ساز (برنامه‌سازی ساختارمند، توضیح‌گذاری، جدانویسی)، و توانایی پیاده‌سازی شبه‌کد است.

ریز مواد

  • مفاهیم اولیه (۱ جلسه)
    • تاریخچه‌ی توسعه‌ی کامپیوتر (سیستم‌های عامل، زبان‌های برنامه‌سازی)
    • معرفی اجزای اصلی کامپیوتر
    • تاریخچه‌ی C/C++
    • برنامه‌سازی ساخت‌یافته و نوشتن کد مهندسی‌ساز
    • ساختار و مراحل ساخت و اجرای برنامه
  • محاسبات در کامپیوتر (۱ جلسه)
    • سیستم‌های عددی (دودویی، ده‌دهی، مبنای شانزده)
    • جمع و تفریق در مبناها
    • تبدیل مبناها
  • آشنایی با الگوریتم و فلوچارت (۲ جلسه)
    • تعریف الگوریتم و مراحل حل مسئله
    • اجزای الگوریتم (محاسبات، تصمیم‌گیری، تکرار)
    • نمایش تصویری الگوریتم به وسیله‌ی فلوچارت
    • نمونه‌هایی از چند الگوریتم اولیه
  • مقدمات برنامه‌سازی (۱ جلسه)
    • متغیرها، انواع داده
    • دستورهای ورودی/خروجی
    • آشنایی با کدنویسی خوب (توضیح‌گذاری، جدانویسی)
    • محاسبات ریاضی (جمع، تفریق، ضرب، تقسیم، باقی‌مانده)
    • اولویت محاسبات
    • مقایسه
  • فرمت‌بندی ورودی/خروجی (۱ جلسه)
    • قالب‌بندی خروجی با printf
    • کنترل دقت نمایش اعداد در خروجی
    • چاپ اعداد صحیح، اعداد ممیزدار، رشته‌ها، و کاراکترها
    • خواندن قالب‌بندی شده از ورودی با scanf
  • دستورها (۳ جلسه)
    • دستورهای انتخاب (if, if/else, switch)
    • دستورهای تکرار (while, for, do/while)
    • تبدیل داده‌ها
    • ثابت‌ها (const)
    • عملگرهای منطقی
    • عملگر انتخاب ? :
    • استفاده از typename
  • توابع (۴ جلسه)
    • توابع ریاضی
    • توابع تصادفی
    • توابع زمان
    • الگوی توابع (prototype)
    • رده‌های ذخیره‌سازی (static, register, extern)
    • حوزه‌های تعریف (file, function, block)
    • پشته در فراخوانی تابع
    • توابع بازگشتی
    • مقایسه توابع بازگشتی و غیربازگشتی
    • پرونده‌های header
  • آزمون و خطایابی برنامه (۱ جلسه)
    • استفاده از دستورهای خروجی برای پیدا کردن خطا
    • استفاده از امکانات IDE برای پیدا کردن خطا
  • آرایه‌ها (۵ جلسه)
    • تعریف و به‌کارگیری آرایه‌ها
    • ارسال آرایه به تابع
    • جستجوی دودویی در آرایه
    • مرتب سازی آرایه
    • آرایه‌های چندبعدی
    • تعریف ثابت‌ها با استفاده از define
  • اشاره‌گرها (۳ جلسه)
    • عملگرهای اشاره‌گری
    • فراخوانی با ارجاع توسط اشاره‌گرها
    • استفاده از const در اشاره‌گرها
    • عملگر sizeof
    • محاسبات آدرس بر روی اشاره‌گرها (جمع، تفریق)
    • ارتباط بین اشاره‌گرها و آرایه‌ها
    • آرایه‌ای از اشاره‌گرها
  • کاراکترها و رشته‌ها (۱ جلسه)
    • تبدیل کاراکترها
    • توابع رشته‌ای
    • دست‌کاری رشته‌ها
  • ساختارها (۲ جلسه)
    • تعریف ساختار (struct)
    • دست‌رسی به اعضای ساختار
    • ارسال ساختارها به توابع
    • ایجاد نام‌های مترادف با typedef
    • نوع داده‌ی union
    • ثابت‌های شمارشی (enum)
    • عملگرهای بیتی
  • آشنایی با زبان سی++ (۱ جلسه)
    • ورودی و خروجی با استفاده از جویبار‌ها
    • فضای نام‌ها، استفاده از using
    • عملگر تغییر حوزه "::"
    • انواع فراخوانی توابع (با مقدار و با ارجاع)
    • توابع درون‌خط (inline)
    • تعریف مقدار پیش فرض در توابع
    • سربارگذاری توابع
  • آشنایی با رده‌ها (۱ جلسه)
    • رده‌ها (class)
    • اعضای داده‌ای و توابع عضو
    • حوزه‌های public و private
    • سازنده‌ها
    • مقداردهی اشیاء
    • ارسال/دریافت اشیاء به/از توابع
  • پرونده‌ها (۱ جلسه)
    • خواندن و نوشتن در پرونده‌های ترتیبی
    • جویبار‌های ورودی و خروجی
    • خواندن و نوشتن در پرونده‌های تصادفی (اختیاری)
  • مباحث اختیاری (در صورت فرصت)
    • آشنایی با رده‌های نمونه نظیر string و vector
    • آشنایی با فرایند تولید نرم‌افزار
    • پیش‌پردازش‌گرها در C

ارزیابی

  • آزمون میان‌ترم: ۴ نمره
  • آزمون پایانی: ۷ نمره
  • تمرین‌های برنامه‌سازی (دست کم ۴ تمرین): ۴ نمره
  • پروژه (طی دو مرحله در طول نیم‌سال): ۳ نمره
  • آزمونک‌ها: ۲ نمره
  • فعالیت اضافی (مانند شرکت در مسابقه‌ی برنامه‌سازی): ۱ نمره‌ی اضافی

مراجع

  1. P. Deitel and H. Deitel. C: How to Program. 8th Edition, Prentice-Hall, 2016.
  2. B. W. Kernighan and D. M. Ritchie. The C Programming Language. 2nd Edition, Prentice Hall, 1988.