C یک زبان برنامه نویسی چندمنظوره است که توسط Dennis Rithche در سال 1972 میلادی در آزمایشگاههای بل پایهریزی شد. زبان برنامه نویسی C در ابتدا برای توسعه سیستم عامل UNIX مطرح شد ولی اکنون تبدیل به یکی از محبوبترین زبانهای برنامه نویسی چندمنظوره در دنیا شده است که با وجود قدمت بالا، همچنان در شاخههای مختلف مانند طراحی سیستم عاملها، پایگاههای داده، طراحی بازیهای کامپیوتری و طراحی سیستمهای نهفته (برنامهنویسی میکروکنترلرها) در حال استفاده است. بخصوص در حوزه طراحی سیستمهای نهفته زبان برنامهنویسی C انتخاب اول در جهان است. از جمله مهمترین مزایای برنامه نویسی C عبارتند از:
- سادگی: سینتکس برنامه نویسی C به شکلی هست که یادگیری آن نسبت به سایر زبانها خیلی راحتتر است.
- چند منظوره بودن: با توجه به نیاز برنامهنویس برنامه نویسی C میتواند در شاخههای متنوعی از علوم و مهندسی مورد استفاده قرار گیرد.
- زبان مادر: زبان برنامه نویسی C اولین زبان کامپیوتری دارای استاندارد جهانی است و اغلب زبانهای برنامهنویسی پیشرفتهتر مانند زبان ++C، جاوا، #C، جاوااسکریپ، پایتون و … الهام گرفته از زبان برنامهنویسی C هستند. لذا با تسلط بر برنامه نویسی C میتوان خیلی راحتتر زبانهای پیشرفتهتر را هم یاد گرفت. از این رو، در اغلب دانشگاههای جهان، برای یاد دادن اصول و مفاهیم برنامهنویسی به دانشجویان از برنامه نویسی C استفاده میکنند.
- سرعت بالا: زبان C یک زبان برنامهنویسی سطح میانی است و با وجود داشتن مجموعهی زیادی از دستورات سطحبالا از زبان ماشین فاصله زیادی ندارد. لذا برنامههای نوشته شده به زبان C با سرعت بالایی اجرا میشوند.
- قابلیت حمل (Portability): برنامههای نوشتهشده به زبان C بدون هیچ گونه تغییری (و یا با تغییرات اندک) در اغلب سیستمعاملها مانند ویندوز، لینوکس و … قابل اجرا هستند.
- دسترسی مستقیم به حافظه: یکی از مهمترین مزایای برنامه نویسی C دسترسی مستقیم به حافظه است. با استفاده از اشارهگرها میتوان به صورت مستقیم عملیاتهای ریاضی را بر روی حافظهها انجام داد و این امر پیادهسازی الگوریتمهای ریاضی پیچیده را راحتتر و سریعتر خواهد کرد. این ویژگی، در بخصوص در برنامهنویسی میکروکنترلرها از اهمیت زیادی برخوردار است زیرا با برنامه نویسی C به صورت مستقیم میتوان حافظههای داخل میکروکنترلر را دستکاری نمود.
- ساختار یافته و رویهای (Structured and Procedural): در زبان برنامه نویسی C برنامههای پیچیده از اجرای پشت سر هم اجزای کوچکتر (مانند توابع) تشکیل میشوند و این بخشهای کوچکتر قابلیت تکثیر دارند و خوانایی و توسعه برنامهها به زبان C را بهبود میبخشند.
- طراحی سیستم عاملها
- طراحی کامپایلر و اسمبلر
- برنامهنویسی سیستمهای نهفته (Embedded Systems)
- طراحی بازیهای کامپیوتری
- ویرایشگرهای متنی
- درایورهای شبکه
- پایگاههای داده و سرورها
- طراحی مفسرهای زبانی
- طراحی Utilityها در سیستم عاملها
- طراحی مرورگرها
۲۶ ساعت آموزش برنامه نویسی C
در این آموزش برنامه نویسی C در ۱۰ فصل مختلف به صورت جامع و کامل آموزش داده خواهد شد و در نهایت در فصل ۱۱ با استفاده از مطالبی که در فصول قبلی یاد گرفتهایم دو پروژه جذاب پیادهسازی خواهد شد. لازم به ذکر است که در هر فصل هم برای یادگیری عمیقتر مفاهیم برنامه نویسی C از مثالهای متنوعی استفاده شده است. یکی از ویژگیهای بارز این آموزش در یادگیری عمیق و مفهومی زبان برنامهنویسی C است. چرا که برای انجام موفقیتآمیز پروژههای صنعتی و تجاری باید به شکل مفهومی با زبان C آشنا بود.
فصل ۱: مفاهیم مقدماتی برنامه نویسی C
- ویژگیهای زبان برنامه نویسی C
- نرمافزار CodeBlocks
- آشنایی با حداقل اجزای یک برنامه C
- انتخاب نوع کامپایلر برنامه
- استانداردهای برنامهنویسی C
- نحوه گذاشتن کامنت در کدها
- نحوه کامپایل کردن کدهای زبان C (پیشپردازنده، کامپایلر، اسمبلر و لینکر)
- کلمات کلیدی در برنامه نویسی C
- قواعد نامگذاری در برنامه نویسی C
فصل ۲: متغیرها و ثوابت در برنامه نویسی C
- متغیر چیست؟
- نحوه تعریف متغیر در C
- تعاریف Declaration, Definition, and Initialization و تفاوت آنها
- انواع متغیرها در برنامهنویسی C: متغیرهای local, global, and extern
- تعریف ثابت با define#
- تعریف ثابت با const
- تفاوت define# و const
- انواع داده در برنامهنویسی C: دادههای Primitive, Derived و User-defined
- تعاریف: Size Qualifier, Sign Qualifier, Type Qualifier
- انواع متغیرهای عدد صحیح integer
- انواع متغیرهای اعشاری (float and double)
- آشنایی مقدماتی با دستورات printf و scanf
- نجوه ذخیرهسازی دادههای عدد صحیح و اعشاری در حافظه
- ارتقا داده یا Data Promotion چیست؟
- دادههای کاراکتری و جدول کد اسکی
- آشنایی با چند کاراکتر کنترلی مهم (Escape Sequence)
فصل ۳: عملگرها در برنامه نویسی C
- مفهوم عملگر (Operator) و عملوند (Operand)
- عملگرهای یگانه: – ++ — ! sizeof و &
- تفاوت x++ و ++x (x– و –x)
- دستور sizeof برای محاسبه تعداد بایتهای یک متغیر
- عملگرهای دوگانه: حسابی، نسبی، منطقی، بیتی و تخصیص
- عملگرهای حسابی: + – * / ٪
- عملگرهای نسبی: > < >= <= == =!
- عملگرهای منطقی: && || !
- عملگرهای بیتی: & | ^ ~ >> <<
- عملگرهای تخصیص: = =+ =- =* =/ =%
- اولویت عملگرها (Precedence)
- شرکتپذیری عملگرها (Associativity)
فصل ۴: ساختارهای کنترلی در برنامه نویسی C
- انواع ساختارهای کنترلی: شرطی، تکرار و پرش
- دستور if
- دستور if else
- دستورات شرطی تو در تو (Nested)
- دستور if else if
- دستور switch case
- حلقه تکرار for
- حلقه تکرار while
- حلقه تکرار do while
- دستور break
- دستور continue
- برنامههای متنوع برای یادگیری مفهومی ساختارهای کنترلی
فصل ۵: تابعنویسی در برنامه نویسی C
- انواع تابع در C: توابع کتابخانهای (Library) و سفارشی (User-defined)
- آشنایی با توابع کتابخانه math.h برای انجام محاسبات ریاضی مانند توابع مثلثاتی، توان و …
- آشنایی با دستور rand و srand برای تولید اعداد تصادفی
- تمپلیت تعریف تابع سفارشی
- Function Definition and Function Declaratrion
- دستور return
- نوشتن تابع برای محاسبه مجموع اعداد صحیح بین دو عدد مشخص
- پیکربندی حافظه در برنامه نویسی C
- حافظههای Heap و Stack
- تعاریف اسکوپ و طول عمر متغیرها در برنامه نویسی C
- کلاسهای حافظه در برنامه نویسی C: اتوماتیک، extern، استاتیک و رجیستر
- نحوه استفاده از متغیرهای استاتیک (static)
- توابع بازگشتی Recursive در برنامه نویسی C
- محاسبه فاکتوریل و مجموع اعداد صحیح با تابع بازگشتی
- مشکلات تابع بازگشتی
- آشنایی با متغیرهای volatile
این فصل از آموزش به صورت رایگان قابل مشاهده است.
فصل ۶: آرایهها و رشتهها در برنامه نویسی C
- لزوم استفاده از آرایهها
- روشهای تعریف و مقداردهی آرایهها
- آدرسدهی المانها در آرایهها
- مقدار اولیه آرایههای محلی و جهانی که صریحا مقداردهی اولیه نشدهاند.
- مقدار دهی جزیی آرایهها
- سایز آرایهها
- تولید آرایههای تصادفی
- پیادهسازی الگوریتم جست و جوی باینری (روش مستقیم و تابع بازگشتی)
- وارد کردن آرایهها به توابع
- آرایههای دو بعدی 2D
- تعریف و مقداردهی آرایههای دو بعدی
- دسترسی به المانها در آرایههای دو بعدی
- نحوه ذخیرهسازی آرایههای دو بعدی در حافظه
- پیاده سازی ضرب ماتریسی در C
- آرایههای سه بعدی 3D
- تعریف و مقداردهی آرایههای سه بعدی
- رشتهها در برنامهنویسی C
- روشهای مختلف تعریف رشته
- آشنایی با توابع مهم در کتابخانه ctype.h (توابع آنالیز نوع کاراکتر)
- آشنایی با توابع مهم در کتابخانه string.h (توابع آنالیز رشتهها)
- آرایهای از رشتهها
- نوشتن برنامهی کاربردی: محاسبه تعداد تکرار کاراکترهای مجزا در رشتهی دیافتشده از کاربر
فصل ۷: اشارهگرها در برنامهنویسی C
- نوشتن برنامه میانگین المانهای یک آرایه برای نشان دادن اهمیت استفاده از اشارهگرها
- متغیرهای رسمی (Formal) و واقعی (Actual) در تابعنویسی
- تعریف اشارهگر با اپراتور dereferencing *
- مقداردهی اشارهگرها با اپراتور address-of &
- دسترسی به محتوای اشارهگرها
- سایز متغیرهای اشارهگر
- نشان دادن اهمیت اشارهگرها در دیتاشیت میکروکنترلر stm32f103
- اشارهگرهای ثابت و اشارهگر به دادهی ثابت (const)
- تغییر داده ثابت با اشارهگر
- تاثیر اپراتورهای ++ و — بر روی اشارهگرها
- ارتباط اشارهگرها و آرایههای یک بعدی
- ارتباط اشارهگرها و آرایههای دو بعدی
- اشارهگرهای دوگانه double pointer
- دو تعریف مهم در فراخوانی توابع: Call by value و Call by reference
- وارد کردن آرایه در تابع با استفاده از اشارهگر
- گرفتن چندین خروجی از تابع با اشارهگر
- خارج کردن اشارهگر از توابع
- تخصیص حافظه داینامیک با دستورات malloc و calloc
- آرایهای از اشارهگرها
- آرایهای از رشتهها به فرم Jagged
- اشارهگر تابعی
- جایگزینی switch با آرایهای از اشارهگرهای تابعی
فصل ۸: دادههای سفارشی در برنامه نویسی C
- انواع دادههای سفارشی (Structure, Union, Enumeration)
- نشان دادن ضرورت استفاده از structure با یک مثال
- روشهای مختلف تعریف structure و مقداردهی آنها
- دسترسی به اعضا در structure با اپراتور dot
- دستور typedef برای تعریف نوع داده جدید
- دادههای structure تو در تو (nested)
- دو تعریف خیلی مهم: structure padding and packing
- تنظیم اندازهی اعضا در ساختار (bit field)
- ایجاد ساختار با اندازهی داینامیک یا منعطف
- وارد کردن و خارج کردن structure از توابع
- داده نوع enum
- روشهای تعریف و مقداردهی دادههای enum
- مقایسه enum و define#
- داده نوع union
- روشهای تعریف و مقداردهی دادههای union
- کاربرد دادهی union برای تبدیل اعداد (برای مثال، تبدیل دسیمال به باینری و یا دسیمال اعشاری به نمایش floating point)
- دو تعریف مهم: little endian و big endian
فصل ۹: پیشپردازندهها در برنامهنویسی C
- وظایف پیشپردازنده
- انواع پیشپردازنده: ماکرو، اضافهکردن فایل، کامپایل شرطی و متفرقه
- تعریف ماکرو با define#
- ماکروهای پیشفرض: __date__, __time__ و …
- ماکرو فانکشن
- ماکرو فانکشن چند خطی
- چند مثال کاربردی: تعریف ماکرو فانکشن برای ست و ریست کردن بیتها در رجیسترها
- دستورات کامپایل شرطی: ifdef، #ifndef, #elif# و …
- دستورات اضافه کردن فایل include#
- ساخت کتابخانه سفارشی و اضافه کردن به برنامهی اصلی
- اپراتور ساخت رشته #
- اپراتور الحاق توکنها Token Pasting و کاربردهای آن
- اپراتور pragma#
فصل ۱۰: مدیریت ورودی، خروجی و فایلها
- دستور printf
- شکلدهی رشته در دستور printf
- دستور scanf
- شکلدهی رشته در دستور scanf
- دریافت فقط یک کاراکتر با getchar
- چاپ فقط یک کاراکتر با putchar
- چاپ بدون فرمت رشتهها با دستور puts
- دریافت بدون فرمت رشته با دستور gets
- چاپ رشته در رشته دیگر با دستور sprintf
- اسکن یک رشته با دستور sscanf
- نوشتن رشته در فایل txt. با دستور fprintf
- خواندن یک رشته از فایل txt. با دستور fscanf
- خواندن کل محتوای یک فایل txt.
فصل ۱۱: پروژههای تکمیلی
- پروژه ۱: طراحی یک سیستم آزموندهی چهار گزینهای
- پروژه ۲: برنامهنویسی C برای محاسبه دترمینان ماتریس مرتبه دلخواه (برنامهنویسی پایه با زبان C و سپس تولید اتوماتیک تابع C با نرمافزار MATLAB)
نحوه خرید آموزش برنامهنویسی C – مقدماتی و پیشرفته
هزینه آموزش: ۲ میلیون تومان
(تخفیف ۵۰٪) >> فقط ۱ میلیون تومان
شماره کارت جهت واریز: 6104337359254321 بنام امید زندی سرابسوره
بعد از واریز مبلغ، رسید آن را همراه با نام و نام خانوادگی، آدرس ایمیل و نام آموزش به آدرس زیر ایمیل کنید. بعد از دریافت اطلاعات، در اولین فرصت، لینکهای دانلود آموزش برایتان ارسال خواهد شد.
اگر سوالی هم درباره دورهی آموزشی داشتید به این آدرس ایمیل بفرمایید.
- ایمیل: omidzandi.ir@gmail.com