مدخلك الى تعلم البرمجة العادية2
ثالثا : يجب ان تعرف كيف تكتب المعادلات لانجاز الحسابات
هذا الموضوع بالذات تتفق فيه جميع لغات الكومبيوتر بلا استثناء وهناك بعض القواعد البسيطة التي يجب ان تعرفها
·لابد ان تحتوي المعادلة في طرفها الايسر على متغير واحد فقط واي عدد فيالطرف الايمن
مثال
A = B + C * 5 –3
· جميع القيم الموجودة في الطرف الايمن تكون معلومة القيمة اي تم حسابها مثلا في معادلة سابقة
مثال
B = 5
C = 10
A = B + C * 5 –3
فقد تم تخصيص قيمة للمتغيرBو للمتغيرC
ثم دخل البرنامج الى المعادلة الاخيرة لحساب قيمةAوقد علم تماما قيم الطرف الايسر
اي قيمBوC
فاءذا كتبت مايلي سيكود خطأ قاتل
B = 5
A = B + C * 5 –3
C = 10
لان البرنامج عرف قيمة المتغير بي ثم دخل الى المعادله ليحسب ايه وهو لا يعرف قيمةالمتغير سي حيث سيعلمها فيما بعد فرتب خطواتك لتون منطقية
·كل من درس مبادئ الرياضيات يعلم ان القسمة على الصفر خطأ فادح واذا حدثتسيتعطل البرنامج ويعطيك نظام التشغيل الرسالة المعروفة هذا البرنامج قام بعملية ممنوعة
مثال
B = 7
C = 7
D = B-C
A = B/D
قام البرنامج بالقسمة على صفر حيث ان قيمة بي = 7 وسي = 7 ودي= بي – سي اي 7-7 وتساوي بذلك صفر ثم تأتي مرحلة انهيار البرنامج عندما يقسم بي على دي وقيمتها صفر بعد الحسابات السابقة )احذر ذلك (
كل ماهو خطأ رياضي سيكون خطأ في البرنامج مثل حساب الجذر التربيعي لعدد اقل من الصفر وهكذا
·حافظ دائما على ان يكون عدد الاقواس المفتوحة يساوي عدد الاقواس المغلقه
·اقصد عدد الاقواس ذات الاتجاه اليمين = عدد الاقواس ذات الاتجاه اليسار
·لان الكوميوتر عندما تفتح له قوس ايسر معناها بدء عملية حسابية منفصلة
·حتى لوكانت داخل معادلة واحدة فاءذا لم تغلق بالقوس الايمن فمعنى ذلك عملية
·لم تغلق وتنهار المعادلة وبالتالي البرنامج.
مثال لاحظ فيه ان عدد الاقواس متساوي
A = )A+B( * ) C – D( – )Q * M(
رابعا : يجب ان تعرف اوامر القفز داخل اللغة التي تتعلمها
عمليات القفز المقصود بها ان البرنامج سيقوم بالقفز على مجموعة من الامر دون تنفيذها
ليتجه الى اجزاء اخرى داخل البرنامج لها أولوية حسب فكر المبرمج
مثال
A = )A+B( * ) C – D( – )Q * M(;
goto final;
Z = 3 * m;
U = Z + 4;
final :
I = A * 10;
اوامر القفز مثل gotoيليها عنوان لايتكرر حتى لايضل البرنامج طريقه وهو في مثالناالعنوانfinalجعلت البرنامج يقفز فوق المعادلتين
Z = 3 * m;
U = Z + 4;
ولا ينفذهم او يجري حساباتهم وقفز مباشرة حيث يوجد العنوانfinal
ليستكمل عمله من هناك وسوف تعرف فوائد ذلك في ختام هذا الشرح مع التطبيق الكامل
خامسا : يجب ان تعرف اوامر الدوران داخل اللغة التي تتعلمها
الدوران او عملloopingمن الاوامر الاساسية في جميع لغات البرمجة فمثلااذا كان البرنامج سيدخل اسماء الف موظف هل تعتقد انك ستكتب الف امر لادخال هذه الاسماء بالطبع ستكون حماقه ولكن لو وضعنا امر واحد فقط لادخال اسم الموظف وطلبنا من البرنامج الدوران الف مرة حول هذا الامر بالطبع سيكون شئ جميل ان يدخل الف بيان بمجهود بسيط نتيجة تسهيل اعطته لغة البرمجةمثال لبرنامج غبي جدا جدا
gets )employer1(;
gets )employer2(;
gets )employer3(;
gets )employer4(;
gets )employer5(;
gets )employer6(;
gets )employer7(;
:
اكتب نفس الاوامر حتى تصل للعدد الف شئ استفزازي بالفعل
:
:
gets )employer1000(;
ولكن مع الدوران
for )I = 0 ; I > 1000 ; I++(}
gets )employer ]I[(;
{
ياله من شئ جميل فعلا حسب صيغة اللغة التي تستخدمها طلبنا من الكومبيوترانشاء عداد يعد من صفر الى الف ورمزنا لها بالرمزI
ثم داخل العداد طلبنا منه ادخال الموظف رقمIوهو عداد متغير حتى يكتملالعداد بوصوله للالف ويكون قد تم تنفيذ الامر معه الف مرة بأدنى مجهودوكلما تغير العد من 1 الى 2 الى 1000 تغير معه رقم الموظف بنفس الطريقة
الخلاصة
لاتلتفت الى صيغة الكود المكتوب فهو بلغة سي ونحن نتحدث عن اللغات عموما
فقط افهم الفكرة وابحث في كتب اللغة التي تتعلمها عن الصيغة المعتمدة لهذه اللغة
سادسا : يجب ان تعرف اوامر الشروط داخل اللغة التي تتعلمها
الشرط هو افتراض معين يتوقف عليه عمليات اخرى فمثلا تريد ان تضعشرط الا يدخل رقم موظف اكبر من الف لان عدد موظفين الشركة لايزيدون عن الف وبالتالي اذا ادخل من يعمل على البرنامج رقم موظف اكبر من الف
يقوم البرنامج باصدار رسالة تفيد بذلك وهكذا لها حالات كثيرة حسب فكرةالبرنامج
مثال
scanf )“%d”,EmployerNumber(;
if )EmployerNumber < 1000 (
c printf )“ثكلتك امك لايوجد موظف بهذا الرقم الا تعرف عدد زملائك اعد الادخال“(;
وتستخدم الشروط ايضا في عمليات القفز اي عند شرط معين يتم القفزبالطبع تعلم شكل اكبر من واصغر من ويساوي وصيغة كتابتها حسب اللغة التي تتعلمها
سابعا : يجب ان تعرف كيف تبني دوال فرعية داخل اللغة التي تتعلمها
الدوال الفرعيةsubroutinesهي شبه برنامج صغير اذا كان عندك سلسله عملياتمتشابهه سوف تجريها داخل البرنامج كثيرا وتكررها كثيرا فلا داعي لاعادة كتابتها كل مرة بل يكفيك ان تكتبها مرة واحدة وتطلق عليها اسم وكلما ذكرت هذا الاسم داخل البرنامج تتم تلك العمليات ويصبح هذا الاسم كأنه من اوامر اللغة ايضا مثال اخر
لنفرض ان هناك اوامر لرسم جدوال بأبعاد ومساحة معينة وتحتاج الى رسمة كثيرا فليس معنى هذا انك كل مرة تريد رسم الجدول ستعيد كتابة اوامره الكثيرة في كل مكان داخل البرنامج فقط جمع اوامر رسمه في روتين فرعي وسميه اسم وكلما ذكرت الاسم يتم رسم الجدول انه شئ رائع اليس كذلك انا اظن ذلك
كل ماعليك ان تبحث في تعليمات اللغة التي تتعلمها عن اسلوب وشكل بناء
هذه الروتينات في الابواب المخصصة لذلك