البرمجة و الذكاء الإصطناعي
11.8K subscribers
528 photos
10 videos
497 links
عالم البرمجة و الذكاء الإصطناعي
........
🛡💸📚💻
for ads :
@pro9tech
للإعلانات :
https://telega.io/c/artificial_AI_intelligence
Download Telegram
2. تثبيت Code::Blocks

🔸️ ما هو Code::Blocks؟

• يعتبر Code::Blocks بيئة تطوير متكاملة (IDE) مفتوحة المصدر تدعم لغات متعددة بما في ذلك C++.
• يتميز بكونه خفيف الوزن وسهل الاستخدام.

خطوات التثبيت:

1️⃣ تحميل Code::Blocks:

• انتقل إلى الموقع الرسمي لـ Code::Blocks.
• اختر الإصدار المناسب لنظام التشغيل الخاص بك (Windows، Linux، أو macOS).

2️⃣ تثبيت Code::Blocks:


• بعد تنزيل المثبت، قم بتشغيله.
• اتبع الخطوات التالية:

■ اختر اللغة (English).
■ وافق على شروط الترخيص.
■ اختر المكونات التي تريد تثبيتها (يفضل ترك الخيارات الافتراضية).
■ اختر مكان التثبيت (يفضل تركه كما هو).

3️⃣ تثبيت المترجم (Compiler):

• إذا كنت تستخدم Windows، قم بتنزيل MinGW (مترجم C++ لنظام Windows).
• انتقل إلى MinGW وقم بتنزيل المثبت.
• بعد التثبيت، تأكد من إضافة مسار المترجم إلى متغيرات البيئة (Environment Variables):

■ ابحث عن Edit the system environment variables في قائمة ابدأ.
■ اضغط على Environment Variables.
■ في قسم System variables، ابحث عن Path واضغط على Edit.
■ أضف المسار إلى مجلد bin داخل مجلد MinGW (مثال: C:\MinGW\bin).

4️⃣ تكوين Code::Blocks لاستخدام المترجم:

• افتح Code::Blocks.
• انتقل إلى Settings > Compiler.
• في علامة التبويب Selected compiler، اختر GNU GCC Compiler.
• اضغط على Toolchain executables وتأكد من أن المسار يشير إلى مجلد bin داخل MinGW

5️⃣ إنشاء مشروع جديد:

• اختر File > New > Project.
• اختر Console Application واضغط على Go.
• اختر C++ كلغة.
• قم بتسمية المشروع واختيار مكان الحفظ.

6️⃣ كتابة وتشغيل البرنامج:

• اكتب الكود التالي في ملف main.cpp

#include <iostream>
using namespace std;

int main() {
cout << "Hello, World!" << endl;
return 0;
}

• اضغط على F9 لبناء وتشغيل البرنامج.

3. مقارنة بين Visual Studio و Code::Blocks

🔸️ الميزة : التعقيد

• برنامج Visual Studio : أكثر تعقيدًا مع واجهة غنية بالميزات.
• برنامج Code::Blocks : أبسط وأخف وزنًا.

🔸️ الميزة : الدعم

• برنامج Visual Studio : يدعم العديد من اللغات والمنصات.
• برنامج Code::Blocks : يركز على C/C++ بشكل أساسي.

🔸️ الميزة : الأداء

• برنامج Visual Studio : يتطلب موارد نظام أعلى.
• برنامج Code::Blocks : خفيف الوزن ويعمل بسلاسة على الأجهزة الضعيفة.

🔸️ الميزة : التكلفة

• برنامج Visual Studio : المجتمع Community Edition مجاني
• برنامج Code::Blocks : مفتوح المصدر ومجاني بالكامل.

🔸️ الميزة : الإستخدام الشائع

• برنامج Visual Studio : مشاريع كبيرة ومعقدة.
• برنامج Code::Blocks : مشاريع صغيرة إلى متوسطة الحجم.

4. الخلاصة العامة

• يعتبر Visual Studio هو الخيار الأفضل للمشاريع الكبيرة والمعقدة، خاصة إذا كنت تعمل على نظام Windows.
• بينما يعتبر Code::Blocks هو خيار رائع للمبتدئين أو للمشاريع الصغيرة، وهو يعمل على أنظمة متعددة.

#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الثالث_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
@artificial_AI_intelligence

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
12
1. تركيب البرنامج الأساسي في C++

بنية البرنامج الأساسي:

#include <iostream>  // مكتبة الإدخال والإخراج
using namespace std; // لتجنب تكرار كتابة std::

int main() { // الدالة الرئيسية
cout << "Hello, World!" << endl; // طباعة جملة "Hello, World!"
return 0; // إشارة إلى أن البرنامج انتهى بنجاح
}

2. شرح كل جزء من الكود

1️⃣  #include <iostream>

الغرض: تضمين مكتبة الإدخال والإخراج (iostream).

التفاصيل:

#include 
هي تعليمة للمعالج المسبق (Preprocessor) لتضمين ملفات الرأس (Header Files).

<iostream> 
هي المكتبة التي تحتوي على الدوال الأساسية للإدخال (cin) والإخراج (cout).

2️⃣ using namespace std;

الغرض: لتجنب تكرار كتابة std:: قبل استخدام الدوال مثل cout و cin.

التفاصيل:

■ namespace 
هي مساحة اسم تحتوي على دوال ومتغيرات.
■ std 
هي المساحة الافتراضية التي تحتوي على دوال المكتبة القياسية في C++.

3️⃣ int main()

الغرض: تعريف الدالة الرئيسية للبرنامج.

التفاصيل:

︎ int 
هو نوع الإرجاع للدالة (عدد صحيح).
︎ main() 
هي الدالة التي يبدأ منها تنفيذ البرنامج.

︎ يجب أن تحتوي كل برنامج C++ على دالة main().

4️⃣ { }

الغرض: تحديد بداية ونهاية كتلة الكود الخاصة بالدالة main().

التفاصيل:
- كل ما يكتب داخل { } يعتبر جزءًا من الدالة main().

5️⃣ cout << "Hello, World!" << endl;

الغرض: طباعة جملة "Hello, World!" على الشاشة
.
التفاصيل:

︎ cout 
هو كائن الإخراج (Output Object) يُستخدم لإرسال البيانات إلى الشاشة.

︎ << هو عامل الإرسال (Insertion Operator) يُستخدم لإرسال البيانات إلى cout.

︎ "Hello, World!" 
هي الجملة التي نريد طباعتها.

︎ endl 
يُستخدم لإدخال سطر جديد (New Line) بعد الطباعة.

6️⃣ return 0;

الغرض: إرجاع قيمة من الدالة main() للإشارة إلى أن البرنامج انتهى بنجاح.

التفاصيل:

︎ return 0; 
يُستخدم للإشارة إلى أن البرنامج انتهى بدون أخطاء.

︎ القيمة 0 تعني نجاح التنفيذ، بينما القيم الأخرى تشير إلى وجود أخطاء.

3. كتابة وتشغيل البرنامج

الخطوات:

1- افتح بيئة التطوير (IDE) التي قمت بتثبيتها (Visual Studio أو Code::Blocks).

2- قم بإنشاء مشروع جديد (New Project) واختر Console Application.

3- اكتب الكود التالي في ملف main.cpp
#include <iostream>
using namespace std;

int main() {
cout << "Hello, World!" << endl;
return 0;
}

4- احفظ الملف.
5- قم ببناء (Build) وتشغيل (Run) البرنامج:

• في Visual Studio: اضغط على Ctrl + F5 لتشغيل البرنامج دون تصحيح.

• في Code::Blocks: اضغط على F9 لبناء وتشغيل البرنامج.

النتيجة المتوقعة:
Hello, World!


4. شرح إضافي

ماذا يحدث عند تشغيل البرنامج؟

1 - يتم تنفيذ الدالة main().
2- يتم إرسال الجملة "Hello, World!" إلى cout لعرضها على الشاشة.
3 - يتم إدخال سطر جديد باستخدام endl.
4 - يتم إرجاع القيمة 0 للإشارة إلى أن البرنامج انتهى بنجاح.

تعديل البرنامج:

• يمكنك تغيير الجملة "Hello, World!" إلى أي جملة أخرى، مثل:
cout << "Welcome to C++ Programming!" << endl;

• يمكنك أيضًا طباعة أكثر من جملة:
cout << "Hello, World!" << endl;
cout << "This is my first C++ program." << endl;


5. الخلاصة العامة

︎ البرنامج الأساسي في C++ يتكون من:

