- مدرس دوره : امیر ارزنی ( رزومه )
- تعداد ویدیوها : 64 ویدیو
- مدت زمان دوره : 29:33:00
- سطح دوره : متوسط
- وضعیت دوره : به اتمام رسیده

آموزش جامع زبان سی C
زبان برنامهنویسی سی یکی از قدیمیترین، قدرتمندترین و تاثیرگذارترین زبانهای برنامهنویسی در تاریخ محاسبات کامپیوتری است. این زبان در اوایل دهه ۱۹۷۰ میلادی توسط دنیس ریچی (Dennis Ritchie) در آزمایشگاههای بل (Bell Labs) برای توسعه سیستمعامل یونیکس (UNIX) طراحی شد. با گذشت دههها، C همچنان یکی از محبوبترین زبانها در سراسر جهان است.
اهمیت زبان سی (چرا C مهم است؟)
۱. مادر زبانهای مدرن: زبان C پایه و اساس بسیاری از زبانهای برنامهنویسی امروزی است. زبانهایی مانند C++، Java، C#، Python و JavaScript به طور مستقیم یا غیرمستقیم از ساختار، سینتکس و مفاهیم C الهام گرفتهاند.
۲. سرعت و کارایی بینظیر: C یک زبان سطح میانی (Middle-level) محسوب میشود؛ به این معنی که هم ویژگیهای زبانهای سطح بالا (خوانایی برای انسان) و هم زبانهای سطح پایین (دسترسی مستقیم به سختافزار و حافظه) را دارد. کدهای نوشته شده با C بسیار سریع و با کمترین میزان مصرف منابع اجرا میشوند.
۳. دسترسی مستقیم به حافظه: با استفاده از ویژگیهایی مانند اشارهگرها (Pointers)، برنامهنویس میتواند مدیریت دقیقی روی حافظه (RAM) داشته باشد.
۴. قابلیت حمل (Portability): برنامههای نوشته شده به زبان C را میتوان با کمترین تغییرات روی معماریهای سختافزاری و سیستمعاملهای مختلف کامپایل و اجرا کرد.
کاربردهای اصلی زبان سی
با توجه به سرعت بالا و دسترسی به سختافزار، C در حوزههای زیر کاربرد گستردهای دارد:
• توسعه سیستمعاملها: بخش عظیمی از هسته (Kernel) سیستمعاملهای محبوبی مانند ویندوز، لینوکس و مکاواس (macOS) با زبان C نوشته شده است.
• سیستمهای نهفته (Embedded Systems): برنامهنویسی میکروکنترلرها، تجهیزات پزشکی، لوازم خانگی هوشمند، سیستمهای خودرو و قطعات صنعتی عمدتاً با زبان C انجام میشود، زیرا این سیستمها منابع (حافظه و پردازنده) محدودی دارند.
• توسعه کامپایلرها و مفسرها: کامپایلر بسیاری از زبانهای برنامهنویسی دیگر (مثل پایتون و روبی) با استفاده از زبان C نوشته شدهاند.
• اینترنت اشیا (IoT): دستگاههای متصل به شبکه که نیاز به پردازش سریع و مصرف انرژی کم دارند، اغلب از C استفاده میکنند.
• موتورهای بازیسازی و گرافیک: در مواردی که رندرینگ سریع و پردازشهای سنگین گرافیکی نیاز است، C (و برادر بزرگترش C++) انتخاب اول هستند.
• پایگاههای داده: هسته بسیاری از سیستمهای مدیریت پایگاه داده معروف مانند MySQL و PostgreSQL با C نوشته شده است.
آیا یادگیری زبان C در امروز توجیه دارد؟
قطعا بله. حتی اگر قصد نداشته باشید به عنوان یک برنامهنویس C کار کنید، یادگیری این زبان به شما کمک میکند تا درک بسیار عمیقتری از نحوه کارکرد کامپیوترها، مدیریت حافظه، نحوه اجرای کدها توسط پردازنده و ساختار دادهها پیدا کنید. این درک عمیق، شما را به برنامهنویس بسیار بهتری در هر زبان دیگری (مثل پایتون، جاوا اسکریپت یا جاوا) تبدیل خواهد کرد.
فهرستـــ ویدیوها
مدت زمان دوره 29:33:00با مشاهده آنلاین جلسات در سایت ، هزینه اینترنت شما به صورت نیم بها محاسبه خواهد شد.
ساختار زبان سی و شیوه عملکرد زبان های کامپایلری
در این جلسه ساختار زبان سی رو به شکل کامل و مفصل برسی کردیم و در ادامه به بررسی زبان های کامپایلری و نحوه تبدیل کد های ما به فایل اجرایی صحبت کردیم
معرفی متغیر ها
آشنایی بیشتر با دستور printf و توضیح کامل در مورد متغیر ها و نحوه تعریف و استفاده از آنها
بررسی سایز و محدوده متغیر ها
به بررسی متغیر های جدید و محدوده آنها و سایز اشغالی آنها روی رم می پردازیم و با دستور sizeof آشنا می شویم
گرفتن ورودی از کاربر scanf
به برسی نحوه دریافت ورودی از کاربر پرداختیم و نحوه دریافت چند مقدار با یک اسکن رو هم کار کردیم و یک پروژه ساده با همدیگه ساختیم
عملگر های حسابی و انتسابی
به معرفی عملگر های حسابی ، انتسابی ، افزایش و کاهش پرداختیم و حالت های مختلف را نیز بررسی کردیم
عملگر های منطقی
به توضیح کامل در مورد عملگر های منطقی پرداختیم و متغیر جدید bool رو هم معرفی کردیم و نحوه ترکیب گزاره هارو هم انجام دادیم و خروجی های عملی گرفتیم.
اصول نام گذاری در سی
در این جلسه قوانین نام گذاری در زبان سی را بررسی کردیم و روش های نام گذاری های Snake Case و Screaming Snake Case و Pascal Case وCamel Case رو معرفی کردیم
دستورات شرطی if , else if , else
در این جلسه تدریس دستورات شرطی رو داشتیم و 2 تا مثال نیز برای استفاده از این دستورات ، نحوه استفاده درست آنها و کاربرد دقیق آنها نوشتیم
بررسی شرط های تو در تو
در این جلسه به بررسی شرط های تو در تو پرداختیم و مثالی رو با شرط های تو در تو نوشتیم در ادامه نیز عملگر شرطی رو معرفی کردیم و توضیحاتی را در مورد نحوه استفاده از آن را گفتیم
دستور switch
آشنایی با دستور switch و بررسی تایپ های مجاز ورودی و پیاده سازی 2 مثال عملی و توضیحات جامع در مورد ساختار دستور
تفاوت بین if و switch
در این ویدیو نحوه رفع بافر ورودی را بررسی کردیم و با معرفی حالت debug مود به بررسی دقیق تفاوت بین if و switch پرداختیم و عملکرد آنها و کاربرد هر کدام در بخش های مختلف را بررسی کردیم
کلمه های کلیدی break , continue , goto
در این جلسه به معرفی کلمه کلیدی های break , continue , goto پرداختیم و نحوه استفاده از آنها را بررسی کردیم
مثال عملی از break , continue
در این ویدیو، دو مثال از کاربرد کلمات کلیدی break و continue را نوشتیم
حلقه do-while
بررسی حلقه do-while و نحوه استفاده از آن در Input Validation و نوشتن مثال کاربردی با آن
حلقه for تو در تو با مثال
کلمه های کلیدی break , continue را در for پیاده سازی کردیم و در ادامه جلسه به بررسی حلقه ها تو در تو به همراه حل مثال و توضیح دقیق مفاهیم جلسه را به پایان رساندیم
معرفی توابع
در این جلسه توابع را معرفی کردیم و نیاز به استفاده از آن را درک و بررسی کردیم و یک تابع ساده را ایجاد و فراخوانی کردیم
بررسی نوع و ورودی های توابع
بحث توابع رو گسترش دادیم و در مورد ورودی های توابع و بازگشت مقدار از تابع کار کردیم
پروژه عملی با توابع
با استفاده از توابع و کد نویسی تمیز ماشین حساب چهار عمل اصلی را نوشتیم
حوزه متغیرها (Scope) و طول عمر
در این ویدیو به نکات جزئی و بررسی حوزه متغیر ها و طول عمر آنها در روند اجرای برنامه پرداختیم و بررسی های دقیق و عملی در مورد آنها انجام دادیم
متغیر های static
در این جلسه به تدریس متغیر های static در توابع پرداختیم و طول عمر و نحوه استفاده از آن را نیز بررسی کردیم
توابع بازگشتی (recursive)
در این جلسه مکمل توابع با توابع بازگشتی آشنا شدیم و فاکتوریل گیری را با 3 روش بررسی کردیم که یکی از آنها همان توابع بازگشتی بود
آرایه های یک بعدی
به معرفی آرایه های یک بعدی ، بررسی نکات ریز و توضیحات دقیق در مورد آنها و حل مثال عملی پرداختیم
آرایه های دو بعدی
آرایه های دو بعدی رو به شکل کامل و دقیق توضیح دادیم و معرفی کردیم و به صورت عملی از اون برای درک بیشتر استفاده کردیم
معرفی رشته ها (string)
به معرفی رشته ها و توضیح کامل در مورد تعریف و استفاده از رشته ها پرداختیم و نحوه چاپ و دریافت آنها با چند روش را نیز بررسی کردیم
معرفی توابع پر کاربرد string ها
به معرفی توابع strcspn , strlen , strcpy , strncpy , strcat , strcmp , strlwr , strupr پرداختیم
پروژه عملی با اشاره گر ها
در این جلسه برای درک بهتر از شیوه استفاده و کاربرد اشاره گر ها یک مثال و چالش پر کاربرد رو با همدیگه بررسی کردیم اونم این بود که چطوری مقدار دوتا متغیر رو با هم عوض کنیم. با دو روش این مورد رو بررسی کردیم و توضیحاتی رو در موردش ارائه دادیم.
اشارهگر به اشارهگر (Double Pointers)
در این جلسه اشارهگر به اشارهگر (Double Pointers) ها را همراه با مثال توضیح دادیم
قالب بندی در printf
با قالب بندی های مختلف در نمایش متغیر در printf کار کردیم و با هم موارد مختلف رو بررسی کردیم
تبدیل داده ها ( Implicit - Explicit Conversion )
در این جلسه به بررسی تبدیل داده ها به شکل ضمنی و صریح پرداختیم و با آنها کار کردیم و آشنا شدیم
حافظه پویا (malloc - free)
در این جلسه با دستورات malloc , free آشنا شدیم و در مورد کاربرد و اختصاص حافظه صحبت کردیم
حافظه پویا (realloc - calloc)
در این جلسه با دستورات realloc , calloc آشنا شدیم و در مورد کاربرد و نحوه ایمن کردن استفاده از آنها صحبت کردیم
پروژه عملی با حافظه پویا
در این جلسه پروژه تمرینی و عملی ساده ای برای درک بهتر و آشنایی بیشتر با malloc , calloc , realloc , free , pointer to pointer انجام دادیم
اشاره گر به توابع (Function Pointer)
در این جلسه با اشاره گر توابع آشنا شدیم و با آن یک مثال کاربردی و اصولی نوشتیم
دیتا تایپ سفارشی (struct)
در این جلسه بحث دیتا تایپ های سفارشی یا نوع داده های سفارشی رو شروع کردیم و یکی از آنها که ساختار (structure) است را تدریس کردیم و موارد مختلف آن را بررسی کردیم و یک کد عملی خوب با آن نوشتیم
معرفی عملگر (arrow operator)
در این جلسه به معرفی عملگر پیکان یا arrow operator پرداختیم و با استفاده از مثال عملی نحوه استفاده از خود عملگر و کاربرد آن را یاد گرفتیم
معرفی typedef , enum
در این جلسه با typedef و enum ها آشنا شدیم و نحوه استفاده از آنها و کاربرد آنها را یاد گرفتیم
معرفی union , کد عملی
در این جلسه به معرفی union و بهترین روش استفاده از آن اشاره کردیم و آن را نوشتیم و یک مثال عملی رو باهمدیگه کامل کردیم و در جلسه بعدی ورژن کاملتر و بهینه شده اون رو با هم کامل میکنیم
تکمیل پروژه عملی و نکات جزئی
در این جلسه به کامل کردن و بهینه کردن کد عملی جلسه پیش پرداختیم و در مورد نکات جزئی و کاربردی حرف زدیم و از آنها برای تکمیل کد استفاده کردیم
نوشتن فایل متنی
در این جلسه کار با فایل هارو شروع کردیم و نحوه ایجاد فایل متنی و نوشتن محتوا در آن فایل را بررسی کردیم
خواندن فایل متنی
در این جلسه تونستیم محتوایی که داخل یک فایل متنی قرار داره رو بخونیم و داخل متغیر ها ذخیره کنیم و چاپ کنیم
کار با فایل باینری و جابجایی fseek
در این جلسه به اینکه فایل باینری چیه و چه ویژگی هایی داره پرداختیم با تونستیم فایل باینری بنویسیم و بخونیم و حتی در اون با استفاده از fseek حرکت کنیم
نکات جزئی در مورد فایل ها
در این جلسه به کامل کردن بخش فایل ها و ذکر کردن نکات جزئی پرداختیم
پروژه عملی برای فایل ها
یک مینی پروژه عملی برای یادگیری بهتر و مرور فایل ها با هم دیگه ساختیم تا بتونیم درک بهتری از نحوه استفاده از فایل ها و کاربردهاش رو داشته باشیم
پیش پردازنده و ماکرو ها
در این جلسه با دستورات پیش پرندازه و نحوه کار با ماکرو ها رو یاد گرفتیم
ماکرو های تابعی (Function-like Macro)
در این جلسه با ماکرو های تابعی آشنا شدیم و نمونه های متعددی از آنها را نوشتیم و حتی به نحوه امن کردن استفاده از آنها و کاربرد های آن نیز اشاره کردیم
مفاهیم پایه Bitwise و عملگرهای بیتی
در این جلسه نحوه ذخیره سازی مقادیر داخل رم و کلا شکلی که کامپیوتر به داده ها نگاه می کنه رو بررسی کردیم و با تبدیل باینری یا دودویی بیشتر آشنا شدیم و مثال هایی رو برای تبدیل اعداد به باینری بررسی کردیم و سپس در ادامه با عملگر های بیتی and , or , xor , shift آشنا شدیم و در مورد نحوه عملکرد آنها صحبت کردیم و مثال هایی رو به شکل حل سیستمی و حل دستی انجام دادیم
کاربردهای عملگرهای بیتی
در این جلسه با کاربردهای عملگرهای بیتی (Bitwise) آشنا شدیم و یکی از عملگر های دیگر به اسم not رو بررسی کردیم و با مفهوم Mask , Flag آشنا شدیم
کاربرد عملگر های بیتی و شروع پروژه عملی
در این جلسه یکی دیگر از کاربرد های عملگر های بیتی رو مورد بررسی قرار دادیم به اسم toggle و در ادامه شروع به نوشتن پروژه عملی برای بخش Bitwise ها کردیم تا با این مفهوم و عملگر هایش به خوبی آشنا بشویم و نحوه استفاده از آنها در یک مثال کاربردی را به خوبی یاد بگیریم
کامل کردن پروژه عملی Bitwise
در این جلسه پروژه عملی که جلسه پیش شروع کردیم رو کامل کردیم و در آن یکی از روش های دریافت ورودی مدیریت شده رو انجام دادیم و در نهایت یک کد کاملا اصولی ، تمیز و خوانا رو با همدیگر نوشتیم
آرگومان های خط فرمان
در این جلسه با آرگومان ها و پارامتر هایی که می توان همراه اجرای برنامه با ان ارسال کرد بحث کردیم و یادگرفتیم چطوری مقادیری رو با اجرا از خط فرمان با برنامه ارسال کنیم و برای درک بهتر یک برنامه ماشین حساب ساده نوشتیم تا درک کامل به استفاده از آن داشته باشیم
آشنایی با Header فایل ها و ساختار پروژه
در این جلسه با Header فایل ها آشنا شدیم و یادگرفتیم چطوری پروژه هایی که می سازیم رو چند فایلی کنیم و تمیز تر و منظم تر کار کنیم همچنین به محیط کد نویسی دیگری مهاجرت کردیم تا در آن محیط جدید حرفه ای تر کد نویسی کنیم
اعتبارسنجی ورودی (Input validation)
در این جلسه در مورد buffer صحبت کردیم و در ادامه به نحوه اعتبارسنجی ورودی و ایمن کردن آن پرداختیم
بخش اول پروژه نهایی
در این جلسه، پروژه عملی و نهایی دوره را آغاز کردیم. در این پروژه، تمامی مباحثی که در طول دوره آموزش داده شدهاند بهصورت یکپارچه به کار گرفته میشوند تا علاوه بر مرور مفاهیم، کاربرد عملی آنها و نحوه استفاده از آنها در کنار یکدیگر را بهخوبی مشاهده کنید. این رویکرد به شما کمک میکند تا درک عمیقتری از دستورات، کدنویسی و نحوه پیادهسازی آنها در یک پروژه واقعی به دست آورید. در این جلسه نیز به طراحی منو و پیادهسازی توابع اعتبارسنجی ورودی پرداختیم.
بخش دوم پروژه نهایی
در این جلسه، ابتدا به رفع یکی از مشکلات جزئی باقیمانده از جلسه قبل پرداختیم. سپس دربارهٔ وابستگی چرخشی در فایلهای هدر صحبت کردیم و راهکارهای مربوط به آن را بررسی کردیم. در ادامه، بخش منو را تکمیل کرده و دیتاتایپ مربوط به ماشین را اضافه کردیم. در نهایت نیز بخش افزودن ماشین را بهطور کامل پیادهسازی و تکمیل کردیم.
بخش سوم پروژه نهایی
در این جلسه، طراحی و پیادهسازی جدول نمایش لیست ماشینها انجام شد. همچنین بخشهای مربوط به نمایش لیست ماشینها و ویرایش ماشینهای اضافهشده بهطور کامل پیادهسازی و تکمیل شدند.
بخش چهارم پروژه نهایی
در این جلسه، قابلیت حذف خودرو از لیست و همچنین امکان علامتگذاری خودرو بهعنوان «فروختهشده» را اضافه کردیم.
مخصوص اعضای ویژه

نظرات کاربران در رابطه با این دوره