طريقك الى البرمجة
الطريق إلى البرمجة
في هذا الجزء تتناول ما يعرف بالخوارزميات، و تتحدث عن أهميتها في البرامج، و الطريقة المثالية في تصميم البرنامج، و الأخطاء التي تواجه المبرمج أثناء إعداد البرنامج.
مما لا شك فيه، أن فهم آلية عمل البرامج، و الخطوات المنطقية، لتسلسل الاحداث، هي الأساس في تصميم البرامج، فان فهمت خطوات البرنامج سهل عليك إعداده بأي لغة تتقنها، فيها بنا نبدأ في الطريق إلى البرمجة.
الخوارزمية:
اشتقت هذه الكلمة من اسم العالم العربي أبو جعفر محمد بن موسى الخوارزمي، الذي اشتهر بحل المسائل الصعبة، عن طريق وضع مجموعة من الخطوات المنطقية للتدرج في الحل، و أصبحت الخوارزميات الآن علم يدرس في الجامعات، و يعتبر مقدمة لما يعرف بي (هندسة البرمجيات)، وسنركز في هذا المقال على الأمثلة الرياضية و المنطقية، مع التدرج في الصعوبة من الأسهل إلى المراحل المتقدمة، وأود التنبيه أنني استخدمت اللغة العربية في المثال الأول و جزء من المثال الثاني، و بقية الأمثلة اللغة الإنجليزية، مع توضيح معاني المفردات.
Example
إذا أعطيت العددين A b أوجد c الناتج من جمع العددين?
1.Start
2.A B اقرأ العددان
3.C = A + B اجعل
4.C اطبع العدد
5.Stop
من خلال تأمل المثال السابق نلاحظ إن البرنامج ابتدأ بالكلمةstart و انتهى بكلمة stop وهما الكلمتان الرئيسيتين لأي برنامج من حيث البداية و النهاية، أيضا الكلمتين اقرأ و اطبع، حيث تستخدمان في قراءة المدخلات و طباعة المخرجات، بنفس التكرار العام هذا سنواصل بقية البرامج.
Example 2
فصل دراسي به عدد من الطلبة أوحد متوسط درجات هؤلاء الطلبة؟
يجب تحديد بعض المتغيرات الأساسية و هي:
مجموع الدرجات S
درجة الطالب G
K عداد التكرار
N عدد الطلبة في الفصل
و حيث أن المتوسط = مجموع الدرجات / عدد الطلبة
فيكون البرنامج كالأتي:
1.Start
2.Do k = 0
3.S = 0
4.N اقرأ
5.G اقرأ
6.Do s = s + 0
7.K = k + 1
8.اذا كانت K ≠ n ارجع إلى الخطوة رقم (5)
9.احسب المتوسط بي: المتوسط = مجموع الدرجات / عدد الطلبة
10.اطبع المتوسط
11.Stop
شرح المثال:
نلاحظ في المثال وجود حلقة من اجل تكرار عد عدد الطلبة و المتمثلة في المجموع، كما ن لاحظ وجود شرط بالحلقة و طالما لم يتحقق الشرط أي k≠N وعندما تتساوى تنتهي الحلقة و يتم طباعة المتوسط.
Example 3
اكتب خوارزمية لإيجاد مساحة الدائرة و محيطها؟
الخوارزمية
1.star
2.do pi=3.14
3.read R
4.do a =pi*r^2
5.do b=2*pi*r
6.print a b r
7.stop
شرح المثال:
استخدمنا الحروف الإنجليزية و ذلك لشيوعها في مثل هذه البرامج و نلاحظ المتغير a الذي يعني المساحة b الذي يعني المحيط r الذي يعني نصف القطر، وبقية الخطوات هي نفسها كما البرنامج السابق.
Example 3
اكتب خوارزمية إيجاد القيمة العظمى لقيمتين غير معلومتين؟
الخوارزمية
1.start
2.read a b
3.if a > b print b
4.print a
5.stop
نلاحظ استخدام الشرط if للمقارن بين العددين و للشرط مخرجين نعم أو لا فإذا كان الجواب نعم فيتم طباعة العدد b و ألا يتم طباعة العدد a
Example 4
اكتب خوارزمية لترتيب عددين ترتيب تصاعدي؟
الخوارزمية
1.start
2.read a b
3.if b>a print
4.Do
C=a
A=b
B=c
5.print a b
6.stop
Example 5
اكتب خوارزمية لقراءة x1 x2 x3 x4 و حساب الوسط الحسابي و طباعته لعدد غير محدد من مجاميع القيم
الخوارزمية
1.start
2.read x1 x2 x3 x4
3.z=x1+x2+x3+x4
4.AVG=z/4
5.print AVG
6.go to step two(2)
7.stop
الشرح
استخدمنا في هذا المثال المتغير z لمجموع القيم و المتوسط بنفس الطريقة السابقة و الجملة go to أي اذهب إلى الخطوة الثانية لان السؤال يقول لعدد غير محدد من مجاميع القيم.
Example 6
اكتب خوارزمية التكلم بالهاتف؟
الخوارزمية
1.start
2.search for phone
3. go to step 2(الهاتف معطل) if
4.phone number
5. go to step four(4) (الهاتف مشغول) if
6.المكالمة
7.stop
البحث for phone للبحث عن الهاتف، phone number أي رقم الهاتف، يوجد في هذا المثال شرطين الأول للمعرفة صلاحية الهاتف من عدمه، و الثاني لطلب رقم الهاتف.
Example 7
اكتب خوارزمية لإيجاد الأجور المستحقة من الكهرباء؟
الخوارزمية
A القراءة السابقة
B القراءة اللاحقة
C الاستهلاك
D الوحدة
P سعر الوحدة
X الديون
M الأجور الكلية الواجب دفعها
1.start
2.read a b p x
3.c = b –a
4.d = c * p
5.if m = 0 m=d
6.m = d+x
7. print m
8.stop
الشرح
بعد قراءة المتغيرات يتم طرح الاستهلاك السابق من الحالي لمعرفة كمية الاستهلاك، الأجر يكون بضرب الاستهلاك في سعر الوحدة، و الشرط الأساسي اذا كان هناك ديون، تضاف إلى الاستهلاك الحالي، و إلا فالاستهلاك يساوي الأجور الواجب دفعها.
Example 8
اكتب خوارزمية لإيجاد مجموع مربعات الأعداد:
X1 x2 x3 x4 ……………….x 20
الخوارزمية:
1.start
2.read x
3.do I = 0 , sum = 0.0
4.I = I + 1
5.sumsqr=sumsqr+x^2
6.if I < 20 go to step four
7.print sumx^2
8.stop
الشرح:
بعد قراءة القيمة الأولى و جعل قيمة I = 0 يتم تربيع قيمة sumsqr و إضافتها إلى المجموع مع إضافة قيمة واحد إلى المتغير I و الدخول في حلقة مستمرة حتى يتحقق الشرط أي I < 20 و عندها يتم طباعة مجموع المربعات، مع ملاحظة أن الرمز( 2^) يعني مربع القيمة.
Example 9
قامت إحدى المعارض بتخفيض أسعار بضاعتها فاذا كانت قيمة الشراء 50 دينار تكون نسبة التخفيض 5 % و إذا كانت نسبة الشراء أكثر من 50 دينار أو اقل من 100 يكون التخفيض 15% اكتب خوارزمية هذا البرنامج؟
لنفرض أن:
1. قيمة الشراء = g من الدنانير
2.قيمة الشراء بعد التخفيض = net
3.عندما تكون قيمة الشراء 50 أو اقل تكون قيمة الشراء الصافي net=g-g*5/100
4.عندما تكون قيمة الشراء أكثر من 50 و اقل من 100 تكون قيمة الشراء بعد التخفيض net= g – g *15/100
1.start
2.read (g)
3.if g = 0 go to step ( 7 )
4.if g <=50 net=g-g*5/100
5.if g > 100 net=g – g*15/100
6.go to step two ( 2 )
7.print net
8.stop
الشرح:
يكون كالاتي:
قراءة قيمة الشراء، اختبار هذه القيمة اذا كانت = 0 فالتخفيض لا وجود له، و الا ينتقل الى الخطوة التالية، التي تقوم باختبار قيمة الشراء، فاذا كان اصغر من او يساوي 50 يحسب الصافي كما هو مبين في الخطوة رقم (4) و الا فيذهب الى الخطوة رقم (5) التي تقوم بدورها باختبار قيمة الشراء ، فاذا كان اكثر من 50 و اقل من 100 تحسب الشراء كما هو مبين في الخطوة رقم (5) و في حالة عدم تحقق الشرط يذهب الى الخطوة رقم (2) أي يعيد قراءة المشتريات مرة اخرى ، و في النهاية تتم طباعة الصافي، و ينتهي البرنامج.
فهذه الخطوات للبرامج المختلفة تجعل من السهل تصميم هذه البرامج في أي لغة كانت، و لمن أراد التعمق في البرمجة و بناء أساس سليم فعليه بدراسة الخوارزميات من اجل استيعاب الأفكار التعليمية الأساسية للبرامج، و يجب التذكر ان هذه الأمثلة التي طرحتها هي لغرض التعليم فقط، أي أن البرامج الحقيقية ذات تشعبات كثيرة، و يجب أن يراعي المبرمج كافة الاحتمالات التي يحتوي عليها البرنامج.
الأخطاء البرمجية
يوجد ثلاث فئات من العلل( الأخطاء) Bugs هم:
1.الأخطاء الشكلية Syntax errors
2.الأخطاء المنطقية logical errors
3.أخطاء التشغيل runtime errors
الأخطاء الشكلية syntax errors
يعتبر من أسهل أنواع الأخطاء لأنه عادة يكون عبارة عن أخطاء في أوامر البرمجة ( هجائية ) أو مشكلات قواعد نحوية، مثل خطأ في تركيب جملة برمجية، او استخدام كلمات محجوز كمتغيرات، او عدم الأعلام عن متغير، أو غير ذلك من عدم فهم تركيب الجمل، و أرحب
الأخطاء المنطقية logical errors
عندما يكون البرنامج سليم من ناحية بناء الجمل، لكنه يقوم بعمل شيء لم يكن من المفروض ان يعمله، و تتوقف الأخطاء المنطقية على منطق البرنامج نفسه، و تركيبه و الشروط الداخلة في بناء البرنامج.
خطأ التشغيل runtime errors
تظهر أخطاء وقت التشغيل نتيجة لخطأ منطقي، لأن البرنامج فشل في التوقع، و بالتالي لم يتعامل مع المشكلة المحتملة، مثل تخطي قيود التخزين، و القسمة على الصفر، التدفق الزائد للبيانات، عدم وجود طابعة.
و تعد مراجعة الأخطاء وسيلة هامة لاكتشاف الأخطاء، التي يصعب على مصرف اللغة اكتشافها، و ننصح بالاتي لتجنب الأخطاء:
I.مراجعة تصميم البرنامج
II.استخدام الوحدات النمطية القصيرة
III.فحص البرنامج أثناء إنشائه
IV.استخدام شفرات عزل الأخطاء
V.استخدام أسماء واضحة للمتغيرات
VI.الالتزام بمنهجية وقياسية استخدام الأسماء و المتغيرات
VII.إضافة تعليقات على معظم الأجزاء
و أرحب بأي استفسار أو مناقشة في خصوص ما كتبته في هذا المقال.
Omartomi1983@yahoo.com