قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 16-12-2010, 09:18 PM المشاركة 1   
افتراضي تركيب (بناء) برامج لغة السى The Structure of C Programs Twitter FaceBook Google+



تركيب (بناء) برامج لغة السى The Structure of C Programs
تحتوى جميع برامج السى على :
· موجهات (توجيهات) ما قبل المعالجة preprocessor directives .
· و الإعلانات declarations .
· والتعريفات definitions .
· والتعبيرات expressions .
· والعبارات statements .
· والدوال functions .

1- موجه (توجيه) ما قبل المعالجة Preprocessor Directive :
موجه "ما قبل المعالجة" هو أمر ما قبل المعالجة بلغة السى (والذى ينطلق تلقائيا كأول خطوة عند ترجمة البرنامج ) . سميت بما قبل المعالجة (المعالج) لأنه يتم تنفيذها قبل بدء الترجمة وهى تقوم بضم محتويات ملف الرأس المطلوب للبرنامج والذى يحتوى على مجموعة من الثوابت والعبارات والدوال تساعد فى برمجة البرنامج . يوجد الكثير من موجهات ما قبل المعالجة ويمكن تمييزها بالرمز #Hash (هاش) .

موجهات قبل المعالجة الأكثر شيوعا هى :
  • موجه #define: والذى يقوم باستبدال ( التعويض عن ) نص text بمعرف identifier محدد .
  • موجه #include: والذى يقوم بتضمين (ضم) نص لملف خارجى فى البرنامج .

2- الإعلان Declaration :
الإعلان ينشأ (يشهر- يعلن ) أسماء names و سمات attributes للمتغيرات variables .
المتغيرات العامة (الشاملة) : global يتم إعلانها خارج الوظائف وتظهر من نهاية الإعلان إلى نهاية الملف .
المتغير المحلىlocal : يتم إعلانه داخل وظيفة ويظهر من نهاية الإعلان إلى نهاية الوظيفة .

3- التعريف Definition :
ينشأ التعريف محتويات contents المتغيرات والدوال .

4- التعبير أو المصطلح Expression :
التعبير (المصطلح) هو مزيج من العوامل operators والمعاملات operands والتى تخضع لقيمة وحيدة single .

5- العبارة (البيان) Statement :
تتحكم العبارات فى مسار تنفيذ برنامج لغة السى .

6- الوظيفة function :
الوظيفة هى التى تجمع مجموعة collection من الإعلانات والتعاريف والتعبيرات والعبارات والتى تؤدى مهمة task محددة . تحصر الأقواس المجعدة { } جسم الوظيفة . قد لا تتداخل الوظائف فى البرمجة بلغة السى .

الوظيفة الرئيسية (الأساسية - الجوهرية) Main Function :

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 16-12-2010, 09:26 PM المشاركة 2   
افتراضي


الوظيفة الرئيسية (الأساسية - الجوهرية) Main Function :
يجب أن تحتوى جميع برامج لغة السى على وظيفة تسمى" main " من حيث يبدأ البرنامج .الأقواس التى تحصر الوظيفة main تعرف نقطتى بداية ونهاية البرنامج .
مثال : التركيب (البناء) العام لبرنامج لغة السى :



التفاصيل :







المكونات الأساسية فى برنامج لغة السى :

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 16-12-2010, 09:30 PM المشاركة 3   
افتراضي


المكونات الأساسية فى برنامج لغة السى :
تحتوى جميع برامج لغة السى على مكونات أساسية مثل العبارات statements والوظائف functions . العبارات هى تلك الأجزاء من البرنامج التى تشكل العمليات الفعلية . جميع برامج لغة السى تحتوى على وظيفة أو أكثر . الوظائف هى برامج فرعية subroutines وكل وظيفة تحتوى على عبارة أو أكثر ويمكن استدعائها بجزء آخر من البرنامج . عند كتابة البرنامج فإن الفراغات الموجودة فى البداية والسطور الفارغة والتعليقات تحسن من إمكانية قراءة البرنامج بسهولة, ليس فقط لنفسك فيما بعد ولكن أيضا للذين يقدمون على تتبع البرنامج .
المثال التالى يبين بعض الأجزاء المطلوبة فى البرنامج المكتوب بلغة السى .




  • العبارة #include <stdio.h> : تخبر المترجم compiler بأن يضم (يتضمن) الكود من الملف 'stdio.h' إلى البرنامج . تسمى موجه قبل المعالج .
  • الامتداد ( .h ) : يدل على ملف رأس (مقدمة) header file .
  • ملف الرأس : يحتوى على معلومات عن الوظائف القياسية المستخدمة فى البرنامج .
  • ملف الرأس stdio.h : والذى يسمى "ملف الرأس للمداخل والمخارج القياسية " STandarD Input Output header file يحتوى على معظم وظائف المداخل والمخارج . من الضرورى استخدام فقط الملفات المتضمنة والتى تتعلق بمكتبة الوظائف فى برنامجك .
  • الصيغة : /* My first C program */ هى تعليق فى لغة السى . جميع التعليقات يتم تجاهلها بالمترجم ومن ثم فهى لا تؤثر على سرعة أو طول الكود المترجم .
