(Ahmed Yasser)MY Code
660 subscribers
54 photos
6 videos
25 files
83 links
لو معاك أي سؤال يا صديقي
ابعت أن شاء الله اقدر افيدك
@A_H_M_E_DY_A_S_S_E_R

حساب لنكيد إن
https://www.linkedin.com/in/ahmed-yasser-358536297?utm_source=share_via&utm_content=profile&utm_medium=member_android
Download Telegram
Procedure VS Function
#include <iostream>
using namespace std;


void SumNumbers(int a, int b) {
int sum = a + b;
cout << "The sum is: "<<sum<< endl ;
}

int main() {
int x = 5, y = 7;

SumNumbers(x, y);

return 0;
}
#include <iostream>
using namespace std;


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

int main() {
int x = 5, y = 7;
int result = SumNumbers(x, y);

cout << "The sum is: " << result << endl;

cout << "The sum + 10 = " << SumNumbers(x, y) + 10 << endl;

return 0;
}
الحمد لله
3❤‍🔥1🔥1👏1
int arr[]{ 1,2,3 };

cout << arr << endl;

char Name[] = "ali";

cout << Name; النتيجة 000000C520AFFC18

ali طيب انا في الحالة الاول كتبت اسم الدالة فاعطاني العنوان ام في الحالة الثانية طبع القيم لماذا

الي عنده اي معلومه عن موضوع ده ياريت يبعت
علي الخاص
@Ay01014469594
✦ إنَّ انشغالك بالتوافه يسرق منك أجمل ما في وقتك، ويبعدك عن النافعات. أرأيتَ لو أن الجوف امتلأ بالطعام الفاسد، فلن يجد مكانًا للطعام النافع إلا قليلًا؟ وكذلك القلب والعقل، إذا امتلآ بما لا ينفع، ضاع فيهما ما هو أنفع وأبقى.

✦ فابتعد يا صديقي عن كل ما يُضيّع عمرك؛ فإن العمر قصير، والعلم والعمل كثير، فلا تفرّط في أيامك بين لهوٍ وعبثٍ، بل اجعلها زادًا ينفعك في دنياك وآخرتك.

✦ واعلم أن الأيام تمضي، والليالي تنقضي، وفي نهاية المطاف لا مفرّ من الموت. فاختر لنفسك ما يستحق أن تبذل فيه وقتك وجهدك، فما أجمل أن تزرع لنفسك أثرًا يبقى بعد الرحيل.
👍2🔥1🕊1💯1
🔹 ما هو الـ Namespace؟

الـ namespace في C# هو حاوية (Container) منطقية تجمع الكلاسات (Classes)، الإنترفيس (Interfaces)، الإنم (Enums)، إلخ…

الهدف منها تنظيم الكود وليس تخزينه فعليًا (يعني مش زي المجلدات في الهارد، بل تقسيم منطقي داخل الكود).



---

🔹 هل هو Container؟

نعم

ممكن نعتبره Container منطقي لأنه يحتوي على أنواع (Types) مثل:

namespace MyApp.Utilities
{
class MathHelper { }
class StringHelper { }
}

هنا الـ MyApp.Utilities هو "وعاء" أو "مساحة أسماء" تحتوي على الكلاسات MathHelper و StringHelper.



---

🔹 لماذا نستخدمه؟ (أهميته)

1. تنظيم الكود: تخلي المشروع مرتب بدل ما تكون كل الكلاسات في نفس المستوى.


2. تجنب التضارب (Name Conflicts):

ممكن يكون عندك Class باسم Logger في أكثر من مكتبة.

بالـ namespace تفرق بينهم:

ProjectA.Logger

ProjectB.Logger




3. تسهيل القراءة والصيانة: تقسيم الكود لمجموعات منطقية.




---

🔹 هل هو زي الـ Folder (مجلد)؟

نوعًا ما نعم من ناحية التنظيم.

لكن الفرق:

المجلد → تنظيم على مستوى الملفات في النظام.

الـ namespace → تنظيم على مستوى الكود داخل المشروع.


وغالبًا VS (Visual Studio) يحاول يخلي أسماء الـ namespaces مطابقة لمسار المجلدات، لكن مو شرط 100%.



---

🔹 مثال عملي:

namespace Company.Project.Data
{
public class DatabaseManager { }
}

namespace Company.Project.Services
{
public class UserService { }
}

هنا نظّمنا الكود:

كل ما يخص الـ Data → في Company.Project.Data

كل ما يخص الـ Services → في Company.Project.Services




---

الخلاصة:

نعم هو Container منطقي للأنواع.

نستخدمه أساسًا لتنظيم الكود وتجنب التعارض بين الأسماء.



---

🔹 هل الـ namespace له نفس المعنى في لغات أخرى؟

