𝙰_𝙻𝚂
عزیزان این گروهمونه اگر دوست داشتید میتونید توش فعالیت کنید💖💝
👤@Graphcode1
نفری یدونه پروفایل 🏷هم برای گروه بفرستید؛ بهترینش انتخاب میشه✅
2 · 423 · Опрос
нажмите — покажем
4 · 295 · нажмите — покажем
جلسه پنجم با زبان 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 برای عبور به تکرار بعدی استفاده کنید.
▎ نکته کلاسیک 🏛
• حلقهها یکی از ابزارهای قدرتمند در برنامهنویسی هستن و میتونن به ما کمک کنن تا کارهای تکراری رو به راحتی انجام بدیم.
سوالی بود تو قسمت دیدگاهها بگید!
5 · 612 · بریم جلسه ششم با زبان 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;
}
▎ نکته مهم 🔍
• توابع باید قبل از استفاده در کد تعریف شن یا پروتوتایپ اونها باید در بالای کد قرار بگیره.
▎ نکته ماژولار 🔧
• توابع یکی از ابزارهای کلیدی در برنامهنویسی هستند که به ما کمک میکنن تا برنامه خودمون رو سازماندهی کنیم و اون رو قابل نگهداریتر کنیم.
سوالی بود تو قسمت دیدگاهها بگید!
6 · 887 · Опрос
нажмите — покажем
1 · 269 · нажмите — покажем
Опрос
нажмите — покажем
1 · 284 · нажмите — покажем
Опрос
нажмите — покажем
1 · 328 · нажмите — покажем
Опрос
нажмите — покажем
1 · 374 · нажмите — покажем
Mənim Üçün
بریم سراغ جلسه هفتم با زبان 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
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 هستن که به م
3 · 883 · Mənim Üçün
این چند وقته کسل، اندکی بیمار و به شدت فوق العاده زیادی، درگیرم (جنگ اعصاب دارم) دوستان گلم. :):
بابت اینکه گاهی چنل در سکوته عذر خواهم عزیزان. 🌹
دعا کنید مشکلم حل شه ثواب داره 😁❤️🩹
حالم که رو به راه بشه از این حالات دیگه پیش نمیاد. 🕊🌹
275 · یه خاطره ای بگم همش که نشد برنامه نویسی 😁
یه زمانی تو سرکارم یه i5 6100U داشتم که 8GiB رم داشت،
و میگفتم ای خدا چرا این آخه سیستم زغالی تر از این پیدا نشد؟
گاهی نق میزدم، میگفتم وای چقدر بدرد نخوره این سیستم!
اما واقعا سیستم خوبی بود و کشش داشت
حالا دارم با Pentium Dual-Core که 2GiB رم داره سر و کله میزنم تو محل کار 😁
خلاصه که قدر بدونید رفقا 😂
شکر نعمت، نعمتت افزون کند
کفر نعمت، از کفت بیرون کند
شد مَثَل من!
3 · 708 · گوگل🏢 ی آسیب پذیری خطرناک ↔️توی گوشی های Pixel پیدا کرده این باگ از نوع Zero-Day بوده و توی حملات واقعی هم ازش استفاده شده مهاجم 🥷 میتونسته بدون نیاز به هیچ کاری از طرف کاربر سطح دسترسی خودش رو بالا ببره مشکل مربوط به بخش مودم (یعنی مشکل داخل بخش ارتباطات موبایل گوشی بوده همون قسمتی که وظیفه ارتباط با شبکه سیم کارت و دکل مخابراتی رو داره) و فقط مخصوص اپلیکیشن ها نیست گوگل توی آپدیت🔄 امنیتی سپتامبر این باگ رو برطرف کرده🐞
5 · 1.1K · Опрос
нажмите — покажем
1 · 279 · нажмите — покажем
Müstəphə
بریم سراغ جلسه هشتم با زبان C
امروز میخواهیم درباره یکی از مفاهیم مهم در برنامهنویسی صحبت کنیم: محدوده متغیرها (Variable Scope).
این مفهوم به ما کمک میکنه که بفهمیم که متغیرها چه زمانی و در کجا قابل دسترسی هستن.
▎1. تعریف محدوده متغیرها
محدوده متغیرها به محدودهای اشاره میکنه که در آن یک متغیر قابل دسترسیه. این محدوده میتونه به صورت محلی (local) یا سراسری (global) باشه.
▎2. متغیرهای محلی
متغیرهای محلی فقط در داخل تابع یا بلاکی که تعریف شدن قابل دسترسی هستن. وقتی تابع به پایان میرسه، این متغیرها از حافظه حذف میشن.
مثال:
#include <stdio.h>
void myFunction() {
int localVar = 5; // متغیر محلی
printf("Local Variable: %d\n", localVar);
}
int main() {
myFunction();
// printf("%d\n", localVar); // این خط خطا میده چون localVar در اینجا قابل دسترسی نیست
return 0;
}
اینجا، localVar فقط در تابع myFunction قابل دسترسیه و در main نمیتونیم بهش دسترسی پیدا کنیم.
▎3. متغیرهای سراسری
متغیرهای سراسری خارج از هر تابعی تعریف میشن و در تمام برنامه قابل دسترسی هستن. این متغیرها تا زمانی که برنامه اجرا میشود در حافظه باقی میمونن.
مثال:
#include <stdio.h>
int globalVar = 10; // متغیر سراسری
void myFunction() {
printf("Global Variable: %d\n", globalVar);
}
int main() {
printf("Global Variable in main: %d\n", globalVar);
myFunction();
return 0;
}
در اینجا، globalVar در هر دو تابع main و myFunction قابل دسترسیه.
▎4. سایهزنی (Shadowing)
گاهی اوقات ممکنه یک متغیر محلی نام مشابهی با یک متغیر سراسری داشته باشه. در این صورت، متغیر محلی "سایه" متغیر سراسری را میزنه و فقط در محدوده خود قابل دسترسیه.
❌ ترجیحا این کارو نکنین!
مثال:
#include <stdio.h>
int globalVar = 20; // متغیر سراسری
void myFunction() {
int globalVar = 10; // متغیر محلی با نام مشابه
printf("Local Variable: %d\n", globalVar); // به متغیر محلی اشاره داره
}
int main() {
printf("Global Variable: %d\n", globalVar); // به متغیر سراسری اشاره داره
myFunction();
return 0;
}
اینجا، در myFunction وقتی به globalVar اشاره میکنیم، به متغیر محلی اشاره داریم ن
3 · 920 · 𝙰_𝙻𝚂
ОтветФайл💡بخش Gateway🎀
تا حالا به این فکر کردید که چطور ی مرورگر وب (که با زبان پروتکل HTTP کار میکنه) میتونه به اطلاعات داخل ی سرور قدیمی که با پروتکل FTP مدیریت میشه دسترسی پیدا کنه؟ اینجاست که با Gateway اشنا میشید
در معماری شبکه Gateway ی سرور ویژه هست که به عنوان واسطه بین بقیه سرورا عمل میکنه وظیفه اصلیش تبدیل ترافیک ی پروتکل به پروتکلی دیگه هست
⏺از دیدگاه کلاینت، گتوی دقیقا مثل خود سرور اصلی رفتار میکنه یعنی کلاینت اصلا متوجه نمیشه که در حال صحبت با ی واسطه هست.
فرض کنید عکس یا فایلی روی یک سرور FTP قرار داره اما شما میخواید اونو از طریق مرورگر وب (HTTP) دانلود کنید پس:
⬅️درخواست کلاینت⬅️ترجمه پروتکل⬅️دریافت و بستهبندی⬅️تحویل نهایی
⚡️خلاصه ای از صفحه 18
6 · 1.1K · 𝙰_𝙻𝚂
ایکسباکس🎮 در آستانهی دومین موج بزرگ تعدیل نیرو✍️
🌸رسانه The Information گزارش میدهد که ایکسباکس، زیرمجموعهی مایکروسافت، برنامه دارد در جریان هفتهی جاری صدها کارمند خود را تعدیل کند. این اقدام، دومین دور بزرگ کاهش نیرو در سال جاری میلادی برای این برند بازیسازی محسوب میشود. براساس اطلاعات یک منبع آگاه، ایکسباکس همچنین قصد دارد چند استودیوی بازیسازی خود را با یکدیگر ادغام کند تا تعداد آنها را کاهش📉 دهد.
3 · 957 · Müstəphə
این کوییز و دوست داشتید تو کامنتا جواب بدید رفقا!
int a[2][3] = {0};
int *p = &a[0][0];
int *q = &a[1][0];
printf("%td\n", q - p);
در استاندارد C17 کدوم گزینه درسته؟
A) عدد 3 چاپ میشه
B) عدد 6 چاپ میشه
C) کد باید خطای کامپایل بده
D) رفتار تعریفنشده اس
8 · 996 · Müstəphə
این کویز رو دلتون خواست توی کامنت ها جواب بدید:
با فرض استاندارد C17، در کد زیر کدام گزینه درست است؟
int a[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
int (*p)[3] = a;
int *q = &a[0][0];
/* I */ *(p[1] + 2)
/* II */ (p + 2) - p
/* III */ *(q + 3)
/* IV */ &a[1][0] - &a[0][0]
کدام گزینه بهدرستی مشخص میکند کدام عبارتها رفتار تعریفشده دارند و مقدارشان چیست؟
A:
فقط I و II رفتار تعریفشده دارند؛ مقدارشان بهترتیب 6 و 2 است.
B:
گزینه های I، II و III رفتار تعریفشده دارند؛ مقدار III برابر 4 است.
C:
گزینه های I و IV رفتار تعریفشده دارند؛ مقدار IV برابر 3 است.
D:
هر چهار عبارت رفتار تعریفشده دارند؛ مقدارهایشان بهترتیب 6، 2، 4 و 3 هستند.
سطح کویز: دشوار.
4 · 657 · Müstəphə
#درس_عبرت😂
وقتی یه عدد، موشک رو ترکوند 🚀
سال ۱۹۹۶، موشک آریان ۵ تازه ۳۷ ثانیه از پرتابش گذشته بود که از مسیرش پرت شد و منفجر شد. مقصر؟
یه عدد که زیادی گنده بود و توی جاش جا نمیشد! نرمافزار نتونست باهاش کنار بیاد، سیستم پشتیبان هم همون برنامه رو داشت و اونم کمکی نکرد.
خلاصه، برنامهای که یهجا درست کار میکرد، توی شرایط جدید گند زد.
نرمافزار رو نباید فقط چون یه بار جواب داده، همهجا بیدردسر فرض کرد. باید حواسمون به شرایط و اندازهٔ عددها هم باشه.
تو برنامه نویسی کردن اینکه کد فقط داره کار میکنه کافی نیست و دیدگاهمون باید از کدی که داره کار میکنه، بره به سمت معماری ای که درست طراحی شده!
پ.ن: فقط کاش بفهمم بانک مرکزی قیمت دلار و داخل چه متغیری نگه میداره که متغیر نشت نمیکنه :)))))
3 · 341 · Ответ#درس_عبرت😂
وقتی یه عدد، موشک رو ترکوند 🚀
سال ۱۹۹۶، موشک آریان ۵ تازه ۳۷ ثانیه از پرتابش گذشته بود که از مسیرش پرت شد و منفجر شد. مقصر؟
یه عدد که زیادی گنده بود و توی جاش جا نمیشد! نرمافزار نتونست باهاش کنار بیاد، سیستم پشتیبان هم همون برنامه رو داشت و اونم کمکی نکرد.
خلاصه، برنامهای که یهجا د
از این مدل پستا خوشتون میاد؟
اگر آره بیشتر بزارم :)
117 · اینم از جلسه نهم با زبان C 😎
• این قسمت میخوایم با یکی از قابلیتهای باحال و کاربردی زبان C آشنا بشیم: ساختارها یا همون struct.
• ساختارها بهمون کمک میکنن چندتا داده با نوعهای مختلف رو کنار هم نگه داریم. مثلاً برای ثبت اطلاعات یک دانشجو، میتونیم اسم، شمارهٔ دانشجویی و معدلش رو توی یک ساختار قرار بدیم.
▎ 1. سینتکس تعریف ساختار
ساختار رو به این شکل تعریف میکنیم:
struct StructureName
{
data_type member1;
data_type member2;
};
• struct
مشخص میکنه که داریم یک ساختار تعریف میکنیم.
• StructureName
اسم ساختاره.
• member
ها هم دادههایی هستن که داخل ساختار نگه میداریم.
▎ 2. یک مثال ساده
بیایین یک ساختار برای اطلاعات دانشجو بسازیم:
#include <stdio.h>
struct Student
{
char name[50];
int studentNumber;
float average;
};
int main()
{
struct Student student1 = {"Sara", 12345, 18.75};
printf("Name: %s\n", student1.name);
printf("Student number: %d\n", student1.studentNumber);
printf("Average: %.2f\n", student1.average);
return 0;
}
• اینجا Student اسم ساختاره و name، studentNumber و average عضوهای اون هستن.
• با نوشتن struct Student student1 یک متغیر از نوع ساختار Student میسازیم.
▎ 3. دسترسی به عضوهای ساختار
برای دسترسی به عضوهای یک متغیر ساختاری، از نقطه (.) استفاده میکنیم:
student1.studentNumber = 54321;
student1.average = 19.25;
• مثلاً student1.average یعنی عضو average از متغیر student1.
▎ 4. استفاده از ساختار بهعنوان ورودی تابع
ساختارها رو میتونیم به تابع هم بفرستیم:
#include <stdio.h>
struct Student
{
char name[50];
int studentNumber;
float average;
};
void printStudent(struct Student student)
{
printf("Name: %s\n", student.name);
printf("Average: %.2f\n", student.average);
}
int main()
{
struct Student student1 = {"Sara", 12345, 18.75};
printStudent(student1);
return 0;
}
• توی این مثال، تابع printStudent یک متغیر از نوع struct Student میگیره و اطلاعاتش رو چاپ میکنه.
▎ نکته مهم 🔍
• یادتون باشه بعد از آکولاد پایانیِ تعریف ساختار، باید ; بذارین.
▎ نکت
6 · 593 ·