مبانی برنامه نویسی
773 subscribers
4 photos
1 link
اگه سوالی بود یا مشکلی وجود داشت میتونید با آیدی زیر ارتباط بگیرید بتونم و بدونم حتما جواب میدم .موفق باشید.
@mohammadf111
Download Telegram
Khiale Khosh~ UpMusic
Alireza Ghorbani ~ UpMusic
#متفرقه
خیال خوش
علیرضا قربانی
5
#آموزش
شماره :8
عنوان آرایه‌ها(arrays)
توضیح: آرایه‌ها در برنامه‌نویسی نوعی داده ساختاری هستند که اجازه می‌دهند تا ماژول‌ها یا عناصر با ترتیب خاصی را درون یک متغیر ذخیره کنید. هر یک از این عناصر به وسیله یک اندیس (یا شاخص) قابل دسترسی است که معمولاً یک عدد صحیح است و نشان‌دهنده‌ی موقعیت عنصر داخل آرایه است.

آرایه‌ها می‌توانند همه انواع داده‌ها را بگیرند مثل عدد، رشته، بولین و حتی آرایه‌های دیگر (مواردی که به آن‌ها آرایه‌های چند بعدی می‌گویند).

مزیت اصلی استفاده از آرایه‌ها این است که امکان دسترسی به داده‌ها به صورت سریع و دقیق بر اساس اندیس فراهم می‌شود. اما باید توجه داشت که طول آرایه‌ها در بسیاری از زبان‌های برنامه‌نویسی هنگام ایجاد آرایه ثابت است و نمی‌توان آن را تغییر داد.
در زبان #c و #cpp :
در زبان‌های C و C++، آرایه‌ها (Arrays) مجموعه‌ای از داده‌ها هستند که با استفاده از یک نام و یک اندیس دسترسی‌پذیرند. آرایه‌ها می‌توانند به صورت یک بعدی و دوبعدی تعریف شوند.

1. آرایه‌های یک بعدی:
- در زبان C، آرایه‌های یک بعدی می‌توانند با استفاده از تعریف متغیر با نوع داده موردنظر و تعیین تعداد عناصر آرایه‌ ایجاد شوند. به عنوان مثال:

     int numbers[5]; // تعریف یک آرایه‌ 5 عنصری از اعداد صحیح
float prices[10]; // تعریف یک آرایه‌ 10 عنصری از اعداد اعشاری
char letters[26]; // تعریف یک آرایه‌ 26 عنصری از کاراکترها


2. آرایه‌های دوبعدی:
- در زبان C، برای تعریف آرایه‌های دوبعدی، از آرایه‌های یک بعدی به صورت تو در تو استفاده می‌شود. به عنوان مثال:

     int matrix[3][3]; // تعریف یک آرایه‌ دوبعدی 3x3 از اعداد صحیح
float table[2][4]; // تعریف یک آرایه‌ دوبعدی 2x4 از اعداد اعشاری
char grid[5][5]; // تعریف یک آرایه‌ دوبعدی 5x5 از کاراکترها


در هر دو زبان C و C++، به عنوان مثال، برای دسترسی به عناصر درون آرایه‌های دوبعدی، می‌توان از دو حلقه تو در تو (Nested Loop) استفاده کرد و با استفاده از اندیس‌های مربوطه به عناصر دسترسی پیدا کرد.
👍1
در زبان #python :
در زبان پایتون نیز می‌توانید از آرایه‌ها یک بعدی و دوبعدی استفاده کنید. نحوه تعریف و استفاده از آرایه‌های یک بعدی و دوبعدی در زبان پایتون به صورت زیر است:

1. آرایه‌های یک بعدی:
- برای تعریف یک ارائه یک بعدی در پایتون، می‌توانید از نماد [ ] استفاده کنید. به عنوان مثال:

     numbers = [1, 2, 3, 4, 5]  # تعریف یک آرایه‌ یک بعدی از اعداد صحیح
names = ['Alice', 'Bob', 'Charlie'] # تعریف یک آرایه‌ یک بعدی از رشته‌ها