الإجابة: المفهوم واحد تقريبًا لكن طريقة التنفيذ تختلف من لغة لأخرى.
الفكرة العامة دائمًا: تنظيم الكود + تجنب تضارب الأسماء (Name Conflicts).


---

📌 أمثلة حسب اللغات:

1. C++

عندها namespace بنفس المعنى تقريبًا.

مثال:

namespace Math {
int Add(int a, int b) { return a + b; }
}

int main() {
int x = Math::Add(2, 3);
}

تستخدم :: للوصول للأنواع داخل namespace.



---

2. Java

ما عندها كلمة namespace، لكن تستخدم الـ packages لنفس الفكرة.

مثال:

package com.company.utils;

public class StringHelper { }

هنا package = namespace في C#.

للوصول تستعمل:

import com.company.utils.StringHelper;



---

3. Python

ما عندها كلمة namespace واضحة، لكن كل ملف (module) يعتبر namespace بحد ذاته.

وأيضًا الـ packages (مجلد يحتوي ملف init.py) تنظم الكود مثل namespaces.

مثال:

import math
print(math.sqrt(16))

هنا math يعتبر namespace يحتوي دوال كثيرة.



---

4. JavaScript / TypeScript

JavaScript ما كان فيها namespace تقليدي، الناس كانت تنظم الكود باستخدام objects.

TypeScript أضافت namespace يشبه C#:

namespace Utils {
export function add(a: number, b: number) {
return a + b;
}
}

console.log(Utils.add(2, 3));



---

الخلاصة:

C#, C++ → عندهم namespace صريح.

Java → تستعمل package.

Python → تستعمل modules/packages.

JS/TS → تعتمد على objects أو namespaces (في TypeScript).
4
تحسين الكود


🎯 الفكرة العامة

تحسين الكود (Code Optimization) معناه إنك تخلي برنامجك:

1. أسرع في التنفيذ.


2. يستهلك ذاكرة أقل.


3. أسهل في القراءة والفهم (قابلية الصيانة).




---

🪜 الخطوات مع الشرح

1. فهم المشكلة قبل كتابة الكود

قبل ما تبدأ تكتب، لازم تفكر: إيه اللي البرنامج هيعمله بالظبط؟

لو فهمت كويس، هتكتب كود مختصر وواضح.


🔹 مثال:
بدل ما تعمل برنامج يضرب رقمين بطريقة معقدة، تقدر تكتبها في سطر واحد.

#include <iostream>
using namespace std;

int main() {
int a, b;
cin >> a >> b;
cout << "الناتج = " << a * b << endl;
return 0;
}


---

2. استخدام المتغيرات بشكل مناسب

متخزنش بيانات مش محتاجها.

استخدم النوع المناسب:

int للأعداد الصحيحة.

double للأعداد العشرية.

char للحروف.



🔹 مثال (غير محسن):

double x = 5; // مش لازم double هنا

🔹 مثال (محسن):

int x = 5; // كافي ويوفر ذاكرة


---

3. تجنب التكرار في الكود

لو عندك كود بيتكرر، حوله إلى دالة (function).

🔹 مثال (غير محسن):

#include <iostream>
using namespace std;

int main() {
int a = 5, b = 3;
cout << "مجموعهم = " << a + b << endl;

int c = 10, d = 7;
cout << "مجموعهم = " << c + d << endl;
return 0;
}

🔹 مثال (محسن باستخدام دالة):

#include <iostream>
using namespace std;

int sum(int x, int y) {
return x + y;
}

int main() {
cout << "مجموعهم = " << sum(5, 3) << endl;
cout << "مجموعهم = " << sum(10, 7) << endl;
return 0;
}


---

4. استخدام الحلقات بدل التكرار اليدوي

لو محتاج تنفذ نفس العملية عدة مرات، استعمل loop.

🔹 مثال (غير محسن):

cout << "مرحبا" << endl;
cout << "مرحبا" << endl;
cout << "مرحبا" << endl;

🔹 مثال (محسن باستخدام for loop):

for (int i = 0; i < 3; i++) {
cout << "مرحبا" << endl;
}


---

5. التفكير في الخوارزميات

الكود مش بس كتابة أوامر، لازم تختار الطريقة (الخوارزمية) الأفضل.

مثال: عايز تدور على رقم في مصفوفة:

البحث الخطي (linear search): يمر على كل عنصر (أبطأ).

البحث الثنائي (binary search): أسرع بكثير، لكن يحتاج المصفوفة تكون مرتبة.



🔹 مثال للبحث الخطي:

#include <iostream>
using namespace std;

