مبانی برنامه نویسی
773 subscribers
4 photos
1 link
اگه سوالی بود یا مشکلی وجود داشت میتونید با آیدی زیر ارتباط بگیرید بتونم و بدونم حتما جواب میدم .موفق باشید.
@mohammadf111
Download Telegram
#کد 17
سطح: متوسط
سوال :برنامه ای بنویسید که n را از ورودی خوانده و سری زیر را محاسبه کند
1! + 2! + 3! + 4! + ..... + n!

ورودی و خروجی نمونه :
ورودی نمونه ۱:
Enter a number: 3
خروجی نمونه ۱ :

The sum of the series is: 9
ورودی نمونه ۲ :
Enter a number: 5
خروجی نمونه ۲:
The sum of the series is: 153

موارد استفاده شده‌ در حل سوال:‌  تابع / for

توضیح کد :
تابع factorial مقدار فاکتوریل عدد را محاسبه می‌کند. اگر عدد ورودی صفر یا یک باشد، تابع یک را برمی‌گرداند. در غیر این صورت، ارقام از عدد ورودی را به صورت بازگشتی با تابع factorial ضرب می‌کند.

در تابع main، ابتدا یک عدد صحیح n را از ورودی می‌خوانیم. سپس با استفاده از حلقه for، اعداد از 1 تا n را پیمایش می‌کنیم و به مجموع فاکتوریل آن‌ها اضافه می‌کنیم.

در نهایت، مقدار مجموع را چاپ می‌کنیم.

برنامه به صورت تکراری تابع factorial را برای محاسبه فاکتوریل هر عدد فراخوانی می‌کند تا مجموع سری را محاسبه کند و به صورت یک خط چاپ می‌شود#کد 16
سطح: متوسط
سوال :برنامه ای بنویسید که n را از ورودی خوانده و سری زیر را محاسبه کند
1! + 2! + 3! + 4! + ..... + n!

ورودی و خروجی نمونه :
ورودی نمونه ۱:
Enter a number: 3
خروجی نمونه ۱ :

The sum of the series is: 9
ورودی نمونه ۲ :
Enter a number: 5
خروجی نمونه ۲:
The sum of the series is: 153

موارد استفاده شده‌ در حل سوال:‌  تابع / for

توضیح کد :
تابع factorial مقدار فاکتوریل عدد را محاسبه می‌کند. اگر عدد ورودی صفر یا یک باشد، تابع یک را برمی‌گرداند. در غیر این صورت، ارقام از عدد ورودی را به صورت بازگشتی با تابع factorial ضرب می‌کند.

در تابع main، ابتدا یک عدد صحیح n را از ورودی می‌خوانیم. سپس با استفاده از حلقه for، اعداد از 1 تا n را پیمایش می‌کنیم و به مجموع فاکتوریل آن‌ها اضافه می‌کنیم.

در نهایت، مقدار مجموع را چاپ می‌کنیم.

برنامه به صورت تکراری تابع factorial را برای محاسبه فاکتوریل هر عدد فراخوانی می‌کند تا مجموع سری را محاسبه کند و به صورت یک خط چاپ می‌شود
2
#include <stdio.h>

int factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}

int main() {
int n;
int sum = 0;

printf("Enter a number: ");
scanf("%d", &n);

for (int i = 1; i <= n; i++) {
sum += factorial(i);
}

printf("The sum of the series is: %d", sum);

return 0;
}

زبان برنامه نویسی :‌ #c
2
#include <iostream>

using namespace std;

int factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}

int main() {
int n;
int sum = 0;

cout << "Enter a number: ";
cin >> n;

for (int i = 1; i <= n; i++) {
sum += factorial(i);
}

cout << "The sum of the series is: " << sum << endl;

return 0;
}

زبان برنامه نویسی :‌ #cpp
3
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)

n = int(input("Enter a number: "))

sum = 0
for i in range(1, n+1):
sum += factorial(i)

print("The sum of the series is:", sum)


