🔥 أحدث الأخبار

موقع يهتم بكل ماهو جديد في عالم التكنولوجيا والرياضة

الحلقة العاشرة والأخيرة في تعلم C++: الخوارزميات (Algorithms) والمشاريع الأساسية

 


الحلقة العاشرة في تعلم C++: الخوارزميات (Algorithms) والمشاريع الأساسية

#برمجة

مقدمة

مرحباً بك في الحلقة العاشرة من سلسلة تعلم C++ للمبتدئين 🎉

في الحلقات السابقة تعلمنا:

  • المتغيرات
  • الشروط
  • الحلقات
  • الدوال
  • المصفوفات
  • النصوص
  • المؤشرات
  • البرمجة الكائنية (OOP)
  • الملفات (File Handling)

واليوم ندخل إلى مرحلة مهمة جداً في البرمجة:

الخوارزميات (Algorithms)


ما هي الخوارزمية؟

الخوارزمية هي خطوات مرتبة لحل مشكلة معينة.

مثال من الحياة:

إذا أردت إعداد شاي:

  1. غلي الماء
  2. وضع الشاي
  3. إضافة السكر
  4. التقديم

هذه تعتبر خوارزمية.


لماذا الخوارزميات مهمة؟

لأنها تساعدك على:

  • حل المشاكل بطريقة منظمة
  • بناء برامج ذكية
  • تحسين أداء البرامج
  • الاستعداد للمقابلات التقنية

أولاً: خوارزمية البحث (Linear Search)

فكرة البحث

نريد البحث عن رقم داخل مصفوفة.


مثال

#include <iostream>
using namespace std;

int main()
{
    int arr[5] = {10, 20, 30, 40, 50};
    int target = 30;
    bool found = false;

    for(int i = 0; i < 5; i++)
    {
        if(arr[i] == target)
        {
            found = true;
            break;
        }
    }

    if(found)
        cout << "Found";
    else
        cout << "Not Found";

    return 0;
}

شرح الفكرة

  • نمر على كل عنصر
  • نقارن بالقيمة المطلوبة
  • إذا وجدناها نوقف

ثانياً: خوارزمية البحث الثنائي (Binary Search)

شرط مهم

يجب أن تكون المصفوفة مرتبة.


المثال

#include <iostream>
using namespace std;

int main()
{
    int arr[5] = {10, 20, 30, 40, 50};
    int target = 40;

    int left = 0;
    int right = 4;
    bool found = false;

    while(left <= right)
    {
        int mid = (left + right) / 2;

        if(arr[mid] == target)
        {
            found = true;
            break;
        }
        else if(arr[mid] < target)
        {
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }

    if(found)
        cout << "Found";
    else
        cout << "Not Found";

    return 0;
}

الفرق بين Linear و Binary

النوع السرعة الشرط
Linear Search بطيء أي مصفوفة
Binary Search سريع مصفوفة مرتبة

ثالثاً: خوارزمية الترتيب (Bubble Sort)

الفكرة

ترتيب الأرقام من الأصغر إلى الأكبر.


المثال

#include <iostream>
using namespace std;

int main()
{
    int arr[5] = {5, 2, 9, 1, 3};

    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 4; j++)
        {
            if(arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }

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

    return 0;
}

الناتج

1 2 3 5 9

رابعاً: خوارزمية إيجاد أكبر رقم

#include <iostream>
using namespace std;

int main()
{
    int arr[5] = {10, 50, 20, 90, 30};

    int max = arr[0];

    for(int i = 1; i < 5; i++)
    {
        if(arr[i] > max)
        {
            max = arr[i];
        }
    }

    cout << "Max = " << max;

    return 0;
}

خامساً: خوارزمية إيجاد أصغر رقم

#include <iostream>
using namespace std;

int main()
{
    int arr[5] = {10, 50, 20, 90, 30};

    int min = arr[0];

    for(int i = 1; i < 5; i++)
    {
        if(arr[i] < min)
        {
            min = arr[i];
        }
    }

    cout << "Min = " << min;

    return 0;
}

مشروع عملي 1: نظام طلاب بسيط

#include <iostream>
using namespace std;

int main()
{
    string names[3];
    int marks[3];

    for(int i = 0; i < 3; i++)
    {
        cin >> names[i];
        cin >> marks[i];
    }

    cout << "\nResults:\n";

    for(int i = 0; i < 3; i++)
    {
        cout << names[i] << " => " << marks[i] << endl;
    }

    return 0;
}

مشروع عملي 2: حساب مجموع الأرقام

#include <iostream>
using namespace std;

int main()
{
    int arr[5];
    int sum = 0;

    for(int i = 0; i < 5; i++)
    {
        cin >> arr[i];
        sum += arr[i];
    }

    cout << "Sum = " << sum;

    return 0;
}

أهم الأفكار في الخوارزميات

  • التفكير المنطقي
  • تحليل المشكلة
  • تقسيم الحل إلى خطوات
  • استخدام loops و arrays

أخطاء شائعة

❌ عدم فهم المشكلة قبل كتابة الكود
❌ استخدام حل غير مناسب
❌ نسيان حدود المصفوفة
❌ أخطاء في الحلقات المتداخلة


تمارين

  1. ابحث عن رقم داخل مصفوفة
  2. رتب 10 أرقام
  3. احسب متوسط مجموعة أرقام
  4. اعثر على ثاني أكبر رقم

ملخص الحلقة العاشرة

في هذه الحلقة تعلمنا:

  • ما هي الخوارزميات
  • البحث الخطي
  • البحث الثنائي
  • Bubble Sort
  • إيجاد أكبر وأصغر رقم
  • مشاريع تطبيقية

انتهى الكورس الأساسي في C++ 🎉


تعليقات

💬 🙋🏻‍♂️