(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
الحمد لله
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
🔴 أخطاء شائعة في C++ عند المبتدئين:

1. نسيان وضع ; في نهاية السطر

في C++ كل أمر لازم ينتهي بـ ;، لو نسيتها يديك خطأ.
مثال صحيح:


int age = 20;




---

2. نسيان تضمين المكتبات (include)

عايز تستخدم cout؟ لازم تكتب:


#include <iostream>
using namespace std;




---

3. نسيان تعريف المتغير قبل استخدامه

لازم تعرف المتغير بنوعه قبل ما تستعمله.
خطأ:


x = 10;

صحيح:

int x = 10;




---

4. استخدام نوع بيانات غير مناسب

مثال: عايز تخزن رقم كبير في short مش هيكفي.
استخدم int أو long long على حسب الحجم.





---

5. نسيان تهيئة المتغير (Initialization)

لو عملت متغير وما اديتهش قيمة، هيكون فيه "قمامة" (garbage value).
خطأ:


int x;
cout << x; // قيمة عشوائية

صحيح:

int x = 0;




---

6. نسيان الأقواس { } في جمل الشرط أو التكرار

لو كتبت أكثر من سطر بدون أقواس هيشتغل غلط.
خطأ:


if (x > 5)
cout << "ok";
cout << "done"; // بيتنفذ دايمًا

صحيح:

if (x > 5) {
cout << "ok";
cout << "done";
}




---

7. نسيان كتابة return 0; في main (أحيانًا مش إجباري بس الأفضل تكتبه).

int main() {
cout << "Hello";
return 0;
}




---

8. أخطاء في القسمة على صفر

أي قسمة على صفر تسبب خطأ أثناء التنفيذ (runtime error).


int x = 5, y = 0;
cout << x / y; // خطأ




---

9. نسيان المؤشرات والدوال الديناميكية (لما تدخل جزء الـ pointers والـ memory management).

زي: تنسى تعمل delete بعد new → يحصل Memory Leak.





---

10. نسيان التمييز بين الحروف الكبيرة والصغيرة (Case Sensitive)



C++ بتفرق بين Age و age.
4👍1
المنشور اللي كل الناس طلبته مني.
التخصصات البرمجية المشهورة واللغات المطلوبة

بص يا سيدي البرمجة زي أي مجال كبير فيه طريق قصير يخليك تتعلم حاجة مطلوبة بسرعة وتدخل بيها السوق وفيه طريق طويل تبني فيه أساس قوي يخليك مميز وتعرف تبدع وتتنقل بين التخصصات.

المدى القصير: تتعلم لغة أو أداة مطلوبة دلوقتي زي
Flutter أو React أو PHP وتدخل بيها شغل سريع

المدى الطويل: تبدأ بتأسيس جامد في الخوارزميات /
هياكل البيانات / وأساسيات الكمبيوتر.
(Computer Science Basics)
وساعتها أي لغة أو تخصص ييجي بعد كدا يبقى سهل عليك.

الأفضل: توازن بين الاتنين يعني تبدأ بحاجة مطلوبة تدخل بيها السوق ومع الوقت تشتغل على التأسيس عشان تفضل ماشي لقدام.

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

نصيحة مهمة:
لو انت لسه مش عارف هتدخل أي تخصص أنصحك تبدأ بـ HTML و CSS.
دول مش لغات برمجة فعلًا لكن هيساعدوك تعمل تصميم صفحة ويب بسيطة
حتى لو مش هتكمل في مجال الويب الحاجتين دول هيفيدوك جدًا في أي تخصص هتدخله بعد كدا

بعد المرحلة دي اتفرج على شوية فيديوهات عن التخصصات البرمجية المختلفة وجرب بنفسك غالبًا التخصص اللي قلبك هيميل له هو اللي هتكمل فيه والتجربة في التعلم هي اللي هتحددلك طريقك

خلينا نبدأ التخصصات

* تطوير الويب (Web Development):

- Front-End: (اللي بيظهر للمستخدم)
ـ HTML: لبناء الهيكل بتاع الصفحة.
ـ CSS: لتنسيق وشكل الموقع.
ـ Java Script: عشان تخلي الموقع شغال ويتفاعل مع المستخدم.
ـ Frameworks: زي React.js أو Angular أو Vue.js.
ـ Back-End: (مسئولة الكواليس الداخلية)
ـPHP (Laravel): مواقع + مشهور جدًا.
ـ Python (Django/Flask): مواقع قوية وسريعة.
ـ Java (Spring Boot): للمشاريع الكبيرة.
ـ Node.js (Java Script): أسرع حل حديث.
ـ Databases:
زي MySQL / PostgreSQL / MongoDB.

🔺المطلوب دلوقتي في السوق: Full Stack Developer.
تتعلم ليها الاتنين دول ( Front-End + Back-End).

اما التخصص اللي بعد كدا
📱 تطوير تطبيقات الموبايل (Mobile Development)

Flutter (Dart): بنستخدمهم للأندرويد و الايفون iOS.

- React Native (Java Script):
برضه Cross-platform.

- لغة Java / Kotlin: للأندرويد بس.
- لغة Swift: للـ iOS بس.

🔺الأكتر طلبًا في السوق : Flutter و React Native.

---- ----
*التخصص اللي بعده

الذكاء الاصطناعي وعلوم البيانات
(AI & Data Science)
- لغة Python: أساسية.

مكتبات متوفر فيها اكواد :
TensorFlow / PyTorch / Pandas
/ NumPy / Scikit-learn.

-------
* التخصص اللي بعده

🔐 الأمن السيبراني (Cyber Security)

Python, C, C++: عشان تكتب سكربتات وتفهم الثغرات.

أدوات: Kali Linux, Wireshark, Metasploit.

المجال: حماية أنظمة، اختبار اختراق، أمن الشبكات.

(دا منشور لخبير الأمن السيبراني في مصر)
البشمهندس إبراهيم حجازي
هيعرفك تبدأ ازاي من الصفر
https://darkentry.net/Hegazy.php

-----------
* التخصص اللي بعده

🎮 تطوير الألعاب (Game Development)

Unity (C#) أو Unreal Engine (C++).

بيستخدموا لعمل ألعاب 2D/3D.

-----------
*التخصص اللي بعده

☁️ الحوسبة السحابية و DevOps (Cloud & DevOps)

AWS, Azure, Google Cloud: منصات سحابية.

أدوات: Docker, Kubernetes, Jenkins.

لغات: Python, Go, Bash.

---------

📌 مواقع مجانية للتعلم

1. freeCodeCamp → تعليم عملي بالتمارين.
2. W3Schools → مرجع سهل لكل اللغات.
3. MDN Web Docs → أوثق مصدر للجافاسكربت والويب.
4. GeeksforGeeks → شروحات وتمارين.

--------

📌 مواقع لحل مسائل برمجية وتدريب

1. LeetCode → مسائل تقوية الدماغ.
2. HackerRank → مسائل ومقابلات وظيفية.
3. Codeforces → مسابقات برمجة.
4. Exercism → تدريب عملي بالحلول.

--------

قنوات يوتيوب مصرية

1. Elzero Web School → (أشهر قناة عربية للويب).
2. Codezilla بالعربي → (شروحات واضحة).
3. TheNewBaghdad (عراقي لكن ممتاز) →.
4. Abdelrahman Gamal → (Flutter و Mobile).
-----------

طرق تساعدك في مشوار البرمجة
حل مسائل يوميًا (على HackerRank أو LeetCode).
امشي على مشروع عملي (زي تعمل موقع أو تطبيق بسيط).
شارك في جروبات برمجة (Facebook/Discord).
اعمل GitHub وشارك فيه مشاريعك.
حط لنفسك خطة 3 شهور – 6 شهور وامشي عليها.

🔥 الخلاصة

أكتر المطلوب في السوق دلوقتي:
Full Stack, Mobile
(Flutter/React Native)
Data Science
AI
Cybersecurity
Cloud
اختار تخصص يناسبك وابدأ

بعض النصائح مني أنا شخصيًا او رأيي عمومًا
👏2👍1
1- خطة تعليم عملية خطوة بخطوة.
2- تبدأ بالأساسيات (HTML, CSS, JavaScript).
3- تدخل بعد كدا في تخصص
(مثلاً Full Stack أو Flutter).
4- كل شهر يكون ليه أهداف ومشاريع تعملها.
5- مشاريع تطبيقية تبدأ بيها زي:
ـ صفحة بورتفوليو شخصية.
ـ تطبيق To-do list.
ـ تعمل مدونة بسيطة.

6- مصادر منظمة بالعربي والإنجليزي مثال:
ـ كورس Elzero بالعربي للويب.
ـ كورسات FreeCodeCamp أو CS50.
ـ كتاب "Grokking Algorithms" سهل جدًا لتعلم الخوارزميات.

7- متابعة وتقييم ( اكتب خطواتك)
ـ كل أسبوع تعلمت إيه؟
- إيه اللي محتاج تراجعه؟
ـ تعمل اختبار صغير أو تحل مسائل وتنزل على جروبات الفيس الخاصة باللغة بتعتك لو قابلتك مشكلة وهتلاقي مليون واحد يدلك.

8- بيئة التعلم (Tools) البرامج اللي هتشتغل عليها
أقولك تستخدم إيه:
ـ VS Code: محرر الكود.
- Git + GitHub: لحفظ مشاريعك والنشر عليها.
- Stack Overflow: تسأل وتلاقي حلول.

9 - طرق مساعدة للتعلم أسرع:
ـ اعمل جروب مع ناس بتتعلم زيك.
ـ استخدم تقنية Pomodoro (25 دقيقة تركيز + 5 دقيقة راحة).
ـ دون كل كود جديد تتعلمه في ملف خاص بيك.
ـ اشرح اللي اتعلمته لغيرك (حتى لو صاحبك مش فاهم)

10- تجهيز لسوق العمل:
ـ بعد 6–9 شهور، تبدأ تبني بورتفوليو بمشاريعك.
ـ اعمل حساب على LinkedIn وشارك تقدمك.
ـ شارك في جروبات برمجة مصرية (Facebook / Telegram).
ـ ادخل على مواقع:
Freelance (Upwork, Khamsat, Mostaql).

- أي تفاصيل مش مفهومة او حابب شرح اكتر
عندك طريقتين :
1- إبحث عنها على شات GPT او اليوتيوب بالمصطلح بتاعها.
2- قولي في التعليقات وهأحاول اشرحلك.

واخيرًا محدش معصوم من الخطأ .. أي تعديل أو أي خطأ كلمني ونتناقش فيه واعدله حسب الأصوب .. والأول والآخر المهم مصلحة الناس والنية إعانتهم.
والسلام عليكم ورحمة الله وبركاته
ما معنى Control Flow؟

تخيل إن البرنامج عبارة عن مجموعة أوامر، والكمبيوتر ينفذها سطر ورا سطر.
لكن أحيانًا نحتاج نتحكم في ترتيب التنفيذ:

نكرر بعض الأوامر أكثر من مرة.

ننفذ أوامر معينة فقط إذا تحقق شرط.

نتخطى بعض الأوامر في حالة معينة.


هذا هو تدفق التحكم (Control Flow): يعني كيف يتحكم البرنامج في أي سطر يتنفذ ومتى.


---

أنواع Control Flow في C++:

1️⃣ التفرع (Conditional Statements)

ينفذ أوامر معينة إذا تحقق شرط.

مثال باستخدام if:

#include <iostream>
using namespace std;

int main() {
int age;
cout << "Enter your age: ";
cin >> age;

if (age >= 18) {
cout << "You are an adult." << endl;
} else {
cout << "You are not an adult." << endl;
}

return 0;
}

🔹 هنا: لو العمر أكبر أو يساوي 18 يطبع "You are an adult"، غير كده يطبع "You are not an adult".


---

2️⃣ التفرع المتعدد (switch)

لما يكون عندك قيم محددة تختار بينهم.

مثال:

#include <iostream>
using namespace std;

int main() {
int day;
cout << "Enter day number (1-3): ";
cin >> day;

switch (day) {
case 1:
cout << "Monday" << endl;
break;
case 2:
cout << "Tuesday" << endl;
break;
case 3:
cout << "Wednesday" << endl;
break;
default:
cout << "Invalid day" << endl;
}

return 0;
}

🔹 هنا: حسب الرقم المدخل يطبع اليوم المناسب.


---

3️⃣ الحلقات (Loops)

لما نحب نكرر نفس الكود أكثر من مرة.

for loop – نستخدمها لما نعرف عدد المرات:

#include <iostream>
using namespace std;

int main() {
for (int i = 1; i <= 5; i++) {
cout << "Hello " << i << endl;
}
return 0;
}

🔹 هنا: يطبع "Hello" خمس مرات.


---

while loop – نستخدمها لما مش عارف عدد المرات، بس عارف الشرط:

#include <iostream>
using namespace std;

int main() {
int num = 1;
while (num <= 3) {
cout << "Number: " << num << endl;
num++;
}
return 0;
}

🔹 هنا: يطبع الأعداد من 1 إلى 3.


---

do while loop – زي while، لكن بينفذ مرة واحدة على الأقل حتى لو الشرط غلط:

#include <iostream>
using namespace std;

int main() {
int num = 5;
do {
cout << "Value: " << num << endl;
num++;
} while (num < 5);
return 0;
}

🔹 هنا: بالرغم إن الشرط من البداية غلط (num < 5)، إلا إنه نفذ جملة الطباعة مرة واحدة.


---

خلاصة 📝

if/else: تنفذ كود حسب الشرط.

switch: تنفذ كود حسب قيمة محددة.

for: تكرار بعدد محدد.

while: تكرار طالما الشرط صحيح.

do while: تكرار مرة واحدة على الأقل ثم حسب الشرط.
أيضا من امثله control flow
هم
Return, break and continue


🔹 أولًا: break

معناها اخرج فورًا من الحلقة (loop) أو من الـ switch، حتى لو الشرط ما خلصش.

مثال مع for:

#include <iostream>
using namespace std;

int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // يخرج من الحلقة عند i = 5
}
cout << i << endl;
}
return 0;
}