• تضمين المكتبات (#include).
• استخدام مساحة الاسم (using namespace std;).
• الدالة الرئيسية (int main()).
• كود الإخراج (cout).
• إرجاع القيمة (return 0;).

︎ يمكنك كتابة وتشغيل برنامجك الأول باستخدام أي بيئة تطوير (IDE) مثل Visual Studio أو Code::Blocks.


#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الرابع_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا 👇
https://t.me/artificial_AI_intelligence

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
👍2
2. المعرفات (Identifiers)

ما هي المعرفات (Identifiers)؟

︎ المعرفات هي أسماء يُعرف بها المبرمج العناصر المختلفة في البرنامج مثل المتغيرات، الدوال، الكلاسات، الكائنات، وغيرها.

︎ يجب أن تتبع المعرفات قواعد معينة في التسمية.

🔮 قواعد تسمية المعرفات:

1 - تبدأ بحرف أو شرطة سفلية (_):

كتابة صحيحة: 👇

name, _age, totalScore.


كتابة خاطئة:👇

 1name, @age.


2 - يمكن أن تحتوي على أحرف، أرقام، وشرطة سفلية (_):

كتابة صحيحة: 👇

user_name, score1, total_amount


كتابة خاطئة: 👇

user-name, total$amount.


3️⃣ لا يمكن أن تحتوي على مسافات أو رموز خاصة:

كتابة صحيحة : 👇

firstName, lastName.


كتابة خاطئة: 👇

first name, last-name.


4️⃣ لا يمكن أن تكون كلمة مفتاحية:

كتابة صحيحة : 👇

myClass, calculateSum


كتابة خاطئة : 👇
int, class.


5️⃣ حساسة لحالة الأحرف (Case-Sensitive):

• Name و name يعتبران كتابتين مختلفتين.

🔸️ أمثلة على الكتابة الصحيحة:

age, totalScore, _count, MAX_VALUE, calculateArea.


🔸️ أمثلة على الكتابة غير الصحيحة:

︎ 1stPlace (يبدأ برقم).
︎ my-name (يحتوي على رمز خاص).
︎ int (كلمة مفتاحية).

3. الفرق بين الكلمات المفتاحية والمعرفات

🔸️ الميزة : الغرض

الكلمات المفتاحية (Keywords) : لها معنى محدد في اللغة.
المعرفات (Identifiers) : تُستخدم لتسمية العناصر في البرنامج.

🔸️ الميزة : التعديل

الكلمات المفتاحية (Keywords) : لا يمكن تغييرها أو استخدامها كمعرف.
المعرفات (Identifiers) : يمكن تعريفها من قبل المبرمج.

🔸️ الميزة : الأحرف

الكلمات المفتاحية (Keywords) : دائمًا بأحرف صغيرة.
المعرفات (Identifiers) : يمكن أن تحتوي على أحرف كبيرة وصغيرة.

🔸️ الميزة : الأمثلة

الكلمات المفتاحية (Keywords) : int, if, return, class
المعرفات (Identifiers) : age, totalScore, calculateArea

4. نصائح لاختيار Identifiers

🔹️ استخدام أسماء ذات معنى:

• اختر أسماء تعبر عن الغرض من المتغير أو الدالة.
• مثال: totalScore أفضل من ts

🔹️ استخدام تنسيق متسق:

• يمكن استخدام CamelCase 
(مثل firstName) أو snake_case (مثل first_name).

🔹️ تجنب الأسماء الغامضة:

• مثال: x, y, temp قد تكون غامضة، بينما width, height, area أكثر وضوحًا.

🔹️ عدم البدء بشرطة سفلية مزدوجة (__):

• الأسماء التي تبدأ بشرطة سفلية مزدوجة محجوزة للاستخدام الداخلي في اللغة.

5. أمثلة عملية لإستخدام المعرفات مع المتغيرات والدوال

🔸️ مثال 1: استخدام المعرفات في تعريف المتغيرات
#include <iostream>
using namespace std;

int main() {
int age = 25; // "age" معرف
double totalScore = 95.5; // "totalScore" معرف
string firstName = "Ali"; // "firstName" معرف

cout << "Name: " << firstName << ", Age: " << age << ", Score: " << totalScore << endl;
return 0;
}



🔸️ مثال 2: استخدام المعرفات في تعريف الدوال


#include <iostream>
using namespace std;

// "calculateArea" معرف للدالة
double calculateArea(double width, double height) {
return width * height;
}

int main() {
double area = calculateArea(5.0, 10.0); // "area" معرف
cout << "Area: " << area << endl;
return 0;
}


6. الخلاصة العامة

🔹️ الكلمات المفتاحية: كلمات محجوزة في اللغة ولا يمكن استخدامها كمعرف.

🔸️ المعرفات : أسماء يُعرف بها المبرمج العناصر في البرنامج، ويجب أن تتبع قواعد تسمية محددة.

🔹️ اختيار أسماء ذات معنى للمعرف يجعل الكود أكثر قابلية للقراءة والصيانة.



#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الخامس_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
👍51
1. ما هي المتغيرات (Variables)؟

🔸️ المتغيرات هي أماكن في الذاكرة تُستخدم لتخزين البيانات أثناء تنفيذ البرنامج.

لكل متغير:

اسم (Identifier): يُستخدم للوصول إلى البيانات المخزنة.

نوع (Data Type): يحدد نوع البيانات التي يمكن تخزينها (مثل أعداد صحيحة، أعداد عشرية، نصوص، إلخ).

قيمة (Value): البيانات الفعلية المخزنة في المتغير.

2. تعريف المتغيرات في C++

🔹️ صيغة تعريف المتغير:

نوع_البيانات اسم_المتغير;


أو مع تعيين قيمة ابتدائية:

نوع_البيانات اسم_المتغير = القيمة;


🔰 أمثلة:

int age = 25;          // متغير من نوع int (عدد صحيح)
double salary = 1500.5; // متغير من نوع double (عدد عشري)
char grade = 'A'; // متغير من نوع char (حرف واحد)
string name = "Ali"; // متغير من نوع string (نص)
bool isStudent = true; // متغير من نوع bool (قيمة منطقية)


3. أنواع البيانات الأساسية في C++

🔸️ النوع : int
• الوصف :
أعداد صحيحة
• الحجم (بايت) :
4
• المجال :
من -2,147,483,648 إلى 2,147,483,647

🔹️ النوع : float
    • الوصف : أعداد عشرية (فاصلة عائمة)
    • الحجم (بايت) :  4
    • المجال : حوالي 7 أرقام عشرية

🔸️ النوع : double
    • الوصف : أعداد عشرية بدقة أعلى
    • الحجم (بايت) :  8
    • المجال : حوالي 15 رقمًا عشريًا

🔹️ النوع : char
    • الوصف : حرف واحد
    • الحجم (بايت) :  1
    • المجال : من -128 إلى 127 أو 0 إلى 255

🔸️ النوع : bool
    • الوصف : قيمة منطقية (صحيح أو خطأ)
    • الحجم (بايت) :  1
    • المجال : true أو false

🔹️ النوع : string
    • الوصف : سلسلة نصية (نص)
    • الحجم (بايت) :  متغير
    • المجال : يعتمد على طول النص

4. إستخدام المتغيرات في لغة C++

🔰 أمثلة عملية:

🔮 مثال 1: تعريف وتعيين قيم للمتغيرات

#include <iostream>
using namespace std;

int main() {
int age = 25; // تعريف متغير age وتعيين قيمة 25
double salary = 1500.75; // تعريف متغير salary وتعيين قيمة 1500.75
char grade = 'A'; // تعريف متغير grade وتعيين قيمة 'A'
string name = "Ali"; // تعريف متغير name وتعيين قيمة "Ali"
bool isStudent = true; // تعريف متغير isStudent وتعيين قيمة true

cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "Salary: " << salary << endl;
cout << "Grade: " << grade << endl;
cout << "Is Student: " << isStudent << endl;

return 0;
}


🔮 مثال 2 : تعديل قيم المتغيرات


#include <iostream>
using namespace std;

int main() {
int score = 90; // تعريف متغير score وتعيين قيمة 90
cout << "Original Score: " << score << endl;

score = 95; // تعديل قيمة المتغير score إلى 95
cout << "Updated Score: " << score << endl;

return 0;
}


🔮 مثال 3 : العمليات الحسابية باستخدام المتغيرات

#include <iostream>
using namespace std;

int main() {
int a = 10, b = 20; // تعريف متغيرين a و b
int sum = a + b; // حساب مجموع a و b وتخزينه في sum

cout << "Sum of " << a << " and " << b << " is: " << sum << endl;

return 0;
}


5. نصائح لاستخدام المتغيرات


1️⃣ اختيار أسماء ذات معنى:

︎ مثال: totalScore أفضل من ts

2️⃣ تهيئة المتغيرات عند تعريفها:

︎ مثال: int age = 0; بدلاً من int age;

3️⃣ تجنب استخدام أسماء متشابهة:

︎ مثال: firstName و first_name قد يسببان ارتباكًا.

4️⃣ استخدام النوع المناسب للبيانات:

︎ مثال: استخدم int للأعداد الصحيحة و double للأعداد العشرية.

6. الخلاصة العامة في المتغيرات

المتغيرات تُستخدم لتخزين البيانات في الذاكرة أثناء تنفيذ البرنامج.

• لكل متغير نوع يحدد نوع البيانات التي يمكن تخزينها.

• يمكن تعريف المتغيرات وتعيين قيم لها، ثم استخدامها في العمليات الحسابية أو عرضها على الشاشة.

#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_السادس_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
5👍1👏1
1. النوع int (عدد صحيح)

🔰 الوصف:

• يُستخدم لتخزين الأعداد الصحيحة (بدون كسور).
• الحجم: 4 بايت (32 بت).
• المجال: من -2,147,483,648 إلى 2,147,483,647.

🔮 أمثلة:

#include <iostream>
using namespace std;

int main() {
int age = 25; // تعريف متغير age من نوع int
int temperature = -10; // يمكن أن تكون القيمة سالبة

cout << "Age: " << age << endl;
cout << "Temperature: " << temperature << endl;

return 0;
}


2. النوع float (عدد عشري بدقة منخفضة)

🔰 الوصف:

• يُستخدم لتخزين الأعداد العشرية (مع كسور).
• الحجم: 4 بايت (32 بت).
• المجال : حوالي 7 أرقام عشرية.

🔮 أمثلة:

#include <iostream>
using namespace std;

int main() {
float pi = 3.14f; // تعريف متغير pi من نوع float
float temperature = 98.6f;

cout << "Pi: " << pi << endl;
cout << "Body Temperature: " << temperature << endl;

return 0;
}

⚠️ ملاحظة:

• يُفضل إضافة الحرف f بعد القيمة العشرية للإشارة إلى أنها من نوع float (مثل 3.14f).

3. النوع double (عدد عشري بدقة عالية)

🔰 الوصف:

• يُستخدم لتخزين الأعداد العشرية بدقة أعلى من float.
• الحجم : 8 بايت (64 بت).
• المجال : حوالي 15 رقمًا عشريًا.

🔮 أمثلة:

#include <iostream>
using namespace std;

int main() {
double pi = 3.141592653589793; // تعريف متغير pi من نوع double
double distance = 123456789.123456789;

cout << "Pi: " << pi << endl;
cout << "Distance: " << distance << endl;

return 0;
}

⚠️ ملاحظة:

• يعتبر double هو النوع الافتراضي للأعداد العشرية في C++.

4. النوع char (حرف واحد)

🔰 الوصف:

• يُستخدم لتخزين حرف واحد.
• الحجم : 1 بايت (8 بت).
• المجال : من -128 إلى 127 أو من 0 إلى 255.

🔮 أمثلة:

#include <iostream>
using namespace std;

int main() {
char grade = 'A'; // تعريف متغير grade من نوع char
char symbol = '$';

cout << "Grade: " << grade << endl;
cout << "Symbol: " << symbol << endl;

return 0;
}

⚠️ ملاحظة:

• يتم تخزين الحرف بين علامتي تنصيص مفردة ('A').

5. النوع bool (قيمة منطقية)

🔰 الوصف:

• يُستخدم لتخزين القيم
• المنطقية : true (صحيح) أو false (خطأ).
• الحجم : 1 بايت (8 بت).
• القيمة : true (1) أو false (0).

🔮 أمثلة:

#include <iostream>
using namespace std;

int main() {
bool isStudent = true; // تعريف متغير isStudent من نوع bool
bool isRaining = false;

cout << "Is Student: " << isStudent << endl;
cout << "Is Raining: " << isRaining << endl;

return 0;
}

⚠️ ملاحظة:

• عند طباعة القيم المنطقية، يتم عرض 1 لـ true و 0 لـ false.

7. أمثلة عملية متكاملة لفهم أنواع البيانات في لغة ++C

🔸️ مثال 1: استخدام أنواع البيانات المختلفة

#include <iostream>
using namespace std;

int main() {
int age = 25;
float weight = 68.5f;
double height = 175.5;
char gender = 'M';
bool isStudent = true;

cout << "Age: " << age << endl;
cout << "Weight: " << weight << endl;
cout << "Height: " << height << endl;
cout << "Gender: " << gender << endl;
cout << "Is Student: " << isStudent << endl;

return 0;
}


🔸️ مثال 2: العمليات الحسابية مع أنواع البيانات

#include <iostream>
using namespace std;

int main() {
int a = 10, b = 20;
float x = 10.5f, y = 20.5f;
double pi = 3.14159;

int sumInt = a + b;
float sumFloat = x + y;
double area = pi * 5 * 5; // حساب مساحة دائرة نصف قطرها 5

cout << "Sum of integers: " << sumInt << endl;
cout << "Sum of floats: " << sumFloat << endl;
cout << "Area of circle: " << area << endl;

return 0;
}

8. الخلاصة العامة

int: للأعداد الصحيحة.
float: للأعداد العشرية بدقة منخفضة.
double: للأعداد العشرية بدقة عالية.
char: لتخزين حرف واحد.
bool: لتخزين القيم المنطقية (true أو false).

#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_السابع_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
3
1. ما هي الثوابت (Constants)؟

🔸️ الثوابت هي قيم ثابتة لا يمكن تغييرها أثناء تنفيذ البرنامج.

🔸️ تُستخدم الثوابت لتخزين القيم التي لا تتغير، مثل القيم الرياضية (π = 3.14) أو الإعدادات الثابتة.

2. طرق تعريف الثوابت في C++

1️⃣ الطريقة الأولى:

🔰 استخدام  
#define

#define 
هي تعليمة للمعالج المسبق (Preprocessor) تُستخدم لتعريف ثوابت نصية (Macros).

💎 صيغة الاستخدام:

#define اسم_الثابت القيمة


⚠️ ملاحظات:

• لا تحتاج إلى تحديد نوع البيانات.
• يتم استبدال اسم الثابت بالقيمة في جميع أنحاء الكود قبل الترجمة.

🔮 مثال:

#include <iostream>
using namespace std;

#define PI 3.14159
#define MAX_VALUE 100

int main() {
cout << "Value of PI: " << PI << endl;
cout << "Max Value: " << MAX_VALUE << endl;

return 0;
}


2️⃣ الطريقة الثانية:

🔰 استخدام كلمة const


const
 هي كلمة مفتاحية تُستخدم لتعريف ثوابت ذات نوع محدد.

💎 صيغة الاستخدام:
const نوع_البيانات اسم_الثابت = القيمة;

⚠️ ملاحظات:

• يجب تحديد نوع البيانات.
• يتم التحقق من نوع البيانات أثناء الترجمة، مما يجعلها أكثر أمانًا من #define.

🔮 مثال:

#include <iostream>
using namespace std;

int main() {
const double PI = 3.14159;
const int MAX_VALUE = 100;

cout << "Value of PI: " << PI << endl;
cout << "Max Value: " << MAX_VALUE << endl;

return 0;
}


3. الفرق بين #define و const

🔸️ الميزة : نوع البيانات

الثابت (#define):  لا يحتاج إلى تحديد نوع البيانات.
الثابت (const) : يجب تحديد نوع البيانات.

🔹️ الميزة : التحقق من النوع

الثابت (#define): لا يتم التحقق من النوع.
الثابت (const) : يتم التحقق من النوع أثناء الترجمة.

🔸️ الميزة : النطاق (Scope)

الثابت (#define): يعمل على مستوى الملف ككل.
الثابت (const) : يعمل ضمن النطاق الذي تم تعريفه فيه.

🔹️ الميزة : الأمان

الثابت (#define): أقل أمانًا بسبب عدم التحقق من النوع.
الثابت (const) : أكثر أمانًا بسبب التحقق من النوع

🔸️ الميزة : الاستخدام الشائع

الثابت (#define): يُستخدم للقيم البسيطة والنصوص.
الثابت (const) : يُستخدم للثوابت ذات النوع المحدد.

🔰 4. أمثلة عملية لإستخدام الثوابت

🔮 مثال 1: استخدام #define

#include <iostream>
using namespace std;

#define TAX_RATE 0.15
#define COMPANY_NAME "Tech Pro3dev"

int main() {
double salary = 5000.0;
double tax = salary * TAX_RATE;

cout << "Company: " << COMPANY_NAME << endl;
cout << "Salary: " << salary << endl;
cout << "Tax: " << tax << endl;

return 0;
}


🔮 مثال 2: استخدام Const

#include <iostream>
using namespace std;

int main() {
const double TAX_RATE = 0.15;
const string COMPANY_NAME = "Tech Pro3dev";

double salary = 5000.0;
double tax = salary * TAX_RATE;

cout << "Company: " << COMPANY_NAME << endl;
cout << "Salary: " << salary << endl;
cout << "Tax: " << tax << endl;

return 0;
}


5. نصائح لاستخدام الثوابت

1️⃣ اختيار الأسماء الوصفية:

︎ مثال: TAX_RATE أفضل من TR

2️⃣ استخدام const بدلاًمن #define عند الإمكان:

︎ يعتبر const أكثر أمانًا بسبب التحقق من نوع البيانات.

3️⃣ تجنب تغيير قيمة الثوابت:

︎ الثوابت يجب أن تبقى كما هي طوال فترة تنفيذ البرنامج.

6. الخلاصة العامة من درس الثوابت

الثوابت تُستخدم لتخزين القيم الثابتة التي لا تتغير أثناء تنفيذ البرنامج.

• يمكن تعريف الثوابت باستخدام #define 
أو const.

• يُفضل استخدام const بسبب التحقق من نوع البيانات وزيادة الأمان.

#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الثامن_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
👍2
1. ما هي التعليقات (Comments)؟

🔸️ التعليقات هي نصوص يُضيفها المبرمج إلى الكود لتوضيح كيفية عمل البرنامج أو لتقديم ملاحظات.

🔹️ يتم تجاهل التعليقات تمامًا من قبل المترجم (Compiler) ولا تؤثر على تنفيذ البرنامج.

2. أنواع التعليقات في C++

1️⃣ التعليقات ذات السطر الواحد (Single-Line Comments)

• تبدأ بعلامة // وتنتهي بنهاية السطر.

🔰 صيغة الاستخدام:

// هذا تعليق على سطر واحد


🔮 مثال:

#include <iostream>
using namespace std;

int main() {
// هذا تعليق يوضح أن المتغير age سيخزن العمر
int age = 25;

cout << "Age: " << age << endl; // طباعة العمر

return 0;
}

2️⃣ التعليقات متعددة الأسطر (Multi-Line Comments)

• تبدأ بعلامة /* وتنتهي بعلامة */.

🔰 صيغة الاستخدام:

/*
هذا تعليق
يمكن أن يمتد على عدة أسطر
*/


🔮 مثال:

#include <iostream>
using namespace std;

int main() {
/*
هذا تعليق متعدد الأسطر
يوضح أن المتغيرات التالية تخزن
العمر والراتب
*/
int age = 25;
double salary = 1500.75;

cout << "Age: " << age << ", Salary: " << salary << endl;

return 0;
}


3. أهمية التعليقات في لغة ++C

🔹️ توضيح الكود


• التعليقات تساعد في توضيح الغرض من الكود وكيفية عمله.

🔮 مثال:
int result = a + b;  // جمع القيمتين a و b وتخزين النتيجة في result


🔸️  تسهيل الصيانة

• التعليقات تجعل الكود أكثر قابلية للقراءة والفهم، مما يسهل صيانته وتحديثه لاحقًا.

🔮 مثال:

// حساب مساحة الدائرة
double area = PI * radius * radius;


🔹️ التواصل مع المطورين الآخرين

• التعليقات تساعد المطورين الآخرين على فهم الكود بسرعة، خاصة في المشاريع الكبيرة.

🔮 مثال:

// هذا الكود يحسب الضريبة بناءً على النسبة المحددة
double tax = salary * TAX_RATE;


🔸️ تعطيل أجزاء من الكود (Debugging)

• يمكن استخدام التعليقات لتعطيل أجزاء من الكود مؤقتًا أثناء عملية التصحيح (Debugging).

🔮 مثال:
// cout << "Debugging: " << x << endl;  // تم تعطيل هذا السطر للتصحيح


4. نصائح لكتابة التعليقات

كن واضحًا وموجزًا:

• اكتب تعليقات واضحة وموجزة دون إطالة غير ضرورية.

تجنب التعليقات الواضحة (المفصلة):

• لا تكتب تعليقات توضح ما هو واضح من الكود.

🔮 مثال سيء:

int x = 5;  // تعيين القيمة 5 للمتغير x


استخدم التعليقات لشرح "لماذا" وليس "ماذا":

• ركز على شرح سبب كتابة الكود بهذه الطريقة بدلاً من وصف ما يفعله الكود.

🔮 مثال جيد:

// استخدام خوارزمية سريعة بسبب حجم البيانات الكبير
sort(data, data + size);


︎ تحديث التعليقات عند تغيير الكود
:

• تأكد من تحديث التعليقات عند تعديل الكود لتجنب التضارب.

5. أمثلة عملية

🔮 مثال 1: توضيح الكود

#include <iostream>
using namespace std;

int main() {
// تعريف متغيرات لتخزين العمر والراتب
int age = 25;
double salary = 1500.75;

// حساب الضريبة بناءً على النسبة المحددة
const double TAX_RATE = 0.15;
double tax = salary * TAX_RATE;

// طباعة النتائج
cout << "Age: " << age << endl;
cout << "Salary: " << salary << endl;
cout << "Tax: " << tax << endl;

return 0;
}


🔮 مثال 2: تعطيل أجزاء من الكود


#include <iostream>
using namespace std;

int main() {
int x = 10;
int y = 20;

// cout << "x: " << x << endl; // تم تعطيل هذا السطر للتصحيح
cout << "y: " << y << endl;

return 0;
}


6. الخلاصة العامة لإستخدام التعليقات

التعليقات تُستخدم لتوضيح الكود، تسهيل الصيانة، والمساعدة في عملية التصحيح.

• هناك نوعان من التعليقات في C++: 
- تعليقات ذات سطر واحد (//)
- تعليقات متعددة الأسطر (/* ... */).

• كتابة تعليقات واضحة وموجزة يجعل الكود أكثر قابلية للقراءة والفهم.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_التاسع_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
1. ما هو الكائن cin؟

• الكائن cin هو كائن الإدخال (Input Object) المُعرَّف في مكتبة <iostream>.

• يُستخدم لقراءة البيانات من المستخدم عبر لوحة المفاتيح (Standard Input).

• يعمل مع أنواع البيانات المختلفة مثل int, double, char, string, إلخ.

2. صيغة استخدام cin

💎 الصيغة العامة:
cin >> متغير;


• العامل << هو عامل الاستخراج (Extraction Operator) ويُستخدم لقراءة البيانات من cin وتخزينها في المتغير.

3. قراءة أنواع البيانات المختلفة باستخدام cin

🔸️ 1. قراءة الأعداد الصحيحة (int)

#include <iostream>
using namespace std;

int main() {
int age;
cout << "Enter your age: ";
cin >> age; // قراءة العمر من المستخدم
cout << "You are " << age << " years old." << endl;

return 0;
}


🔹️ 2. قراءة الأعداد العشرية (double)

#include <iostream>
using namespace std;

int main() {
double salary;
cout << "Enter your salary: ";
cin >> salary; // قراءة الراتب من المستخدم
cout << "Your salary is: " << salary << endl;

return 0;
}


🔸️ 3. قراءة الحروف (char)

#include <iostream>
using namespace std;

int main() {
char grade;
cout << "Enter your grade: ";
cin >> grade; // قراءة الحرف من المستخدم
cout << "Your grade is: " << grade << endl;

return 0;
}


🔹️ 4. قراءة النصوص (string)

#include <iostream>
using namespace std;

int main() {
string name;
cout << "Enter your name: ";
cin >> name; // قراءة الاسم من المستخدم
cout << "Hello, " << name << "!" << endl;

return 0;
}


4. قراءة عدة مدخلات في سطر واحد

يمكنك قراءة عدة مدخلات في سطر واحد باستخدام cin مع عامل الاستخراج >> عدة مرات.

🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int age;
double salary;
string name;

cout << "Enter your name, age, and salary: ";
cin >> name >> age >> salary; // قراءة الاسم، العمر، والراتب في سطر واحد

cout << "Name: " << name << ", Age: " << age << ", Salary: " << salary << endl;

return 0;
}


5. مشكلة cin مع النصوص التي تحتوي على مسافات

المشكلة في cin :

مشكلة الكائن cin يتوقف عند أول مسافة، مما يعني أنه لا يمكنه قراءة النصوص التي تحتوي على مسافات.

🔮 مثال:

#include <iostream>
using namespace std;

int main() {
string fullName;
cout << "Enter your full name: ";
cin >> fullName; // سيقرأ فقط الجزء الأول من الاسم
cout << "Your full name is: " << fullName << endl;

return 0;
}


الحل: استخدام getline

الدالة getline تستخدم لقراءة سطر كامل من النص، بما في ذلك المسافات.

🔮 مثال:

#include <iostream>
using namespace std;

int main() {
string fullName;
cout << "Enter your full name: ";
getline(cin, fullName); // قراءة الاسم الكامل
cout << "Your full name is: " << fullName << endl;

return 0;
}


6. تنظيف (Buffer) بعد استخدام cin

المشكلة:

بعد استخدام cin، قد يتبقى حرف السطر الجديد (n\) فيBuffer ، مما يؤثر على getline.

الحل: استخدام cin.ignore()

الجملة cin.ignore() تُستخدم لتجاهل الأحرف المتبقية فيBuffer.

🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int age;
string name;

cout << "Enter your age: ";
cin >> age;

cin.ignore(); // تنظيف

cout << "Enter your name: ";
getline(cin, name);

cout << "Age: " << age << ", Name: " << name << endl;

return 0;
}

7. أمثلة عملية لفهم الكائن cin

🔮 مثال 1: برنامج بسيط لحساب مجموع عددين

#include <iostream>
using namespace std;

int main() {
int num1, num2;

cout << "Enter the first number: ";
cin >> num1;

cout << "Enter the second number: ";
cin >> num2;

int sum = num1 + num2;
cout << "Sum: " << sum << endl;

return 0;
}

🔮 مثال 2: برنامج لقراءة وعرض بيانات المستخدم

#include <iostream>
using namespace std;
int main() {
string name;
int age;
double height;

cout << "Enter your name: ";
getline(cin, name);

cout << "Enter your age: ";
cin >> age;

cout << "Enter your height (in meters): ";
cin >> height;
cout << "Name: " << name << ", Age: " << age << ", Height: " << height << " meters" << endl;

return 0;
}
🔥2
1. ما هو الكائن cout؟

• الكائن cout هو كائنالإخراج (Output Object) المُعرَّف في مكتبة <iostream>.

• يُستخدم لإرسال البيانات إلى الشاشة (Standard Output).

• يعمل مع أنواع البيانات المختلفة مثل int, double, char, string, إلخ.

2. صيغة استخدام cout

💎 الصيغة العامة:
cout << بيانات_للإخراج;


• العامل >> هو عامل الإرسال (Insertion Operator) ويُستخدم لإرسال البيانات إلى cout.


3. إخراج أنواع البيانات المختلفة باستخدام cout

🔸️ 1. إخراج الأعداد الصحيحة (int)

#include <iostream>
using namespace std;

int main() {
int age = 25;
cout << "Age: " << age << endl; // طباعة العمر
return 0;
}


🔹️ 2. إخراج الأعداد العشرية (double)
#include <iostream>
using namespace std;

int main() {
double salary = 1500.75;
cout << "Salary: " << salary << endl; // طباعة الراتب
return 0;
}

🔸️ 3. إخراج الحروف (char)

#include <iostream>
using namespace std;

int main() {
char grade = 'A';
cout << "Grade: " << grade << endl; // طباعة الحرف
return 0;
}

🔹️ 4. إخراج النصوص (string)

#include <iostream>
using namespace std;

int main() {
cout << "Hello, World!" << endl; // طباعة جملة "Hello, World!"
return 0;
}


4. إخراج عدة مدخلات في سطر واحد

يمكنك إخراج عدة بيانات في سطر واحد باستخدام cout مع عامل الإرسال >> عدة مرات.

🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int age = 25;
double salary = 1500.75;
string name = "Ali";

cout << "Name: " << name << ", Age: " << age << ", Salary: " << salary << endl;

return 0;
}


5. استخدام endl و n\ لإدخال سطر جديد

 endl

ال endl يُستخدم لإدخال سطر جديد (New Line) ويفرغ (Buffer) أيضًا.

🔮 مثال
#include <iostream>
using namespace std;

int main() {
cout << "Line 1" << endl;
cout << "Line 2" << endl;
return 0;
}

\n

ال \n يُستخدم لإدخال سطر جديد دون تفريغ.

🔮 مثال


#include <iostream>
using namespace std;

int main() {
cout << "Line 1\n";
cout << "Line 2\n";
return 0;
}


6. تنسيق الإخراج

🔹️ . تحديد عدد الأرقام العشرية

يمكنك استخدام fixed و setprecision من مكتبة <iomanip> لتحديد عدد الأرقام العشرية.

🔮 مثال:

#include <iostream>
#include <iomanip> // لتضمين مكتبة التنسيق
using namespace std;

int main() {
double pi = 3.141592653589793;
cout << "Pi: " << fixed << setprecision(2) << pi << endl; // طباعة pi بدقة منزلتين عشريتين
return 0;
}


🔹️ محاذاة النصوص

يمكنك استخدام setw من مكتبة <iomanip> لتحديد عرض الحقل.

🔮 مثال:

#include <iostream>
#include <iomanip> // لتضمين مكتبة التنسيق
using namespace std;

int main() {
cout << setw(10) << "Name" << setw(10) << "Age" << endl;
cout << setw(10) << "Ali" << setw(10) << 25 << endl;
cout << setw(10) << "Ahmed" << setw(10) << 30 << endl;
return 0;
}


7. أمثلة عملية لفهم الكائن cout

🔮 مثال 1: برنامج بسيط لعرض معلومات الطالب


#include <iostream>
using namespace std;

int main() {
string name = "Ali";
int age = 20;
double gpa = 3.75;

cout << "Student Information:" << endl;
cout << "Name: " << name << endl;
cout << "Age: " << age << endl;
cout << "GPA: " << gpa << endl;

return 0;
}


🔮 مثال 2: برنامج لحساب مساحة الدائرة

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
const double PI = 3.14159;
double radius;

cout << "Enter the radius of the circle: ";
cin >> radius;

double area = PI * radius * radius;
cout << "Area of the circle: " << fixed << setprecision(2) << area << endl;

return 0;
}


8. الخلاصة العامة لإستخدام الكائن cout

• الكائن cout
 يُستخدم لإخراج البيانات إلى الشاشة.

• يمكن استخدامه مع أنواع البيانات المختلفة مثل int, double, char, string.

ال endl و n\ يُستخدمان لإدخال سطر جديد.

• يمكن تنسيق الإخراج باستخدام مكتبة <iomanip>.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الحادي_عشر_سي_بلس_بلس
#المستوى_الأول

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
3👍1
1. ما هي std::string؟

• نعتبر std::string على أنها فئة (Class) في لغة C++ والتي تُستخدم لتمثيل النصوص والتعامل معها.

• تُعتبر بديلاً أكثر مرونة وأمانًا لمصفوفات الأحرف ([]char) التي تُستخدم في لغة C.

2. تضمين مكتبة std::string

لاستخدام std::string، يجب تضمين مكتبة <string> في البرنامج.

#include <string>


3. تعريف النصوص (Strings)

🔰 صيغة التعريف:

std::string اسم_المتغير = "النص";


🔮 أمثلة:

#include <iostream>
#include <string> // تضمين مكتبة النصوص
using namespace std;

int main() {
string name = "Ali"; // تعريف نص
cout << "Name: " << name << endl;

return 0;
}


4. العمليات الأساسية على النصوص

1️⃣ القراءة من المستخدم

يمكن استخدام cin أو getline لقراءة النصوص من المستخدم.

🔸️ مثال باستخدام cin:

#include <iostream>
#include <string>
using namespace std;

int main() {
string name;
cout << "Enter your name: ";
cin >> name; // قراءة النص (يتوقف عند أول مسافة)
cout << "Hello, " << name << "!" << endl;

return 0;
}


🔸️ مثال باستخدام getline:

#include <iostream>
#include <string>
using namespace std;

int main() {
string fullName;
cout << "Enter your full name: ";
getline(cin, fullName); // قراءة النص الكامل (بما في ذلك المسافات)
cout << "Hello, " << fullName << "!" << endl;

return 0;
}


2️⃣ التخصيص (Assignment)

يمكن تعيين نص جديد للمتغير باستخدام عامل التخصيص =

#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello";
cout << "Original Text: " << text << endl;

text = "World"; // تعيين نص جديد
cout << "Updated Text: " << text << endl;

return 0;
}


3️⃣ التسلسل (Concatenation)

يمكن دمج نصوص باستخدام عامل الجمع +

#include <iostream>
#include <string>
using namespace std;

int main() {
string firstName = "Ali";
string lastName = "Ahmed";
string fullName = firstName + " " + lastName; // دمج النصوص

cout << "Full Name: " << fullName << endl;

return 0;
}


4️⃣ المقارنة (Comparison)

يمكن مقارنة نصوص باستخدام العوامل العلائقية مثل ==, !=, <, >, إلخ.

#include <iostream>
#include <string>
using namespace std;

int main() {
string text1 = "apple";
string text2 = "banana";

if (text1 == text2) {
cout << "The texts are equal." << endl;
} else {
cout << "The texts are not equal." << endl;
}

return 0;
}


5️⃣ الوصول إلى الأحرف (Accessing Characters)

يمكن الوصول إلى الأحرف الفردية في النص باستخدام الأقواس المربعة [].

#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello";
cout << "First character: " << text[0] << endl; // الوصول إلى الحرف الأول
cout << "Last character: " << text[text.length() - 1] << endl; // الوصول إلى الحرف الأخير

return 0;
}


6️⃣ طول النص (Length)

يمكن الحصول على طول النص باستخدام الدالة ()length أو ()size.

#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
cout << "Length of text: " << text.length() << endl; // طول النص
cout << "Size of text: " << text.size() << endl; // نفس النتيجة

return 0;
}


