ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

| ᴅᴇᴠʟᴏꜱꜱᴏ |

| ᴅᴇᴠʟᴏꜱꜱᴏ |

الذهاب إلى القناة على Telegram

DevLosso | دِولوسو دنیای فناوری، برنامه‌نویسی و ساختن. آموزش، پروژه، تجربه و اخبار فناوری. از ایده تا محصول. همکاری و مشاوره: @DevLossoAA صفحه اینستاگرام: instagram.com/devlosso

إظهار المزيد
648
المشتركون
لا توجد بيانات24 ساعات
+17 أيام
+230 أيام
أرشيف المشاركات
بریم سراغ جلسه هفتم با زبان C
امروز می‌خواهیم با یکی از مفاهیم جالب و کاربردی در زبان C آشنا بشیم: پوینترها (Pointers). این مفهوم خیلی مهمه و به ما این امکان رو می‌ده که به آدرس‌های حافظه دسترسی داشته باشیم و کارهای جالبی انجام بدیم.
▎1. تعریف پوینتر
پوینترها متغیرهایی هستن که به جای ذخیره کردن داده‌ها، آدرس حافظه یک متغیر دیگه رو نگه می‌دارن. اینجوری می‌تونیم به داده‌ها به صورت مستقیم دسترسی پیدا کنیم.
▎2. سینتکس (نحو) تعریف پوینتر برای تعریف یک پوینتر، از علامت * استفاده می‌کنیم:
data_type *pointer_name;
• data_type: نوع داده‌ای که پوینتر بهش اشاره می‌کنه. • pointer_name: نام پوینتر که باید منحصر به فرد باشه.
▎3. مثال ساده از پوینتر بیایید یک مثال ساده بزنیم تا بهتر متوجه بشیم:
#include <stdio.h>

int main()
{
    int num = 10; // یک متغیر عددی
    int *ptr = &num; // تعریف پوینتر و ذخیره آدرس num

    printf("Value of num: %d\n", num); // مقدار num
    printf("Address of num: %p\n", (void*)&num); // آدرس num
    printf("Value of ptr: %p\n", (void*)ptr); // آدرس ذخیره شده در ptr
    printf("Value pointed by ptr: %d\n", *ptr); // مقدار اشاره شده توسط ptr

    return 0;
}
در اینجا، ما یک متغیر num داریم و یک پوینتر ptr که آدرس num رو ذخیره می‌کنه. با استفاده از *ptr می‌تونیم به مقدار num دسترسی پیدا کنیم.
▎4. تغییر مقدار با استفاده از پوینتر یکی از کاربردهای جالب پوینترها اینه که می‌تونیم مقدار متغیرها رو از طریق آدرسشون تغییر بدیم:
#include <stdio.h>

void changeValue(int *ptr)
{
    *ptr = 20; // تغییر مقدار متغیر اصلی
}

int main()
{
    int num = 10;
    printf("Before: %d\n", num);
    changeValue(&num); // ارسال آدرس num به تابع
    printf("After: %d\n", num);
    
    return 0;
}
اینجا تابع changeValue یک پوینتر به num دریافت می‌کنه و مقدارش رو تغییر می‌ده.
▎5. نکته مهم 🔍
• پوینترهای NULL: همیشه خوبه که قبل از استفاده از پوینترها بررسی کنیم که آیا به یک آدرس معتبر اشاره می‌کنن یا نه. می‌تونیم از مقدار NULL برای نشون دادن اینکه پوینتر به هیچ آدرسی اشاره نمی‌کنه استفاده کنیم.
▎6. نکته مهم‌تر 🔍
پوینترها یکی از ابزارهای کلیدی در زبان C هستند که به ما کمک می‌کنن تا برنامه‌هامون رو بهینه‌تر و کارآمدتر بنویسیم. همچنین توی کار با آرایه‌ها و ساختارها هم خیلی مفیدن.
اگر سوالی دارید تو قسمت دیدگاه ها بگید.

کویز: کدام یک از گزینه‌های زیر نام‌گذاری متغیرها را به درستی نشان می‌دهد؟
Anonymous voting

کویز: کدام یک از گزینه‌های زیر نام‌گذاری متغیرها را به درستی نشان می‌دهد؟
Anonymous voting

کویز: کدام یک از گزینه‌های زیر یک تابع بدون پارامتر را به درستی نشان می‌دهد؟
Anonymous voting

کویز: کدام یک از گزینه‌های زیر یک تابع بدون پارامتر را به درستی نشان می‌دهد؟
Anonymous voting

کویز: کدام گزینه صحیح است برای فراخوانی تابع add که دو عدد را جمع می‌کند؟
Anonymous voting

کویز: اگر یک تابع نیازی به بازگشت هیچ مقداری نداشته باشد، چه نوعی باید داشته باشد؟
Anonymous voting