- شما می‌توانید به عناصر درون ارائه‌های یک بعدی با استفاده از اندیس آنها دسترسی پیدا کنید. اندیس‌ها از ۰ شروع می‌شوند. به عنوان مثال:

     print(numbers[0])  # نمایش عنصر اول آرایه‌ numbers (1)
print(names[2]) # نمایش عنصر سوم آرایه‌ names ('Charlie')


2. آرایه‌های دوبعدی:
- برای تعریف یک آرایه‌ دوبعدی در پایتون، می‌توانید از لیست‌های تو در تو استفاده کنید. به عنوان مثال:

     matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]  # تعریف یک آرایه‌ دوبعدی 3x3 از اعداد صحیح
table = [['A', 'B', 'C'], ['D', 'E', 'F']] # تعریف یک آرایه‌ دوبعدی 2x3 از کاراکترها

- برای دسترسی به عناصر درون آرایه‌های دوبعدی نیز می‌توانید از اندیس‌ها استفاده کنید. به عنوان مثال:

     print(matrix[0][0])  # نمایش عنصر در سطر اول و ستون اول آرایه‌ matrix (1)
print(table[1][2]) # نمایش عنصر در سطر دوم و ستون سوم آرایه‌ table ('F')


در پایتون، آرایه‌ها نیز به صورت پویا هستند، به این معنی که می‌توانید عناصر را به آنها اضافه کنید یا از آنها حذف کنید.
👍4
اگه سوالی بود یا مشکلی وجود داشت میتونید با آیدی زیر ارتباط بگیرید بتونم و بدونم حتما جواب میدم .موفق باشید.(در زمینه های برنامه نویسی و کامپیوتر و راهنمایی در مورد پروژه و ....)
@mohammadf111
👍6
#آموزش
شماره : 9
عنوان تابع(function)
توضیح:در برنامه‌نویسی، تابع یک بخش از کد است که نام دارد و می‌تواند یک وظیفه خاص را انجام دهد. توابع در برنامه‌نویسی می‌توانند ورودی‌ها را بگیرند، آن‌ها را پردازش کنند و خروجی‌ها را برگردانند. تابع می‌تواند به عنوان یک واحد مجزا از کد استفاده شود که به صورت تکراری قابل استفاده و فراخوانی باشد.

مزایای استفاده از توابع عبارتند از:
- سازماندهی بهتر کد و جدا کردن وظایف مختلف.
- قابلیت استفاده مجدد از کد.
- کاهش تکرار و تعداد خطوط کد.
- افزایش قابلیت خوانایی و درک کد.
- تسهیل در تست و اشکال‌زدایی.

در اکثر زبان‌های برنامه‌نویسی، توابع با استفاده از دستوراتی مانند def, function, sub, procedure و غیره تعریف می‌شوند.
در زبان #c و #cpp :
در زبان‌های برنامه‌نویسی C و C++، توابع با استفاده از دستور function و نحوی مشخص دیگر تعریف می‌شوند. الگوی کلی تعریف تابع در این دو زبان به صورت زیر است:

<نوع_برگشتی> نام_تابع(<پارامترها>) {
// بلاک کد تابع
// عملیات‌ها و دستورات مورد نیاز
// بازگشت مقدار در صورت نیاز
}


در این الگو، <نوع_برگشتی> نوع داده‌ای است که تابع برمی‌گرداند. نام_تابع نام تابع است. <پارامترها> پارامترهایی هستند که به تابع پاس داده می‌شوند.

برای مثال، یک تابع ساده در زبان C که دو عدد را جمع کند را می‌توان به صورت زیر نوشت:

int sum(int a, int b) {
int result = a + b;
return result;
}


در این مثال، تابع sum دو عدد را به عنوان ورودی می‌گیرد و جمع آن‌ها را بازمی‌گرداند.

در زبان C++ نیز، می‌توان توابع را به همین شکل تعریف کرد. البته، در C++ می‌توان از ویژگی‌های بیشتری مانند تابع‌های عضو کلاس، تابع‌های مبتنی بر الگو و غیره استفاده کرد.
تابع void یک نوع خاص از توابع است که هیچ مقداری را به عنوان خروجی برنگردانده و فقط برای انجام یک عملیات خاص به کار می‌رود.