7️⃣ البحث في النص (Searching)

يمكن البحث عن نص فرعي (Substring) باستخدام الدالة ()find.

#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
size_t pos = text.find("World"); // البحث عن "World"

if (pos != string::npos) {
cout << "Found at position: " << pos << endl;
} else {
cout << "Not found." << endl;
}

return 0;
}


8️⃣ استبدال النص (Replacing)

يمكن استبدال جزء من النص باستخدام الدالة ()replace.

#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
text.replace(7, 5, "C++"); // استبدال "World" بـ "C++"

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:
Updated Text: Hello, C++!
9️⃣ . استخراج النص الفرعي (Substring)

يمكن استخراج جزء من النص باستخدام الدالة ()substr.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string text = "Hello, World!";
    string sub = text.substr(7, 5);  // استخراج "World"

    cout << "Substring: " << sub << endl;

    return 0;
}

📟 النتيجة على الشاشة:
Substring: World


5. أمثلة عملية

🔮 مثال 1: برنامج لتحويل النص إلى أحرف كبيرة (Uppercase)

#include <iostream>
#include <string>
#include <algorithm> // لتضمين transform
using namespace std;

int main() {
string text = "hello, world!";
transform(text.begin(), text.end(), text.begin(), ::toupper); // تحويل النص إلى أحرف كبيرة

cout << "Uppercase Text: " << text << endl;

return 0;
}