کویز: اگر شما بخواهید تابعی را در برنامه خود استفاده کنید که هنوز تعریف نشده، چه باید بکنید؟
Anonymous voting

بریم جلسه ششم با زبان C
• در این قسمت می‌خواهیم با یکی از مفاهیم بسیار مهم و کلیدی در برنامه‌نویسی آشنا بشیم: توابع یا همون Functions.
• توابع به ما این امکان رو میدن که کد رو به بخش‌های کوچکتر تقسیم کنیم و از تکرار کد جلوگیری کنیم. این موضوع باعث میشه که کد ما بهینه‌تر و خواناتر بشه.
▎ 1. سینتکس (نحو) تعریف تابع سینتکس تعریف یک تابع به شکل زیره:
return_type function_name(parameters)
{
    // code
    return value; // optional
}
• return_type: نوع داده‌ای که تابع برمی‌گردونه (مثل int، float، void و...). • function_name: نام تابع که باید منحصر به فرد باشه • parameters: ورودی‌هایی که تابع می‌گیره (اختیاری).
▎ 2. مثال ساده از تابع بیایین یک تابع ساده بنویسیم که دو عدد را جمع کنه:
#include <stdio.h>

// تعریف تابع
int add(int a, int b)
{
    return a + b;
}

int main()
{
    int result = add(5, 3); // فراخوانی تابع
    printf("Sum: %d\n", result);
    return 0;
}
• در اینجا، تابع add دو عدد را به عنوان ورودی می‌گیره و مجموع اونها را برمی‌گردونه.
▎ 3. توابع بدون بازگشت (Void Functions) اگر تابعی نیاز به بازگشت هیچ مقداری نداشته باشه، می‌تونیم از نوع void استفاده کنیم:
void printHello()
{
    printf("Hello, World!\n");
}

int main()
{
    printHello(); // فراخوانی تابع
    return 0;
}
▎ 4. توابع با چندین پارامتر توابع می‌تونن چندین پارامتر داشته باشن:
void printSum(int a, int b)
{
    printf("Sum: %d\n", a + b);
}

int main()
{
    printSum(5, 10); // فراخوانی تابع
    return 0;
}
▎ نکته مهم 🔍
• توابع باید قبل از استفاده در کد تعریف شن یا پروتوتایپ اونها باید در بالای کد قرار بگیره.
▎نکته ماژولار 🔧
• توابع یکی از ابزارهای کلیدی در برنامه‌نویسی هستند که به ما کمک می‌کنن تا برنامه خودمون رو سازماندهی کنیم و اون رو قابل نگهداری‌تر کنیم.
سوالی بود تو قسمت دیدگاه‌ها بگید!

جلسه پنجم با زبان C توی این قسمت میخوایم با یکی از مفاهیم بسیار مهم و پرکاربرد در برنامه‌نویسی آشنا بشیم: حلقه‌ها یا همون Loops.
حلقه‌ها به ما این امکان رو میدن که یک سری دستورات رو چندین بار اجرا کنیم بدون اینکه نیاز باشه کد رو به صورت تکراری بنویسیم. این موضوع باعث میشه که کد ما بهینه‌تر و خواناتر بشه.
 به طور کلی ما سه نوع حلقه اصلی داریم:
1. for 2. while 3. do-while
▎ 1. سینتکس (نحو) حلقه for
حلقه for برای تکرار یک بلوک کد به تعداد مشخصی استفاده میشه.
سینتکس اون به شکل زیره:
for (initialization; condition; increment/decrement)
{
    // code
}
به عنوان مثال:
for (int i = 0; i < 5; i++)
{
    printf("Value of i: %d\n", i);
}
در اینجا، حلقه از 0 شروع میشه و تا زمانی که مقدار i کمتر از 5 باشه، کد داخل حلقه اجرا میشه. ▎ 2. سینتکس (نحو) حلقه while
حلقه while برای تکرار یک بلوک کد تا زمانی که یک شرط خاص برقرار باشه، استفاده میشه.
سینتکس اون به شکل زیره:
while (condition)
{
    // code
}
به عنوان مثال:
int i = 0;
while (i < 5)
{
    printf("Value of i: %d\n", i);
    i++;
}
در اینجا، حلقه تا زمانی که i کمتر از 5 باشه، اجرا میشه و بعد از هر بار اجرا، مقدار i یک واحد افزایش پیدا میکنه. ▎ 3. سینتکس (نحو) حلقه do-while
حلقه do-while شبیه به حلقه while هست، اما تفاوتش اینه که حداقل یک بار کد داخل حلقه اجرا میشه حتی اگر شرط برقرار نباشه.
سینتکس اون به شکل زیره:
do
{
    // code
} while (condition);
به عنوان مثال:
int i = 0;
do
{
    printf("Value of i: %d\n", i);
    i++;
} while (i < 5);
در اینجا، حتی اگر مقدار i در ابتدا بزرگتر از 5 باشه، کد داخل حلقه حداقل یک بار اجرا میشه. ▎ نکته مهم 🔍
• در هر سه نوع حلقه، میتونید از کلمه کلیدی break برای خروج از حلقه استفاده کنید و از continue برای عبور به تکرار بعدی استفاده کنید.
▎ نکته کلاسیک 🏛
• حلقه‌ها یکی از ابزارهای قدرتمند در برنامه‌نویسی هستن و میتونن به ما کمک کنن تا کارهای تکراری رو به راحتی انجام بدیم.
سوالی بود تو قسمت دیدگاه‌ها بگید!

