تعلم البرمجة بلغة ++C
رفتن به کانال در Telegram
💻 الى كل المبرمجين 🔴سوف تجد شرح لغة السي بلاس بلاس للمبتدئين حتى الاحتراف 📺فيدوهات شرح عديدة 🎥 برامج مجانية 🎁 مشاريع مجانيه 📚 كتب تصميم وبرمجة 📚 مراجع واسئلة محلولة 💻برامج واكواد كثيرة كل ذلك في قناتي 👇 https://t.me/LearnCPlus_Plus
نمایش بیشتر2 254
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-57 روز
-2230 روز
آرشیو پست ها
أي سؤال أو استفسار
ارسل هنا :-
@Learncplus12
واللي عنده موقع يترجم الملفات للعربية ترجمه افضل من قوقل يرسله لي وله جزيل الشكر 🌹
#الدرس_السادس
المؤشرات او البينات (Pointers) هي مفهوم أساسي في لغة البرمجة C++ يسمح لك بتخزين وتعديل عناوين الذاكرة. توفر البينات طريقة للوصول إلى البيانات وتعديلها بشكل غير مباشر في الذاكرة. دعنا نستكشف تفاصيل البينات في C++.
1. تعريف البينات:
لتعريف البينات، نستخدم الرمز النجمي (*) في الإعلان. على سبيل المثال، لتعريف بينات لعدد صحيح، يمكنك كتابة:
int* ptr;
هنا، ptr هو بينة لعدد صحيح.
2. تهيئة البينات:
يمكن تهيئة البينات باستخدام عنوان متغير باستخدام عامل العنوان (&). على سبيل المثال:
int value = 42;
int* ptr = &value;
هنا، يتم تهيئة ptr بعنوان الذاكرة للمتغير value.
3. تحجيم البينات:
تحجيم البينات يعني الوصول إلى القيمة المخزنة في العنوان الذي تشير إليه البينة. يتم ذلك باستخدام عامل التحجيم (*) قبل متغير البينة. على سبيل المثال:
int value = 42;
int* ptr = &value;
std::cout << *ptr << std::endl; // الناتج: 42
التعبير *ptr يسترد القيمة المخزنة في العنوان الذي يشير إليه ptr.
4. تعديل القيم المشيرة إليها:
يمكن استخدام البينات لتعديل قيمة المتغير المشير إليها. على سبيل المثال:
int value = 42;
int* ptr = &value;
*ptr = 99;
std::cout << value << std::endl; // الناتج: 99
عن طريق تعيين قيمة جديدة لـ *ptr، نقوم بتعديل قيمة value بشكل غير مباشر.
5. البينات الفارغة:
يمكن للبينات أن تحتوي أيضًا على قيمة خاصة تسمى بينة فارغة (null pointer)، والتي تشير إلى أنها لا تشير إلى أي عنوان صالح في الذاكرة. يمكنك تعيين بينة فارغة باستخدام الكلمة الأساسية nullptr. على سبيل المثال:
int* ptr = nullptr;
6. الحساب على البينات:
يمكن زيادة وتنقيص البينات، مما يسمح لك بالتنقل في الذاكرة. عمليات الزيادة والتنقيص تعتمد على حجم نوع البيانات الذي تشير البينة إليه. على سبيل المثال:
int array[] = {1, 2, 3, 4, 5};
int* ptr = array;
std::cout << *ptr << std::endl; // الناتج: 1
ptr++; // التحرك إلى العنصر التالي
std::cout << *ptr << std::endl; // الناتج: 2
7. المصفوفات والبينات:
في لغة البرمجة C++، المصفوفات والبينات مرتبطة ارتباطًا وثيقًا. يمكن التعامل مع اسم المصفوفة كبينة تشير إلى العنصر الأول في المصفوفة. على سبيل المثال:
int array[] = {1, 2, 3};
int* ptr = array;
std::cout << *ptr << std::endl; // الناتج: 1
هنا، يشير ptr إلى العنصر الأول في المصفوفة array.
هذه بعض الجوانب الرئيسية للبينات في C++. توفر البينات قدرات قوية لتخصيص الذاكرة الديناميكية والعمل مع المصفوفات والوصول المباشر إلى الذاكرة. ومع ذلك، من المهم استخدام البينات بحذر لتجنب مشاكل شائعة مثل البينات المتدلية (dangling pointers) أو تسريب الذاكرة (memory leaks).#تابع
2.Passing Arguments by Reference in C++ (إمرار المعاملات بالقيمة المرجعية)
في طريقة الإمرار بالقيمة المرجعية، يتم تمرير عنوان المتغير إلى الدالة بدلاً من نسخة من قيمته. يتيح ذلك للدالة الوصول إلى المتغير الأصلي مباشرةً وإجراء التعديلات عليه.
مثال:
void swapNumbers(int& firstNumber, int& secondNumber) {
// تبديل قيمتي المتغيرين
int temp = firstNumber;
firstNumber = secondNumber;
secondNumber = temp;
}
int main() {
int x = 5;
int y = 10;
// استدعاء دالة swapNumbers مع تمرير عناوين المتغيرات
swapNumbers(x, y);
// عرض قيم المتغيرات بعد التبديل
std::cout << "x = " << x << std::endl;
std::cout << "y = " << y << std::endl;
return 0;
}
في هذا المثال، يتم تمرير عناوين المتغيرات x و y إلى دالة swapNumbers باستخدام & أمام اسم المتغير. داخل الدالة، يمكن للدالة الوصول إلى قيمتي المتغيرين مباشرةً وتبديلهما باستخدام متغير temp. بعد استدعاء الدالة، تصبح قيمة x 10 و y 5.
ملاحظات:
* تعديلات دائمة: تؤثر التعديلات التي يتم إجراؤها على المعاملات داخل جسم الدالة على القيمة الأصلية للمتغيرات.
* كفاءة: يعتبر الإمرار بالقيمة المرجعية أكثر كفاءة من الإمرار بالقيمة، حيث لا يلزم إنشاء نسخة من قيمة المعامل.
* استخدامات: تُستخدم طريقة الإمرار بالقيمة المرجعية بشكل شائع لتبديل قيم المتغيرات، ووظائف الإدخال والإخراج، وتمرير المصفوفات الكبيرة.
### أنواع أخرى من الدوال:
* دوال محلية (Local functions): يتم تعريفها داخل دالة أخرى ولا يمكن استدعائها من خارج الدالة التي تحتوي عليها.
* دوال خارجية (External functions): يتم تعريفها في ملف منفصل ويمكن استدعائها من أي مكان في البرنامج.
* دوال صديقة (Friend functions): يمكنها الوصول إلى العناصر الخاصة (private) للدالة التي تم تعريفها فيها.
* دوال ثابتة (Static functions): ترتبط بدالة أو فئة معينة ولا تعتمد على مثيل محدد من الفئة.
### خاتمة:
تعتبر الدوال من أهم أدوات البرمجة في C++. فهي تسمح بتقسيم البرامج إلى وحدات أصغر قابلة لإعادة الاستخدام، مما يجعل الكود أكثر وضوحًا وسهولةً في الصيانة. فهم أنواع الدوال وطرق بنائها واستدعائها ضروري لكتابة برامج C++ فعالة.
تفاعلكم مع المنشورات يزيد الشغف
لشرح المزيد والمزيد .. تفاعلوا 🔥#تابع
1. الإمرار بالقيمة (pass by value): يتم تمرير نسخة من قيمة المعامل إلى الدالة، ولا تؤثر التعديلات داخل الدالة على القيمة الأصلية. هذا يعني أن أي تغييرات يتم إجراؤها على المعاملات داخل جسم الدالة لا تنعكس على المتغيرات التي تم تمريرها في الأصل.
مثال دالة incrementByOne للإمرار بالقيمة في C++
void incrementByOne(int x) {
// زيادة قيمة نسخة المعامل بمقدار 1
x++;
// لا تؤثر هذه الزيادة على قيمة المتغير الأصلي
}
int main() {
int number = 5;
// استدعاء دالة incrementByOne مع تمرير قيمة المتغير number
incrementByOne(number);
// عرض قيمة المتغير number بعد استدعاء الدالة
std::cout << "number = " << number << std::endl; // ستظل قيمة number 5
return 0;
}
في هذا المثال، يتم تمرير قيمة المتغير number (5) إلى دالة incrementByOne. داخل الدالة، يتم زيادة نسخة من قيمة المعامل (x) بمقدار 1 (تصبح 6). ومع ذلك، لا تؤثر هذه الزيادة على قيمة المتغير الأصلي number. بعد استدعاء الدالة، ستظل قيمة number 5.
شرح:
* عند تمرير المعاملات بالقيمة، يتم إنشاء نسخة من قيمتها داخل الدالة. يتم إجراء أي عمليات على هذه النسخة ولا تؤثر على القيمة الأصلية للمتغير.
* في دالة incrementByOne، يتم تمرير قيمة number (5) إلى x. تُنشئ الدالة نسخة من x (أيضًا 5) وتزيدها بمقدار 1. تؤثر هذه الزيادة فقط على نسخة x داخل الدالة، ولا تؤثر على قيمة number في main.
ملاحظات:
* تعديلات دائمة: لا تؤثر طريقة الإمرار بالقيمة على القيمة الأصلية للمتغيرات.
* كفاءة: تُعتبر طريقة الإمرار بالقيمة أكثر كفاءة من الإمرار بالقيمة المرجعية، حيث لا يلزم إنشاء عنوان للمتغير.
* استخدامات: تُستخدم طريقة الإمرار بالقيمة بشكل شائع لعمليات الحساب البسيطة، ووظائف الإدخال والإخراج، وتمرير قيم صغيرة.
أمثلة أخرى على الإمرار بالقيمة:
* تمرير قيمة سلسلة إلى دالة لحساب طولها.
* تمرير قيمة عدد صحيح إلى دالة لحساب جذرها التربيعي.
* تمرير قيمة Boolean إلى دالة للتحقق من صحتها.
ملخص:
تُعد طريقة الإمرار بالقيمة مفهومًا أساسيًا في C++. فهي تسمح بتمرير قيم للمعاملات دون التأثير على القيمة الأصلية للمتغيرات. فهم كيفية عمل الإمرار بالقيمة ضروري لكتابة برامج C++ فعالة.#الدرس_الخامس
الدوال في لغة البرمجة C++
الدوال هي لبنات بناء أساسية في لغة البرمجة C++. تعتبر الدالة كتلة من الأوامر يتم تعريفها مرة واحدة ويمكن استدعائها في أي مكان في البرنامج. فهي تساعد على تقسيم البرنامج إلى وحدات منطقية أصغر، مما يجعل الكود أكثر قابلية للإدارة وإعادة الاستخدام.
### أنواع الدوال:
هناك نوعين رئيسيين من الدوال في C++:
1. دوال بدون إرجاع (void functions): لا تعيد هذه الدوال أي قيمة عند انتهائها. تستخدم هذه الدوال بشكل عام لإجراء عمليات معينة مثل الطباعة على الشاشة أو إجراء حسابات لا نحتاج إلى تخزين نتيجتها.
2. دوال بإرجاع (value-returning functions): تقوم هذه الدوال بإرجاع قيمة من نوع محدد عند انتهائها. على سبيل المثال، يمكن لدالة حساب مساحة المستطيل أن تأخذ طول وعرض المستطيل كمعاملات وتعيد مساحته كقيمة.
### بناء الدالة:
تتكون الدالة من عدة عناصر:
1. نوع الإرجاع (return type): يحدد نوع القيمة التي ستعيدها الدالة. بالنسبة للدوال بدون إرجاع، يكون نوع الإرجاع
void.
2. اسم الدالة (function name): الاسم الذي نستخدمه لاستدعاء الدالة. يجب أن يكون فريدا داخل نطاقها و يعكس غرض الدالة بشكل عام.
3. المعاملات (parameters): قيم اختيارية يتم تمريرها إلى الدالة عند استدعائها. يتم تعريف نوع ومتغير للمعامل داخل تعريف الدالة. يمكن للدالة أن تأخذ عددًا اختياريًا من المعاملات.
4. جسم الدالة (function body): الأوامر التي يتم تنفيذها عند استدعاء الدالة. تحتوي على التعليلات التي تحدد منطق عمل الدالة.
### أمثلة على الدوال:
دالة بدون إرجاع:
void printHello() {
// طباعة عبارة "Hello World"
std::cout << "Hello World" << std::endl;
}
هذه الدالة تسمى printHello ولا تعيد أي قيمة (void). عند استدعائها، تقوم بطباعة عبارة "Hello World" على الشاشة.
دالة بإرجاع:
int calculateArea(int length, int width) {
// حساب مساحة المستطيل
int area = length * width;
// إرجاع قيمة المساحة
return area;
}
هذه الدالة تسمى calculateArea وتأخذ طول وعرض المستطيل كمعاملات (int). تقوم الدالة بحساب مساحة المستطيل وتعيد قيمتها (int) باستخدام كلمة return.
### استدعاء الدالة:
لاستدعاء دالة، نكتب اسم الدالة بين قوسين ويمكننا تمرير قيم لها كمعاملات (إذا كانت الدالة تقبل معاملات). يتم استدعاء الدالة عادةً من داخل دالة main وهي نقطة دخول البرنامج.
int main() {
// استدعاء دالة printHello
printHello();
// استدعاء دالة calculateArea مع تمرير قيم للمعاملات
int length = 10;
int width = 5;
int area = calculateArea(length, width);
std::cout << "Area of rectangle: " << area << std::endl;
return 0;
}
ملحوظة: يجب التأكد من أن أنواع المعاملات التي يتم تمريرها عند استدعاء الدالة تتطابق مع أنواع المعاملات المعلنة داخل تعريف الدالة.
### المعاملات (arguments) والاقتران بالصيغة (parameter passing):
المعاملات هي قيم يتم تمريرها إلى الدالة عند استدعائها. يتم تعريف نوع ومتغير للمعامل داخل تعريف الدالة. هناك طريقتين رئيسيتين للاقتران بالصيغة في C++:#الدرس_الرابع
مفهوم المصفوفات أحادية وثنائية الأبعاد بلغة سي++
المصفوفات في سي++ (C++ Arrays)
المصفوفة هي بنية بيانات تستخدم لتخزين قيم متعددة لنفس نوع البيانات في متتالية متجاورة من الذاكرة.
الفرق بين المصفوفات أحادية وثنائية الأبعاد
المصفوفة أحادية البعد (Unary Array):
تخزن عناصر من نفس نوع البيانات في سلسلة خطية واحدة.
يتم الوصول إلى العناصر باستخدام فهرس (index) يبدأ من 0 وينتهي عند حجم المصفوفة - 1.
المصفوفة ثنائية البعد (Binary Array):
تشبه إلى حد بعيد جدولاً مكونًا من صفوف وأعمدة.
تتطلب فهارس (indices) اثنين للوصول إلى عنصر معين: الأول للصف والثاني للعمود.
يبدأ فهرس الصف من 0 وينتهي عند عدد الصفوف - 1.
يبدأ فهرس العمود من 0 وينتهي عند عدد الأعمدة - 1.
1. المصفوفات ذات البُعد الواحد (Unidimensional Arrays):
المصفوفات ذات البُعد الواحد هي مجموعة متتالية من العناصر لنفس النوع. يمكن الوصول إلى كل عنصر في المصفوفة عن طريق استخدام الفهرس المحدد له. لنلقِ نظرة على مثال عن كيفية تعريف واستخدام المصفوفات ذات البُعد الواحد:
#include <iostream>
using namespace std;
int main() {
// تعريف وتهيئة المصفوفة
int numbers[5] = {1, 2, 3, 4, 5};
// الوصول إلى العناصر في المصفوفة
cout << "عنصر في الموضع الثالث: " << numbers[2] << endl;
// تغيير قيمة عنصر في المصفوفة
numbers[1] = 10;
// طباعة جميع العناصر في المصفوفة
for (int i = 0; i < 5; i++) {
cout << numbers[i] << " ";
}
return 0;
}
الناتج:
عنصر في الموضع الثالث: 3
1 10 3 4 5
2. المصفوفات ذات البُعدين (Bidimensional Arrays):
المصفوفات ذات البُعدين هي جدول من العناصر المرتبة في صفوف وأعمدة. يمكن الوصول إلى كل عنصر في المصفوفة باستخدام الفهارس المحددة لصفوف وأعمدة. هنا مثال لتعريف واستخدام المصفوفات ذات البُعدين:
#include <iostream>
using namespace std;
int main() {
// تعريف وتهيئة المصفوفة
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// الوصول إلى العناصر في المصفوفة
cout << "قيمة الموضع (2, 1): " << matrix[1][0] << endl;
// تغيير قيمة عنصر في المصفوفة
matrix[2][2] = 10;
// طباعة جميع العناصر في المصفوفة
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
cout << matrix[row][col] << " ";
}
cout << endl;
}
return 0;
}
الناتج:
قيمة الموضع (2, 1): 4
1 2 3
4 5 6
7 8 10
هذه هي أساسيات التعامل مع المصفوفات في C++، ولكن يمكن استخدام مصفوفات ذات بُعدين أو أبعاد أعلى في اللغة.
أما بالنسبة لإدخالقيم في المصفوفات، يمكن استخدام العديد من الطرق. هنا بعض الطرق الشائعة:
1. إدخال القيم يدويًا:
يمكنك تعريف المصفوفة وإدخال القيم يدويًا باستخدام عبارات الرقم الصحيح (cin) في C++. على سبيل المثال:
#include <iostream>
using namespace std;
int main() {
int numbers[5];
// إدخال القيم بواسطة المستخدم
cout << "أدخل 5 أعداد:" << endl;
for (int i = 0; i < 5; i++) {
cin >> numbers[i];
}
// طباعة القيم المدخلة
cout << "الأعداد التي تم إدخالها:" << endl;
for (int i = 0; i < 5; i++) {
cout << numbers[i] << " ";
}
return 0;
}
2. إدخال القيم من المتغيرات أو الحسابات:
يمكنك أيضًا تعريف المصفوفة وتعيين القيم لكل عنصر من خلال استخدام متغيرات أو القيام بعمليات حسابية. على سبيل المثال:
#include <iostream>
using namespace std;
int main() {
int numbers[5];
int startValue = 10;
// تعيين القيم باستخدام متغير وعمليات حسابية
for (int i = 0; i < 5; i++) {
numbers[i] = startValue + i;
}
// طباعة القيم المعينة
for (int i = 0; i < 5; i++) {
cout << numbers[i] << " ";
}
return 0;
}
هذه بعض الأمثلة البسيطة لكيفية تعريف المصفوفات والتعامل معها في C++. يمكنك استخدام هذه المفاهيم كأساس للتوسع في تطبيقاتك وبرامجك الخاصة.
#الدرس_الثالث
الحلقات التكرارية في لغة البرمجة C++
الحلقات التكرارية (Loops) هي عبارة عن هياكل برمجية تُستخدم لتكرار تنفيذ كتلة معينة من الأوامر لعدد محدد من المرات أو إلى حين تحقق شرط معين. في لغة C++، تتوفر ثلاثة أنواع أساسية من الحلقات التكرارية وهي: for, while, do-while.
### 1. حلقة for (للتكرار المعروف بعدد المرات)
تُستخدم حلقة for لتكرار تنفيذ كتلة من الأوامر لعدد محدد من المرات يتم تعريفه مسبقًا. تتكون حلقة for من ثلاثة أقسام رئيسية:
التهيئة (initialization): يُستخدم هذا القسم لتجهيز متغير يسيطر على عدد مرات تنفيذ الحلقة.
شرط التوقف (condition): يُستخدم هذا القسم لتحديد الشرط الذي يؤدي إلى التوقف عن تنفيذ الحلقة.
التحديث (increment/decrement): يُستخدم هذا القسم لتحديث قيمة المتغير المتحكم بعد كل تكرار.
مثال:
مثال عربي :
فور(بداية التكرار ؛ نهاية التكرار ؛ معدل الزيادة او النقصان)
c++
// طباعة الأرقام من 1 إلى 5
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
شرح المثال:
المتغير i هو المتغير المتحكم، قيمته تُهيئ في البداية بـ 1 (initialization).
الشرط (i <= 5) يضمن استمرار التكرار طالما قيمة i أقل أو تساوي 5.
بعد كل تكرار، يتم تحديث قيمة i بإضافة 1 (increment).
### 2. حلقة while (للتكرار بشروط)
تُستخدم حلقة while لتكرار تنفيذ كتلة من الأوامر إلى حين تحقق شرط معين.
مثال:
c++
// قراءة أرقام من المستخدم إلى حين إدخال الرقم 0
int number;
while (number != 0) {
cout << "أدخل رقما: ";
cin >> number;
if (number != 0) {
cout << "لقد أدخلت الرقم: " << number << endl;
}
}
شرح المثال:
يتم تعريف متغير number لتخزين الرقم المدخل من المستخدم.
تستمر الحلقة طالما قيمة number مختلفة عن 0 (شرط التوقف).
داخل الحلقة، يُطلب من المستخدم إدخال رقم ويُخزن في المتغير number.
إذا لم يكن الرقم المدخل 0، يتم طباعة الرقم الذي أدخله المستخدم.
### 3. حلقة do-while (للتكرار بشروط مع تنفيذ على الأقل مرة)
تشبه حلقة do-while حلقة while، ولكن الفرق الرئيسي يكمن في تنفيذ كتلة الأوامر على الأقل مرة واحدة بغض النظر عن الشرط.
مثال:
لنفترض أننا نريد برمجة لعبة بسيطة تخمن فيها الرقم الصحيح الذي يفكر فيه المستخدم. إليك مثال مبسط باستخدام حلقة do-while:
c++
#include <iostream>
int main() {
int secretNumber = 7; // الرقم الصحيح المُراد تخمينه
int guess; // تخمين المستخدم
do {
cout << "أدخل تخمينك: ";
cin >> guess;
if (guess == secretNumber) {
cout << "مبروك! لقد نجحت في تخمين الرقم الصحيح!" << endl;
} else if (guess < secretNumber) {
cout << "تخمينك أصغر من الرقم الصحيح. حاول مرة أخرى!" << endl;
} else {
cout << "تخمينك أكبر من الرقم الصحيح. حاول مرة أخرى!" << endl;
}
} while (guess != secretNumber); // استمر في التكرار طالما لم يُصيب المستخدم الرقم الصحيح
return 0;
}
شرح المثال:
يتم تعريف رقم سري (secretNumber) في البداية.
يُطلب من المستخدم إدخال تخمينه في متغير guess.
باستخدام حلقة do-while، يتم مقارنة تخمين المستخدم بالرقم السري:
إذا تساوى التخمين مع الرقم السري، تنتهي الحلقة ويتم إظهار رسالة النجاح.
إذا كان التخمين أصغر من الرقم السري، يتم إظهار رسالة تُشير إلى ذلك.
إذا كان التخمين أكبر من الرقم السري، يتم إظهار رسالة تُشير إلى ذلك.
تستمر الحلقة في التكرار طالما لم يُصيب المستخدم الرقم الصحيح (guess != secretNumber).
#الدرس_الثاني شرح عن (cin و cout و if و else و elseif و switch )
في لغة سي++، تُستخدم الأوامر "cin" و "cout" لإدخال البيانات وإخراجها على التوالي. دعنا نشرح كل منهما بشكل منظّم وبسيط:
1. cin:
- تُستخدم لقراءة البيانات من مدخل البرنامج، عادةً لقراءة القيم المدخلة من لوحة المفاتيح.
- يمكن استخدام "cin" مع مختلف أنواع البيانات مثل الأعداد الصحيحة، الأعداد العشرية، النصوص، وغيرها.
- لاستخدام "cin"، يجب تضمين مكتبة الإدخال والإخراج "iostream" في البرنامج.
- يمكن استخدام ">>" لتوجيه القيم المدخلة من "cin" إلى المتغيرات المخصصة لتخزينها.
مثال:
#include <iostream>
int main() {
int age;
cout << "الرجاء إدخال ageك: ";
cin >> age;
cout << "ageك هو " << age << " سنة." << endl;
return 0;
}
2. cout:
- تُستخدم لعرض البيانات على الشاشة أو إخراجها إلى جهاز الإخراج، عادةً لعرض نتائج البرنامج.
- يمكن استخدام "cout" مع أنواع متعددة من البيانات مثل الأعداد الصحيحة، النصوص، وغيرها.
- لاستخدام "cout"، يجب تضمين مكتبة الإدخال والإخراج "iostream" في البرنامج.
- يمكن استخدام "<<" لتوجيه القيم التي ترغب في عرضها إلى "cout".
مثال:
#include <iostream>
int main() {
int number = 10;
string name = "أحمد";
cout << "الnumber هو: " << number << endl;
cout << "الname هو: " << name << endl;
return 0;
}
الآن، دعنا نتحدث عن العبارات الشرطية "if" و "else if" و "else" و"switch" ونشرح كيفية كتابتها ومتى يُستخدم كل منها:
1. if:
- يُستخدم لتنفيذ كتلة من الأوامر إذا تحقق شرط معين.
- إذا كان الشرط صحيحًا (يعتبر غير صفري)، يتم تنفيذ الكود الموجود داخل العبارة الشرطية "if".
- يمكن أيضًا استخدام "else" لتنفيذ كود إضافي إذا لم يتحقق الشرط.
مثال:
#include <iostream>
int main() {
int age;
cout << "الرجاء إدخال ageك: ";
cin >> age;
if (age >= 18){
cout << "أنت قادر على الاقتراع." << endl;
}
else {
cout << "عذرًا، لا يمكنك الاقتراع حتى تصل إلى سن الرشد." << endl;
}
return 0;
}
2. else if:
- يُستخدم لإضافة شرط إضافي إلى العبارة الشرطية "if".
- يتم التحقق من الشروط بالتسلسل، وعندما يتحقق شرط معين، يتم تنفيذ الكود المرتبط به.
- يمكن استخدام عدة عبارات "else if" بعد العبارة الشرطية "if".
مثال:
#include <iostream>
int main() {
int age;
cout << "الرجاء إدخال ageك: ";
cin >> age;
if (age < 18) {
cout << "عذرًا، لا يمكنك الاقتراع حتى تصل إلى سن الرشد." << endl;
}
else if (age >= 18 && age < 21) {
cout << "أنت قادر على الاقتراع، ولكن لا يمكنك شراء الكحول." << endl;
}
else {
cout << "أنت قادر على الاقتراع وشراء الكحول." << endl;
}
return 0;
}
3. switch:
- يُستخدم لتنفيذ كتلة من الأوامر بناءً على قيمة متغير محدد.
- يقارن المتغير المحدد بقيم مختلفة باستخدام عبارات case، وعندما يتم العثور على تطابق، يتم تنفيذ الكود المرتبط به.
- يمكن استخدام عبارة default لتنفيذ كود إذا لم يتم العثور على تطابق في أي حالة.
مثال:
#include <iostream>
int main() {
int Monthnum;
cout << "الرجاء إدخال number الشهر (1-12): ";
cin >> Monthnum;
switch (Monthnum) {
case 1:
cout << "يناير" << endl;
break;
case 2:
cout << "فبراير" << endl;
break;
case 3:
cout << "مارس" << endl;
break;
// وهكذا لباقي الشهور
default:
cout << "number الشهر غير صالح." << endl;
break;
}
return 0;
}
هذه هي أساسيات استخدام "cin" و "cout" وعبارات التحكم الشرطية في لغة سي++، ويمكنك استخدام هذه المبادئ لقراءة البيانات وعرضها واتخاذ القرارات المناسبة في برامجك.
