 |
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
|
|
نشاط [ F.Abdelaziz ]
قوة السمعة:332
|
|
16-02-2013, 11:29 PM
المشاركة 3
|
|
1-3 المفاهيم الأساسية :
كتابة برنامج بلغة السى يشبه بناء منزل من الطوب البلوك : يتم وضع الأساس , يستخدم الرمل والأسمنت لعمل الطوب , يتم ترتيب هذا الطوب لعمل صف ( مدماك – طبقة) من البلوكات ثم يتم تكديس الصفوف لإنشاء البناء . فى برامج السى المدمجة , يتم وضع مجموعات من التعليمات معا لتشكيل "دوال" functions , يتم معاملة تلك الدوال كعمليات " مستوى – مرتفع " , والتى بعد ذلك يتم تجميعها لتشكيل البرنامج .
كل برنامج بلغة السى يجب أن يمتلك دالة واحدة على الأقل , هذه الدالة تسمى "الدالة الرئيسية" main() .
الدالة main() هى "الأساس" لبرنامج لغة السى , وهى نقطة البداية عند تنفيذ كود البرنامج . جميع الدوالت يتم إطلاقها عن طريق الدالة الرئيسية main() سواء مباشرة أو غير مباشرة . على الرغم من أن الدوال يمكن أن تكون كاملة وخاصة بذاتها , إلا أن المتغيرات والبارامترات يمكن أن تستخدم لريط تلك الدوال مع بعضعا البعض .
الدالة الرئيسية main() تعتبر مهمة "المستوى – المنخفض" , لأنها الدالة الأولى التى تستدعى من نظام بدء البرنامج . فى الكثير من الحالات , سوف تحتوى الدالة الرئيسية main() على قليل من العبارات فقط والتى لا تعمل شىء سوى أعداد وقيادة عمل البرنامج من أحد الدوال إلى الأخرى .
برنامج لغة السى المدمجة فى أبسط شكل له يبدو كما يلى :
كود:
void main( )
{
While(1) //do forever….
;
}
البرنامج الموضع بأعلاه سوف يتم ترجمته ويعمل على نحو تام , ولكنك لن تتأكد من ذلك لعدم وجود بيان لنشاط من أى نوع .
كود:
#include <stdio.h>
void main( 0
{
printf("HELLO WORLD"); /* the classic C test program.. */
while(1) //do forever..
;
}
هذا البرنامج سوف يطبع الكلمات "HELLO WORLD" إلى الخرج القياسى , وهو فى الغالب المنفذ التسلسلى . الميكروكونترولر سوف يجلس وينتظر إلى الأبد أو حتى يتم إعادتة reset . وهذا يعرض واحد من أهم الاختلافات الرئيسية بين برنامج الكومبيوتر الشخصى والبرنامج المصمم للميكروكونترولر المدمج , وهو , أن تطبيقات الميكروكونترولر المدمج تحتوى على حلقة لا نهائية .الكومبيوتر الشخصى يمتلك نظام تشغيل , ونجرد تنفيذ البرنامج , يعود التحكم إلى نظام التشغيل . الميكروكونترولر المدمج لا يمتلك نظام تشغيل لذلك لا يمكن السماح بالخروج من البرنامج فى أى وقت . لذلك فإن كل تطبيق للميكروكونترولر المدمج يمتلك حلقة لا نهائية فى بنائه الداخلى فى مكان ما , مثل while(1) فى المثال أعلاه . هذا يمنع البرنامج من الهروب من الأشياء التى يقوم بفعلها ويفعل أشياء عشوائية والتى قد تكون غير مرغوب فيها . سوف يت شرح بناء while فيما بعد .
يحتوى برنامج المثال أيضا على أول "موجه" شائع الاستخدام للمترجم . الموجه #include يخبر المترجم بضم ملف يسمى stdio.h ليكون كجزء من هذا البرنامج .
الدالة printf() متوفرة من أجل المكتبة الخارجية وتكون متاحة لنا لأن تعريفها يقع بالملف stdio .
هناك بعض العناصر التى يجب تعريفها فى المثال السابق : - ; فاصلة بنقطة تستخدم لبيان نهاية التعبير . التعبير فى أبسط أشكاله هو فاصلة بنقطة منفردة .
- { } تستخم هذه الأقواس لاحتواء (تطويق) بداية ونهاية محتويات الدالة . تستخدم هذه الأقواس أيضا عندما يتم معالجة سلسلة من العبارات كمجموعة (بلوك) واحدة .
- "text" تستخدم علامات الاقتباس المزدوجة كعلامة على بداية ونهاية سلسلة نصية .
- // أو /*….*/ تستخدم شرطة – شرطة أو شرطة – نجمة ... نجمة – شرطة للتعليقات . التعليقات هى مجرد ملاحظات المبرمج . التعليقات مهمة للغاية للقدرة على قراءة وفهم البرنامج . هذه حقيقة سواء عند قراءة البرنامج بالمبرمج نفسه فى وقت لاحق أو بشخص آخر . التعليقات المبينة بهذا النص تستخدم لشرح وظيفة كل سطر فى البرنامج .
يستخدم الرمز /*….*/ لإنشاء مجموعة (بلوك) تعليقات . بمجرد أن يجد المترجم (/*) فسوف يتجاهل النص الذى يليه , حتى إذا كانت مجموعة التعليقات فى سطور عديدة , حتى يجد (*/) .
عندما يجد المترجم الرمز (//) فسوف يتجاهل نص التعليق حتى يصل نهاية السطر فقط .
|