مثالی از یک تابع void در زبان C برای چاپ یک پیام را می‌توان به صورت زیر نوشت:

#include <stdio.h>

void printMessage() {
printf("Hello, World!n");
}

int main() {
printMessage();
return 0;
}


در این مثال، تابع printMessage از نوع void است و هیچ مقداری را به عنوان خروجی برنمی‌گرداند. این تابع فقط پیام "Hello, World!" را در خروجی چاپ می‌کند.

در زبان C++ نیز می‌توان از توابع void استفاده کرد. به عنوان مثال، تابع void می‌تواند به عنوان یک تابع عضو یا تابع عضو استاتیک در یک کلاس تعریف شود.
در زبان #python :
در زبان برنامه‌نویسی پایتون، تابع یک بخش از کد است که نام دارد و می‌تواند وظیفه خاصی را انجام دهد. توابع در پایتون به صورت زیر تعریف می‌شوند:

def نام_تابع(پارامترها):
# بلاک کد تابع
# عملیات‌ها و دستورات مورد نیاز
# بازگشت مقدار در صورت نیاز


در این الگو، نام_تابع نام تابع است و پارامترها پارامترهایی هستند که به تابع پاس داده می‌شوند.

به عنوان مثال، یک تابع ساده در پایتون که دو عدد را جمع کند را می‌توان به صورت زیر نوشت:

def sum(a, b):
result = a + b
return result


در این مثال، تابع sum دو عدد را به عنوان ورودی می‌گیرد و جمع آن‌ها را بازمی‌گرداند.

توجه کنید که در پایتون، return اختیاری است. اگر تابع return نداشته باشد، خروجی None خواهد بود.
3
Parizad
Alireza Ghorbani @RozMusic.com
#متفرقه
Alireza Ghorbani - Parizad
4🆒1
#آموزش
شماره : 10
عنوان : Call by Reference و Call by Value
توضیح : در برنامه نویسی، منظور از Call by Reference و Call by Value روش‌هایی هستند که برای انتقال داده ها بین توابع و روال‌ها استفاده می‌شوند.

1. Call by Value: در این روش، مقدار متغیر به تابع منتقل می شود، بنابراین هر تغییری که در متغیر در داخل تابع اعمال شود، بر روی متغیر اصلی در تابع فراخواننده (کالر) تأثیری ندارد. به عبارت دیگر، تغییرات متغیر درون تابع فقط در دامنه محلی تابع هستند و بر عنصر بر جایی در حافظه شبیه متغیر خارج از تابع اثر نمی‌گذارد.

2. Call by Reference: در این روش، یک ارجاع به متغیر به تابع منتقل می شود، بنابراین هر تغییری که در متغیر در داخل تابع اعمال شود، بر روی متغیر اصلی در تابع فراخواننده تأثیر می‌گذارد.

به عبارت ساده تر، Call by Value به معنی کپی کردن مقدار یک متغیر به محل دیگری است و Call by Reference به اشاره به محل اصلی مقدار متغیر در حافظه است.
در زبان #c:
در زبان C، می‌توانید توابع را به دو روش "با ارجاع" (Call by Reference) و "با مقدار" (Call by Value) فراخوانی کنید.

### Call by Reference (با ارجاع):

در این روش، به جای ارسال کپی از مقدار، مقدار اصلی به تابع ارسال می‌شود و تابع می‌تواند مقدار آن را تغییر دهد. برای این کار از اشاره‌گرها استفاده می‌شود.
مثال:
#include <stdio.h>

// تابع با ارجاع
void increment(int *num) {
(*num)++; // افزایش مقدار عددی به عنوان ارجاع
}

int main() {
int x = 10;
printf("Before increment: %d\n", x); // چاپ مقدار x قبل از افزایش
increment(&x); // فراخوانی تابع با ارجاع
printf("After increment: %d\n", x); // چاپ مقدار x پس از افزایش
return 0;
}

خروجی:
Before increment: 10
After increment: 11