کدام یک از گزینه‌های زیر برای اعلام یک متغیر صحیح (integer) در زبان C صحیح است؟
Anonymous voting

#دلی چند وقت پیش ی کانالی دیدم راجب همین برنامه نویسیو ... و نکته ای که خیلی برام جذاب بود این بود که صاحب این چنل ی نوجوان 13 ساله هست و اموزشم میزاره و.‌.. (که کم نداریم از این اشخاص) ی وقتایی کیفیت محتوا مهم نیست انجامش مهمه که بعضاً خیلیا این جسارت به خودشون نمیدن حالا گفتم اگر شما هم دوست داشتید حمایت کنید که انگیزه ای شه براش🧡 📶@Zohix_code

عزیزان این گروهمونه اگر دوست داشتید میتونید توش فعالیت کنید💖💝 👤@Graphcode1 نفری یدونه پروفایل 🏷هم برای گروه بفرستید؛ بهترینش انتخاب میشه✅

کویز: کدام یک از گزینه‌های زیر برای تعریف یک تابع در C صحیح است؟
Anonymous voting

کویز: کدام یک از گزینه‌های زیر برای مقایسه دو مقدار برابر استفاده می‌شود؟
Anonymous voting

کویز: کدام یک از عبارات زیر برای چاپ "Hello, World!" در C صحیح است؟
Anonymous voting

برنامه نویس روز نمیخواد، حقوق میخواد 😁 روز همه مبارک، حتی اونی که فقط بلده یه Hello world پرینت کنه.
خودمو میگم! 😃

روز برنامه نویسو به همه شب زنده‌ داران و سحرخیزان تبریک میگم😎❤️‍🔥 حالا تو کامنتا نسبت به هم دیگه ابراز محبت کنید که اهمیت این روز حفظ بشه😂

خب وقتشه بریم سراغ جلسه چهارم با زبان C
توی این قسمت میخوایم با یه چیز پایه اما خیلی مهم آشنایی پیدا کنیم! اونم دستورات شرطی یا همون Conditional Statements
• مفهوم شرط گذاری که کاملا واضحه ما از دستورات شرطی برای این استفاده میکنیم که برنامه یه سری مسیر های اجرایی ای داشته باشه؛ مثلا اگر فلان اتفاق افتاد این جور پیش بریم، اگر یه اتفاق دیگه افتاد یه جور دیگه!
 به طور کلی ما دومدل حالت برای ایجاد شرط داریم:
• if • switch
1. سینتکس (نحو) دستور if
if (condition)
{
       // code
}
کلمه کلیدی else اینجا استفاده داره مثلا:
if (condition)
{
       // code
}
else
{
       // code
}
2. سینتکس (نحو) دستور switch
این یکم فرق داره و یه متغیر رو میگیره و مقدارش رو بررسی می‌کنه!
int ch = 10;

switch(ch)
{
     case 2:
        printf("ch is 2");
     break;

     default:
       printf("ch is not 2");
     break;
}
• یعنی یه متغیر رو میگیره و مقدارش رو با case هایی که تعریف شده مقایسه می‌کنه! • اینجا کلمه کلیدی default معادل else تو if حساب میشه!
 حواست باشه ‼️
• اگر بعد از هر case از دستور break استفاده نکنی برنامه میزنه تو case های بعدی، البته گاها بعضی برنامه نویسا بسته به موقعیت، عمدا اینکارو میکنن!
نکته کلاسیک 🏛
• کلا switch انواع int و char رو ساپورت میکنه!
نکته جالب 🎨
پایتون جدیدا تو آپدیتاش همچین چیزی رو خودش اضافه کرده! این قابلیت اسمش match-case عه.
x = 10

match(x)
      case 2:
          print("x is 2")
      case _:
          print("x is not 2")
• این نسخه پایتونی مثل switch کلاسیک توی C نیست یعنی بعد از اینکه case ای اجرا شد از بلاک match میزنه بیرون.