int main() {
int arr[] = {1, 4, 7, 9, 12};
int size = 5, target = 9;
bool found = false;

for (int i = 0; i < size; i++) {
if (arr[i] == target) {
cout << "الرقم موجود في الفهرس: " << i << endl;
found = true;
break;
}
}
if (!found) cout << "الرقم غير موجود" << endl;

return 0;
}


---

6. تنسيق الكود ليكون مقروء

سيب مسافات بين الأسطر.

سمي المتغيرات بأسماء واضحة:

sum أفضل من s

numberOfStudents أفضل من n




---

7. التجربة والتحسين

بعد ما تكتب الكود، جربه وشوف الأداء.

لو بطيء أو معقد، فكر إزاي تختصر أو تغير الخوارزمية.



---

الخلاصة

تحسين الكود بيكون في 3 مستويات:

1. الكتابة البسيطة والواضحة.


2. استخدام الموارد بشكل مناسب (ذاكرة + وقت).


3. اختيار الخوارزمية الأفضل.
👍1
🎯 يعني إيه Big O ؟

هي طريقة بنقيس بيها سرعة الخوارزمية (أو الكود) لما حجم البيانات يكبر.
يعني: لو عندك بيانات صغيرة ممكن أي كود يشتغل بسرعة، لكن لو البيانات بقت كبيرة جدًا، هنا بنشوف الكود هيبطأ قد إيه.


---

🪜 المستويات الأساسية اللي لازم المبتدئ يعرفها

1. O(1) — ثابت

التنفيذ بياخد نفس الوقت مهما كان حجم البيانات.

مثال: الوصول لعنصر في المصفوفة.


int arr[5] = {1,2,3,4,5};
cout << arr[2]; // دايما سريع


---

2. O(n) — خطي

الوقت بيزيد مع زيادة حجم البيانات.

مثال: المرور على كل عناصر المصفوفة.


for (int i = 0; i < n; i++) {
cout << arr[i];
}


---

3. O(n²) — تربيعي

كل ما البيانات تكبر، الوقت يكبر بسرعة كبيرة جدًا.

بيظهر غالبًا مع الحلقات المتداخلة.


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << i << "," << j << endl;
}
}


---

4. O(log n) — لوغاريتمي

وقت التنفيذ بيزيد ببطء شديد مع كبر البيانات.

مثال: البحث الثنائي (Binary Search).


// لازم المصفوفة تكون مرتبة
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1;
}


---

📌 الخلاصة للمبتدئ

O(1): سريع جدًا (زي فتح درج معين في دولاب).

O(n): تمشي على كل العناصر (زي تعد الطلاب واحد واحد).

O(n²): كل طالب يقارن مع كل طالب (عدد العمليات ينفجر بسرعة).

O(log n): تقسم وتدور (زي البحث في كتاب بفتح النص كل مرة).
👍1
🔹 في الغالب نعرّف المتغيرات زي العمر (age) باستخدام int بدل short، حتى لو العمر ما يحتاج رقم كبير.

السبب:

المعالجات الحديثة (32-بت و 64-بت) مصممة تشتغل أسرع مع int (4 بايت) مقارنة بـ short (2 بايت).

حتى لو كتبت short، المعالج بيرفعه داخليًا إلى int عشان يعمل العمليات الحسابية → وبالتالي short مش أسرع، بل أحيانًا أبطأ.

فرق الحجم (2 بايت vs 4 بايت) مش مهم حاليًا إلا لو بتتعامل مع ملايين القيم وعايز توفر ذاكرة.


الخلاصة:

نستخدم int كخيار افتراضي لأنه أوضح وأسرع.

نحتاج short أو unsigned short فقط لما يكون عندنا سبب محدد (زي ضغط في الذاكرة أو عمل برمجة مدمجة Embedded).
المعلومة دي ذكرها
@Abdou_1428
واول مرة اسمعها وبرده أظن في ناس زي
بجد ربنا يكرمك ويوفقك ❤️☺️
❤‍🔥3👍1
(Ahmed Yasser)MY Code
Voice message
تسلم يا حبيب ❤️☺️
السلام عليكم ورحمة الله وبركاته
يا شباب، أي حد عنده فكرة شايف إنها ممكن تفيد الناس في الجروب، ياريت يبعتها.
@Ay01014469594
لو حابب تنزل محتوى عن البرمجة أو حتى برامج وأدوات مفيدة في الذكاء الاصطناعي، ابعتلي، وإن شاء الله أخليه أدمن.

متترددش أبدًا، مفيش حاجة اسمها فكرة هايفة ، يمكن فكرتك تكون سبب إن غيرك يستفيد.
ولو شايف إن القناة ممكن تفيد أي حد من صحابك، ابعتله اللينك 👇
https://t.me/CodePulseforprogramming

موفقين جميعًا وربنا يفتحها عليكم 🤲
👍2