### Call by Value (با مقدار):
در این روش، فقط یک کپی از مقدار به تابع ارسال می‌شود و تغییراتی که در داخل تابع اعمال می‌شوند، بر روی متغیر اصلی تأثیری ندارند. مثال:
#include <stdio.h>

// تابع با مقدار
void increment(int num) {
num++; // افزایش مقدار عددی
}

int main() {
int x = 10;
printf("Before increment: %d\n", x); // چاپ مقدار x قبل از افزایش
increment(x); // فراخوانی تابع با مقدار
printf("After increment: %d\n", x); // چاپ مقدار x پس از افزایش
return 0;
}


خروجی:
Before increment: 10
After increment: 10

در هر دو مثال، تابع increment یک عدد را دریافت می‌کند و آن را افزایش می‌دهد. اما در مثال اول (با ارجاع)، تغییرات در متغیر اصلی (در تابع main) نیز تأثیر می‌گذارند، در حالی که در مثال دوم (با مقدار)، تغییرات تنها در داخل تابع اعمال می‌شوند و متغیر اصلی تغییر نمی‌کند.
👍1
در زبان #cpp :
در زبان C++، مفهوم "Call by Reference" و "Call by Value" همچنان وجود دارد. با Reference، متغیرها به توابع منتقل می‌شوند، در حالی که با Value، مقادیر کپی از متغیرها به توابع منتقل می‌شوند.

### Call by Reference (با ارجاع):
در این روش، آرگومان‌ها به تابع ارسال می‌شوند و از طریق آن‌ها، می‌توان به مقادیر اصلی متغیرها دسترسی داشت.

#include <iostream>

using namespace std;

// تابع با ارجاع
void increment(int &num) {
num++; // افزایش مقدار عددی با ارجاع
}

int main() {
int x = 10;
cout << "Before increment: " << x << endl; // چاپ مقدار x قبل از افزایش
increment(x); // فراخوانی تابع با ارجاع
cout << "After increment: " << x << endl; // چاپ مقدار x پس از افزایش
return 0;
}

خروجی:
Before increment: 10
After increment: 11


در اینجا، تابع increment یک مقدار عددی را به عنوان ارجاع دریافت می‌کند و مقدار آن را یک واحد افزایش می‌دهد.

### Call by Value (با مقدار):
در این روش، کپی از مقادیر متغیرها به توابع منتقل می‌شوند، بنابراین تغییراتی که در تابع انجام می‌شود، تنها در دامنه آن تابع باقی می‌ماند و بر روی متغیر اصلی تاثیری ندارد.

#include <iostream>

using namespace std;

// تابع با مقدار
void increment(int num) {
num++; // افزایش مقدار عددی
}

int main() {
int x = 10;
cout << "Before increment: " << x << endl; // چاپ مقدار x قبل از افزایش
increment(x); // فراخوانی تابع با مقدار
cout << "After increment: " << x << endl; // چاپ مقدار x پس از افزایش
return 0;
}

خروجی:
Before increment: 10
After increment: 10


در اینجا، تغییراتی که در تابع increment اعمال می‌شود، تنها بر روی مقدار کپی شده از متغیر x تاثیر می‌گذارد و متغیر اصلی x تغییر نمی‌کند.
👍2
در زبان #python :
در واقع در زبان پایتون، مفهوم تقسیم بر اساس "Call by Value" و "Call by Reference" وجود ندارد، بلکه تمام انتقال‌های پارامترها بر اساس "Call by Object Reference" انجام می‌شود. با این حال، می‌توان به این تفاوت‌ها در رفتار بین اشیاء mutable و immutable در پایتون اشاره کرد.

### مثال:

#### Call by Object Reference برای شیء mutable:

def increment(num_list):
num_list.append(4)

my_list = [1, 2, 3]
print("Before increment:", my_list)
increment(my_list)
print("After increment:", my_list)


Output:
Before increment: [1, 2, 3]
After increment: [1, 2, 3, 4]


در اینجا، لیست my_list به تابع increment با ارجاع فرستاده می‌شود. تغییری که در داخل تابع اعمال می‌شود (افزودن عدد 4 به لیست) باعث می‌شود که تغییرات در متغیر اصلی my_list نیز دیده شود.

