الحلقة العاشرة في تعلم C++: الخوارزميات (Algorithms) والمشاريع الأساسية
#برمجة
مقدمة
مرحباً بك في الحلقة العاشرة من سلسلة تعلم C++ للمبتدئين 🎉
في الحلقات السابقة تعلمنا:
- المتغيرات
- الشروط
- الحلقات
- الدوال
- المصفوفات
- النصوص
- المؤشرات
- البرمجة الكائنية (OOP)
- الملفات (File Handling)
واليوم ندخل إلى مرحلة مهمة جداً في البرمجة:
الخوارزميات (Algorithms)
ما هي الخوارزمية؟
الخوارزمية هي خطوات مرتبة لحل مشكلة معينة.
مثال من الحياة:
إذا أردت إعداد شاي:
- غلي الماء
- وضع الشاي
- إضافة السكر
- التقديم
هذه تعتبر خوارزمية.
لماذا الخوارزميات مهمة؟
لأنها تساعدك على:
- حل المشاكل بطريقة منظمة
- بناء برامج ذكية
- تحسين أداء البرامج
- الاستعداد للمقابلات التقنية
أولاً: خوارزمية البحث (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
أخطاء شائعة
❌ عدم فهم المشكلة قبل كتابة الكود
❌ استخدام حل غير مناسب
❌ نسيان حدود المصفوفة
❌ أخطاء في الحلقات المتداخلة
تمارين
- ابحث عن رقم داخل مصفوفة
- رتب 10 أرقام
- احسب متوسط مجموعة أرقام
- اعثر على ثاني أكبر رقم
ملخص الحلقة العاشرة
في هذه الحلقة تعلمنا:
- ما هي الخوارزميات
- البحث الخطي
- البحث الثنائي
- Bubble Sort
- إيجاد أكبر وأصغر رقم
- مشاريع تطبيقية

تعليقات
إرسال تعليق