🚀 رحلتك مع أول برنامج في ++C
هل تتخيل أنك بسطور قليلة فقط تقدر تكتب برنامج كامل يظهر رسالة على الشاشة؟ ✨
هذا هو سحر لغة ++C!
خلينا ندخل معًا ونفهم البرنامج الأساسي خطوة بخطوة 👇
---
✅ تركيب البرنامج الأساسي في ++C
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
---
📝 شرح مكونات الكود
1️⃣ #include <iostream>
🔹 معناها: نخبر المترجم أن يضمّن مكتبة iostream الخاصة بالإدخال والإخراج.
🔹 التفاصيل:
#include → تعليمة للـ Preprocessor (المعالج المسبق).
<iostream> → تحتوي على أدوات الإدخال (cin) والإخراج (cout).
---
2️⃣ using namespace std;
🔹 وظيفتها: عشان ما نكتبش std::cout كل مرة، نستعملها مباشرة كـ cout.
🔹 التفاصيل:
namespace: مساحة اسم تحتوي على دوال ومتغيرات.
std: هي المساحة القياسية التي تضم كل أدوات ++C الأساسية.
---
3️⃣ int main()
🔹 الدالة الرئيسية التي يبدأ منها تنفيذ البرنامج.
🔹 التفاصيل:
int → نوع الإرجاع (عدد صحيح).
main() → لا يوجد برنامج ++C بدونها.
---
4️⃣ { }
🔹 الأقواس تحدد بداية ونهاية الكود الخاص بالدالة main.
🔹 أي شيء بداخلها يتم تنفيذه عند تشغيل البرنامج.
---
5️⃣ cout << "Hello, World!" << endl;
🔹 السطر الذي يطبع رسالة على الشاشة.
🔹 التفاصيل:
cout → كائن الإخراج (يُرسل البيانات للشاشة).
<< → عامل الإرسال.
"Hello, World!" → النص المراد طباعته.
endl → ينقل المؤشر لسطر جديد.
---
6️⃣ return 0;
🔹 معناها: البرنامج انتهى بنجاح.
🔹 القيمة 0 = لا توجد أخطاء.
---
⚙️ خطوات كتابة وتشغيل البرنامج
1️⃣ افتح بيئة التطوير (IDE) مثل Visual Studio أو Code::Blocks.
2️⃣ أنشئ مشروع جديد (Console Application).
3️⃣ اكتب الكود السابق داخل ملف main.cpp.
4️⃣ احفظ الملف.
5️⃣ قم بالـ Build & Run:
في Visual Studio → Ctrl + F5
في Code::Blocks → F9
✅ النتيجة المتوقعة على الشاشة:
Hello, World!
---
✨ ماذا يحدث عند التشغيل؟
1- يبدأ التنفيذ من main().
2- يتم إرسال الرسالة إلى cout وتظهر على الشاشة.
3- endl ينقلك لسطر جديد.
4- return 0; يخبر النظام أن البرنامج انتهى بسلام.
---
🛠️ تعديلات بسيطة ممتعة!
بدل النص:
cout << "Welcome to C++ Programming!" << endl;
اطبع أكثر من جملة:
cout << "Hello, World!" << endl;
cout << "This is my first C++ program." << endl;
---
📌 الخلاصة
البرنامج الأساسي في ++C يتكون من:
المكتبات (#include).
مساحة الاسم (using namespace std;).
الدالة الرئيسية (int main()).
أوامر الإخراج (cout).
إنهاء البرنامج (return 0;).
هل تتخيل أنك بسطور قليلة فقط تقدر تكتب برنامج كامل يظهر رسالة على الشاشة؟ ✨
هذا هو سحر لغة ++C!
خلينا ندخل معًا ونفهم البرنامج الأساسي خطوة بخطوة 👇
---
✅ تركيب البرنامج الأساسي في ++C
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
---
📝 شرح مكونات الكود
1️⃣ #include <iostream>
🔹 معناها: نخبر المترجم أن يضمّن مكتبة iostream الخاصة بالإدخال والإخراج.
🔹 التفاصيل:
#include → تعليمة للـ Preprocessor (المعالج المسبق).
<iostream> → تحتوي على أدوات الإدخال (cin) والإخراج (cout).
---
2️⃣ using namespace std;
🔹 وظيفتها: عشان ما نكتبش std::cout كل مرة، نستعملها مباشرة كـ cout.
🔹 التفاصيل:
namespace: مساحة اسم تحتوي على دوال ومتغيرات.
std: هي المساحة القياسية التي تضم كل أدوات ++C الأساسية.
---
3️⃣ int main()
🔹 الدالة الرئيسية التي يبدأ منها تنفيذ البرنامج.
🔹 التفاصيل:
int → نوع الإرجاع (عدد صحيح).
main() → لا يوجد برنامج ++C بدونها.
---
4️⃣ { }
🔹 الأقواس تحدد بداية ونهاية الكود الخاص بالدالة main.
🔹 أي شيء بداخلها يتم تنفيذه عند تشغيل البرنامج.
---
5️⃣ cout << "Hello, World!" << endl;
🔹 السطر الذي يطبع رسالة على الشاشة.
🔹 التفاصيل:
cout → كائن الإخراج (يُرسل البيانات للشاشة).
<< → عامل الإرسال.
"Hello, World!" → النص المراد طباعته.
endl → ينقل المؤشر لسطر جديد.
---
6️⃣ return 0;
🔹 معناها: البرنامج انتهى بنجاح.
🔹 القيمة 0 = لا توجد أخطاء.
---
⚙️ خطوات كتابة وتشغيل البرنامج
1️⃣ افتح بيئة التطوير (IDE) مثل Visual Studio أو Code::Blocks.
2️⃣ أنشئ مشروع جديد (Console Application).
3️⃣ اكتب الكود السابق داخل ملف main.cpp.
4️⃣ احفظ الملف.
5️⃣ قم بالـ Build & Run:
في Visual Studio → Ctrl + F5
في Code::Blocks → F9
✅ النتيجة المتوقعة على الشاشة:
Hello, World!
---
✨ ماذا يحدث عند التشغيل؟
1- يبدأ التنفيذ من main().
2- يتم إرسال الرسالة إلى cout وتظهر على الشاشة.
3- endl ينقلك لسطر جديد.
4- return 0; يخبر النظام أن البرنامج انتهى بسلام.
---
🛠️ تعديلات بسيطة ممتعة!
بدل النص:
cout << "Welcome to C++ Programming!" << endl;
اطبع أكثر من جملة:
cout << "Hello, World!" << endl;
cout << "This is my first C++ program." << endl;
---
📌 الخلاصة
البرنامج الأساسي في ++C يتكون من:
المكتبات (#include).
مساحة الاسم (using namespace std;).
الدالة الرئيسية (int main()).
أوامر الإخراج (cout).
إنهاء البرنامج (return 0;).
📌 أولًا: ما هو الـ Stack؟
الـ Stack (المكدس) هو بنية بيانات (Data Structure) بتشتغل بنظام:
Last In, First Out (LIFO) = "اللي يدخل آخر يخرج أول".
📦 زي كومة أطباق، آخر طبق تحطه فوق هو أول طبق تاخده.
---
📌 ثانيًا: ما هو الـ Call Stack؟
الـ Call Stack هو مكان في الذاكرة بيحتفظ فيه البرنامج بكل الاستدعاءات (calls) للدوال (functions) اللي شغالة في اللحظة دي.
يعني:
كل ما تنادي على دالة → بيتضاف "إطار" (Stack Frame) في الـ call stack.
لما تخلص الدالة → بيتشال الإطار من الـ stack.
---
📌 ثالثًا: ما هو Stack Frame؟
كل دالة بتستدعيها ليها "صندوق خاص" (Stack Frame) بيتخزن فيه:
1. عنوان العودة (Return Address): عشان لما تخلص الدالة يعرف يرجع فين.
2. المتغيرات المحلية (Local Variables) داخل الدالة.
3. البراميترز (Parameters) اللي اتبعتت للدالة.
---
📌 رابعًا: مثال عملي في C++
#include <iostream>
using namespace std;
void funcC() {
int c = 30;
cout << "Inside funcC, c = " << c << endl;
}
void funcB() {
int b = 20;
cout << "Inside funcB, b = " << b << endl;
funcC(); // استدعاء funcC
}
void funcA() {
int a = 10;
cout << "Inside funcA, a = " << a << endl;
funcB(); // استدعاء funcB
}
int main() {
cout << "Program start" << endl;
funcA(); // استدعاء funcA
cout << "Program end" << endl;
return 0;
}
---
🧠 إيه اللي بيحصل في الـ Call Stack؟
1. يبدأ البرنامج في main() → يتضاف Stack Frame خاص بـ main.
2. main استدعى funcA → يتضاف Stack Frame لـ funcA.
3. funcA استدعى funcB → يتضاف Stack Frame لـ funcB.
4. funcB استدعى funcC → يتضاف Stack Frame لـ funcC.
5. funcC خلصت → بيتشال Stack Frame بتاعها.
6. يرجع لـ funcB → يكمل وينتهي → يتم حذفه.
7. يرجع لـ funcA → يكمل وينتهي → يتم حذفه.
8. في الآخر يرجع لـ main → يكمل وينتهي → يتم حذفه.
---
📌 خامسًا: أهمية الـ Call Stack
تتبع الاستدعاءات: يعرف البرنامج أي دالة بتشتغل حاليًا.
إدارة الذاكرة: يخزن المتغيرات المحلية مؤقتًا.
التصحيح (Debugging): لما يحصل خطأ (مثلاً Stack Overflow) المترجم بيطبع "Stack Trace" يوضح سلسلة الاستدعاءات.
---
🎯 الخلاصة:
الـ Call Stack = دفتر متابعة الاستدعاءات للدوال.
كل دالة بتتنادى → ليها صندوق خاص (Stack Frame).
بيتشال الصندوق أول ما الدالة تخلص.
شبيه بكومة أطباق → "آخر دالة تدخل هي أول دالة تخرج".
الـ Stack (المكدس) هو بنية بيانات (Data Structure) بتشتغل بنظام:
Last In, First Out (LIFO) = "اللي يدخل آخر يخرج أول".
📦 زي كومة أطباق، آخر طبق تحطه فوق هو أول طبق تاخده.
---
📌 ثانيًا: ما هو الـ Call Stack؟
الـ Call Stack هو مكان في الذاكرة بيحتفظ فيه البرنامج بكل الاستدعاءات (calls) للدوال (functions) اللي شغالة في اللحظة دي.
يعني:
كل ما تنادي على دالة → بيتضاف "إطار" (Stack Frame) في الـ call stack.
لما تخلص الدالة → بيتشال الإطار من الـ stack.
---
📌 ثالثًا: ما هو Stack Frame؟
كل دالة بتستدعيها ليها "صندوق خاص" (Stack Frame) بيتخزن فيه:
1. عنوان العودة (Return Address): عشان لما تخلص الدالة يعرف يرجع فين.
2. المتغيرات المحلية (Local Variables) داخل الدالة.
3. البراميترز (Parameters) اللي اتبعتت للدالة.
---
📌 رابعًا: مثال عملي في C++
#include <iostream>
using namespace std;
void funcC() {
int c = 30;
cout << "Inside funcC, c = " << c << endl;
}
void funcB() {
int b = 20;
cout << "Inside funcB, b = " << b << endl;
funcC(); // استدعاء funcC
}
void funcA() {
int a = 10;
cout << "Inside funcA, a = " << a << endl;
funcB(); // استدعاء funcB
}
int main() {
cout << "Program start" << endl;
funcA(); // استدعاء funcA
cout << "Program end" << endl;
return 0;
}
---
🧠 إيه اللي بيحصل في الـ Call Stack؟
1. يبدأ البرنامج في main() → يتضاف Stack Frame خاص بـ main.
2. main استدعى funcA → يتضاف Stack Frame لـ funcA.
3. funcA استدعى funcB → يتضاف Stack Frame لـ funcB.
4. funcB استدعى funcC → يتضاف Stack Frame لـ funcC.
5. funcC خلصت → بيتشال Stack Frame بتاعها.
6. يرجع لـ funcB → يكمل وينتهي → يتم حذفه.
7. يرجع لـ funcA → يكمل وينتهي → يتم حذفه.
8. في الآخر يرجع لـ main → يكمل وينتهي → يتم حذفه.
---
📌 خامسًا: أهمية الـ Call Stack
تتبع الاستدعاءات: يعرف البرنامج أي دالة بتشتغل حاليًا.
إدارة الذاكرة: يخزن المتغيرات المحلية مؤقتًا.
التصحيح (Debugging): لما يحصل خطأ (مثلاً Stack Overflow) المترجم بيطبع "Stack Trace" يوضح سلسلة الاستدعاءات.
---
🎯 الخلاصة:
الـ Call Stack = دفتر متابعة الاستدعاءات للدوال.
كل دالة بتتنادى → ليها صندوق خاص (Stack Frame).
بيتشال الصندوق أول ما الدالة تخلص.
شبيه بكومة أطباق → "آخر دالة تدخل هي أول دالة تخرج".
من اين يبدأ تنفيذ البرنامج
من الدول الأساسية
Int main وتعتبر
نقطة الانطلاق entry point
طيب
📌 ما معنى Entry Point؟
Entry Point = هو المكان الأول اللي يبدأ منه تنفيذ البرنامج.
زي "باب البداية" أو "نقطة البداية" اللي المترجم (Compiler) بيخش منها عشان يشغل الكود.
---
📌 في C++
في لغة C++، الـ Entry Point الافتراضية هي الدالة main().
يعني مهما كان عندك دوال أو كلاسات أو ملفات... التنفيذ لازم يبدأ من main.
#include <iostream>
using namespace std;
int main() {
cout << "Program started here!" << endl;
return 0;
}
🔹 هنا:
main هي Entry Point.
المترجم بيروح مباشرةً ليها ويبدأ يقرأ التعليمات منها خطوة بخطوة.
---
📌 طيب إزاي البرنامج يعرف يرجع بعد ما يخلص؟
الدالة main() لازم ترجع قيمة عددية (int).
القيمة دي بتروح لنظام التشغيل (OS) وتوضح إذا كان البرنامج خلص بنجاح ولا حصل خطأ.
return 0; → البرنامج خلص بنجاح.
أي رقم آخر → فيه خطأ أو حالة خاصة.
---
📌 أمثلة واقعية:
1. برنامج بسيط:
int main() {
return 0; // نقطة البداية ونهاية التنفيذ
}
2. مع دوال أخرى:
#include <iostream>
using namespace std;
void sayHello() {
cout << "Hello!" << endl;
}
int main() {
sayHello(); // التنفيذ يبدأ هنا
return 0;
}
🔹 مهما كان فيه دوال ثانية (sayHello) التنفيذ مش هيبدأ بيها، لازم يمر بـ main() الأول.
---
📌 الخلاصة:
Entry Point = المكان اللي يبدأ منه تشغيل البرنامج.
في C++، الـ Entry Point دائمًا هي main().
من خلالها تقدر تستدعي باقي الدوال والكلاسات.
من الدول الأساسية
Int main وتعتبر
نقطة الانطلاق entry point
طيب
📌 ما معنى Entry Point؟
Entry Point = هو المكان الأول اللي يبدأ منه تنفيذ البرنامج.
زي "باب البداية" أو "نقطة البداية" اللي المترجم (Compiler) بيخش منها عشان يشغل الكود.
---
📌 في C++
في لغة C++، الـ Entry Point الافتراضية هي الدالة main().
يعني مهما كان عندك دوال أو كلاسات أو ملفات... التنفيذ لازم يبدأ من main.
#include <iostream>
using namespace std;
int main() {
cout << "Program started here!" << endl;
return 0;
}
🔹 هنا:
main هي Entry Point.
المترجم بيروح مباشرةً ليها ويبدأ يقرأ التعليمات منها خطوة بخطوة.
---
📌 طيب إزاي البرنامج يعرف يرجع بعد ما يخلص؟
الدالة main() لازم ترجع قيمة عددية (int).
القيمة دي بتروح لنظام التشغيل (OS) وتوضح إذا كان البرنامج خلص بنجاح ولا حصل خطأ.
return 0; → البرنامج خلص بنجاح.
أي رقم آخر → فيه خطأ أو حالة خاصة.
---
📌 أمثلة واقعية:
1. برنامج بسيط:
int main() {
return 0; // نقطة البداية ونهاية التنفيذ
}
2. مع دوال أخرى:
#include <iostream>
using namespace std;
void sayHello() {
cout << "Hello!" << endl;
}
int main() {
sayHello(); // التنفيذ يبدأ هنا
return 0;
}
🔹 مهما كان فيه دوال ثانية (sayHello) التنفيذ مش هيبدأ بيها، لازم يمر بـ main() الأول.
---
📌 الخلاصة:
Entry Point = المكان اللي يبدأ منه تشغيل البرنامج.
في C++، الـ Entry Point دائمًا هي main().
من خلالها تقدر تستدعي باقي الدوال والكلاسات.
🎯 ما هي الدالة (Function)؟
تخيل معايا إن عندك مصنع:
المصنع ده بياخد مواد خام (مدخلات)
جوه المصنع بيتم عمليات تصنيع (معالجة)
وفي الآخر بيطلعلك منتج جاهز (مخرجات)
نفس الفكرة بالضبط في الدوال في البرمجة.
الدالة عبارة عن جزء من الكود معمول مخصوص عشان يعمل مهمة معينة بدل ما تكرر الكود كتير.
---
🏭 مكونات الدالة (زي المصنع)
1. المدخلات (Parameters / Arguments):
زي المواد الخام اللي بتدخل المصنع.
هي القيم اللي بتبعتها للدالة عشان تشتغل عليها.
2. المعالجة (Process):
الخطوات أو العمليات اللي بتحصل جوه الدالة.
3. المخرجات (Return Value):
المنتج النهائي اللي المصنع بيرجعهولك بعد ما يخلص شغل.
ممكن يكون فيه مخرجات أو لا (في بعض المصانع بس بيعملوا الشغل من غير ما يرجعولك حاجة).
---
🧩 الشكل العام للدالة في C++
نوع_المخرجات اسم_الدالة(نوع_المدخلات1 اسم_المعامل1, نوع_المدخلات2 اسم_المعامل2, ...)
{
// العمليات اللي هتحصل (Body)
return القيمة; // المنتج النهائي
}
---
🎬 مثال بسيط
عايز دالة تجمع عددين:
#include <iostream>
using namespace std;
// دالة بتجمع عددين
int Add(int a, int b) // (int a, int b) دول المواد الخام (المدخلات)
{
int result = a + b; // دي العمليات داخل المصنع
return result; // ده المنتج النهائي اللي بيخرج من المصنع
}
int main()
{
int x = 5, y = 7;
int sum = Add(x, y); // بنبعت المواد الخام (5,7) للمصنع
cout << "The sum is: " << sum << endl; // المنتج النهائي = 12
return 0;
}
🔎 الشرح:
int Add(int a, int b):
int ← نوع المنتج النهائي (هيكون عدد صحيح).
Add ← اسم المصنع (الدالة).
(int a, int b) ← المدخلات (مواد خام).
int result = a + b; ← عملية التصنيع (جمع).
return result; ← بيرجع الناتج (المخرجات).
---
🎭 أنواع الدوال من حيث المدخلات والمخرجات
1. مدخلات + مخرجات:
مثال: دالة تجمع عددين وترجع الناتج.
2. مدخلات فقط (من غير مخرجات):
مثال: دالة تطبع اسمك بس.
void PrintName(string name) // void يعني مفيش مخرجات
{
cout << "Hello " << name << endl;
}
3. مخرجات فقط (من غير مدخلات):
مثال: دالة ترجعلك رقم ثابت أو التاريخ الحالي.
int GetNumber()
{
return 42;
}
4. لا مدخلات ولا مخرجات:
مثال: دالة بس تطبع رسالة.
void SayHello()
{
cout << "Hello, World!" << endl;
}
---
💡 تشبيه بسيط يفيدك كمبتدئ
الدالة = المصنع
Parameters = المواد الخام اللي بيدخلها المصنع
الكود جوه الدالة = خطوات التصنيع
Return value = المنتج النهائي
void = مصنع شغال لكن مش بيرجعلك منتج (مجرد بيعمل حاجة زي طباعة)
لنك فديوهات أن شاء الله تفيدك
https://youtu.be/t6qw8_G0JxA?si=cEMKU8Kqi5JymAYA
https://youtu.be/fdauhXJOuDE?si=sdHvbiMJi9LFf4iY
شويه معلومات
علي الفرق بين
Procedure VS Function
📌 الفرق بين Function و Procedure
1️⃣ التعريف
Function (دالة):
زي مصنع بيرجعلك منتج (قيمة) بعد ما يخلص شغله.
Procedure (إجراء):
زي مصنع خدمة، بيعمل المهمة (يطبع رسالة – يحفظ بيانات – يغير حاجة)، لكن مش بيرجعلك قيمة.
---
2️⃣ نوع الراجع (Return Type)
Function: لازم يكون له نوع راجع (int, float, string …).
Procedure: نوعه void يعني "لا يرجع شيء".
---
3️⃣ التخزين في متغير
Function: ممكن تخزن الناتج في متغير. ✅
int Add(int a, int b) {
return a + b;
}
int main() {
int result = Add(5, 3); // هنا خزّنا الناتج في متغير
cout << result; // يطبع 8
return 0;
}
Procedure: ما ينفعش تخزن لأنها ما بترجعش حاجة. ❌
void PrintSum(int a, int b) {
cout << a + b << endl;
}
int main() {
PrintSum(5, 3); // يطبع 8 لكن مش نقدر نخزنها في متغير
return 0;
}
---
4️⃣ العمليات الحسابية
Function: ينفع تستخدمها جوه عمليات حسابية. ✅
int Square(int x) {
return x * x;
}
int main() {
int total = Square(3) + 5; // 9 + 5 = 14
cout << total;
return 0;
}
Procedure: ما ينفعش تدخلها في عمليات حسابية لأنها ما بترجعش حاجة. ❌
---
🎯 الخلاصة في جملة للمبتدئ
Function = مصنع بيرجعلك منتج، تقدر تخزنه وتعمل عليه عمليات حسابية.
Procedure = مصنع بيعمل شغل بس من غير ما يديك منتج (يعني مش هتخزن حاجة).
تخيل معايا إن عندك مصنع:
المصنع ده بياخد مواد خام (مدخلات)
جوه المصنع بيتم عمليات تصنيع (معالجة)
وفي الآخر بيطلعلك منتج جاهز (مخرجات)
نفس الفكرة بالضبط في الدوال في البرمجة.
الدالة عبارة عن جزء من الكود معمول مخصوص عشان يعمل مهمة معينة بدل ما تكرر الكود كتير.
---
🏭 مكونات الدالة (زي المصنع)
1. المدخلات (Parameters / Arguments):
زي المواد الخام اللي بتدخل المصنع.
هي القيم اللي بتبعتها للدالة عشان تشتغل عليها.
2. المعالجة (Process):
الخطوات أو العمليات اللي بتحصل جوه الدالة.
3. المخرجات (Return Value):
المنتج النهائي اللي المصنع بيرجعهولك بعد ما يخلص شغل.
ممكن يكون فيه مخرجات أو لا (في بعض المصانع بس بيعملوا الشغل من غير ما يرجعولك حاجة).
---
🧩 الشكل العام للدالة في C++
نوع_المخرجات اسم_الدالة(نوع_المدخلات1 اسم_المعامل1, نوع_المدخلات2 اسم_المعامل2, ...)
{
// العمليات اللي هتحصل (Body)
return القيمة; // المنتج النهائي
}
---
🎬 مثال بسيط
عايز دالة تجمع عددين:
#include <iostream>
using namespace std;
// دالة بتجمع عددين
int Add(int a, int b) // (int a, int b) دول المواد الخام (المدخلات)
{
int result = a + b; // دي العمليات داخل المصنع
return result; // ده المنتج النهائي اللي بيخرج من المصنع
}
int main()
{
int x = 5, y = 7;
int sum = Add(x, y); // بنبعت المواد الخام (5,7) للمصنع
cout << "The sum is: " << sum << endl; // المنتج النهائي = 12
return 0;
}
🔎 الشرح:
int Add(int a, int b):
int ← نوع المنتج النهائي (هيكون عدد صحيح).
Add ← اسم المصنع (الدالة).
(int a, int b) ← المدخلات (مواد خام).
int result = a + b; ← عملية التصنيع (جمع).
return result; ← بيرجع الناتج (المخرجات).
---
🎭 أنواع الدوال من حيث المدخلات والمخرجات
1. مدخلات + مخرجات:
مثال: دالة تجمع عددين وترجع الناتج.
2. مدخلات فقط (من غير مخرجات):
مثال: دالة تطبع اسمك بس.
void PrintName(string name) // void يعني مفيش مخرجات
{
cout << "Hello " << name << endl;
}
3. مخرجات فقط (من غير مدخلات):
مثال: دالة ترجعلك رقم ثابت أو التاريخ الحالي.
int GetNumber()
{
return 42;
}
4. لا مدخلات ولا مخرجات:
مثال: دالة بس تطبع رسالة.
void SayHello()
{
cout << "Hello, World!" << endl;
}
---
💡 تشبيه بسيط يفيدك كمبتدئ
الدالة = المصنع
Parameters = المواد الخام اللي بيدخلها المصنع
الكود جوه الدالة = خطوات التصنيع
Return value = المنتج النهائي
void = مصنع شغال لكن مش بيرجعلك منتج (مجرد بيعمل حاجة زي طباعة)
لنك فديوهات أن شاء الله تفيدك
https://youtu.be/t6qw8_G0JxA?si=cEMKU8Kqi5JymAYA
https://youtu.be/fdauhXJOuDE?si=sdHvbiMJi9LFf4iY
شويه معلومات
علي الفرق بين
Procedure VS Function
📌 الفرق بين Function و Procedure
1️⃣ التعريف
Function (دالة):
زي مصنع بيرجعلك منتج (قيمة) بعد ما يخلص شغله.
Procedure (إجراء):
زي مصنع خدمة، بيعمل المهمة (يطبع رسالة – يحفظ بيانات – يغير حاجة)، لكن مش بيرجعلك قيمة.
---
2️⃣ نوع الراجع (Return Type)
Function: لازم يكون له نوع راجع (int, float, string …).
Procedure: نوعه void يعني "لا يرجع شيء".
---
3️⃣ التخزين في متغير
Function: ممكن تخزن الناتج في متغير. ✅
int Add(int a, int b) {
return a + b;
}
int main() {
int result = Add(5, 3); // هنا خزّنا الناتج في متغير
cout << result; // يطبع 8
return 0;
}
Procedure: ما ينفعش تخزن لأنها ما بترجعش حاجة. ❌
void PrintSum(int a, int b) {
cout << a + b << endl;
}
int main() {
PrintSum(5, 3); // يطبع 8 لكن مش نقدر نخزنها في متغير
return 0;
}
---
4️⃣ العمليات الحسابية
Function: ينفع تستخدمها جوه عمليات حسابية. ✅
int Square(int x) {
return x * x;
}
int main() {
int total = Square(3) + 5; // 9 + 5 = 14
cout << total;
return 0;
}
Procedure: ما ينفعش تدخلها في عمليات حسابية لأنها ما بترجعش حاجة. ❌
---
🎯 الخلاصة في جملة للمبتدئ
Function = مصنع بيرجعلك منتج، تقدر تخزنه وتعمل عليه عمليات حسابية.
Procedure = مصنع بيعمل شغل بس من غير ما يديك منتج (يعني مش هتخزن حاجة).
YouTube
8- Programming with C++ , Functions برمجة
البرمجة للمبتدئين باللغة العربية بإستخدام لغة السى بلس بلس
Dr. Mohamed El Desouki - د. محمد الدسوقى
mohamed_eldesouki@hotmail.com
جامعة الأمير سطام بن عبد العزيز - السعودية - الخرج
لطلب الشروحات الخاصة للمجموعات - واتس أب رقم 00966545567593
لا أحل واجبات…
Dr. Mohamed El Desouki - د. محمد الدسوقى
mohamed_eldesouki@hotmail.com
جامعة الأمير سطام بن عبد العزيز - السعودية - الخرج
لطلب الشروحات الخاصة للمجموعات - واتس أب رقم 00966545567593
لا أحل واجبات…
👍1🆒1
#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;
}
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;
}
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;
}
تحسين الكود
🎯 الفكرة العامة
تحسين الكود (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. اختيار الخوارزمية الأفضل.
🎯 الفكرة العامة
تحسين الكود (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
🔴 أخطاء شائعة في 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.
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
ما معنى 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): يعني كيف يتحكم البرنامج في أي سطر يتنفذ ومتى.
---
أنواع 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).
هم
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
📌 ما هي أنواع البيانات (Data Types)؟
لما بنكتب برنامج، لازم نحدد نوع البيانات اللي هيخزنها المتغير (variable).
المتغير زي صندوق بيشيل قيمة، والصندوق لازم نعرف نوع الحاجة اللي هنحطها فيه: هل رقم صحيح؟ كسر عشري؟ حرف؟ جملة نصية؟ وهكذا.
---
✅ الأنواع الأساسية في C++:
1. int (عدد صحيح)
بيخزن أعداد صحيحة موجبة أو سالبة.
ماينفعش يخزن كسور.
#include <iostream>
using namespace std;
int main() {
int age = 20; // متغير نوعه عدد صحيح
cout << "Age: " << age << endl;
return 0;
}
---
2. float (عدد عشري صغير الدقة)
بيخزن أعداد فيها كسور (عشرية).
دقته محدودة.
#include <iostream>
using namespace std;
int main() {
float pi = 3.14; // متغير فيه كسر عشري
cout << "Pi: " << pi << endl;
return 0;
}
---
3. double (عدد عشري كبير الدقة)
زي float بس بيخزن أعداد عشرية بدقة أكبر.
#include <iostream>
using namespace std;
int main() {
double price = 99.99;
cout << "Price: " << price << endl;
return 0;
}
---
4. char (حرف واحد)
بيخزن حرف واحد بس (زي: a, b, 1, #).
بينكتب بين ' ' (علامات تنصيص مفردة).
#include <iostream>
using namespace std;
int main() {
char grade = 'A';
cout << "Grade: " << grade << endl;
return 0;
}
---
5. string (نص كامل)
بيخزن مجموعة من الحروف (كلمة أو جملة).
بيحتاج مكتبة <string>.
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Ahmed Yasser";
cout << "Name: " << name << endl;
return 0;
}
---
6. bool (قيمة منطقية)
بيخزن إما true (صح) أو false (غلط).
مهم جدًا في الشروط (if).
#include <iostream>
using namespace std;
int main() {
bool isStudent = true;
cout << "Student? " << isStudent << endl; // هيطبع 1 لأن true = 1
return 0;
}
---
✨ ملخص سريع:
int → أعداد صحيحة (5, -10, 1000)
float/double → أعداد عشرية (3.14, -0.5)
char → حرف واحد ('A', '7')
string → نصوص ("Hello")
bool → منطقي (true/false)
لما بنكتب برنامج، لازم نحدد نوع البيانات اللي هيخزنها المتغير (variable).
المتغير زي صندوق بيشيل قيمة، والصندوق لازم نعرف نوع الحاجة اللي هنحطها فيه: هل رقم صحيح؟ كسر عشري؟ حرف؟ جملة نصية؟ وهكذا.
---
✅ الأنواع الأساسية في C++:
1. int (عدد صحيح)
بيخزن أعداد صحيحة موجبة أو سالبة.
ماينفعش يخزن كسور.
#include <iostream>
using namespace std;
int main() {
int age = 20; // متغير نوعه عدد صحيح
cout << "Age: " << age << endl;
return 0;
}
---
2. float (عدد عشري صغير الدقة)
بيخزن أعداد فيها كسور (عشرية).
دقته محدودة.
#include <iostream>
using namespace std;
int main() {
float pi = 3.14; // متغير فيه كسر عشري
cout << "Pi: " << pi << endl;
return 0;
}
---
3. double (عدد عشري كبير الدقة)
زي float بس بيخزن أعداد عشرية بدقة أكبر.
#include <iostream>
using namespace std;
int main() {
double price = 99.99;
cout << "Price: " << price << endl;
return 0;
}
---
4. char (حرف واحد)
بيخزن حرف واحد بس (زي: a, b, 1, #).
بينكتب بين ' ' (علامات تنصيص مفردة).
#include <iostream>
using namespace std;
int main() {
char grade = 'A';
cout << "Grade: " << grade << endl;
return 0;
}
---
5. string (نص كامل)
بيخزن مجموعة من الحروف (كلمة أو جملة).
بيحتاج مكتبة <string>.
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Ahmed Yasser";
cout << "Name: " << name << endl;
return 0;
}
---
6. bool (قيمة منطقية)
بيخزن إما true (صح) أو false (غلط).
مهم جدًا في الشروط (if).
#include <iostream>
using namespace std;
int main() {
bool isStudent = true;
cout << "Student? " << isStudent << endl; // هيطبع 1 لأن true = 1
return 0;
}
---
✨ ملخص سريع:
int → أعداد صحيحة (5, -10, 1000)
float/double → أعداد عشرية (3.14, -0.5)
char → حرف واحد ('A', '7')
string → نصوص ("Hello")
bool → منطقي (true/false)
👍2
هل تعرف ماذا يعني
#include <iostream>
هل تعرف ماذا يعني؟ 🤔
هذا أمر للـ Preprocessor يقول:
"من فضلك يا مترجم، انسخ محتوى الملف الجاهز (iostream) وضعه هنا قبل الترجمة"
عشان نقدر نستعمل std::cout, std::cin إلخ.
---
✨ مختصر المفيد عن Preprocessing:
يبدأ دائمًا بـ # (زي: #include, #define, #if ...).
يتم تنفيذه قبل مرحلة الترجمة (compilation).
استخداماته الأساسية:
1. إدراج ملفات جاهزة:
#include <iostream> // إدخال مكتبة الإدخال والإخراج
2. تعريف ثوابت/ماكروز:
#define PI 3.14
3. الترجمة الشرطية:
#ifdef DEBUG
std::cout << "Debug mode\n";
#endif
4. حماية الملفات الرأسية:
#ifndef HEADER_H
#define HEADER_H
// محتوى الهيدر
#endif
5. إظهار خطأ أثناء البناء:
#error "You must define TARGET_PLATFORM"
---
📌 الخلاصة في جملة:
الـ Preprocessing هو مرحلة تجهيز الكود قبل الترجمة، وظيفته الأساسية "قص ولصق" التعليمات الخاصة (#...) عشان يجهّز الكود الحقيقي للمترجم.
#include <iostream>
هل تعرف ماذا يعني؟ 🤔
هذا أمر للـ Preprocessor يقول:
"من فضلك يا مترجم، انسخ محتوى الملف الجاهز (iostream) وضعه هنا قبل الترجمة"
عشان نقدر نستعمل std::cout, std::cin إلخ.
---
✨ مختصر المفيد عن Preprocessing:
يبدأ دائمًا بـ # (زي: #include, #define, #if ...).
يتم تنفيذه قبل مرحلة الترجمة (compilation).
استخداماته الأساسية:
1. إدراج ملفات جاهزة:
#include <iostream> // إدخال مكتبة الإدخال والإخراج
2. تعريف ثوابت/ماكروز:
#define PI 3.14
3. الترجمة الشرطية:
#ifdef DEBUG
std::cout << "Debug mode\n";
#endif
4. حماية الملفات الرأسية:
#ifndef HEADER_H
#define HEADER_H
// محتوى الهيدر
#endif
5. إظهار خطأ أثناء البناء:
#error "You must define TARGET_PLATFORM"
---
📌 الخلاصة في جملة:
الـ Preprocessing هو مرحلة تجهيز الكود قبل الترجمة، وظيفته الأساسية "قص ولصق" التعليمات الخاصة (#...) عشان يجهّز الكود الحقيقي للمترجم.
⚡2❤2👏1