#### Call by Object Reference برای شیء immutable:

def change_num(num):
num += 10

my_num = 5
print("Before change:", my_num)
change_num(my_num)
print("After change:", my_num)


Output:
Before change: 5
After change: 5


در اینجا، عدد my_num به تابع change_num با ارجاع فرستاده می‌شود، اما چون اعداد در پایتون immutable هستند، هیچ تغییری در متغیر اصلی اعمال نمی‌شود.
👍2
#آموزش
شماره : 11
عنوان : پوینتر (Pointer)
توضیح :پوینتر (Pointer) در برنامه‌نویسی یک متغیر است که آدرس حافظه یا مکانیزمی برای دسترسی به حافظه را نشان می‌دهد. از پوینترها برای مدیریت و کنترل حافظه و دسترسی به داده‌ها استفاده می‌شود. در زیر توضیحاتی در مورد پوینترها در برنامه‌نویسی آورده شده است:

1. آدرس حافظه: پوینتر، آدرس حافظه را نشان می‌دهد. این آدرس می‌تواند به یک متغیر، آرایه یا ساختار اشاره کند.

2. عملگرهای پوینتر: عملگرهایی مانند * و & برای عملیات روی پوینترها استفاده می‌شوند. * برای دسترسی به مقداری که پوینتر به آن اشاره می‌کند و & برای دریافت آدرس یک متغیر استفاده می‌شود.

3. تخصیص حافظه با استفاده از پوینتر: با استفاده از پوینترها می‌توانید حافظه‌ای را به صورت دستی تخصیص دهید، به عنوان مثال با استفاده از عملگر new در C++.

4. انتقال پوینتر: پوینترها به عنوان آرگومان‌های تابع و بازگشتی‌ها استفاده می‌شوند. این به برنامه‌نویس امکان می‌دهد تا به طور مستقیم با حافظه و داده‌ها در برنامه تعامل کند.

5. پوینترها و آرایه‌ها: در برنامه‌نویسی، آرایه‌ها به طور ضمنی به یک پوینتر به اولین عنصر آرایه تبدیل می‌شوند.

6. پوینترها و ساختارها: با استفاده از پوینترها می‌توانید به صورت مستقیم به عناصر ساختارها دسترسی پیدا کنید.

استفاده صحیح از پوینترها در برنامه‌نویسی می‌تواند به شما امکان کنترل دقیق‌تری بر روی حافظه و داده‌ها را بدهد و کارایی برنامه را افزایش دهد. با این حال، نادرست استفاده از پوینترها می‌تواند منجر به خطاهایی مانند خطای حافظه (Memory Error) و دسترسی به حافظه نامعتبر (Invalid Memory Access) شود. بنابراین، باید با دقت و به دقت از پوینترها استفاده کرد و از مشکلات مربوط به آن‌ها جلوگیری کرد
در زبان #c:
در زبان C، پوینترها ابزاری قدرتمند برای کنترل و مدیریت حافظه هستند. پوینترها به شما امکان می‌دهند به طور مستقیم با حافظه و داده‌ها در برنامه تعامل کنید. در زیر توضیحی در مورد پوینترها در زبان C آورده شده است همراه با مثال‌هایی:

1. تعریف پوینتر:
برای تعریف یک پوینتر در C، از علامت * استفاده می‌شود. برای مثال:
   int *ptr;

در این مثال، ptr یک پوینتر به یک متغیر از نوع int است.

2. مقداردهی به پوینتر:
برای مقداردهی به یک پوینتر، می‌توان از عملگر & برای گرفتن آدرس متغیر استفاده کرد. برای مثال:
   int num = 10;
int *ptr = &num;

در این مثال، ptr به آدرس متغیر num اشاره می‌کند.

3. دسترسی به مقدار اشاره شده توسط پوینتر:
برای دسترسی به مقداری که پوینتر به آن اشاره می‌کند، از عملگر * استفاده می‌شود. برای مثال:
   int num = 10;
int *ptr = &num;
printf("Value: %dn", *ptr);

