مبانی کامپیوتر و برنامه‌سازی

Fundamentals of Computer and Programming

مقطع: کارشناسی گرایش: نرم‌افزار
نوع درس: نظری تعداد واحد: ۳
پیش‌نیاز: – هم‌نیاز: –

هدف کلی

هدف از این درس، آشنایی دانشجویان با مبانی برنامه‌سازی کامپیوتر، ایجاد تفکر الگوریتمی در حل مسائل، کسب توانایی پیاده‌سازی الگوریتم‌های متداول به وسیله‌ی کامپیوتر، آشنایی با اصول اولیه‌ی نوشتن برنامه‌های ساخت‌یافته و مهندسی‌ساز و نیز توانایی استفاده از کتابخانه‌های موجود برای تولید برنامه است. در این درس از زبان برنامه‌سازی سی(C) برای آموزش و ایجاد مهارت‌های فوق استفاده خواهد شد.

سرفصل‌ها

  • مفاهیم اولیه (۱ جلسه)
    • تاریخچه‌ی توسعه‌ی کامپیوتر (سیستم‌های عامل، زبان‌های برنامه‌سازی)
    • معرفی اجزای اصلی کامپیوتر
    • تاریخچه‌ی 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. 9th Edition, Pearson, 2021.
  2. J. R. Hanly and E. B. Koffman. Problem Solving and Program Design in C. 8th Edition, Pearson, 2015.
  3. B. W. Kernighan and D. M. Ritchie. The C Programming Language. 2nd Edition, Prentice Hall, 1988.