السلام عليكــم ورحمـة الله وبركاتــه
بســم الله الـرحمــن الرحيــم
هذا الدرس يحتوي على مجموعة من الأمثلة لخوارزميات بسيطة، يتراوح مستواها بين السهل جداً والمتوسط، وقد أحببت أن أقدمه لأسباب عديدة:
1-تشجيع الخبراء على تقديم دروس حقيقية ومتقدمة، بعد أن دخل المنتدى في حالة من السبات.
2-تبسيط مفهوم الخوارزمية للمبتدئين
3-مشاركة الإخوة في معلوماتي البسيطة.
4-الفوز برضوان الله تعالى.
علماً
أن الخوارزميات التي سيقدمها الدرس موجودة جميعها في مشروع واحد في
المرفقات، لكن قبل أن تقرأ حل أية خوارزمية، حاول أن تحلها بنفسك، وجرب
مراراً وتكراراً، ثم اطّلع على الحل.
ما هي الخوارزمية؟
فلنقلها ببساطة: هي الطريقة المناسبة للقيام بعمل ما أو حل مشكلة معينة.
فمثلاً:
كود
Label1.Caption=Text1.Text
هذه خوارزمية! ماذا؟! نعم، هذه خوارزمية تقوم بنقل محتوى Text1 وتضعه في Label1 . إذا ليس من الضروري أن تكون الخوارزمية من النوع:
X^2+2AB/25Y=2CB
بل يمكن إن تكون شيئاً بسيطاً جداً.
الخوارزمية الأولى (هل العدد زوجي أو فردي؟)نبدأ بمقدمة عن اللغة العربية، نقول "هل العدد زوجي
أو فردي" ولا نقول "
أم فردي" لأن استعمال "أم" مقصور على همزة الاستفهام. مثلاً
أذهبت أم لم تذهب؟)
وبعد هذه المقدمة اللغوية (المحبطة)، نعود إلى البرمجة والخوارزمية التي بين يدينا، حاول أن تحلها بنفسك مستخدماً المعلومات التالية:
المطلوب
منك أن تصنع بريمجاً (تصغير برنامج) يقوم بإعطاء المستخدم الفرصة لوضع عدد
في الـTextBox ثم يضغط زر الأوامر CommandButton ليعرف هل هذا العدد زوجي
أو فردي، حيث تظهر له رسالة MsgBox تخبره بذلك.
لحل هذه الخوارزمية تحتاج إلى استعمال دالة حساب باقي القسمة Mod. مثال:
كود
If 9 Mod 3=0 Then
MsgBox "Yes"
Else
MsgBox "No"
End If
حيث
يقوم الكود بتقسيم العدد 9 على العدد 3، ثم يختبر باقي القسمة، فإن كان
صفراً فإن العدد 9 يقبل القسمة على 3، وإن كان غير الصفر فإنه لا يقبل.
بدّل الـ9 والـ3 بالأعداد أو المتغيرات المناسبة، وحاول قدر المستطاع، فإن لم تستطع، تعال واقرأ الحل.
الحل:
الحل
بسيط جداً، وهو يختبر ناتج قسمة العدد الموجود في الـTextBox على 2، فإن
كانت القيمة صفراً فإن العدد زوجي، وإن كانت غير ذلك فالعدد فردي. لاحظ
الكود التالي:
كود
Dim Number As Integer
Number=Text1.Text
If Number Mod 2=0 Then
MsgBox "العدد زوجي"
Else
MsgBox "العدد فردي"
End If
هل رأيت أسهل من هذا، حاول فهم الكود جيداً وطوّره.
وإن كانت كبرياؤك لا تسمح لك بالنزول إلى مستوى الـVisual Basic فهذا الكود نفسه بالـC++:
كود
int Number;
cin>>Number;
if (Number%2==0)
cout<<"العدد زوجي";
else
cout<<"العدد فردي";
ويمكنك ملاحظة الشبه الكبير بين الكودين إن كان عندك اطّلاع على لغة C++
انتظر
المثال القادم. ولا تحاول الاطلاع على الأمثلة الأخرى قبل أن أشرح لك
المطلوب من كل واحد منها وتحاول حلها بنفسك لتتحقق الفائدة المطلوبة.
ولتحميل السورس كود اضغط
هناوالسلام عليكم ورحمة الله.