يجب أن تحتوى جميع برامج لغة السى على الوظيفة الأساسية main() فهى نقطة المدخل فى البرنامج . جميع الوظائف لها نفس الصيغة وهى :



العبارات الموجودة فى مدى الوظيفة تنفذ بالتتابع (التسلسل ) بدءا من القوس المجعد للفتح { وانتهاءا بالقوس المجعد للغلق } .
الأقواس المجعدة {and} : تبين بداية ونهاية مجموعات blocks الكود فى لغة السى .

فى النهاية نجد العبارة printf("Hello world!"); : وهى تمثل نموذج قياسى لعبارة بلغة السى .
  • جميع عبارات لغة السى تقريبا تنتهى بالفاصلة المنقوطة ( ; ) . لا يتم التعرف (إدراك) على حرف نهاية السطر فى لغة السى كنهاية للسطر . لذلك لا يوجد تقيد فى مكان العبارات فى مدى السطر ولا فى عدد العبارات فى السطر .
جميع أسطر الكود تحتوى على الفاصلة المنقوطة ( ; ) فى النهاية لتخبر المترجم بانه وصل إلى نهاية العبارة . الفشل فى ضمها يظهر رسالة خطأ فى السطر التالى . الإستثناء من ذلك أمر if حيث نحتاج وجود الفاصلة المنقوطة ( ; ) فى السطر التالى كما يلى :



البرنامج الأول بلغة السى :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 16-12-2010, 09:34 PM المشاركة 4   
افتراضي


البرنامج الأول بلغة السى :



يقوم البرنامج عند ترجمته وتنفيذه بطباعة الجملة Hello, World! على الشاشة .
السطر الأول من البرنامج به الكود #include<stdio.h> وهو مقسم إلى قسمين : القسم الأول هو #include<> وغالبا ما تكون باللون الأزرق , والقسم الثانى وهو ما بين الرمزين <> حيث يوجد الملف stdio.h . فى هذا القسم نقوم بكتابة أسماء لملفات تسمى ملفات الأس أو المقدمة ( يمكن أن تراها فى المجلد include من المترجم الذى تستخدمه ) وهى عديدة وكل ملف منها له مجاله الخاص , حيث يحتوى على ثوابت ووظائف تسهل علينا البرمجة .
فى السطر الثالث يوجد اسم وظيفة وهى main() وهى الوظيفة الرئيسية لأى مشروع ولا يمكن الاستغناء عنها ولا يمكن التغيير فى اسمها إلا فى حالات خاصة . من هذه الوظيفة يبدأ البرنامج بالتنفيذ بشكل متسلسل , أما القوسين بعد اسم الوظيفة فهما اللذان يبينان على أنها وظيفة وليست متغير أو ثابت .
فى السطر الرابع توجد حاضنة البداية { وهى التى تبين بداية الوظيفة main .
فى السطر الخامس توجد العبارة printf وهى وظيفة موجودة فى ملف الرأس stdio.h وهى مختصر
print format أى صيغة أو شكل الطبع , وهى تقوم بطبع أى إخراج ما هو بداخل أقواس الوظيفة إلى ة الشاشة , وفى مثالنا هذا يوجد النص Hello, World! وهى الجملة التى سيتم إخراجها إلى الشاشة , وتكون الجمل دائما داخل أقواس اقتباس " " .
فى نهاية السطر نكتب الفاصلة المنقوطة وهى تعنى نهاية سطر العبارة .
تستعمل الوظيفة printf بصفة عامة فى عرض أو إخراج معلومات إلى أداة الإخراج وهى الشاشة .
وأخيرا السطر السادس حيث توجد حاضنة النهاية } والتى تبين نهاية الوظيفة الرئيسية main .
تسمى حاضنة البداية وحاضنة النهاية وما بينهما يسمى بلوك block (جسم أو مجموعة) الكود كما فى الشكل .





رضا كامل
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2007
المشاركات: 114
نشاط [ رضا كامل ]
قوة السمعة:0
قديم 17-12-2010, 03:00 PM المشاركة 5   
افتراضي


جزاكم الله خيرا أستاذنا الفاضل .

لدي استفسارات أرجو أن أهتدي بعلمكم الجميل في الرد عليها إن شاء الله .

علما منذ البداية أنني قد بدأت في تعلم لغة السي منذ فترة بالجهود الذاتية

إعتمادا على المتوافر من دروس و كتب بحث عنها على النت و أجدها و أتعلم منها .

و أراني قد نجحت بالفعل في الخوض في ذلك و تمكنت من إنشاء بعض البرامج التجريبية المحدودة بالميكرو سي

و صرت أستطيع قراءة البرامج المكتوبة بالميكروسي و فهمها و الحمدلله الى مدى معقول

و لكن ما زال أمامي بحر كبير من المعرفة ينبغي خوضه .

فأعذرني لبدائية أسئلتي و سذاجتها ــ ربما ــ أستاذي الفاضل .

