مدونة علم البرمجة والحاسوب
من حقك ان تتعلم اكثر

مدخلك الى تعلم البرمجة العادية 2 - C++ Intro 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  وهو عداد متغير حتى يكتمل العداد بوصوله للالف ويكون قد تم تنفيذ الامر معه الف مرة بأدنى مجهود  وكلما تغير العد من 1 الى 2 الى 1000 تغير معه رقم الموظف بنفس الطريقة
 
الخلاصة
لاتلتفت الى صيغة الكود المكتوب فهو بلغة سي ونحن نتحدث عن اللغات عموما
فقط افهم الفكرة وابحث في كتب اللغة التي تتعلمها عن الصيغة المعتمدة لهذه اللغة
 
 
سادسا  : يجب ان تعرف اوامر الشروط  داخل اللغة التي تتعلمها
 
الشرط هو افتراض معين يتوقف عليه عمليات اخرى فمثلا تريد ان تضع شرط الا يدخل رقم موظف اكبر من الف لان عدد موظفين الشركة لايزيدون عن الف وبالتالي اذا ادخل من يعمل على البرنامج رقم موظف اكبر من الف
يقوم البرنامج باصدار رسالة تفيد بذلك وهكذا لها حالات كثيرة حسب فكرة  البرنامج
مثال
  scanf  (“%d”,EmployerNumber);
if (EmployerNumber > 1000 )
cprintf (“ثكلتك امك لايوجد موظف بهذا الرقم الا تعرف عدد زملائك  اعد الادخال “);
وتستخدم الشروط ايضا في عمليات القفز اي عند شرط معين يتم القفز بالطبع تعلم شكل اكبر من واصغر من ويساوي وصيغة كتابتها حسب اللغة التي تتعلمها
 
 
سابعا  : يجب ان تعرف كيف تبني دوال فرعية  داخل اللغة التي تتعلمها
 
الدوال الفرعية subroutines  هي شبه برنامج صغير اذا كان عندك سلسله عمليات متشابهه سوف تجريها داخل البرنامج كثيرا وتكررها كثيرا فلا داعي لاعادة كتابتها كل مرة بل يكفيك ان تكتبها مرة واحدة وتطلق عليها اسم وكلما ذكرت هذا الاسم داخل البرنامج تتم تلك العمليات ويصبح هذا الاسم كأنه من اوامر اللغة ايضا مثال اخر
لنفرض ان هناك اوامر لرسم جدوال بأبعاد ومساحة معينة وتحتاج الى رسمة كثيرا فليس معنى هذا انك كل مرة تريد رسم الجدول ستعيد كتابة اوامره الكثيرة في كل مكان داخل البرنامج فقط جمع اوامر رسمه في روتين فرعي وسميه اسم وكلما ذكرت الاسم يتم رسم الجدول انه شئ رائع اليس كذلك انا اظن ذلك

أرشيف المدونة الإلكترونية

من انا ؟