🔮 مثال 2: برنامج لعكس النص (Reverse)

#include <iostream>
#include <string>
#include <algorithm> // لتضمين reverse
using namespace std;

int main() {
string text = "Hello, World!";
reverse(text.begin(), text.end()); // عكس النص

cout << "Reversed Text: " << text << endl;

return 0;
}


6. الخلاصة العامة لإستخدام string

• الكلاس std::string تُستخدم لتمثيل النصوص والتعامل معها في C++.

• تدعم العديد من العمليات مثل القراءة، الكتابة، التسلسل، المقارنة، الوصول إلى الأحرف، البحث، الاستبدال، واستخراج النصوص الفرعية.

• استخدام std::string يجعل التعامل مع النصوص أكثر مرونة وأمانًا مقارنة بمصفوفات الأحرف.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الثاني_عشر_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
@artificial_AI_intelligence


🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
1. الدوال الشائعة للتعامل مع النصوص

🔰 الدالة ()length أو ()size

🔸️ الهدف: الحصول على طول النص (عدد الأحرف).

🔹️ الصيغة:
int length = text.length();
int size = text.size();

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
cout << "Length: " << text.length() << endl; // 13
cout << "Size: " << text.size() << endl; // 13

return 0;
}

📟 النتيجة على الشاشة:👇
Length: 13
Size: 13