در این مثال، *ptr مقداری که پوینتر ptr به آن اشاره می‌کند (مقدار num) را چاپ می‌کند.

4. پوینترها و آرایه‌ها:
در C، آرایه‌ها به طور ضمنی به یک پوینتر به اولین عنصر آرایه تبدیل می‌شوند. برای مثال:
   int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // یا int *ptr = &arr[0];
printf("First element: %dn", *ptr); // چاپ عنصر اول آرایه

در این مثال، ptr به اولین عنصر آرایه arr اشاره می‌کند.

5. پوینترها و ساختارها:
با استفاده از پوینترها، می‌توانید به صورت مستقیم به عناصر ساختارها دسترسی پیدا کنید. برای مثال:
   struct Person {
char name[20];
int age;
};
struct Person person;
struct Person *ptr = &person;

در این مثال، ptr یک پوینتر به ساختار Person است و می‌توانید با استفاده از ptr به صورت مستقیم به عناصر ساختار دسترسی پیدا کنید.
👍1
در زبان #cpp:
در زبان C++ نیز پوینترها همانند زبان C تعریف و استفاده می‌شوند. اما در زبان C++، به علاوه از قابلیت‌هایی مانند پوینترهای به همراه نوع (type-safe pointers) و پوینترهای هوشمند (smart pointers) نیز استفاده می‌شود. در زیر توضیحاتی درباره پوینترها در زبان C++ آورده شده است همراه با مثال‌هایی:

1. تعریف پوینتر:
برای تعریف یک پوینتر در C++، از علامت * استفاده می‌شود. برای مثال:
   int* ptr;

در این مثال، ptr یک پوینتر به یک متغیر از نوع int است.

2. مقداردهی به پوینتر:
برای مقداردهی به یک پوینتر، می‌توان از عملگر & برای گرفتن آدرس متغیر استفاده کرد. برای مثال:
   int num = 10;
int* ptr = &num;

در این مثال، ptr به آدرس متغیر num اشاره می‌کند.

3. دسترسی به مقدار اشاره شده توسط پوینتر:
برای دسترسی به مقداری که پوینتر به آن اشاره می‌کند، از عملگر * استفاده می‌شود. برای مثال:
   int num = 10;
int* ptr = &num;
cout << "Value: " << *ptr << endl;

در این مثال، *ptr مقداری که پوینتر ptr به آن اشاره می‌کند (مقدار num) را چاپ می‌کند.

4. پوینترها و آرایه‌ها:
در C++، آرایه‌ها به طور ضمنی به یک پوینتر به اولین عنصر آرایه تبدیل می‌شوند. برای مثال:
   int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // یا int* ptr = &arr[0];
cout << "First element: " << *ptr << endl; // چاپ عنصر اول آرایه

در این مثال، ptr به اولین عنصر آرایه arr اشاره می‌کند.

5. پوینترها و ساختارها:
در C++، می‌توانید با استفاده از پوینترها به صورت مستقیم به عناصر ساختارها دسترسی پیدا کنید. برای مثال:
   struct Person {
string name;
int age;
};
Person person;
Person* ptr = &person;
ptr->name = "John";
ptr->age = 25;

در این مثال، ptr یک پوینتر به ساختار Person است و می‌توانید با استفاده از ptr به صورت مستقیم به عناصر ساختار دسترسی پیدا کنید..
👍3
در زبان #python:
زبان برنامه‌نویسی پایتون از مفهوم "پوینتر" به طور مستقیم پشتیبانی نمی‌کند.
سلام وقت بخیر
امیدوارم که امتحانات رو به خوبی پشت سر گذاشته باشید
این چند روز بخاطر کار و امتحانات درگیرم و امکان پاسخگویی ندارم
چون یخرده پیام ها زیاده گفتم شرمندتون نشم
ولی اگر قولی دادم یادآوری کنید.

انشالله همگی موفق باشید ❤️
17👍4👎1
Benshin Tamashayat Konam
Arman Garshasbi
#متفرقه
عمری به هر کوی و گذر گشتم که پیدایت کنم
اکنون که پیدا کرده ام بنشین تماشایت کنم
8👍1😴1