🔹 النتيجة: يطبع الأعداد 1, 2, 3, 4 فقط.
(لما وصل 5 خرج من الحلقة).


---

🔹 ثانيًا: continue

معناها تخطَّ هذه الدورة من الحلقة وانتقل للّي بعدها، يعني يكمل الحلقة لكن يتجاهل باقي الكود في الدورة الحالية.

مثال:

#include <iostream>
using namespace std;

int main() {
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // يتخطى الطباعة لما i = 3
}
cout << i << endl;
}
return 0;
}

🔹 النتيجة: يطبع 1, 2, 4, 5
(تخطى رقم 3).


---

🔹 ثالثًا: return

تستخدم داخل دالة (function) للرجوع منها.

لو في main() معناها إن البرنامج كله يخلص.


مثال 1 (داخل main):

#include <iostream>
using namespace std;

int main() {
cout << "Start" << endl;

return 0; // البرنامج ينتهي هنا

cout << "This will not print!" << endl;
}

🔹 النتيجة: يطبع "Start" فقط.


---

مثال 2 (في دالة):

#include <iostream>
using namespace std;

int square(int x) {
return x * x; // يرجع قيمة مربع الرقم
}

int main() {
cout << "Square of 4 = " << square(4) << endl;
return 0;
}

🔹 النتيجة: Square of 4 = 16


---

📝 الخلاصة:

break : يوقف الحلقة أو الـ switch فورًا.

continue 🔄: يتخطى الدورة الحالية ويكمل لبعدها.

return ↩️: يخرج من الدالة (أو ينهي البرنامج لو في main).
2👍1🤩1