🔰 الدالة ()empty

🔸️ الهدف: التحقق مما إذا كان النص فارغًا.

🔹️ الصيغة:

bool isEmpty = text.empty();

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "";
if (text.empty()) {
cout << "The text is empty." << endl;
} else {
cout << "The text is not empty." << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
The text is empty.


🔰 الدالة ()clear

🔸️ الهدف: مسح محتوى النص.

🔹️ الصيغة:
text.clear();

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
cout << "Before clear: " << text << endl;

text.clear();
cout << "After clear: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Before clear: Hello, World!
After clear:


🔰 الدالة ()append

🔸️ الهدف : إضافة نص إلى النهاية.

🔹️ الصيغة:
text.append("additional text");

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello";
text.append(", World!");

cout << "Appended Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Appended Text: Hello, World!


🔰الدالة ()compare

🔸️ الهدف: مقارنة نصين.

🔹️ الصيغة:
int result = text1.compare(text2);

النتيجة:

• قيمة صفر 0 إذا كان النصان متساويين.

• قيمة سالبة إذا كان text1 أصغر من text2.

• قيمة موجبة إذا كان text1 أكبر من text2

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text1 = "apple";
string text2 = "banana";

int result = text1.compare(text2);
if (result == 0) {
cout << "The texts are equal." << endl;
} else if (result < 0) {
cout << "text1 is less than text2." << endl;
} else {
cout << "text1 is greater than text2." << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
text1 is less than text2.


🔰 الدالة ()find

🔸️ الهدف : البحث عن نص فرعي (Substring) داخل النص.

🔹️ الصيغة:
size_t pos = text.find("substring");

النتيجة: موقع النص الفرعي إذا تم العثور عليه، أو string::npos إذا لم يتم العثور عليه.

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
size_t pos = text.find("World");

if (pos != string::npos) {
cout << "Found at position: " << pos << endl;
} else {
cout << "Not found." << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
Found at position: 7


🔰 الدالة ()replace

🔸️ الهدف : استبدال جزء من النص بنص آخر.

🔹️ الصيغة:
text.replace(start, length, "new text");

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
text.replace(7, 5, "C++"); // استبدال "World" بـ "C++"

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, C++!



🔰 الدالة ()substr

🔸️ الهدف : استخراج جزء من النص (Substring).

🔹️ الصيغة:
string sub = text.substr(start, length);

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
string sub = text.substr(7, 5); // استخراج "World"

cout << "Substring: " << sub << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Substring: World
👍1
🔰 الدالة ()insert

🔸️ الهدف : إدراج نص في موضع محدد.

🔹️ الصيغة:
text.insert(position, "text to insert");

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
    string text = "Hello, !";
    text.insert(7, "World");  // إدراج "World" في الموضع 7

    cout << "Updated Text: " << text << endl;

    return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, World!


🔰 الدالة ()erase

🔸️ الهدف : حذف جزء من النص.

🔹️ الصيغة:
text.erase(start, length);

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
text.erase(7, 5); // حذف "World"

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, !



2. أمثلة عملية لمختلف دوال النصوص

🔮 مثال 1: برنامج لتحويل النص إلى أحرف كبيرة (Uppercase)

#include <iostream>
#include <string>
#include <algorithm> // لتضمين transform
using namespace std;

int main() {
string text = "hello, world!";
transform(text.begin(), text.end(), text.begin(), ::toupper); // تحويل النص إلى أحرف كبيرة

cout << "Uppercase Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇

Uppercase Text: HELLO, WORLD!


🔮 مثال 2: برنامج لعكس النص (Reverse)

#include <iostream>
#include <string>
#include <algorithm> // لتضمين reverse
using namespace std;

int main() {
string text = "Hello, World!";
reverse(text.begin(), text.end()); // عكس النص

cout << "Reversed Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇

Reversed Text: !dlroW ,olleH



3. الخلاصة العامة لإستخدام دوال النصوص

︎ كلاس std::string توفر العديد من الدوال الشائعة للتعامل مع النصوص مثل length(), empty(), clear(), append(), compare(), find(), re٠place(), substr(), insert(), و erase().

︎ هذه الدوال تجعل التعامل مع النصوص أكثر مرونة وسهولة في C++.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الثالث_عشر_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
👍1
🔰 مقارنة النصوص

1️⃣ استخدام عامل المقارنة (==, !=, <, >, <=, >=)

يمكن مقارنة نصوص باستخدام العوامل العلائقية مباشرة.

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text1 = "apple";
string text2 = "banana";

if (text1 == text2) {
cout << "The texts are equal." << endl;
} else if (text1 < text2) {
cout << "text1 is less than text2." << endl;
} else {
cout << "text1 is greater than text2." << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
text1 is less than text2.


2️⃣  استخدام الدالة ()compare

توفر كلاس std::string الدالة ()compare لمقارنة نصوص بدقة أكبر.

🔸️ الصيغة:
int result = text1.compare(text2);

🔹️ النتيجة:

• القيمة 0 إذا كان النصان متساويين.
• قيمة سالبة إذا كان text1 أصغر من text2.
• قيمة موجبة إذا كان text1 أكبر من text2.

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text1 = "apple";
string text2 = "banana";

int result = text1.compare(text2);
if (result == 0) {
cout << "The texts are equal." << endl;
} else if (result < 0) {
cout << "text1 is less than text2." << endl;
} else {
cout << "text1 is greater than text2." << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
text1 is less than text2.



🔰 تعديل النصوص

1️⃣ إضافة نص (append() أو +=)

يمكن إضافة نص إلى النهاية باستخدام append() أو عامل الإضافة +=.

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello";
text.append(", World!"); // إضافة نص باستخدام append
text += " How are you?"; // إضافة نص باستخدام +=

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, World! How are you?


2️⃣  إدراج نص (()insert)

يمكن إدراج نص في موضع محدد باستخدام الدالة ()insert.

🔸️ الصيغة:
text.insert(position, "text to insert");

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, !";
text.insert(7, "World"); // إدراج "World" في الموضع 7

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, World!


3️⃣ استبدال نص (()replace)

يمكن استبدال جزء من النص بنص آخر باستخدام الدالة ()replace.

🔸️ الصيغة:
text.replace(start, length, "new text");

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
text.replace(7, 5, "C++"); // استبدال "World" بـ "C++"

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, C++!


4️⃣  حذف نص (()erase)

يمكن حذف جزء من النص باستخدام الدالة ()erase

🔸️ الصيغة:
text.erase(start, length);

🔮 مثال:
#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";
text.erase(7, 5); // حذف "World"

cout << "Updated Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Updated Text: Hello, !


5️⃣ تحويل النص إلى أحرف كبيرة أو صغيرة

يمكن تحويل النص إلى أحرف كبيرة (Uppercase) أو صغيرة (Lowercase) باستخدام الدوال ()toupper و ()tolower من مكتبة <algorithm>.

🔮 مثال:

#include <iostream>
#include <string>
#include <algorithm> // لتضمين transform
using namespace std;

int main() {
string text = "Hello, World!";

// تحويل النص إلى أحرف كبيرة
transform(text.begin(), text.end(), text.begin(), ::toupper);
cout << "Uppercase Text: " << text << endl;

// تحويل النص إلى أحرف صغيرة
transform(text.begin(), text.end(), text.begin(), ::tolower);
cout << "Lowercase Text: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Uppercase Text: HELLO, WORLD!
Lowercase Text: hello, world!
👍3
🔰  أمثلة عملية

🔮 مثال 1: برنامج لمقارنة نصوص وإظهار النتيجة
#include <iostream>
#include <string>
using namespace std;

int main() {
    string text1, text2;

    cout << "Enter the first text: ";
    getline(cin, text1);

    cout << "Enter the second text: ";
    getline(cin, text2);

    if (text1 == text2) {
        cout << "The texts are equal." << endl;
    } else if (text1 < text2) {
        cout << "text1 is less than text2." << endl;
    } else {
        cout << "text1 is greater than text2." << endl;
    }

    return 0;
}

📟 النتيجة على الشاشة:👇
Enter the first text: pro3dev
Enter the second text: learn c++
text1 is greater than text2.


🔮 مثال 2: برنامج لتعديل نص (إضافة، إدراج، استبدال، حذف)

#include <iostream>
#include <string>
using namespace std;

int main() {
string text = "Hello, World!";

// إضافة نص
text.append(" How are you?");
cout << "After append: " << text << endl;

// إدراج نص
text.insert(7, "Beautiful ");
cout << "After insert: " << text << endl;

// استبدال نص
text.replace(7, 9, "Wonderful");
cout << "After replace: " << text << endl;

// حذف نص
text.erase(7, 9);
cout << "After erase: " << text << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
After append: Hello, World! How are you?
After insert: Hello, Beautiful World! How are you?
After replace: Hello, Wonderful World! How are you?
After erase: Hello, World! How are you?


🔰  الخلاصة

مقارنة النصوص: يمكن استخدام العوامل العلائقية (==, !=, <, >, <=, >=) أو الدالة ()compare.

تعديل النصوص: يمكن إضافة (()append أو +=)، إدراج (()insert)، استبدال (()replace)، حذف (()erase)، وتحويل النص إلى أحرف كبيرة أو صغيرة (()transform).

︎ هذه العمليات تجعل التعامل مع النصوص في C++ أكثر مرونة وسهولة.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الرابع_عشر_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
👍41
1. مقدمة عن العمليات الحسابية والمنطقية

🔰  العمليات الحسابية (Arithmetic Operations)

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

في البرمجة، تُستخدم العمليات الحسابية لإجراء حسابات رياضية على البيانات، مثل حساب المجموع، الفرق، الناتج، أو النسبة.

🔸️ أهميتها في البرمجة:

• تُستخدم في حل المشكلات الرياضية والعلمية.

• تُستخدم في تطبيقات مثل الحسابات المالية، الرسوم البيانية، والمحاكاة.

• تُعتبر أساسًا للعديد من الخوارزميات والهياكل البرمجية.

🔰  العمليات المنطقية (Logical Operations)

العمليات المنطقية هي عمليات تُستخدم لاتخاذ القرارات بناءً على شروط معينة.

في البرمجة، تُستخدم العمليات المنطقية لفحص الشروط واتخاذ القرارات، مثل التحقق من صحة شرط ما أو مقارنة قيم متغيرات.

🔸️ أهميتها في البرمجة:

• تُستخدم في بناء الشروط (if-else) والحلقات (loops).

• تُستخدم في التحقق من صحة البيانات واتخاذ القرارات بناءً على النتائج.

• تُعتبر أساسًا للبرمجة الشرطية والتحكم في تدفق البرنامج.

2. الفرق بين العمليات الحسابية والمنطقية

🔸️ الميزة : الهدف

العمليات الحسابية : إجراء حسابات رياضية.
العمليات المنطقية : اتخاذ قرارات بناءً على شروط

🔹️ الميزة : الأمثلة

العمليات الحسابية : الجمع (+)، الطرح (-)، الضرب (*)، القسمة (/).
العمليات المنطقية : AND (&&)، OR ()، NOT (!).

🔸️ الميزة : نوع النتيجة

العمليات الحسابية : عدد (صحيح أو عشري).
العمليات المنطقية : قيمة منطقية (true أو false).

🔹️ الميزة : الإستخدام الشائع

العمليات الحسابية : الحسابات الرياضية.
العمليات المنطقية : الشروط، الحلقات، التحقق من البيانات

3. أهمية العمليات الحسابية والمنطقية في البرمجة

🔰 العمليات الحسابية

حل المشكلات الرياضية: مثل حساب المساحات، الأطوال، النسب، وغيرها.

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

تطبيقات مالية: مثل حساب الفوائد، الضرائب، والميزانيات.

🔰 العمليات المنطقية

اتخاذ القرارات: مثل التحقق من صحة بيانات المستخدم أو اختيار مسار معين في البرنامج.

التحكم في بلوكات البرنامج: مثل استخدام الشروط (if-else) والحلقات (for, while).

التحقق من الشروط: مثل التحقق من تسجيل الدخول، التحقق من صحة الإدخال، وغيرها.

4. أمثلة توضيحية

🔮 مثال 1: استخدام العمليات الحسابية

#include <iostream>
using namespace std;

int main() {
int a = 10, b = 5;
int sum = a + b; // جمع
int difference = a - b; // طرح
int product = a * b; // ضرب
double quotient = (double)a / b; // قسمة

cout << "Sum: " << sum << endl;
cout << "Difference: " << difference << endl;
cout << "Product: " << product << endl;
cout << "Quotient: " << quotient << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Sum: 15
Difference: 5
Product: 50
Quotient: 2
🔮 مثال 2: استخدام العمليات المنطقية
#include <iostream>
using namespace std;

int main() {
int age = 20;
bool isStudent = true;

if (age >= 18 && isStudent) { // استخدام AND (`&&`)
cout << "You are an adult student." << endl;
} else {
cout << "You are not an adult student." << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
You are an adult student


5. الخلاصة العامة لإستخدام العمليات الحسابية و المنطقية

العمليات الحسابية: تُستخدم لإجراء حسابات رياضية مثل الجمع، الطرح، الضرب، والقسمة.

العمليات المنطقية: تُستخدم لاتخاذ قرارات بناءً على شروط، مثل التحقق من صحة بيانات أو اختيار مسار معين في البرنامج.

︎ كلاهما أساسي في البرمجة ويُستخدم في حل المشكلات وبناء التطبيقات.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_الخامس_عشر_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
🔰 العمليات الحسابية الأساسية

1️⃣ عمليات الجمع (+)

🔸️ الهدف:

• يُستخدم لجمع رقمين أو أكثر.
• يدعم الأرقام الصحيحة (int) والأرقام العشرية (float, double).

🔹️ الصيغة:
result = operand1 + operand2;


🔮 مثال:
#include <iostream>
using namespace std;

int main() {
int a = 10, b = 20;
int sum = a + b; // جمع a و b

cout << "Sum: " << sum << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Sum: 30



2️⃣ عمليات الطرح (-)

🔸️ الهدف:

• يُستخدم لطرح رقم من رقم آخر.
• يمكن أن ينتج عددًا سالبًا إذا كان الرقم الأول أقل من الثاني.

🔹️ الصيغة:
result = operand1 - operand2;


🔮 مثال:
#include <iostream>
using namespace std;

int main() {
int a = 20, b = 10;
int difference = a - b; // طرح b من a

cout << "Difference: " << difference << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Difference: 10



3️⃣ عمليات الضرب (*)

🔸️ الهدف:

• يُستخدم لضرب رقمين أو أكثر.
• يدعم الأعداد الصحيحة والعشرية.

🔹️ الصيغة:
result = operand1 * operand2;


🔮 مثال:
#include <iostream>
using namespace std;

int main() {
int a = 5, b = 4;
int product = a * b; // ضرب a و b

cout << "Product: " << product << endl;

return 0;
}

📟 النتيجة على الشاشة:👇
Product: 20


4️⃣ عمليات القسمة (/)

🔸️ الهدف:

• يُستخدم لقسمة رقم على رقم آخر.
• في الأعداد الصحيحة، يتم حذف الكسر (القسمة الصحيحة).
• في الأعداد العشرية، يتم الاحتفاظ بالكسر.

🚫 ملحوظة مهمة: القسمة على صفر تسبب خطأ

🔹️ الصيغة:
result = operand1 / operand2;


🔮 مثال:
#include <iostream>
using namespace std;

int main() {
int a = 10, b = 3;
double quotient = a / b; // قسمة a على b

cout << "Quotient (int): " << quotient << endl; // النتيجة: 3 (لأن a و b صحيحان)

double c = 10.0;
quotient = c / b; // قسمة c على b
cout << "Quotient (double): " << quotient << endl; // النتيجة: 3.33333

return 0;
}

📟 النتيجة على الشاشة:👇
Quotient (int): 3
Quotient (double): 3.33333



🔮 القسمة على صفر:
#include <iostream>
using namespace std;

int main() {
int a = 10, b = 0;
if (b != 0) {
cout << "The result is: " << (a / b) << endl;
} else {
cout << "Error: Division by zero is not allowed!" << endl;
}
return 0;
}

📟 النتيجة على الشاشة:👇

Error: Division by zero is not allowed!



4️⃣ عمليات باقي القسمة (%)

🔸️ الهدف:

• حساب باقي قسمة عددين صحيحين.

🔹️ الصيغة:

result = operand1 % operand2;


🔮 مثال:
#include <iostream>
using namespace std;

int main() {
int a = 10, b = 3;
int remainder = a % b; // حساب باقي قسمة a على b

cout << "Remainder: " << remainder << endl; // النتيجة: 1

return 0;
}

📟 النتيجة على الشاشة:👇
Remainder: 1


🔰 إستخدام العمليات الحسابية مع المدخلات


🔮 مثال1 عملي مع مدخلات من المستخدم:

#include <iostream>
using namespace std;

int main() {
double num1, num2;

cout << "Enter first number: ";
cin >> num1;

cout << "Enter second number: ";
cin >> num2;

cout << "Addition: " << (num1 + num2) << endl;
cout << "Subtraction: " << (num1 - num2) << endl;
cout << "Multiplication: " << (num1 * num2) << endl;

if (num2 != 0) {
cout << "Division: " << (num1 / num2) << endl;
} else {
cout << "Error: Cannot divide by zero!" << endl;
}

return 0;
}

📟 النتيجة على الشاشة:👇
Enter first number: 8
Enter second number: 2
Addition: 10
Subtraction: 6
Multiplication: 16
Division: 4



🔮 مثال 2 برنامج بسيط لحساب مساحة المستطيل

#include <iostream>
using namespace std;

int main() {
double length, width;

cout << "Enter the length of the rectangle: ";
cin >> length;

cout << "Enter the width of the rectangle: ";
cin >> width;

double area = length * width; // حساب المساحة
cout << "Area of the rectangle: " << area << endl;

return 0;
}


📟 النتيجة على الشاشة:👇

Enter the length of the rectangle: 6
Enter the width of the rectangle: 4
Area of the rectangle: 24
1👍1
🔮 مثال 3 برنامج لتحويل درجة الحرارة من فهرنهايت إلى مئوية

#include <iostream>
using namespace std;

int main() {
    double fahrenheit;

    cout << "Enter the temperature in Fahrenheit: ";
    cin >> fahrenheit;

    double celsius = (fahrenheit - 32) * 5 / 9;  // التحويل إلى مئوية
    cout << "Temperature in Celsius: " << celsius << endl;

    return 0;
}

📟 النتيجة على الشاشة:👇
Enter the temperature in Fahrenheit: 70
Temperature in Celsius: 21.1111


🔰  العمليات الرياضية المركبة

1️⃣  الجمع المركب (+=)

🔸️ الهدف:

• إضافة قيمة إلى متغير.

🔹️ الصيغة:
operand1 += operand2;


🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int a = 10;
a += 5; // إضافة 5 إلى a

cout << "a: " << a << endl; // النتيجة: 15

return 0;
}

📟 النتيجة على الشاشة:👇
a: 15



2️⃣  الطرح المركب (-=)

🔸️ الهدف:

•   قيمة من متغير.

🔹️ الصيغة:
operand1 -= operand2;


🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int a = 20;
a -= 5; // طرح 5 من a

cout << "a: " << a << endl; // النتيجة: 15

return 0;
}

📟 النتيجة على الشاشة:👇
a: 15



2️⃣  الضرب المركب (*=)

🔸️ الهدف:

•   ضرب متغير بقيمة.

🔹️ الصيغة:
operand1 *= operand2;


🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int a = 5;
a *= 3; // ضرب a بـ 3

cout << "a: " << a << endl; // النتيجة: 15

return 0;
}

📟 النتيجة على الشاشة:👇
a: 15



4️⃣  القسمة المركبة (/=)

🔸️ الهدف:

•   قسمة متغير على قيمة.

🔹️ الصيغة:

operand1 /= operand2;


🔮 مثال:

#include <iostream>
using namespace std;

int main() {
int a = 10;
a /= 2; // قسمة a على 2

cout << "a: " << a << endl; // النتيجة: 5

return 0;
}

📟 النتيجة على الشاشة:👇

a: 5



🔰 الأخطاء الشائعة في العمليات الرياضية

القسمة على صفر: تأكد دائمًا من التحقق من قيمة المقسوم عليه.

الاختلاف بين القسمة الصحيحة والعشرية: استخدم القيم العشرية إذا كنت بحاجة إلى نتائج دقيقة.

🔰 استخدام العمليات الحسابية مع الدوال الرياضية

يمكنك استخدام مكتبة cmath لإجراء عمليات أكثر تعقيدًا، مثل الجذر التربيعي والقوى

🔮 مثال:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
double num = 16.0;

cout << "Square root: " << sqrt(num) << endl; // الجذر التربيعي
cout << "Power: " << pow(num, 2) << endl; // القوة

return 0;
}

📟 النتيجة على الشاشة:👇
Square root: 4
Power: 256



🔰 الخلاصة العامة لإستخدام العمليات الحسابية

الجمع (+): جمع عددين.
الطرح (-): طرح عددين.
الضرب (*): ضرب عددين.
القسمة (/): قسمة عددين (تنتج عددًا عشريًا إذا كان أحدهما عشريًا).
باقي القسمة (%): حساب باقي قسمة عددين صحيحين.
العمليات المركبة (+=, -=, *=, /=): تعديل قيمة متغير باستخدام عملية حسابية.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_السادس_عشر_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
3👍3
🔰 مقدمة عن العمليات المنطقية

1️⃣  ما هي العمليات المنطقية؟

العمليات المنطقية هي عمليات تُستخدم لاتخاذ القرارات بناءً على شروط معينة.

• تُستخدم هذه العمليات لتقييم تعبيرات منطقية (تكون نتيجتها true أو false).

أنواع العمليات المنطقية :

🔸️ العامل AND (&&):

تكون النتيجة true فقط إذا كانت كلا القيمتين صحيحتين.

🔸️ العامل OR (||):

تكون النتيجة true إذا كانت إحدى القيمتين صحيحة على الأقل.

🔸️ العامل NOT (!):

تعكس القيمة المنطقية (تحويل true إلى false والعكس).

🔰 استخدامات العمليات المنطقية في البرمجة الواقعية

1️⃣ العملية المنطقية AND (&&)

الرمز : &&

الشرط: تكون النتيجة true فقط إذا كانت كلا القيمتين صحيحتين.

استخداماتها:

التحقق من شروط متعددة: تُستخدم عندما تحتاج إلى التحقق من أن جميع الشروط صحيحة.

أنظمة التحقق من الهوية: مثل تسجيل الدخول، حيث يجب أن يكون كل من اسم المستخدم وكلمة المرور صحيحين.

التحقق من صحة البيانات المدخلة: مثل التأكد من أن العمر بين قيمتين معينتين.

🔮 مثال واقعي:

التحقق من تسجيل الدخول:

يجب أن يكون اسم المستخدم و كلمة المرور صحيحين للسماح بالدخول.

#include <iostream>
using namespace std;

int main() {
string username = "admin";
string password = "1234";
string inputUser, inputPass;

cout << "Enter username: ";
cin >> inputUser;

cout << "Enter password: ";
cin >> inputPass;

if (inputUser == username && inputPass == password) {
cout << "Login successful!" << endl;
} else {
cout << "Invalid credentials!" << endl;
}

return 0;
}


💎 شرح المثال:

• يتم التحقق من أن inputUser يساوي username و inputPass يساوي password.

• إذا كانت كلا الشروط صحيحة، يتم طباعة "Login successful!".

• إذا كانت إحدى الشروط خاطئة، يتم طباعة "Invalid credentials!".

📟 النتيجة على الشاشة:👇

Enter username: admin
Enter password: 1234
Login successful!


2️⃣  العملية المنطقية OR (||)

الرمز: ||

الشرط:

تكون النتيجة true إذا كانت إحدى القيمتين صحيحة على الأقل.

استخداماتها:

التحقق من شروط متعددة: تُستخدم عندما يكفي أن تكون إحدى الشروط صحيحة.

أنظمة الخصومات: مثل خصومات الطلاب أو الموظفين.

التحقق من وجود بيانات معينة: مثل التحقق من وجود بيانات في قاعدة البيانات

🔮 مثال واقعي:

مثال عن خصم للمجموعات:

إذا كان المستخدم طالبًا أو موظفًا، يحصل على خصم 20%.

#include <iostream>
using namespace std;

int main() {
bool isStudent = true;
bool isEmployee = false;

if (isStudent || isEmployee) {
cout << "You get 20% discount!" << endl;
} else {
cout << "No discount." << endl;
}

return 0;
}

💎 شرح المثال:

إذا كانت إحدى القيمتين صحيحة، يتم طباعة "You get 20% discount!".
إذا كانت كلتا القيمتين خاطئة، يتم طباعة "No discount.".

📟 النتيجة على الشاشة:👇
You get 20% discount!



3️⃣ العملية المنطقية NOT (!)

الرمز: !

الشرط:
تعكس القيمة المنطقية (تحويل true إلى false والعكس).

استخداماتها:

• التحقق من أن شرطًا معينًا غير صحيح.
• التحقق من عدم وجود بيانات معينة.
• تعطيل أو تفعيل ميزات معينة.

🔮 مثال واقعي:

التحقق من عدم التفعيل:

إذا لم يكن الحساب مفعلًا، يتم إرسال رسالة تحذير.

#include <iostream>
using namespace std;

int main() {
bool isAccountActive = false;

if (!isAccountActive) {
cout << "Your account is inactive. Please activate it!" << endl;
}

return 0;
}

💎شرح المثال:

• يتم التحقق من أن isAccountActive تساوي false.

• إذا كانت القيمة false، يتم طباعة "Your account is inactive. Please activate it!".

📟 النتيجة على الشاشة:👇
Your account is inactive. Please activate it!



🔰  استخدامات متقدمة للعمليات المنطقية

1️⃣ الجمع بين العمليات المنطقية

يمكن دمج AND، OR، وNOT لإنشاء شروط معقدة.

🔮 مثال توضيحي :

التحقق من أن العمر بين 18 و60 سنة و أن المستخدم ليس موظفًا.

#include <iostream>
using namespace std;

int main() {
int age = 25;
bool isEmployee = false;

if (age >= 18 && age <= 60 && !isEmployee) {
cout << "You are eligible for the program." << endl;
}

return 0;
}

💎 شرح المثال:

• يتم التحقق من أن age بين 18 و60 و أن isEmployee تساوي false.

• إذا كانت كل الشروط صحيحة، يتم طباعة "You are eligible for the program."

📟 النتيجة على الشاشة:👇
You are eligible for the program.
👍5
2️⃣ التحقق المختصر (Short-Circuit Evaluation)

• في AND (&&): إذا كانت القيمة الأولى خاطئة، لا يتم تقييم الثانية (لأن النتيجة ستكون false بكل الأحوال).

• في OR (||): إذا كانت القيمة الأولى صحيحة، لا يتم تقييم الثانية (لأن النتيجة ستكون true بكل الأحوال).

🔮 مثال عملي:

#include <iostream>
using namespace std;

bool checkNetwork() {
    cout << "Checking network..." << endl;
    return false; // لنفترض أن الاتصال غير متوفر
}

bool checkLocalFiles() {
    cout << "Checking local files..." << endl;
    return true;
}

int main() {
    if (checkNetwork() || checkLocalFiles()) {
        // لن يتم استدعاء checkLocalFiles() لأن checkNetwork() تعيد false
        cout << "Data loaded successfully." << endl;
    }

    return 0;
}

💎 شرح المثال:

• يتم استدعاء checkNetwork() أولاً، وإذا كانت النتيجة false، يتم استدعاء checkLocalFiles().

• إذا كانت checkNetwork() تعيد false، لن يتم استدعاء checkLocalFiles() لأن النتيجة ستكون false بكل الأحوال.


📟 النتيجة على الشاشة:👇

Checking network...
Checking local files...
Data loaded successfully.



🔰 أخطاء شائعة وتجنبها عند البرمجة

1️⃣ الخلط بين && و ||

مثال خاطئ:
if (age > 18 || age < 60) { // هذا الشرط دائماً صحيح!
cout << "Valid age." << endl;
}

التصحيح:
if (age >= 18 && age <= 60) { // العمر بين 18 و60
cout << "Valid age." << endl;
}


2️⃣ الخلط بين ! و =

مثال خاطئ:
if (isActive = false) { // هذا تعيين وليس مقارنة!
// ...
}

التصحيح:
if (!isActive) { // التحقق من أن isActive تساوي false
// ...
}


🔰 4. الخلاصة العامة

• العامل AND (&&): تُستخدم عندما تحتاج إلى كلا الشرطين أن يكونا صحيحين.

• العامل OR (||): تُستخدم عندما يكفي أن يكون أحد الشرطين صحيحًا.

• العامل NOT (!): تُستخدم لعكس القيمة المنطقية.

تطبيقات واقعية: نستخدم العمليات المنطقية في أنظمة التحقق من الهوية، أنظمة الخصومات، التحكم في الوصول، وغيرها.

#برمجة_و_تطوير
#دورة_سي_بلس_بلس
#C_plus_plus

#الدرس_السابع_عشر_سي_بلس_بلس
#المستوى_الأول

الرجاء متابعة قناتنا  👇
https://t.me/artificial_AI_intelligence

🥰 قال رسول الله ﷺ << إذا مات ابن آدم؛ انقطع عمله إلا من ثلاث: صدقة جارية، أو علم ينتفع به، أو ولد صالح يدعو له >>  رواه مسلم.

🤗 اذا إستفدت من الدرس لا تنسى الدعاء لنا 🤲
👍31