كما قلتم حضرتكم في المشاركة السابقة :

فى السطر الثالث يوجد اسم وظيفة وهى main() وهى الوظيفة الرئيسية لأى مشروع ولا يمكن الاستغناء عنها ولا يمكن التغيير فى اسمها إلا فى حالات خاصة . من هذه الوظيفة يبدأ البرنامج بالتنفيذ بشكل متسلسل , أما القوسين بعد اسم الوظيفة فهما اللذان يبينان على أنها وظيفة وليست متغير أو ثابت .
استفساري هو هو :

على أي أساس نحن نختار اسم وظيفة غير الإسم
main ؟؟

و هل لها شروط معينة تتبع في اختيارها و كتابتها ؟

أيضا كتابة كلمات أو حروف أو أرقام بين قوسي الوظيفة

ما معناه و ما فائدته للبرنامج ؟

و هل يمكن أن يكتب شيء بين قوسي الكلمة الرئيسية ؟

أيضا سؤال يحيرني بالفعل : ما هو ترتيب تنفيذ خطوات البرنامج
في حالة وجود أكثر من وظيفة كاملة
موضوعات بشكل متتالي بالبرنامج
و غير متداخلات ؟

أي في حالة وجود أكثر من زوج من الحاضنات موضوعين بالتتالي بغير تداخل.


و آسف لكثرة أسئلتي ، و للإطالة ،
فإن كنت قد وفقت في بيان مقصودي فليتكم تتكرمون بشرح ذلك و جزاكم الله خيرا .


التعديل الأخير تم بواسطة : رضا كامل بتاريخ 17-12-2010 الساعة 03:13 PM

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 17-12-2010, 06:00 PM المشاركة 6   
افتراضي


جزاكم الله خيرا أستاذنا الفاضل .

لدي استفسارات أرجو أن أهتدي بعلمكم الجميل في الرد عليها إن شاء الله .

علما منذ البداية أنني قد بدأت في تعلم لغة السي منذ فترة بالجهود الذاتية

إعتمادا على المتوافر من دروس و كتب بحث عنها على النت و أجدها و أتعلم منها .

و أراني قد نجحت بالفعل في الخوض في ذلك و تمكنت من إنشاء بعض البرامج التجريبية المحدودة بالميكرو سي

و صرت أستطيع قراءة البرامج المكتوبة بالميكروسي و فهمها و الحمدلله الى مدى معقول

و لكن ما زال أمامي بحر كبير من المعرفة ينبغي خوضه .

فأعذرني لبدائية أسئلتي و سذاجتها ــ ربما ــ أستاذي الفاضل .

كما قلتم حضرتكم في المشاركة السابقة :



استفساري هو هو :

على أي أساس نحن نختار اسم وظيفة غير الإسم
main ؟؟

و هل لها شروط معينة تتبع في اختيارها و كتابتها ؟

أيضا كتابة كلمات أو حروف أو أرقام بين قوسي الوظيفة

ما معناه و ما فائدته للبرنامج ؟

و هل يمكن أن يكتب شيء بين قوسي الكلمة الرئيسية ؟

أيضا سؤال يحيرني بالفعل : ما هو ترتيب تنفيذ خطوات البرنامج
في حالة وجود أكثر من وظيفة كاملة
موضوعات بشكل متتالي بالبرنامج
و غير متداخلات ؟

أي في حالة وجود أكثر من زوج من الحاضنات موضوعين بالتتالي بغير تداخل.


و آسف لكثرة أسئلتي ، و للإطالة ،
فإن كنت قد وفقت في بيان مقصودي فليتكم تتكرمون بشرح ذلك و جزاكم الله خيرا .
اخى الكريم

شكرا جزيلا لك

بارك الله فيك

لحين الوصول لموضوع الوظائف اليك احد المراجع باللغة العربية والاوسع انتشارا على النت (بارك الله فى صاحبه) و التى اعتمد عليها فى الاعداد ويحتوى على شرح للوظائف بالتفصيل :




الرابط

http://www.4shared.com/document/RNjTuW2d/____.htm



مع تمنياتى بدوام التوفيق


رضا كامل
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2007
المشاركات: 114
نشاط [ رضا كامل ]
قوة السمعة:0
قديم 17-12-2010, 06:21 PM المشاركة 7   
افتراضي


أستاذنا الفاضل يعجز لساني عن شكرك
جزاك الله خير الجزاء
فبدلا من تعليمي الصيد فقط
أهديتني أيضا عدة الصياد .
بارك الله فيك و أدام أفضالك الكريمة .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:328
قديم 17-12-2010, 06:35 PM المشاركة 8   
افتراضي


أستاذنا الفاضل يعجز لساني عن شكرك
جزاك الله خير الجزاء
فبدلا من تعليمي الصيد فقط
أهديتني أيضا عدة الصياد .
بارك الله فيك و أدام أفضالك الكريمة .
امين لى ولك ان شاء الله
اخى الكريم

شكرا جزيلا لك
بارك الله فيك

تقدير اعتز به

مع تمنياتى بدوام التوفيق

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 03:16 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2024