زبان برنامه نویسی :‌ #python
3
#آموزش
شماره : 7
عنوان break / continue
توضیح:در برنامه‌نویسی، عبارات break و continue برای کنترل حلقه‌ها (loop) استفاده می‌شوند. این دو عبارت ابزارهای قدرتمندی هستند که به شما امکان می‌دهند جریان اجرای برنامه را در داخل حلقه تغییر دهید.

- break: با استفاده از عبارت break می‌توانید اجرای حلقه را در نقطه‌ای متوقف کنید و خارج از حلقه شوید. به عبارت دیگر، برنامه به سطح بالاتری از حلقه (یا به بیرون حلقه) باز می‌گردد. استفاده از break منجر به توقف اجرای حلقه و ادامه اجرای برنامه می‌شود.

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

استفاده از break و continue ممکن است در مواردی که نیاز به کنترل جریان دقیق داخل حلقه دارید، مفید باشد. با استفاده از این دو عبارت، می‌توانید شرایط خاصی را شناسایی کنید و در صورت برقراری آن‌ها، عملیات خاصی انجام دهید.
👍2
در زبان #c و #cpp:
در زبان‌های C و C++ نیز عبارات break و continue برای کنترل حلقه‌ها استفاده می‌شوند.

با استفاده از break و continue در زبان‌های C و C++، شما قادر خواهید بود جریان اجرای حلقه را به دلخواه خود تغییر داده و کنترل دقیق‌تری بر روی اجرای برنامه در داخل حلقه داشته باشید.
مثال:
#include <iostream>
using namespace std;

int main() {
// مثال استفاده از break
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break;
}
cout << i << " ";
}
cout << endl;

// مثال استفاده از continue
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue;
}
cout << i << " ";
}
cout << endl;

return 0;
}


در این مثال، در قسمت اول از break استفاده شده است. در حلقه for، اعداد از 1 تا 10 پیمایش می‌شوند. وقتی عدد 5 را می‌رسیم، با استفاده از break اجرای حلقه متوقف می‌شود و برنامه از حلقه خارج می‌شود.

در قسمت دوم، از continue استفاده شده است. در حلقه for، اعداد از 1 تا 10 پیمایش می‌شوند و وقتی عددی را بر می‌گردانیم که بر 2 بخش‌پذیر باشد، با استفاده از continue، بقیه بخش‌های حلقه را رد کرده و به ابتدای حلقه برمی‌گردیم.

با استفاده از break و continue در زبان C و C++، می‌توانید جریان اجرای حلقه را به‌طور دقیق تنظیم کنید و عملیاتی خاص را در صورت برقراری شرایط مورد نظر انجام دهید
👍1
در زبان #python :
در زبان پایتون نیز عبارات break و continue برای کنترل حلقه‌ها استفاده می‌شوند .

با استفاده از break و continue در زبان پایتون، شما قادر خواهید بود جریان اجرای حلقه را به دلخواه خود تغییر داده و کنترل دقیق‌تری بر روی اجرای برنامه در داخل حلقه داشته باشید.
مثال:
# مثال استفاده از break
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for number in numbers:
if number == 5:
break
print(number)

# مثال استفاده از continue
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for number in numbers:
if number % 2 == 0:
continue
print(number)


در این مثال، در قسمت اول از break استفاده شده است. در حلقه for، اعداد از لیست numbers پیمایش می‌شوند. وقتی عدد 5 را می‌رسیم، با استفاده از break اجرای حلقه متوقف می‌شود و برنامه از حلقه خارج می‌شود.

در قسمت دوم، از continue استفاده شده است. در حلقه for، اعداد از لیست numbers پیمایش می‌شوند و وقتی عددی را بر می‌گردانیم که بر 2 بخش‌پذیر باشد، با استفاده از continue، بقیه بخش‌های حلقه را رد کرده و به ابتدای حلقه برمی‌گردد.

با استفاده از break و continue، می‌توانید جریان اجرای حلقه را به‌طور دقیق تنظیم کنید و عملیاتی خاص را در صورت برقراری شرایط مورد نظر انجام دهید.
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